@boostxyz/cli 4.1.3 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,14 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@boostxyz/sdk"),y=require("../utils-CQC0lDOX.cjs"),l0="hh-sol-artifact-1",m0="ContractAction",T0="contracts/actions/ContractAction.sol",v0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],w0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b608051610cbb6100c85f395f6104030152610cbb5ff3fe608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea2646970667358221220fe6c75be65a23f4793221cf466df29bfea23e7a5257f32b5d09fee8d686b68a564736f6c634300081a0033",M0="0x608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea2646970667358221220fe6c75be65a23f4793221cf466df29bfea23e7a5257f32b5d09fee8d686b68a564736f6c634300081a0033",I0={},h0={},P={_format:l0,contractName:m0,sourceName:T0,abi:v0,bytecode:w0,deployedBytecode:M0,linkReferences:I0,deployedLinkReferences:h0},A0="hh-sol-artifact-1",g0="ERC721MintAction",R0="contracts/actions/ERC721MintAction.sol",O0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],x0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516115f66100c85f395f61053401526115f65ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c4714610332578063ea3d508a1461036e578063f04e283e14610398578063f2fde38b146103b4578063fee81cf4146103d057610113565b8063715018a61461026e5780638da5cb5b146102785780639a8a0592146102a2578063bec95277146102cc578063d4b839921461030857610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e67565b61040c565b60405161014a9190610eac565b60405180910390f35b61016d60048036038101906101689190610f26565b610485565b60405161017b929190610fe1565b60405180910390f35b61018c6104ba565b005b348015610199575f80fd5b506101a261050b565b6040516101af919061101e565b60405180910390f35b3480156101c3575f80fd5b506101cc610532565b6040516101d991906110b1565b60405180910390f35b3480156101ed575f80fd5b506101f6610556565b60405161020391906110e2565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f26565b61055c565b005b61023c6105e9565b005b61025860048036038101906102539190611160565b610622565b6040516102659190610eac565b60405180910390f35b61027661077f565b005b348015610283575f80fd5b5061028c610792565b60405161029991906111f3565b60405180910390f35b3480156102ad575f80fd5b506102b66107ba565b6040516102c391906110e2565b60405180910390f35b3480156102d7575f80fd5b506102f260048036038101906102ed919061120c565b6107bf565b6040516102ff9190610eac565b60405180910390f35b348015610313575f80fd5b5061031c6107dc565b60405161032991906111f3565b60405180910390f35b34801561033d575f80fd5b5061035860048036038101906103539190610f26565b610801565b6040516103659190611237565b60405180910390f35b348015610379575f80fd5b50610382610815565b60405161038f919061101e565b60405180910390f35b6103b260048036038101906103ad9190611257565b610828565b005b6103ce60048036038101906103c99190611257565b610866565b005b3480156103db575f80fd5b506103f660048036038101906103f19190611257565b61088f565b60405161040391906110e2565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047e575061047d826108a8565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104c3610921565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f61056561092b565b905080546003825580156105975760018160011c14303b1061058e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105af83838101906105aa9190611373565b610954565b80156105e4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106349190611489565b915091505f816106439061151b565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106b891906110e2565b602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190611595565b73ffffffffffffffffffffffffffffffffffffffff16148015610735575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561076f57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610776565b5f93505050505b95945050505050565b6107876109e2565b6107905f610a19565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061080d8383610adf565b905092915050565b600160149054906101000a900460e01b81565b6108306109e2565b63389a75e1600c52805f526020600c20805442111561085657636f5e88185f526004601cfd5b5f81555061086381610a19565b50565b61086e6109e2565b8060601b61088357637448fbae5f526004601cfd5b61088c81610a19565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a575061091982610b03565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61095c610b7c565b61096533610ba0565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a17576382b429005f526004601cfd5b565b610a21610c76565b15610a86577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610adc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610afb600160149054906101000a900460e01b8484610c7a565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b755750610b7482610ca6565b5b9050919050565b5f610b8561092b565b90508054600116610b9d5763d7e6bcf85f526004601cfd5b50565b610ba8610c76565b15610c20577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610be257630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c73565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d185750610d1782610d1f565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d915750610d9082610d98565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e4681610e12565b8114610e50575f80fd5b50565b5f81359050610e6181610e3d565b92915050565b5f60208284031215610e7c57610e7b610e0a565b5b5f610e8984828501610e53565b91505092915050565b5f8115159050919050565b610ea681610e92565b82525050565b5f602082019050610ebf5f830184610e9d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ee657610ee5610ec5565b5b8235905067ffffffffffffffff811115610f0357610f02610ec9565b5b602083019150836001820283011115610f1f57610f1e610ecd565b5b9250929050565b5f8060208385031215610f3c57610f3b610e0a565b5b5f83013567ffffffffffffffff811115610f5957610f58610e0e565b5b610f6585828601610ed1565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fb382610f71565b610fbd8185610f7b565b9350610fcd818560208601610f8b565b610fd681610f99565b840191505092915050565b5f604082019050610ff45f830185610e9d565b81810360208301526110068184610fa9565b90509392505050565b61101881610e12565b82525050565b5f6020820190506110315f83018461100f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61107961107461106f84611037565b611056565b611037565b9050919050565b5f61108a8261105f565b9050919050565b5f61109b82611080565b9050919050565b6110ab81611091565b82525050565b5f6020820190506110c45f8301846110a2565b92915050565b5f819050919050565b6110dc816110ca565b82525050565b5f6020820190506110f55f8301846110d3565b92915050565b611104816110ca565b811461110e575f80fd5b50565b5f8135905061111f816110fb565b92915050565b5f61112f82611037565b9050919050565b61113f81611125565b8114611149575f80fd5b50565b5f8135905061115a81611136565b92915050565b5f805f805f6080868803121561117957611178610e0a565b5b5f61118688828901611111565b955050602061119788828901611111565b94505060406111a88882890161114c565b935050606086013567ffffffffffffffff8111156111c9576111c8610e0e565b5b6111d588828901610ed1565b92509250509295509295909350565b6111ed81611125565b82525050565b5f6020820190506112065f8301846111e4565b92915050565b5f6020828403121561122157611220610e0a565b5b5f61122e84828501611111565b91505092915050565b5f6020820190508181035f83015261124f8184610fa9565b905092915050565b5f6020828403121561126c5761126b610e0a565b5b5f6112798482850161114c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112bc82610f99565b810181811067ffffffffffffffff821117156112db576112da611286565b5b80604052505050565b5f6112ed610e01565b90506112f982826112b3565b919050565b5f6080828403121561131357611312611282565b5b61131d60806112e4565b90505f61132c84828501611111565b5f83015250602061133f8482850161114c565b602083015250604061135384828501610e53565b604083015250606061136784828501611111565b60608301525092915050565b5f6080828403121561138857611387610e0a565b5b5f611395848285016112fe565b91505092915050565b5f6113a882611037565b9050919050565b6113b88161139e565b81146113c2575f80fd5b50565b5f813590506113d3816113af565b92915050565b5f80fd5b5f67ffffffffffffffff8211156113f7576113f6611286565b5b61140082610f99565b9050602081019050919050565b828183375f83830152505050565b5f61142d611428846113dd565b6112e4565b905082815260208101848484011115611449576114486113d9565b5b61145484828561140d565b509392505050565b5f82601f8301126114705761146f610ec5565b5b813561148084826020860161141b565b91505092915050565b5f806040838503121561149f5761149e610e0a565b5b5f6114ac858286016113c5565b925050602083013567ffffffffffffffff8111156114cd576114cc610e0e565b5b6114d98582860161145c565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61150682516114f2565b80915050919050565b5f82821b905092915050565b5f61152582610f71565b8261152f846114e3565b905061153a816114fb565b9250602082101561157a576115757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261150f565b831692505b5050919050565b5f8151905061158f81611136565b92915050565b5f602082840312156115aa576115a9610e0a565b5b5f6115b784828501611581565b9150509291505056fea26469706673582212208cd0bdc2ce8ff3df85ecaf6e2269e57686b65ee716e3cac03754933fce34f39d64736f6c634300081a0033",C0="0x608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c4714610332578063ea3d508a1461036e578063f04e283e14610398578063f2fde38b146103b4578063fee81cf4146103d057610113565b8063715018a61461026e5780638da5cb5b146102785780639a8a0592146102a2578063bec95277146102cc578063d4b839921461030857610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e67565b61040c565b60405161014a9190610eac565b60405180910390f35b61016d60048036038101906101689190610f26565b610485565b60405161017b929190610fe1565b60405180910390f35b61018c6104ba565b005b348015610199575f80fd5b506101a261050b565b6040516101af919061101e565b60405180910390f35b3480156101c3575f80fd5b506101cc610532565b6040516101d991906110b1565b60405180910390f35b3480156101ed575f80fd5b506101f6610556565b60405161020391906110e2565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f26565b61055c565b005b61023c6105e9565b005b61025860048036038101906102539190611160565b610622565b6040516102659190610eac565b60405180910390f35b61027661077f565b005b348015610283575f80fd5b5061028c610792565b60405161029991906111f3565b60405180910390f35b3480156102ad575f80fd5b506102b66107ba565b6040516102c391906110e2565b60405180910390f35b3480156102d7575f80fd5b506102f260048036038101906102ed919061120c565b6107bf565b6040516102ff9190610eac565b60405180910390f35b348015610313575f80fd5b5061031c6107dc565b60405161032991906111f3565b60405180910390f35b34801561033d575f80fd5b5061035860048036038101906103539190610f26565b610801565b6040516103659190611237565b60405180910390f35b348015610379575f80fd5b50610382610815565b60405161038f919061101e565b60405180910390f35b6103b260048036038101906103ad9190611257565b610828565b005b6103ce60048036038101906103c99190611257565b610866565b005b3480156103db575f80fd5b506103f660048036038101906103f19190611257565b61088f565b60405161040391906110e2565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047e575061047d826108a8565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104c3610921565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f61056561092b565b905080546003825580156105975760018160011c14303b1061058e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105af83838101906105aa9190611373565b610954565b80156105e4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106349190611489565b915091505f816106439061151b565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106b891906110e2565b602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190611595565b73ffffffffffffffffffffffffffffffffffffffff16148015610735575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561076f57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610776565b5f93505050505b95945050505050565b6107876109e2565b6107905f610a19565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061080d8383610adf565b905092915050565b600160149054906101000a900460e01b81565b6108306109e2565b63389a75e1600c52805f526020600c20805442111561085657636f5e88185f526004601cfd5b5f81555061086381610a19565b50565b61086e6109e2565b8060601b61088357637448fbae5f526004601cfd5b61088c81610a19565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a575061091982610b03565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61095c610b7c565b61096533610ba0565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a17576382b429005f526004601cfd5b565b610a21610c76565b15610a86577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610adc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610afb600160149054906101000a900460e01b8484610c7a565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b755750610b7482610ca6565b5b9050919050565b5f610b8561092b565b90508054600116610b9d5763d7e6bcf85f526004601cfd5b50565b610ba8610c76565b15610c20577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610be257630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c73565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d185750610d1782610d1f565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d915750610d9082610d98565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e4681610e12565b8114610e50575f80fd5b50565b5f81359050610e6181610e3d565b92915050565b5f60208284031215610e7c57610e7b610e0a565b5b5f610e8984828501610e53565b91505092915050565b5f8115159050919050565b610ea681610e92565b82525050565b5f602082019050610ebf5f830184610e9d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ee657610ee5610ec5565b5b8235905067ffffffffffffffff811115610f0357610f02610ec9565b5b602083019150836001820283011115610f1f57610f1e610ecd565b5b9250929050565b5f8060208385031215610f3c57610f3b610e0a565b5b5f83013567ffffffffffffffff811115610f5957610f58610e0e565b5b610f6585828601610ed1565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fb382610f71565b610fbd8185610f7b565b9350610fcd818560208601610f8b565b610fd681610f99565b840191505092915050565b5f604082019050610ff45f830185610e9d565b81810360208301526110068184610fa9565b90509392505050565b61101881610e12565b82525050565b5f6020820190506110315f83018461100f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61107961107461106f84611037565b611056565b611037565b9050919050565b5f61108a8261105f565b9050919050565b5f61109b82611080565b9050919050565b6110ab81611091565b82525050565b5f6020820190506110c45f8301846110a2565b92915050565b5f819050919050565b6110dc816110ca565b82525050565b5f6020820190506110f55f8301846110d3565b92915050565b611104816110ca565b811461110e575f80fd5b50565b5f8135905061111f816110fb565b92915050565b5f61112f82611037565b9050919050565b61113f81611125565b8114611149575f80fd5b50565b5f8135905061115a81611136565b92915050565b5f805f805f6080868803121561117957611178610e0a565b5b5f61118688828901611111565b955050602061119788828901611111565b94505060406111a88882890161114c565b935050606086013567ffffffffffffffff8111156111c9576111c8610e0e565b5b6111d588828901610ed1565b92509250509295509295909350565b6111ed81611125565b82525050565b5f6020820190506112065f8301846111e4565b92915050565b5f6020828403121561122157611220610e0a565b5b5f61122e84828501611111565b91505092915050565b5f6020820190508181035f83015261124f8184610fa9565b905092915050565b5f6020828403121561126c5761126b610e0a565b5b5f6112798482850161114c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112bc82610f99565b810181811067ffffffffffffffff821117156112db576112da611286565b5b80604052505050565b5f6112ed610e01565b90506112f982826112b3565b919050565b5f6080828403121561131357611312611282565b5b61131d60806112e4565b90505f61132c84828501611111565b5f83015250602061133f8482850161114c565b602083015250604061135384828501610e53565b604083015250606061136784828501611111565b60608301525092915050565b5f6080828403121561138857611387610e0a565b5b5f611395848285016112fe565b91505092915050565b5f6113a882611037565b9050919050565b6113b88161139e565b81146113c2575f80fd5b50565b5f813590506113d3816113af565b92915050565b5f80fd5b5f67ffffffffffffffff8211156113f7576113f6611286565b5b61140082610f99565b9050602081019050919050565b828183375f83830152505050565b5f61142d611428846113dd565b6112e4565b905082815260208101848484011115611449576114486113d9565b5b61145484828561140d565b509392505050565b5f82601f8301126114705761146f610ec5565b5b813561148084826020860161141b565b91505092915050565b5f806040838503121561149f5761149e610e0a565b5b5f6114ac858286016113c5565b925050602083013567ffffffffffffffff8111156114cd576114cc610e0e565b5b6114d98582860161145c565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61150682516114f2565b80915050919050565b5f82821b905092915050565b5f61152582610f71565b8261152f846114e3565b905061153a816114fb565b9250602082101561157a576115757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261150f565b831692505b5050919050565b5f8151905061158f81611136565b92915050565b5f602082840312156115aa576115a9610e0a565b5b5f6115b784828501611581565b9150509291505056fea26469706673582212208cd0bdc2ce8ff3df85ecaf6e2269e57686b65ee716e3cac03754933fce34f39d64736f6c634300081a0033",_0={},z0={},G={_format:A0,contractName:g0,sourceName:R0,abi:O0,bytecode:x0,deployedBytecode:C0,linkReferences:_0,deployedLinkReferences:z0},N0="hh-sol-artifact-1",E0="EventAction",$0="contracts/actions/EventAction.sol",k0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],L0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516124506100c85f395f61034a01526124505ff3fe608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906113b2565b610273565b6040516100c791906113f7565b60405180910390f35b6100ea60048036038101906100e59190611471565b6102ec565b6040516100f892919061152c565b60405180910390f35b34801561010c575f80fd5b50610115610321565b6040516101229190611569565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115fc565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611471565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e9190611986565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c891906119d0565b610651565b6040516101da9190611a81565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611471565b610887565b6040516102169190611aa1565b60405180910390f35b34801561022a575f80fd5b506102336108bb565b6040516102409190611b27565b60405180910390f35b348015610254575f80fd5b5061025d610993565b60405161026a9190611b4f565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261099f565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a18565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612077565b610a41565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610648578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611656565b5b600181111561047c5761047b611656565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611656565b5b600781111561054257610541611656565b5b81526020015f820160019054906101000a900460ff16600481111561056a57610569611656565b5b600481111561057c5761057b611656565b5b81526020015f820160029054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820180546105b5906120eb565b80601f01602080910402602001604051908101604052809291908181526020018280546105e1906120eb565b801561062c5780601f106106035761010080835404028352916020019161062c565b820191905f5260205f20905b81548152906001019060200180831161060f57829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610659611240565b6004828154811061066d5761066c61211b565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106b1576106b0611656565b5b60018111156106c3576106c2611656565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561077757610776611656565b5b600781111561078957610788611656565b5b81526020015f820160019054906101000a900460ff1660048111156107b1576107b0611656565b5b60048111156107c3576107c2611656565b5b81526020015f820160029054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820180546107fc906120eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610828906120eb565b80156108735780601f1061084a57610100808354040283529160200191610873565b820191905f5260205f20905b81548152906001019060200180831161085657829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c36112a5565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108f2576108f1611656565b5b600181111561090457610903611656565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a115750610a108261113a565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a496111b3565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a7657610a75611656565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b5857610b57611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610c0057610bff611656565b5b02179055506020820151815f0160016101000a81548160ff02191690836004811115610c2f57610c2e611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001019081610c6f91906122dc565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cd357610cd2611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d7b57610d7a611656565b5b02179055506020820151815f0160016101000a81548160ff02191690836004811115610daa57610da9611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001019081610dea91906122dc565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e4e57610e4d611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ef657610ef5611656565b5b02179055506020820151815f0160016101000a81548160ff02191690836004811115610f2557610f24611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001019081610f6591906122dc565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fc957610fc8611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561107157611070611656565b5b02179055506020820151815f0160016101000a81548160ff021916908360048111156110a05761109f611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010190816110e091906122dc565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161112f9594939291906123ab565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111ac57506111ab826111d7565b5b9050919050565b5f6111bc610a18565b905080546001166111d45763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561126757611266611656565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f815260200161129f6112fd565b81525090565b6040518060a001604052805f60018111156112c3576112c2611656565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561131b5761131a611656565b5b81526020015f600481111561133357611332611656565b5b81526020015f63ffffffff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113918161135d565b811461139b575f80fd5b50565b5f813590506113ac81611388565b92915050565b5f602082840312156113c7576113c6611355565b5b5f6113d48482850161139e565b91505092915050565b5f8115159050919050565b6113f1816113dd565b82525050565b5f60208201905061140a5f8301846113e8565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261143157611430611410565b5b8235905067ffffffffffffffff81111561144e5761144d611414565b5b60208301915083600182028301111561146a57611469611418565b5b9250929050565b5f806020838503121561148757611486611355565b5b5f83013567ffffffffffffffff8111156114a4576114a3611359565b5b6114b08582860161141c565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114fe826114bc565b61150881856114c6565b93506115188185602086016114d6565b611521816114e4565b840191505092915050565b5f60408201905061153f5f8301856113e8565b818103602083015261155181846114f4565b90509392505050565b6115638161135d565b82525050565b5f60208201905061157c5f83018461155a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6115c46115bf6115ba84611582565b6115a1565b611582565b9050919050565b5f6115d5826115aa565b9050919050565b5f6115e6826115cb565b9050919050565b6115f6816115dc565b82525050565b5f60208201905061160f5f8301846115ed565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6116508161163e565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061169457611693611656565b5b50565b5f8190506116a482611683565b919050565b5f6116b382611697565b9050919050565b6116c3816116a9565b82525050565b5f60ff82169050919050565b6116de816116c9565b82525050565b5f6116ee82611582565b9050919050565b6116fe816116e4565b82525050565b5f819050919050565b61171681611704565b82525050565b6008811061172d5761172c611656565b5b50565b5f81905061173d8261171c565b919050565b5f61174c82611730565b9050919050565b61175c81611742565b82525050565b6005811061177357611772611656565b5b50565b5f81905061178382611762565b919050565b5f61179282611776565b9050919050565b6117a281611788565b82525050565b5f63ffffffff82169050919050565b6117c0816117a8565b82525050565b5f82825260208201905092915050565b5f6117e0826114bc565b6117ea81856117c6565b93506117fa8185602086016114d6565b611803816114e4565b840191505092915050565b5f608083015f8301516118235f860182611753565b5060208301516118366020860182611799565b50604083015161184960408601826117b7565b506060830151848203606086015261186182826117d6565b9150508091505092915050565b5f60c083015f8301516118835f860182611647565b50602083015161189660208601826116ba565b5060408301516118a960408601826116d5565b5060608301516118bc60608601826116f5565b5060808301516118cf608086018261170d565b5060a083015184820360a08601526118e7828261180e565b9150508091505092915050565b5f6118ff838361186e565b905092915050565b5f602082019050919050565b5f61191d82611615565b611927818561161f565b9350836020820285016119398561162f565b805f5b85811015611974578484038952815161195585826118f4565b945061196083611907565b925060208a0199505060018101905061193c565b50829750879550505050505092915050565b5f6020820190508181035f83015261199e8184611913565b905092915050565b6119af81611704565b81146119b9575f80fd5b50565b5f813590506119ca816119a6565b92915050565b5f602082840312156119e5576119e4611355565b5b5f6119f2848285016119bc565b91505092915050565b5f60c083015f830151611a105f860182611647565b506020830151611a2360208601826116ba565b506040830151611a3660408601826116d5565b506060830151611a4960608601826116f5565b506080830151611a5c608086018261170d565b5060a083015184820360a0860152611a74828261180e565b9150508091505092915050565b5f6020820190508181035f830152611a9981846119fb565b905092915050565b5f6020820190508181035f830152611ab981846114f4565b905092915050565b60a082015f820151611ad55f8501826116ba565b506020820151611ae86020850182611647565b506040820151611afb60408501826116d5565b506060820151611b0e60608501826116f5565b506080820151611b21608085018261170d565b50505050565b5f60a082019050611b3a5f830184611ac1565b92915050565b611b4981611704565b82525050565b5f602082019050611b625f830184611b40565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ba2826114e4565b810181811067ffffffffffffffff82111715611bc157611bc0611b6c565b5b80604052505050565b5f611bd361134c565b9050611bdf8282611b99565b919050565b5f80fd5b60028110611bf4575f80fd5b50565b5f81359050611c0581611be8565b92915050565b611c148161163e565b8114611c1e575f80fd5b50565b5f81359050611c2f81611c0b565b92915050565b611c3e816116c9565b8114611c48575f80fd5b50565b5f81359050611c5981611c35565b92915050565b611c68816116e4565b8114611c72575f80fd5b50565b5f81359050611c8381611c5f565b92915050565b5f60a08284031215611c9e57611c9d611b68565b5b611ca860a0611bca565b90505f611cb784828501611bf7565b5f830152506020611cca84828501611c21565b6020830152506040611cde84828501611c4b565b6040830152506060611cf284828501611c75565b6060830152506080611d06848285016119bc565b60808301525092915050565b60088110611d1e575f80fd5b50565b5f81359050611d2f81611d12565b92915050565b60058110611d41575f80fd5b50565b5f81359050611d5281611d35565b92915050565b611d61816117a8565b8114611d6b575f80fd5b50565b5f81359050611d7c81611d58565b92915050565b5f80fd5b5f67ffffffffffffffff821115611da057611d9f611b6c565b5b611da9826114e4565b9050602081019050919050565b828183375f83830152505050565b5f611dd6611dd184611d86565b611bca565b905082815260208101848484011115611df257611df1611d82565b5b611dfd848285611db6565b509392505050565b5f82601f830112611e1957611e18611410565b5b8135611e29848260208601611dc4565b91505092915050565b5f60808284031215611e4757611e46611b68565b5b611e516080611bca565b90505f611e6084828501611d21565b5f830152506020611e7384828501611d44565b6020830152506040611e8784828501611d6e565b604083015250606082013567ffffffffffffffff811115611eab57611eaa611be4565b5b611eb784828501611e05565b60608301525092915050565b5f60c08284031215611ed857611ed7611b68565b5b611ee260c0611bca565b90505f611ef184828501611c21565b5f830152506020611f0484828501611bf7565b6020830152506040611f1884828501611c4b565b6040830152506060611f2c84828501611c75565b6060830152506080611f40848285016119bc565b60808301525060a082013567ffffffffffffffff811115611f6457611f63611be4565b5b611f7084828501611e32565b60a08301525092915050565b5f6101208284031215611f9257611f91611b68565b5b611f9c60a0611bca565b90505f611fab84828501611c89565b5f8301525060a082013567ffffffffffffffff811115611fce57611fcd611be4565b5b611fda84828501611ec3565b60208301525060c082013567ffffffffffffffff811115611ffe57611ffd611be4565b5b61200a84828501611ec3565b60408301525060e082013567ffffffffffffffff81111561202e5761202d611be4565b5b61203a84828501611ec3565b60608301525061010082013567ffffffffffffffff81111561205f5761205e611be4565b5b61206b84828501611ec3565b60808301525092915050565b5f6020828403121561208c5761208b611355565b5b5f82013567ffffffffffffffff8111156120a9576120a8611359565b5b6120b584828501611f7c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061210257607f821691505b602082108103612115576121146120be565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026121a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612169565b6121ae8683612169565b95508019841693508086168417925050509392505050565b5f6121e06121db6121d684611704565b6115a1565b611704565b9050919050565b5f819050919050565b6121f9836121c6565b61220d612205826121e7565b848454612175565b825550505050565b5f90565b612221612215565b61222c8184846121f0565b505050565b5b8181101561224f576122445f82612219565b600181019050612232565b5050565b601f8211156122945761226581612148565b61226e8461215a565b8101602085101561227d578190505b6122916122898561215a565b830182612231565b50505b505050565b5f82821c905092915050565b5f6122b45f1984600802612299565b1980831691505092915050565b5f6122cc83836122a5565b9150826002028217905092915050565b6122e5826114bc565b67ffffffffffffffff8111156122fe576122fd611b6c565b5b61230882546120eb565b612313828285612253565b5f60209050601f831160018114612344575f8415612332578287015190505b61233c85826122c1565b8655506123a3565b601f19841661235286612148565b5f5b8281101561237957848901518255600182019150602085019450602081019050612354565b868310156123965784890151612392601f8916826122a5565b8355505b6001600288020188555050505b505050505050565b5f610120820190506123bf5f830188611ac1565b81810360a08301526123d181876119fb565b905081810360c08301526123e581866119fb565b905081810360e08301526123f981856119fb565b905081810361010083015261240e81846119fb565b9050969550505050505056fea2646970667358221220c7ff4a150897568d1b0cf381b80c7477adfb1d4a61c0f1dbe23de1a9fd54af2f64736f6c634300081a0033",H0="0x608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906113b2565b610273565b6040516100c791906113f7565b60405180910390f35b6100ea60048036038101906100e59190611471565b6102ec565b6040516100f892919061152c565b60405180910390f35b34801561010c575f80fd5b50610115610321565b6040516101229190611569565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115fc565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611471565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e9190611986565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c891906119d0565b610651565b6040516101da9190611a81565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611471565b610887565b6040516102169190611aa1565b60405180910390f35b34801561022a575f80fd5b506102336108bb565b6040516102409190611b27565b60405180910390f35b348015610254575f80fd5b5061025d610993565b60405161026a9190611b4f565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261099f565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a18565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612077565b610a41565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610648578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611656565b5b600181111561047c5761047b611656565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611656565b5b600781111561054257610541611656565b5b81526020015f820160019054906101000a900460ff16600481111561056a57610569611656565b5b600481111561057c5761057b611656565b5b81526020015f820160029054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820180546105b5906120eb565b80601f01602080910402602001604051908101604052809291908181526020018280546105e1906120eb565b801561062c5780601f106106035761010080835404028352916020019161062c565b820191905f5260205f20905b81548152906001019060200180831161060f57829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610659611240565b6004828154811061066d5761066c61211b565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106b1576106b0611656565b5b60018111156106c3576106c2611656565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561077757610776611656565b5b600781111561078957610788611656565b5b81526020015f820160019054906101000a900460ff1660048111156107b1576107b0611656565b5b60048111156107c3576107c2611656565b5b81526020015f820160029054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820180546107fc906120eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610828906120eb565b80156108735780601f1061084a57610100808354040283529160200191610873565b820191905f5260205f20905b81548152906001019060200180831161085657829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c36112a5565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108f2576108f1611656565b5b600181111561090457610903611656565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a115750610a108261113a565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a496111b3565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a7657610a75611656565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b5857610b57611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610c0057610bff611656565b5b02179055506020820151815f0160016101000a81548160ff02191690836004811115610c2f57610c2e611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001019081610c6f91906122dc565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cd357610cd2611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d7b57610d7a611656565b5b02179055506020820151815f0160016101000a81548160ff02191690836004811115610daa57610da9611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001019081610dea91906122dc565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e4e57610e4d611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ef657610ef5611656565b5b02179055506020820151815f0160016101000a81548160ff02191690836004811115610f2557610f24611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001019081610f6591906122dc565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fc957610fc8611656565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561107157611070611656565b5b02179055506020820151815f0160016101000a81548160ff021916908360048111156110a05761109f611656565b5b02179055506040820151815f0160026101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010190816110e091906122dc565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161112f9594939291906123ab565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111ac57506111ab826111d7565b5b9050919050565b5f6111bc610a18565b905080546001166111d45763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561126757611266611656565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f815260200161129f6112fd565b81525090565b6040518060a001604052805f60018111156112c3576112c2611656565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f600781111561131b5761131a611656565b5b81526020015f600481111561133357611332611656565b5b81526020015f63ffffffff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113918161135d565b811461139b575f80fd5b50565b5f813590506113ac81611388565b92915050565b5f602082840312156113c7576113c6611355565b5b5f6113d48482850161139e565b91505092915050565b5f8115159050919050565b6113f1816113dd565b82525050565b5f60208201905061140a5f8301846113e8565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261143157611430611410565b5b8235905067ffffffffffffffff81111561144e5761144d611414565b5b60208301915083600182028301111561146a57611469611418565b5b9250929050565b5f806020838503121561148757611486611355565b5b5f83013567ffffffffffffffff8111156114a4576114a3611359565b5b6114b08582860161141c565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114fe826114bc565b61150881856114c6565b93506115188185602086016114d6565b611521816114e4565b840191505092915050565b5f60408201905061153f5f8301856113e8565b818103602083015261155181846114f4565b90509392505050565b6115638161135d565b82525050565b5f60208201905061157c5f83018461155a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6115c46115bf6115ba84611582565b6115a1565b611582565b9050919050565b5f6115d5826115aa565b9050919050565b5f6115e6826115cb565b9050919050565b6115f6816115dc565b82525050565b5f60208201905061160f5f8301846115ed565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6116508161163e565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061169457611693611656565b5b50565b5f8190506116a482611683565b919050565b5f6116b382611697565b9050919050565b6116c3816116a9565b82525050565b5f60ff82169050919050565b6116de816116c9565b82525050565b5f6116ee82611582565b9050919050565b6116fe816116e4565b82525050565b5f819050919050565b61171681611704565b82525050565b6008811061172d5761172c611656565b5b50565b5f81905061173d8261171c565b919050565b5f61174c82611730565b9050919050565b61175c81611742565b82525050565b6005811061177357611772611656565b5b50565b5f81905061178382611762565b919050565b5f61179282611776565b9050919050565b6117a281611788565b82525050565b5f63ffffffff82169050919050565b6117c0816117a8565b82525050565b5f82825260208201905092915050565b5f6117e0826114bc565b6117ea81856117c6565b93506117fa8185602086016114d6565b611803816114e4565b840191505092915050565b5f608083015f8301516118235f860182611753565b5060208301516118366020860182611799565b50604083015161184960408601826117b7565b506060830151848203606086015261186182826117d6565b9150508091505092915050565b5f60c083015f8301516118835f860182611647565b50602083015161189660208601826116ba565b5060408301516118a960408601826116d5565b5060608301516118bc60608601826116f5565b5060808301516118cf608086018261170d565b5060a083015184820360a08601526118e7828261180e565b9150508091505092915050565b5f6118ff838361186e565b905092915050565b5f602082019050919050565b5f61191d82611615565b611927818561161f565b9350836020820285016119398561162f565b805f5b85811015611974578484038952815161195585826118f4565b945061196083611907565b925060208a0199505060018101905061193c565b50829750879550505050505092915050565b5f6020820190508181035f83015261199e8184611913565b905092915050565b6119af81611704565b81146119b9575f80fd5b50565b5f813590506119ca816119a6565b92915050565b5f602082840312156119e5576119e4611355565b5b5f6119f2848285016119bc565b91505092915050565b5f60c083015f830151611a105f860182611647565b506020830151611a2360208601826116ba565b506040830151611a3660408601826116d5565b506060830151611a4960608601826116f5565b506080830151611a5c608086018261170d565b5060a083015184820360a0860152611a74828261180e565b9150508091505092915050565b5f6020820190508181035f830152611a9981846119fb565b905092915050565b5f6020820190508181035f830152611ab981846114f4565b905092915050565b60a082015f820151611ad55f8501826116ba565b506020820151611ae86020850182611647565b506040820151611afb60408501826116d5565b506060820151611b0e60608501826116f5565b506080820151611b21608085018261170d565b50505050565b5f60a082019050611b3a5f830184611ac1565b92915050565b611b4981611704565b82525050565b5f602082019050611b625f830184611b40565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ba2826114e4565b810181811067ffffffffffffffff82111715611bc157611bc0611b6c565b5b80604052505050565b5f611bd361134c565b9050611bdf8282611b99565b919050565b5f80fd5b60028110611bf4575f80fd5b50565b5f81359050611c0581611be8565b92915050565b611c148161163e565b8114611c1e575f80fd5b50565b5f81359050611c2f81611c0b565b92915050565b611c3e816116c9565b8114611c48575f80fd5b50565b5f81359050611c5981611c35565b92915050565b611c68816116e4565b8114611c72575f80fd5b50565b5f81359050611c8381611c5f565b92915050565b5f60a08284031215611c9e57611c9d611b68565b5b611ca860a0611bca565b90505f611cb784828501611bf7565b5f830152506020611cca84828501611c21565b6020830152506040611cde84828501611c4b565b6040830152506060611cf284828501611c75565b6060830152506080611d06848285016119bc565b60808301525092915050565b60088110611d1e575f80fd5b50565b5f81359050611d2f81611d12565b92915050565b60058110611d41575f80fd5b50565b5f81359050611d5281611d35565b92915050565b611d61816117a8565b8114611d6b575f80fd5b50565b5f81359050611d7c81611d58565b92915050565b5f80fd5b5f67ffffffffffffffff821115611da057611d9f611b6c565b5b611da9826114e4565b9050602081019050919050565b828183375f83830152505050565b5f611dd6611dd184611d86565b611bca565b905082815260208101848484011115611df257611df1611d82565b5b611dfd848285611db6565b509392505050565b5f82601f830112611e1957611e18611410565b5b8135611e29848260208601611dc4565b91505092915050565b5f60808284031215611e4757611e46611b68565b5b611e516080611bca565b90505f611e6084828501611d21565b5f830152506020611e7384828501611d44565b6020830152506040611e8784828501611d6e565b604083015250606082013567ffffffffffffffff811115611eab57611eaa611be4565b5b611eb784828501611e05565b60608301525092915050565b5f60c08284031215611ed857611ed7611b68565b5b611ee260c0611bca565b90505f611ef184828501611c21565b5f830152506020611f0484828501611bf7565b6020830152506040611f1884828501611c4b565b6040830152506060611f2c84828501611c75565b6060830152506080611f40848285016119bc565b60808301525060a082013567ffffffffffffffff811115611f6457611f63611be4565b5b611f7084828501611e32565b60a08301525092915050565b5f6101208284031215611f9257611f91611b68565b5b611f9c60a0611bca565b90505f611fab84828501611c89565b5f8301525060a082013567ffffffffffffffff811115611fce57611fcd611be4565b5b611fda84828501611ec3565b60208301525060c082013567ffffffffffffffff811115611ffe57611ffd611be4565b5b61200a84828501611ec3565b60408301525060e082013567ffffffffffffffff81111561202e5761202d611be4565b5b61203a84828501611ec3565b60608301525061010082013567ffffffffffffffff81111561205f5761205e611be4565b5b61206b84828501611ec3565b60808301525092915050565b5f6020828403121561208c5761208b611355565b5b5f82013567ffffffffffffffff8111156120a9576120a8611359565b5b6120b584828501611f7c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061210257607f821691505b602082108103612115576121146120be565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026121a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612169565b6121ae8683612169565b95508019841693508086168417925050509392505050565b5f6121e06121db6121d684611704565b6115a1565b611704565b9050919050565b5f819050919050565b6121f9836121c6565b61220d612205826121e7565b848454612175565b825550505050565b5f90565b612221612215565b61222c8184846121f0565b505050565b5b8181101561224f576122445f82612219565b600181019050612232565b5050565b601f8211156122945761226581612148565b61226e8461215a565b8101602085101561227d578190505b6122916122898561215a565b830182612231565b50505b505050565b5f82821c905092915050565b5f6122b45f1984600802612299565b1980831691505092915050565b5f6122cc83836122a5565b9150826002028217905092915050565b6122e5826114bc565b67ffffffffffffffff8111156122fe576122fd611b6c565b5b61230882546120eb565b612313828285612253565b5f60209050601f831160018114612344575f8415612332578287015190505b61233c85826122c1565b8655506123a3565b601f19841661235286612148565b5f5b8281101561237957848901518255600182019150602085019450602081019050612354565b868310156123965784890151612392601f8916826122a5565b8355505b6001600288020188555050505b505050505050565b5f610120820190506123bf5f830188611ac1565b81810360a08301526123d181876119fb565b905081810360c08301526123e581866119fb565b905081810360e08301526123f981856119fb565b905081810361010083015261240e81846119fb565b9050969550505050505056fea2646970667358221220c7ff4a150897568d1b0cf381b80c7477adfb1d4a61c0f1dbe23de1a9fd54af2f64736f6c634300081a0033",D0={},B0={},Z={_format:N0,contractName:E0,sourceName:$0,abi:k0,bytecode:L0,deployedBytecode:H0,linkReferences:D0,deployedLinkReferences:B0},S0="hh-sol-artifact-1",V0="SimpleAllowList",q0="contracts/allowlists/SimpleAllowList.sol",F0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],U0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",P0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",G0={},Z0={},W={_format:S0,contractName:V0,sourceName:q0,abi:F0,bytecode:U0,deployedBytecode:P0,linkReferences:G0,deployedLinkReferences:Z0},W0="hh-sol-artifact-1",j0="SimpleDenyList",K0="contracts/allowlists/SimpleDenyList.sol",Q0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Y0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118ff806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",J0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",X0={},ff={},j={_format:W0,contractName:j0,sourceName:K0,abi:Q0,bytecode:Y0,deployedBytecode:J0,linkReferences:X0,deployedLinkReferences:ff},bf="hh-sol-artifact-1",ef="ManagedBudget",af="contracts/budgets/ManagedBudget.sol",df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],tf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613931806100bd5f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",cf="0x608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",nf={},sf={},K={_format:bf,contractName:ef,sourceName:af,abi:df,bytecode:tf,deployedBytecode:cf,linkReferences:nf,deployedLinkReferences:sf},pf="hh-sol-artifact-1",yf="ManagedBudgetWithFees",rf="contracts/budgets/ManagedBudgetWithFees.sol",uf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],of="0x6080604052348015600e575f80fd5b50601b602b60201b60201c565b6027602b60201b60201c565b60bc565b5f6038609360201b60201c565b90508054600181161560515763f92ee8a95f526004601cfd5b8160c01c808260011c14608e578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b614ba6806100c95f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea264697066735822122010039560c98564ce71066efbd572ac9a2f813f6807e924ef36bff6c0e41844c064736f6c634300081a0033",lf="0x60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea264697066735822122010039560c98564ce71066efbd572ac9a2f813f6807e924ef36bff6c0e41844c064736f6c634300081a0033",mf={},Tf={},Q={_format:pf,contractName:yf,sourceName:rf,abi:uf,bytecode:of,deployedBytecode:lf,linkReferences:mf,deployedLinkReferences:Tf},vf="hh-sol-artifact-1",wf="VestingBudget",Mf="contracts/budgets/VestingBudget.sol",If=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],hf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612fc0806100bd5f395ff3fe608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",Af="0x608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",gf={},Rf={},Y={_format:vf,contractName:wf,sourceName:Mf,abi:If,bytecode:hf,deployedBytecode:Af,linkReferences:gf,deployedLinkReferences:Rf},Of="hh-sol-artifact-1",xf="AllowListIncentive",Cf="contracts/incentives/AllowListIncentive.sol",_f=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61180b806100bd5f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Nf="0x608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Ef={},$f={},J={_format:Of,contractName:xf,sourceName:Cf,abi:_f,bytecode:zf,deployedBytecode:Nf,linkReferences:Ef,deployedLinkReferences:$f},kf="hh-sol-artifact-1",Lf="CGDAIncentive",Hf="contracts/incentives/CGDAIncentive.sol",Df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Bf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612839806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a7c565b610777565b6040516102249190611ac1565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611af2565b60405180910390f35b610271600480360381019061026c9190611b35565b610899565b005b61028d60048036038101906102889190611bba565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bba565b6108bc565b6040516102c29190611ac1565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611af2565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c07565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c20565b61094f565b60405161035c9190611af2565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c5a565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d29565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611dfc565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611dfc565b610d39565b604051610413929190611e47565b60405180910390f35b61043660048036038101906104319190611bba565b610e8b565b005b348015610443575f80fd5b5061045e60048036038101906104599190611dfc565b610ea1565b60405161046b9190611ede565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bba565b610f71565b6040516104a79190611ac1565b60405180910390f35b6104b8610f88565b005b6104c2610fc1565b005b3480156104cf575f80fd5b506104d8610fd4565b6040516104e59190611af2565b60405180910390f35b3480156104f9575f80fd5b50610502610fd9565b6040516105129493929190611efe565b60405180910390f35b348015610526575f80fd5b5061052f610ff6565b60405161053c9190611c5a565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f41565b61101e565b6040516105789190611ac1565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611ff3565b611209565b005b3480156105b4575f80fd5b506105bd6112bf565b6040516105ca9190611af2565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c20565b6112c5565b6040516106069190611ac1565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f41565b6112e2565b6040516106429190611ac1565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611ff3565b6112f5565b005b34801561067e575f80fd5b506106876113ab565b6040516106949190611af2565b60405180910390f35b3480156106a8575f80fd5b506106b16113b1565b6040516106be9190611af2565b60405180910390f35b6106e160048036038101906106dc9190611c20565b6113b6565b005b6106fd60048036038101906106f89190611c20565b6113f4565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c20565b61141d565b6040516107329190611ac1565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c20565b611470565b60405161076e9190611af2565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611489565b5b9050919050565b5f80600280015442610802919061209e565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661150290919063ffffffff16565b90505f610e106002600101548461086691906120d1565b610870919061213f565b600260030154610880919061216f565b905081811161088f5780610891565b815b935050505090565b6108a33382611535565b50565b6108ae611544565b6108b8828261157b565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e061158b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611595565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121a2565b5b9050602002016020810190610a0d91906121f9565b90506001151581151503610a5257610a4d878784818110610a3157610a306121a2565b5b9050602002016020810190610a469190611c20565b600161157b565b610a85565b610a84878784818110610a6857610a676121a2565b5b9050602002016020810190610a7d9190611c20565b6001611535565b5b5080806001019150506109d9565b505050505050565b5f610aa46115ca565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612341565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff1661150290919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061236c565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115f3565b610c968260a0015160016116c9565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf59493929190611efe565b60405180910390a250508015610d34576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4681611595565b5f8585810190610d5691906124ba565b90505f8160200151806020019051810190610d719190612515565b9050610dc2825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661170a9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e36939291906125a5565b604051602081830303815290604052604051610e529190611ede565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e93611544565b610e9d8282611535565b5050565b60605f8383810190610eb39190612341565b9050604051806080016040528060016002811115610ed457610ed36125e1565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f379190612637565b604051602081830303815290604052815250604051602001610f59919061274d565b60405160208183030381529060405291505092915050565b5f8082610f7d8561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc9611544565b610fd25f611753565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611027611544565b61103084611819565b61107157836040517f4139d81d0000000000000000000000000000000000000000000000000000000081526004016110689190612790565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d7906127bc565b91905055505f6110e56107f0565b905042600280018190555060025f015481116111055760025f0154611116565b60025f015481611115919061209e565b5b60026003018190555061116b858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661170a9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d9939291906125a5565b6040516020818303038152906040526040516111f59190611ede565b60405180910390a260019150509392505050565b600261121481611595565b828290508585905014611253576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b7576112aa868683818110611276576112756121a2565b5b905060200201602081019061128b9190611c20565b85858481811061129e5761129d6121a2565b5b9050602002013561157b565b8080600101915050611255565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112ec84611819565b90509392505050565b600261130081611595565b82829050858590501461133f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156113a357611396868683818110611362576113616121a2565b5b90506020020160208101906113779190611c20565b85858481811061138a576113896121a2565b5b90506020020135611535565b8080600101915050611341565b505050505050565b60085481565b600181565b6113be611544565b63389a75e1600c52805f526020600c2080544211156113e457636f5e88185f526004601cfd5b5f8155506113f181611753565b50565b6113fc611544565b8060601b61141157637448fbae5f526004601cfd5b61141a81611753565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661143d610ff6565b73ffffffffffffffffffffffffffffffffffffffff1614806114695750611468826002600117610f71565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114fb57506114fa826118d8565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61154082825f611951565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611579576382b429005f526004601cfd5b565b61158782826001611951565b5050565b5f6202a300905090565b638b78c6d8195433146115c757638b78c6d8600c52335f52806020600c2054166115c6576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115fb6119a9565b15611673577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163557630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c6565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661174a576390b8ec185f526004601cfd5b5f603452505050565b61175b6119a9565b156117c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611816565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118236107f0565b90505f8111801561187d57508061187a3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661150290919063ffffffff16565b10155b80156118d0575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061194a5750611949826119ad565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361197357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a5b81611a27565b8114611a65575f80fd5b50565b5f81359050611a7681611a52565b92915050565b5f60208284031215611a9157611a90611a1f565b5b5f611a9e84828501611a68565b91505092915050565b5f8115159050919050565b611abb81611aa7565b82525050565b5f602082019050611ad45f830184611ab2565b92915050565b5f819050919050565b611aec81611ada565b82525050565b5f602082019050611b055f830184611ae3565b92915050565b611b1481611ada565b8114611b1e575f80fd5b50565b5f81359050611b2f81611b0b565b92915050565b5f60208284031215611b4a57611b49611a1f565b5b5f611b5784828501611b21565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b8982611b60565b9050919050565b611b9981611b7f565b8114611ba3575f80fd5b50565b5f81359050611bb481611b90565b92915050565b5f8060408385031215611bd057611bcf611a1f565b5b5f611bdd85828601611ba6565b9250506020611bee85828601611b21565b9150509250929050565b611c0181611a27565b82525050565b5f602082019050611c1a5f830184611bf8565b92915050565b5f60208284031215611c3557611c34611a1f565b5b5f611c4284828501611ba6565b91505092915050565b611c5481611b7f565b82525050565b5f602082019050611c6d5f830184611c4b565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c9457611c93611c73565b5b8235905067ffffffffffffffff811115611cb157611cb0611c77565b5b602083019150836020820283011115611ccd57611ccc611c7b565b5b9250929050565b5f8083601f840112611ce957611ce8611c73565b5b8235905067ffffffffffffffff811115611d0657611d05611c77565b5b602083019150836020820283011115611d2257611d21611c7b565b5b9250929050565b5f805f8060408587031215611d4157611d40611a1f565b5b5f85013567ffffffffffffffff811115611d5e57611d5d611a23565b5b611d6a87828801611c7f565b9450945050602085013567ffffffffffffffff811115611d8d57611d8c611a23565b5b611d9987828801611cd4565b925092505092959194509250565b5f8083601f840112611dbc57611dbb611c73565b5b8235905067ffffffffffffffff811115611dd957611dd8611c77565b5b602083019150836001820283011115611df557611df4611c7b565b5b9250929050565b5f8060208385031215611e1257611e11611a1f565b5b5f83013567ffffffffffffffff811115611e2f57611e2e611a23565b5b611e3b85828601611da7565b92509250509250929050565b5f604082019050611e5a5f830185611ae3565b611e676020830184611c4b565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611eb082611e6e565b611eba8185611e78565b9350611eca818560208601611e88565b611ed381611e96565b840191505092915050565b5f6020820190508181035f830152611ef68184611ea6565b905092915050565b5f608082019050611f115f830187611ae3565b611f1e6020830186611ae3565b611f2b6040830185611ae3565b611f386060830184611ae3565b95945050505050565b5f805f60408486031215611f5857611f57611a1f565b5b5f611f6586828701611ba6565b935050602084013567ffffffffffffffff811115611f8657611f85611a23565b5b611f9286828701611da7565b92509250509250925092565b5f8083601f840112611fb357611fb2611c73565b5b8235905067ffffffffffffffff811115611fd057611fcf611c77565b5b602083019150836020820283011115611fec57611feb611c7b565b5b9250929050565b5f805f806040858703121561200b5761200a611a1f565b5b5f85013567ffffffffffffffff81111561202857612027611a23565b5b61203487828801611c7f565b9450945050602085013567ffffffffffffffff81111561205757612056611a23565b5b61206387828801611f9e565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120a882611ada565b91506120b383611ada565b92508282039050818111156120cb576120ca612071565b5b92915050565b5f6120db82611ada565b91506120e683611ada565b92508282026120f481611ada565b9150828204841483151761210b5761210a612071565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61214982611ada565b915061215483611ada565b92508261216457612163612112565b5b828204905092915050565b5f61217982611ada565b915061218483611ada565b925082820190508082111561219c5761219b612071565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121d881611aa7565b81146121e2575f80fd5b50565b5f813590506121f3816121cf565b92915050565b5f6020828403121561220e5761220d611a1f565b5b5f61221b848285016121e5565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61225e82611e96565b810181811067ffffffffffffffff8211171561227d5761227c612228565b5b80604052505050565b5f61228f611a16565b905061229b8282612255565b919050565b5f80fd5b5f60c082840312156122b9576122b8612224565b5b6122c360c0612286565b90505f6122d284828501611ba6565b5f8301525060206122e584828501611b21565b60208301525060406122f984828501611b21565b604083015250606061230d84828501611b21565b606083015250608061232184828501611b21565b60808301525060a061233584828501611ba6565b60a08301525092915050565b5f60c0828403121561235657612355611a1f565b5b5f612363848285016122a4565b91505092915050565b5f60608201905061237f5f830186611c4b565b61238c6020830185611ae3565b6123996040830184611ae3565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123bf576123be612228565b5b6123c882611e96565b9050602081019050919050565b828183375f83830152505050565b5f6123f56123f0846123a5565b612286565b905082815260208101848484011115612411576124106123a1565b5b61241c8482856123d5565b509392505050565b5f82601f83011261243857612437611c73565b5b81356124488482602086016123e3565b91505092915050565b5f6040828403121561246657612465612224565b5b6124706040612286565b90505f61247f84828501611ba6565b5f83015250602082013567ffffffffffffffff8111156124a2576124a16122a0565b5b6124ae84828501612424565b60208301525092915050565b5f602082840312156124cf576124ce611a1f565b5b5f82013567ffffffffffffffff8111156124ec576124eb611a23565b5b6124f884828501612451565b91505092915050565b5f8151905061250f81611b0b565b92915050565b5f6020828403121561252a57612529611a1f565b5b5f61253784828501612501565b91505092915050565b5f8160601b9050919050565b5f61255682612540565b9050919050565b5f6125678261254c565b9050919050565b61257f61257a82611b7f565b61255d565b82525050565b5f819050919050565b61259f61259a82611ada565b612585565b82525050565b5f6125b0828661256e565b6014820191506125c0828561256e565b6014820191506125d0828461258e565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61261781611ada565b82525050565b602082015f8201516126315f85018261260e565b50505050565b5f60208201905061264a5f83018461261d565b92915050565b60038110612661576126606125e1565b5b50565b5f81905061267182612650565b919050565b5f61268082612664565b9050919050565b61269081612676565b82525050565b61269f81611b7f565b82525050565b5f82825260208201905092915050565b5f6126bf82611e6e565b6126c981856126a5565b93506126d9818560208601611e88565b6126e281611e96565b840191505092915050565b5f608083015f8301516127025f860182612687565b5060208301516127156020860182612696565b5060408301516127286040860182612696565b506060830151848203606086015261274082826126b5565b9150508091505092915050565b5f6020820190508181035f83015261276581846126ed565b905092915050565b50565b5f61277b5f83611e78565b91506127868261276d565b5f82019050919050565b5f6040820190506127a35f830184611c4b565b81810360208301526127b481612770565b905092915050565b5f6127c682611ada565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127f8576127f7612071565b5b60018201905091905056fea264697066735822122073ee55b6a7ccfc1454034ecdb2d3de6f24f1abad0f5fba5b13b1a9b1a80ddec664736f6c634300081a0033",Sf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a7c565b610777565b6040516102249190611ac1565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611af2565b60405180910390f35b610271600480360381019061026c9190611b35565b610899565b005b61028d60048036038101906102889190611bba565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bba565b6108bc565b6040516102c29190611ac1565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611af2565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c07565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c20565b61094f565b60405161035c9190611af2565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c5a565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d29565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611dfc565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611dfc565b610d39565b604051610413929190611e47565b60405180910390f35b61043660048036038101906104319190611bba565b610e8b565b005b348015610443575f80fd5b5061045e60048036038101906104599190611dfc565b610ea1565b60405161046b9190611ede565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bba565b610f71565b6040516104a79190611ac1565b60405180910390f35b6104b8610f88565b005b6104c2610fc1565b005b3480156104cf575f80fd5b506104d8610fd4565b6040516104e59190611af2565b60405180910390f35b3480156104f9575f80fd5b50610502610fd9565b6040516105129493929190611efe565b60405180910390f35b348015610526575f80fd5b5061052f610ff6565b60405161053c9190611c5a565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f41565b61101e565b6040516105789190611ac1565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190611ff3565b611209565b005b3480156105b4575f80fd5b506105bd6112bf565b6040516105ca9190611af2565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c20565b6112c5565b6040516106069190611ac1565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f41565b6112e2565b6040516106429190611ac1565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190611ff3565b6112f5565b005b34801561067e575f80fd5b506106876113ab565b6040516106949190611af2565b60405180910390f35b3480156106a8575f80fd5b506106b16113b1565b6040516106be9190611af2565b60405180910390f35b6106e160048036038101906106dc9190611c20565b6113b6565b005b6106fd60048036038101906106f89190611c20565b6113f4565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c20565b61141d565b6040516107329190611ac1565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c20565b611470565b60405161076e9190611af2565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611489565b5b9050919050565b5f80600280015442610802919061209e565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661150290919063ffffffff16565b90505f610e106002600101548461086691906120d1565b610870919061213f565b600260030154610880919061216f565b905081811161088f5780610891565b815b935050505090565b6108a33382611535565b50565b6108ae611544565b6108b8828261157b565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e061158b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611595565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121a2565b5b9050602002016020810190610a0d91906121f9565b90506001151581151503610a5257610a4d878784818110610a3157610a306121a2565b5b9050602002016020810190610a469190611c20565b600161157b565b610a85565b610a84878784818110610a6857610a676121a2565b5b9050602002016020810190610a7d9190611c20565b6001611535565b5b5080806001019150506109d9565b505050505050565b5f610aa46115ca565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612341565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff1661150290919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061236c565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115f3565b610c968260a0015160016116c9565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf59493929190611efe565b60405180910390a250508015610d34576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4681611595565b5f8585810190610d5691906124ba565b90505f8160200151806020019051810190610d719190612515565b9050610dc2825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661170a9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e36939291906125a5565b604051602081830303815290604052604051610e529190611ede565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e93611544565b610e9d8282611535565b5050565b60605f8383810190610eb39190612341565b9050604051806080016040528060016002811115610ed457610ed36125e1565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f379190612637565b604051602081830303815290604052815250604051602001610f59919061274d565b60405160208183030381529060405291505092915050565b5f8082610f7d8561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc9611544565b610fd25f611753565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611027611544565b61103084611819565b61107157836040517f4139d81d0000000000000000000000000000000000000000000000000000000081526004016110689190612790565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d7906127bc565b91905055505f6110e56107f0565b905042600280018190555060025f015481116111055760025f0154611116565b60025f015481611115919061209e565b5b60026003018190555061116b858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661170a9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d9939291906125a5565b6040516020818303038152906040526040516111f59190611ede565b60405180910390a260019150509392505050565b600261121481611595565b828290508585905014611253576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b7576112aa868683818110611276576112756121a2565b5b905060200201602081019061128b9190611c20565b85858481811061129e5761129d6121a2565b5b9050602002013561157b565b8080600101915050611255565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112ec84611819565b90509392505050565b600261130081611595565b82829050858590501461133f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156113a357611396868683818110611362576113616121a2565b5b90506020020160208101906113779190611c20565b85858481811061138a576113896121a2565b5b90506020020135611535565b8080600101915050611341565b505050505050565b60085481565b600181565b6113be611544565b63389a75e1600c52805f526020600c2080544211156113e457636f5e88185f526004601cfd5b5f8155506113f181611753565b50565b6113fc611544565b8060601b61141157637448fbae5f526004601cfd5b61141a81611753565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661143d610ff6565b73ffffffffffffffffffffffffffffffffffffffff1614806114695750611468826002600117610f71565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114fb57506114fa826118d8565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61154082825f611951565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611579576382b429005f526004601cfd5b565b61158782826001611951565b5050565b5f6202a300905090565b638b78c6d8195433146115c757638b78c6d8600c52335f52806020600c2054166115c6576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115fb6119a9565b15611673577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163557630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c6565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661174a576390b8ec185f526004601cfd5b5f603452505050565b61175b6119a9565b156117c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611816565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118236107f0565b90505f8111801561187d57508061187a3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661150290919063ffffffff16565b10155b80156118d0575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061194a5750611949826119ad565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361197357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a5b81611a27565b8114611a65575f80fd5b50565b5f81359050611a7681611a52565b92915050565b5f60208284031215611a9157611a90611a1f565b5b5f611a9e84828501611a68565b91505092915050565b5f8115159050919050565b611abb81611aa7565b82525050565b5f602082019050611ad45f830184611ab2565b92915050565b5f819050919050565b611aec81611ada565b82525050565b5f602082019050611b055f830184611ae3565b92915050565b611b1481611ada565b8114611b1e575f80fd5b50565b5f81359050611b2f81611b0b565b92915050565b5f60208284031215611b4a57611b49611a1f565b5b5f611b5784828501611b21565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b8982611b60565b9050919050565b611b9981611b7f565b8114611ba3575f80fd5b50565b5f81359050611bb481611b90565b92915050565b5f8060408385031215611bd057611bcf611a1f565b5b5f611bdd85828601611ba6565b9250506020611bee85828601611b21565b9150509250929050565b611c0181611a27565b82525050565b5f602082019050611c1a5f830184611bf8565b92915050565b5f60208284031215611c3557611c34611a1f565b5b5f611c4284828501611ba6565b91505092915050565b611c5481611b7f565b82525050565b5f602082019050611c6d5f830184611c4b565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c9457611c93611c73565b5b8235905067ffffffffffffffff811115611cb157611cb0611c77565b5b602083019150836020820283011115611ccd57611ccc611c7b565b5b9250929050565b5f8083601f840112611ce957611ce8611c73565b5b8235905067ffffffffffffffff811115611d0657611d05611c77565b5b602083019150836020820283011115611d2257611d21611c7b565b5b9250929050565b5f805f8060408587031215611d4157611d40611a1f565b5b5f85013567ffffffffffffffff811115611d5e57611d5d611a23565b5b611d6a87828801611c7f565b9450945050602085013567ffffffffffffffff811115611d8d57611d8c611a23565b5b611d9987828801611cd4565b925092505092959194509250565b5f8083601f840112611dbc57611dbb611c73565b5b8235905067ffffffffffffffff811115611dd957611dd8611c77565b5b602083019150836001820283011115611df557611df4611c7b565b5b9250929050565b5f8060208385031215611e1257611e11611a1f565b5b5f83013567ffffffffffffffff811115611e2f57611e2e611a23565b5b611e3b85828601611da7565b92509250509250929050565b5f604082019050611e5a5f830185611ae3565b611e676020830184611c4b565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611eb082611e6e565b611eba8185611e78565b9350611eca818560208601611e88565b611ed381611e96565b840191505092915050565b5f6020820190508181035f830152611ef68184611ea6565b905092915050565b5f608082019050611f115f830187611ae3565b611f1e6020830186611ae3565b611f2b6040830185611ae3565b611f386060830184611ae3565b95945050505050565b5f805f60408486031215611f5857611f57611a1f565b5b5f611f6586828701611ba6565b935050602084013567ffffffffffffffff811115611f8657611f85611a23565b5b611f9286828701611da7565b92509250509250925092565b5f8083601f840112611fb357611fb2611c73565b5b8235905067ffffffffffffffff811115611fd057611fcf611c77565b5b602083019150836020820283011115611fec57611feb611c7b565b5b9250929050565b5f805f806040858703121561200b5761200a611a1f565b5b5f85013567ffffffffffffffff81111561202857612027611a23565b5b61203487828801611c7f565b9450945050602085013567ffffffffffffffff81111561205757612056611a23565b5b61206387828801611f9e565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120a882611ada565b91506120b383611ada565b92508282039050818111156120cb576120ca612071565b5b92915050565b5f6120db82611ada565b91506120e683611ada565b92508282026120f481611ada565b9150828204841483151761210b5761210a612071565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61214982611ada565b915061215483611ada565b92508261216457612163612112565b5b828204905092915050565b5f61217982611ada565b915061218483611ada565b925082820190508082111561219c5761219b612071565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121d881611aa7565b81146121e2575f80fd5b50565b5f813590506121f3816121cf565b92915050565b5f6020828403121561220e5761220d611a1f565b5b5f61221b848285016121e5565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61225e82611e96565b810181811067ffffffffffffffff8211171561227d5761227c612228565b5b80604052505050565b5f61228f611a16565b905061229b8282612255565b919050565b5f80fd5b5f60c082840312156122b9576122b8612224565b5b6122c360c0612286565b90505f6122d284828501611ba6565b5f8301525060206122e584828501611b21565b60208301525060406122f984828501611b21565b604083015250606061230d84828501611b21565b606083015250608061232184828501611b21565b60808301525060a061233584828501611ba6565b60a08301525092915050565b5f60c0828403121561235657612355611a1f565b5b5f612363848285016122a4565b91505092915050565b5f60608201905061237f5f830186611c4b565b61238c6020830185611ae3565b6123996040830184611ae3565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123bf576123be612228565b5b6123c882611e96565b9050602081019050919050565b828183375f83830152505050565b5f6123f56123f0846123a5565b612286565b905082815260208101848484011115612411576124106123a1565b5b61241c8482856123d5565b509392505050565b5f82601f83011261243857612437611c73565b5b81356124488482602086016123e3565b91505092915050565b5f6040828403121561246657612465612224565b5b6124706040612286565b90505f61247f84828501611ba6565b5f83015250602082013567ffffffffffffffff8111156124a2576124a16122a0565b5b6124ae84828501612424565b60208301525092915050565b5f602082840312156124cf576124ce611a1f565b5b5f82013567ffffffffffffffff8111156124ec576124eb611a23565b5b6124f884828501612451565b91505092915050565b5f8151905061250f81611b0b565b92915050565b5f6020828403121561252a57612529611a1f565b5b5f61253784828501612501565b91505092915050565b5f8160601b9050919050565b5f61255682612540565b9050919050565b5f6125678261254c565b9050919050565b61257f61257a82611b7f565b61255d565b82525050565b5f819050919050565b61259f61259a82611ada565b612585565b82525050565b5f6125b0828661256e565b6014820191506125c0828561256e565b6014820191506125d0828461258e565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61261781611ada565b82525050565b602082015f8201516126315f85018261260e565b50505050565b5f60208201905061264a5f83018461261d565b92915050565b60038110612661576126606125e1565b5b50565b5f81905061267182612650565b919050565b5f61268082612664565b9050919050565b61269081612676565b82525050565b61269f81611b7f565b82525050565b5f82825260208201905092915050565b5f6126bf82611e6e565b6126c981856126a5565b93506126d9818560208601611e88565b6126e281611e96565b840191505092915050565b5f608083015f8301516127025f860182612687565b5060208301516127156020860182612696565b5060408301516127286040860182612696565b506060830151848203606086015261274082826126b5565b9150508091505092915050565b5f6020820190508181035f83015261276581846126ed565b905092915050565b50565b5f61277b5f83611e78565b91506127868261276d565b5f82019050919050565b5f6040820190506127a35f830184611c4b565b81810360208301526127b481612770565b905092915050565b5f6127c682611ada565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127f8576127f7612071565b5b60018201905091905056fea264697066735822122073ee55b6a7ccfc1454034ecdb2d3de6f24f1abad0f5fba5b13b1a9b1a80ddec664736f6c634300081a0033",Vf={},qf={},X={_format:kf,contractName:Lf,sourceName:Hf,abi:Df,bytecode:Bf,deployedBytecode:Sf,linkReferences:Vf,deployedLinkReferences:qf},Ff="hh-sol-artifact-1",Uf="ERC20Incentive",Pf="contracts/incentives/ERC20Incentive.sol",Gf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d55806100bd5f395ff3fe608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ec1565b6107dc565b60405161023a9190611f06565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f37565b60405180910390f35b61028760048036038101906102829190611f7a565b61085d565b005b6102a3600480360381019061029e9190611fff565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611fff565b610880565b6040516102d89190611f06565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f37565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c919061204c565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612065565b610ae1565b6040516103889190611f37565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216e565b610b1f565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612241565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c9190612241565b610ed4565b60405161043f92919061228c565b60405180910390f35b610462600480360381019061045d9190611fff565b611175565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612241565b61118b565b6040516104979190612323565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611fff565b6112a9565b6040516104d39190611f06565b60405180910390f35b6104e46112c0565b005b6104ee6112f9565b005b3480156104fb575f80fd5b5061050461130c565b6040516105119190611f37565b60405180910390f35b348015610525575f80fd5b5061052e611311565b60405161053b919061209f565b60405180910390f35b34801561054f575f80fd5b50610558611339565b6040516105659190611f37565b60405180910390f35b348015610579575f80fd5b5061058261133f565b60405161058f91906123b6565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f7a565b611351565b6040516105cb919061209f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cf565b61138c565b6040516106079190611f06565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612481565b61167b565b005b348015610643575f80fd5b5061065e60048036038101906106599190612065565b611731565b60405161066b9190611f06565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cf565b61174e565b6040516106a79190611f06565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612481565b611761565b005b3480156106e3575f80fd5b506106ec611817565b6040516106f99190611f37565b60405180910390f35b34801561070d575f80fd5b5061071661181d565b6040516107239190611f37565b60405180910390f35b61074660048036038101906107419190612065565b611822565b005b610762600480360381019061075d9190612065565b611860565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612065565b611889565b6040516107979190611f06565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612065565b6118dc565b6040516107d39190611f37565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f5565b5b9050919050565b5f8054905090565b610867338261196e565b50565b61087261197d565b61087c82826119b4565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c4565b6001808111156108b4576108b3612343565b5b60025f9054906101000a900460ff1660018111156108d5576108d4612343565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180602001604052804244610924919061252c565b81525090505f6003808054905061093a846119eb565b610944919061258c565b81548110610955576109546125bc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264e565b604051602081830303815290604052604051610a579190612323565b60405180910390a2505050565b5f5481565b5f610a72611a43565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a4d565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125bc565b5b9050602002016020810190610b9f91906126b4565b90506001151581151503610be457610bdf878784818110610bc357610bc26125bc565b5b9050602002016020810190610bd89190612065565b60016119b4565b610c17565b610c16878784818110610bfa57610bf96125bc565b5b9050602002016020810190610c0f9190612065565b600161196e565b5b508080600101915050610b6b565b505050505050565b5f610c36611a82565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c79919061280b565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda612343565b5b82602001516001811115610cf257610cf1612343565b5b03610d01578160400151610d16565b81606001518260400151610d159190612836565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aab90919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612877565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd612343565b5b021790555082604001515f819055508260600151600681905550610e2133611ade565b610e3083608001516001611bb4565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128ac565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ee181611a4d565b5f8585810190610ef19190612a08565b90505f8160200151806020019051810190610f0c9190612a63565b9050600180811115610f2157610f20612343565b5b60025f9054906101000a900460ff166001811115610f4257610f41612343565b5b03610fc7575f5481141580610f5857505f600554115b15610fbb573382604051602001610f6f9190612b1f565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fb2929190612b3f565b60405180910390fd5b5f60068190555061105d565b5f805482610fd5919061258c565b14611038573382604051602001610fec9190612b1f565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102f929190612b3f565b60405180910390fd5b5f54816110459190612b6d565b60065f8282546110559190612b9d565b925050819055505b6110ac825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016111209392919061264e565b60405160208183030381529060405260405161113c9190612323565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b61117d61197d565b611187828261196e565b5050565b60605f838381019061119d919061280b565b90505f6001808111156111b3576111b2612343565b5b826020015160018111156111ca576111c9612343565b5b036111d95781604001516111ee565b816060015182604001516111ed9190612836565b5b905060405180608001604052806001600281111561120f5761120e612343565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126e9190612bf9565b6040516020818303038152906040528152506040516020016112909190612cb8565b6040516020818303038152906040529250505092915050565b5f80826112b585610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61130161197d565b61130a5f611bf5565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b60038181548110611360575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61139561197d565b61139e84611cbb565b6113d4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e7576113e6612343565b5b60025f9054906101000a900460ff16600181111561140857611407612343565b5b036115615760055f81548092919061141f90612cd8565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c5845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115349392919061264e565b6040516020818303038152906040526040516115509190612323565b60405180910390a260019050611674565b60055f81548092919061157390612cd8565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168681611a4d565b8282905085859050146116c5576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156117295761171c8686838181106116e8576116e76125bc565b5b90506020020160208101906116fd9190612065565b8585848181106117105761170f6125bc565b5b905060200201356119b4565b80806001019150506116c7565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175884611cbb565b90509392505050565b600261176c81611a4d565b8282905085859050146117ab576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180f576118028686838181106117ce576117cd6125bc565b5b90506020020160208101906117e39190612065565b8585848181106117f6576117f56125bc565b5b9050602002013561196e565b80806001019150506117ad565b505050505050565b60055481565b600181565b61182a61197d565b63389a75e1600c52805f526020600c20805442111561185057636f5e88185f526004601cfd5b5f81555061185d81611bf5565b50565b61186861197d565b8060601b61187d57637448fbae5f526004601cfd5b61188681611bf5565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a9611311565b73ffffffffffffffffffffffffffffffffffffffff1614806118d557506118d48260026001176112a9565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611967575061196682611d1d565b5b9050919050565b61197982825f611d96565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119b2576382b429005f526004601cfd5b565b6119c082826001611d96565b5050565b638b78c6d8600c52335f52806020600c2054166119e8576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a3a576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7f57638b78c6d8600c52335f52806020600c205416611a7e576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae6611dee565b15611b5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b2057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bb1565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bfd611dee565b15611c62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d165750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8f5750611d8e82611df2565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ea081611e6c565b8114611eaa575f80fd5b50565b5f81359050611ebb81611e97565b92915050565b5f60208284031215611ed657611ed5611e64565b5b5f611ee384828501611ead565b91505092915050565b5f8115159050919050565b611f0081611eec565b82525050565b5f602082019050611f195f830184611ef7565b92915050565b5f819050919050565b611f3181611f1f565b82525050565b5f602082019050611f4a5f830184611f28565b92915050565b611f5981611f1f565b8114611f63575f80fd5b50565b5f81359050611f7481611f50565b92915050565b5f60208284031215611f8f57611f8e611e64565b5b5f611f9c84828501611f66565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fce82611fa5565b9050919050565b611fde81611fc4565b8114611fe8575f80fd5b50565b5f81359050611ff981611fd5565b92915050565b5f806040838503121561201557612014611e64565b5b5f61202285828601611feb565b925050602061203385828601611f66565b9150509250929050565b61204681611e6c565b82525050565b5f60208201905061205f5f83018461203d565b92915050565b5f6020828403121561207a57612079611e64565b5b5f61208784828501611feb565b91505092915050565b61209981611fc4565b82525050565b5f6020820190506120b25f830184612090565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d9576120d86120b8565b5b8235905067ffffffffffffffff8111156120f6576120f56120bc565b5b602083019150836020820283011115612112576121116120c0565b5b9250929050565b5f8083601f84011261212e5761212d6120b8565b5b8235905067ffffffffffffffff81111561214b5761214a6120bc565b5b602083019150836020820283011115612167576121666120c0565b5b9250929050565b5f805f806040858703121561218657612185611e64565b5b5f85013567ffffffffffffffff8111156121a3576121a2611e68565b5b6121af878288016120c4565b9450945050602085013567ffffffffffffffff8111156121d2576121d1611e68565b5b6121de87828801612119565b925092505092959194509250565b5f8083601f840112612201576122006120b8565b5b8235905067ffffffffffffffff81111561221e5761221d6120bc565b5b60208301915083600182028301111561223a576122396120c0565b5b9250929050565b5f806020838503121561225757612256611e64565b5b5f83013567ffffffffffffffff81111561227457612273611e68565b5b612280858286016121ec565b92509250509250929050565b5f60408201905061229f5f830185611f28565b6122ac6020830184612090565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f5826122b3565b6122ff81856122bd565b935061230f8185602086016122cd565b612318816122db565b840191505092915050565b5f6020820190508181035f83015261233b81846122eb565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061238157612380612343565b5b50565b5f81905061239182612370565b919050565b5f6123a082612384565b9050919050565b6123b081612396565b82525050565b5f6020820190506123c95f8301846123a7565b92915050565b5f805f604084860312156123e6576123e5611e64565b5b5f6123f386828701611feb565b935050602084013567ffffffffffffffff81111561241457612413611e68565b5b612420868287016121ec565b92509250509250925092565b5f8083601f840112612441576124406120b8565b5b8235905067ffffffffffffffff81111561245e5761245d6120bc565b5b60208301915083602082028301111561247a576124796120c0565b5b9250929050565b5f805f806040858703121561249957612498611e64565b5b5f85013567ffffffffffffffff8111156124b6576124b5611e68565b5b6124c2878288016120c4565b9450945050602085013567ffffffffffffffff8111156124e5576124e4611e68565b5b6124f18782880161242c565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253682611f1f565b915061254183611f1f565b9250828201905080821115612559576125586124ff565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259682611f1f565b91506125a183611f1f565b9250826125b1576125b061255f565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125ff826125e9565b9050919050565b5f612610826125f5565b9050919050565b61262861262382611fc4565b612606565b82525050565b5f819050919050565b61264861264382611f1f565b61262e565b82525050565b5f6126598286612617565b6014820191506126698285612617565b6014820191506126798284612637565b602082019150819050949350505050565b61269381611eec565b811461269d575f80fd5b50565b5f813590506126ae8161268a565b92915050565b5f602082840312156126c9576126c8611e64565b5b5f6126d6848285016126a0565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612719826122db565b810181811067ffffffffffffffff82111715612738576127376126e3565b5b80604052505050565b5f61274a611e5b565b90506127568282612710565b919050565b5f80fd5b6002811061276b575f80fd5b50565b5f8135905061277c8161275f565b92915050565b5f60a08284031215612797576127966126df565b5b6127a160a0612741565b90505f6127b084828501611feb565b5f8301525060206127c38482850161276e565b60208301525060406127d784828501611f66565b60408301525060606127eb84828501611f66565b60608301525060806127ff84828501611feb565b60808301525092915050565b5f60a082840312156128205761281f611e64565b5b5f61282d84828501612782565b91505092915050565b5f61284082611f1f565b915061284b83611f1f565b925082820261285981611f1f565b915082820484148315176128705761286f6124ff565b5b5092915050565b5f60608201905061288a5f830186612090565b6128976020830185611f28565b6128a46040830184611f28565b949350505050565b5f6080820190506128bf5f8301876123a7565b6128cc6020830186611f28565b6128d96040830185611f28565b6128e66060830184612090565b95945050505050565b5f80fd5b5f67ffffffffffffffff82111561290d5761290c6126e3565b5b612916826122db565b9050602081019050919050565b828183375f83830152505050565b5f61294361293e846128f3565b612741565b90508281526020810184848401111561295f5761295e6128ef565b5b61296a848285612923565b509392505050565b5f82601f830112612986576129856120b8565b5b8135612996848260208601612931565b91505092915050565b5f604082840312156129b4576129b36126df565b5b6129be6040612741565b90505f6129cd84828501611feb565b5f83015250602082013567ffffffffffffffff8111156129f0576129ef61275b565b5b6129fc84828501612972565b60208301525092915050565b5f60208284031215612a1d57612a1c611e64565b5b5f82013567ffffffffffffffff811115612a3a57612a39611e68565b5b612a468482850161299f565b91505092915050565b5f81519050612a5d81611f50565b92915050565b5f60208284031215612a7857612a77611e64565b5b5f612a8584828501612a4f565b91505092915050565b612a9781611fc4565b82525050565b5f82825260208201905092915050565b5f612ab7826122b3565b612ac18185612a9d565b9350612ad18185602086016122cd565b612ada816122db565b840191505092915050565b5f604083015f830151612afa5f860182612a8e565b5060208301518482036020860152612b128282612aad565b9150508091505092915050565b5f6020820190508181035f830152612b378184612ae5565b905092915050565b5f604082019050612b525f830185612090565b8181036020830152612b6481846122eb565b90509392505050565b5f612b7782611f1f565b9150612b8283611f1f565b925082612b9257612b9161255f565b5b828204905092915050565b5f612ba782611f1f565b9150612bb283611f1f565b9250828203905081811115612bca57612bc96124ff565b5b92915050565b612bd981611f1f565b82525050565b602082015f820151612bf35f850182612bd0565b50505050565b5f602082019050612c0c5f830184612bdf565b92915050565b60038110612c2357612c22612343565b5b50565b5f819050612c3382612c12565b919050565b5f612c4282612c26565b9050919050565b612c5281612c38565b82525050565b5f608083015f830151612c6d5f860182612c49565b506020830151612c806020860182612a8e565b506040830151612c936040860182612a8e565b5060608301518482036060860152612cab8282612aad565b9150508091505092915050565b5f6020820190508181035f830152612cd08184612c58565b905092915050565b5f612ce282611f1f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1457612d136124ff565b5b60018201905091905056fea26469706673582212200e8a391db838eb2d13d44a9dd216b23fdde42adae1f7d41ca77ddcbca2d4937864736f6c634300081a0033",Wf="0x608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ec1565b6107dc565b60405161023a9190611f06565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f37565b60405180910390f35b61028760048036038101906102829190611f7a565b61085d565b005b6102a3600480360381019061029e9190611fff565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611fff565b610880565b6040516102d89190611f06565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f37565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c919061204c565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612065565b610ae1565b6040516103889190611f37565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209f565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216e565b610b1f565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612241565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c9190612241565b610ed4565b60405161043f92919061228c565b60405180910390f35b610462600480360381019061045d9190611fff565b611175565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612241565b61118b565b6040516104979190612323565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611fff565b6112a9565b6040516104d39190611f06565b60405180910390f35b6104e46112c0565b005b6104ee6112f9565b005b3480156104fb575f80fd5b5061050461130c565b6040516105119190611f37565b60405180910390f35b348015610525575f80fd5b5061052e611311565b60405161053b919061209f565b60405180910390f35b34801561054f575f80fd5b50610558611339565b6040516105659190611f37565b60405180910390f35b348015610579575f80fd5b5061058261133f565b60405161058f91906123b6565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f7a565b611351565b6040516105cb919061209f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cf565b61138c565b6040516106079190611f06565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612481565b61167b565b005b348015610643575f80fd5b5061065e60048036038101906106599190612065565b611731565b60405161066b9190611f06565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cf565b61174e565b6040516106a79190611f06565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d19190612481565b611761565b005b3480156106e3575f80fd5b506106ec611817565b6040516106f99190611f37565b60405180910390f35b34801561070d575f80fd5b5061071661181d565b6040516107239190611f37565b60405180910390f35b61074660048036038101906107419190612065565b611822565b005b610762600480360381019061075d9190612065565b611860565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612065565b611889565b6040516107979190611f06565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612065565b6118dc565b6040516107d39190611f37565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f5565b5b9050919050565b5f8054905090565b610867338261196e565b50565b61087261197d565b61087c82826119b4565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c4565b6001808111156108b4576108b3612343565b5b60025f9054906101000a900460ff1660018111156108d5576108d4612343565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180602001604052804244610924919061252c565b81525090505f6003808054905061093a846119eb565b610944919061258c565b81548110610955576109546125bc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264e565b604051602081830303815290604052604051610a579190612323565b60405180910390a2505050565b5f5481565b5f610a72611a43565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a4d565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125bc565b5b9050602002016020810190610b9f91906126b4565b90506001151581151503610be457610bdf878784818110610bc357610bc26125bc565b5b9050602002016020810190610bd89190612065565b60016119b4565b610c17565b610c16878784818110610bfa57610bf96125bc565b5b9050602002016020810190610c0f9190612065565b600161196e565b5b508080600101915050610b6b565b505050505050565b5f610c36611a82565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c79919061280b565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda612343565b5b82602001516001811115610cf257610cf1612343565b5b03610d01578160400151610d16565b81606001518260400151610d159190612836565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aab90919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612877565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd612343565b5b021790555082604001515f819055508260600151600681905550610e2133611ade565b610e3083608001516001611bb4565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128ac565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ee181611a4d565b5f8585810190610ef19190612a08565b90505f8160200151806020019051810190610f0c9190612a63565b9050600180811115610f2157610f20612343565b5b60025f9054906101000a900460ff166001811115610f4257610f41612343565b5b03610fc7575f5481141580610f5857505f600554115b15610fbb573382604051602001610f6f9190612b1f565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610fb2929190612b3f565b60405180910390fd5b5f60068190555061105d565b5f805482610fd5919061258c565b14611038573382604051602001610fec9190612b1f565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102f929190612b3f565b60405180910390fd5b5f54816110459190612b6d565b60065f8282546110559190612b9d565b925050819055505b6110ac825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151846040516020016111209392919061264e565b60405160208183030381529060405260405161113c9190612323565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b61117d61197d565b611187828261196e565b5050565b60605f838381019061119d919061280b565b90505f6001808111156111b3576111b2612343565b5b826020015160018111156111ca576111c9612343565b5b036111d95781604001516111ee565b816060015182604001516111ed9190612836565b5b905060405180608001604052806001600281111561120f5761120e612343565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126e9190612bf9565b6040516020818303038152906040528152506040516020016112909190612cb8565b6040516020818303038152906040529250505092915050565b5f80826112b585610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61130161197d565b61130a5f611bf5565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b60038181548110611360575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61139561197d565b61139e84611cbb565b6113d4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e7576113e6612343565b5b60025f9054906101000a900460ff16600181111561140857611407612343565b5b036115615760055f81548092919061141f90612cd8565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c5845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119fa9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115349392919061264e565b6040516020818303038152906040526040516115509190612323565b60405180910390a260019050611674565b60055f81548092919061157390612cd8565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168681611a4d565b8282905085859050146116c5576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156117295761171c8686838181106116e8576116e76125bc565b5b90506020020160208101906116fd9190612065565b8585848181106117105761170f6125bc565b5b905060200201356119b4565b80806001019150506116c7565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175884611cbb565b90509392505050565b600261176c81611a4d565b8282905085859050146117ab576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180f576118028686838181106117ce576117cd6125bc565b5b90506020020160208101906117e39190612065565b8585848181106117f6576117f56125bc565b5b9050602002013561196e565b80806001019150506117ad565b505050505050565b60055481565b600181565b61182a61197d565b63389a75e1600c52805f526020600c20805442111561185057636f5e88185f526004601cfd5b5f81555061185d81611bf5565b50565b61186861197d565b8060601b61187d57637448fbae5f526004601cfd5b61188681611bf5565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a9611311565b73ffffffffffffffffffffffffffffffffffffffff1614806118d557506118d48260026001176112a9565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611967575061196682611d1d565b5b9050919050565b61197982825f611d96565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119b2576382b429005f526004601cfd5b565b6119c082826001611d96565b5050565b638b78c6d8600c52335f52806020600c2054166119e8576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a3a576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7f57638b78c6d8600c52335f52806020600c205416611a7e576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae6611dee565b15611b5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b2057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bb1565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bfd611dee565b15611c62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d165750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8f5750611d8e82611df2565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ea081611e6c565b8114611eaa575f80fd5b50565b5f81359050611ebb81611e97565b92915050565b5f60208284031215611ed657611ed5611e64565b5b5f611ee384828501611ead565b91505092915050565b5f8115159050919050565b611f0081611eec565b82525050565b5f602082019050611f195f830184611ef7565b92915050565b5f819050919050565b611f3181611f1f565b82525050565b5f602082019050611f4a5f830184611f28565b92915050565b611f5981611f1f565b8114611f63575f80fd5b50565b5f81359050611f7481611f50565b92915050565b5f60208284031215611f8f57611f8e611e64565b5b5f611f9c84828501611f66565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fce82611fa5565b9050919050565b611fde81611fc4565b8114611fe8575f80fd5b50565b5f81359050611ff981611fd5565b92915050565b5f806040838503121561201557612014611e64565b5b5f61202285828601611feb565b925050602061203385828601611f66565b9150509250929050565b61204681611e6c565b82525050565b5f60208201905061205f5f83018461203d565b92915050565b5f6020828403121561207a57612079611e64565b5b5f61208784828501611feb565b91505092915050565b61209981611fc4565b82525050565b5f6020820190506120b25f830184612090565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d9576120d86120b8565b5b8235905067ffffffffffffffff8111156120f6576120f56120bc565b5b602083019150836020820283011115612112576121116120c0565b5b9250929050565b5f8083601f84011261212e5761212d6120b8565b5b8235905067ffffffffffffffff81111561214b5761214a6120bc565b5b602083019150836020820283011115612167576121666120c0565b5b9250929050565b5f805f806040858703121561218657612185611e64565b5b5f85013567ffffffffffffffff8111156121a3576121a2611e68565b5b6121af878288016120c4565b9450945050602085013567ffffffffffffffff8111156121d2576121d1611e68565b5b6121de87828801612119565b925092505092959194509250565b5f8083601f840112612201576122006120b8565b5b8235905067ffffffffffffffff81111561221e5761221d6120bc565b5b60208301915083600182028301111561223a576122396120c0565b5b9250929050565b5f806020838503121561225757612256611e64565b5b5f83013567ffffffffffffffff81111561227457612273611e68565b5b612280858286016121ec565b92509250509250929050565b5f60408201905061229f5f830185611f28565b6122ac6020830184612090565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f5826122b3565b6122ff81856122bd565b935061230f8185602086016122cd565b612318816122db565b840191505092915050565b5f6020820190508181035f83015261233b81846122eb565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061238157612380612343565b5b50565b5f81905061239182612370565b919050565b5f6123a082612384565b9050919050565b6123b081612396565b82525050565b5f6020820190506123c95f8301846123a7565b92915050565b5f805f604084860312156123e6576123e5611e64565b5b5f6123f386828701611feb565b935050602084013567ffffffffffffffff81111561241457612413611e68565b5b612420868287016121ec565b92509250509250925092565b5f8083601f840112612441576124406120b8565b5b8235905067ffffffffffffffff81111561245e5761245d6120bc565b5b60208301915083602082028301111561247a576124796120c0565b5b9250929050565b5f805f806040858703121561249957612498611e64565b5b5f85013567ffffffffffffffff8111156124b6576124b5611e68565b5b6124c2878288016120c4565b9450945050602085013567ffffffffffffffff8111156124e5576124e4611e68565b5b6124f18782880161242c565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253682611f1f565b915061254183611f1f565b9250828201905080821115612559576125586124ff565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259682611f1f565b91506125a183611f1f565b9250826125b1576125b061255f565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125ff826125e9565b9050919050565b5f612610826125f5565b9050919050565b61262861262382611fc4565b612606565b82525050565b5f819050919050565b61264861264382611f1f565b61262e565b82525050565b5f6126598286612617565b6014820191506126698285612617565b6014820191506126798284612637565b602082019150819050949350505050565b61269381611eec565b811461269d575f80fd5b50565b5f813590506126ae8161268a565b92915050565b5f602082840312156126c9576126c8611e64565b5b5f6126d6848285016126a0565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612719826122db565b810181811067ffffffffffffffff82111715612738576127376126e3565b5b80604052505050565b5f61274a611e5b565b90506127568282612710565b919050565b5f80fd5b6002811061276b575f80fd5b50565b5f8135905061277c8161275f565b92915050565b5f60a08284031215612797576127966126df565b5b6127a160a0612741565b90505f6127b084828501611feb565b5f8301525060206127c38482850161276e565b60208301525060406127d784828501611f66565b60408301525060606127eb84828501611f66565b60608301525060806127ff84828501611feb565b60808301525092915050565b5f60a082840312156128205761281f611e64565b5b5f61282d84828501612782565b91505092915050565b5f61284082611f1f565b915061284b83611f1f565b925082820261285981611f1f565b915082820484148315176128705761286f6124ff565b5b5092915050565b5f60608201905061288a5f830186612090565b6128976020830185611f28565b6128a46040830184611f28565b949350505050565b5f6080820190506128bf5f8301876123a7565b6128cc6020830186611f28565b6128d96040830185611f28565b6128e66060830184612090565b95945050505050565b5f80fd5b5f67ffffffffffffffff82111561290d5761290c6126e3565b5b612916826122db565b9050602081019050919050565b828183375f83830152505050565b5f61294361293e846128f3565b612741565b90508281526020810184848401111561295f5761295e6128ef565b5b61296a848285612923565b509392505050565b5f82601f830112612986576129856120b8565b5b8135612996848260208601612931565b91505092915050565b5f604082840312156129b4576129b36126df565b5b6129be6040612741565b90505f6129cd84828501611feb565b5f83015250602082013567ffffffffffffffff8111156129f0576129ef61275b565b5b6129fc84828501612972565b60208301525092915050565b5f60208284031215612a1d57612a1c611e64565b5b5f82013567ffffffffffffffff811115612a3a57612a39611e68565b5b612a468482850161299f565b91505092915050565b5f81519050612a5d81611f50565b92915050565b5f60208284031215612a7857612a77611e64565b5b5f612a8584828501612a4f565b91505092915050565b612a9781611fc4565b82525050565b5f82825260208201905092915050565b5f612ab7826122b3565b612ac18185612a9d565b9350612ad18185602086016122cd565b612ada816122db565b840191505092915050565b5f604083015f830151612afa5f860182612a8e565b5060208301518482036020860152612b128282612aad565b9150508091505092915050565b5f6020820190508181035f830152612b378184612ae5565b905092915050565b5f604082019050612b525f830185612090565b8181036020830152612b6481846122eb565b90509392505050565b5f612b7782611f1f565b9150612b8283611f1f565b925082612b9257612b9161255f565b5b828204905092915050565b5f612ba782611f1f565b9150612bb283611f1f565b9250828203905081811115612bca57612bc96124ff565b5b92915050565b612bd981611f1f565b82525050565b602082015f820151612bf35f850182612bd0565b50505050565b5f602082019050612c0c5f830184612bdf565b92915050565b60038110612c2357612c22612343565b5b50565b5f819050612c3382612c12565b919050565b5f612c4282612c26565b9050919050565b612c5281612c38565b82525050565b5f608083015f830151612c6d5f860182612c49565b506020830151612c806020860182612a8e565b506040830151612c936040860182612a8e565b5060608301518482036060860152612cab8282612aad565b9150508091505092915050565b5f6020820190508181035f830152612cd08184612c58565b905092915050565b5f612ce282611f1f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1457612d136124ff565b5b60018201905091905056fea26469706673582212200e8a391db838eb2d13d44a9dd216b23fdde42adae1f7d41ca77ddcbca2d4937864736f6c634300081a0033",jf={},Kf={},f0={_format:Ff,contractName:Uf,sourceName:Pf,abi:Gf,bytecode:Zf,deployedBytecode:Wf,linkReferences:jf,deployedLinkReferences:Kf},Qf="hh-sol-artifact-1",Yf="ERC20VariableCriteriaIncentive",Jf="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Xf=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],f5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d1b806100bd5f395ff3fe608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c6e565b61084b565b6040516102509190611cb3565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611ce4565b60405180910390f35b61029d60048036038101906102989190611d27565b6108cc565b005b6102b960048036038101906102b49190611dac565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dac565b6108ef565b6040516102ee9190611cb3565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611ce4565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611df9565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e12565b610982565b6040516103889190611ce4565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e4c565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f1b565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fee565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fee565b610d9c565b60405161043f929190612039565b60405180910390f35b610462600480360381019061045d9190611dac565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fee565b610f1c565b60405161049791906120d0565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dac565b610fea565b6040516104d39190611cb3565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611ce4565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611ce4565b60405180910390f35b34801561054f575f80fd5b50610558611058565b6040516105689493929190612196565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e4c565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611ce4565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e69190612268565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612281565b6111aa565b6040516106229190611cb3565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c9190612333565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611ce4565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e12565b611496565b6040516106b09190611cb3565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611ce4565b60405180910390f35b3480156106ee575f80fd5b5061070960048036038101906107049190612281565b6114b9565b6040516107169190611cb3565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190612333565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611ce4565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611ce4565b60405180910390f35b6107b560048036038101906107b09190611e12565b61158d565b005b6107d160048036038101906107cc9190611e12565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e12565b6115f4565b6040516108069190611cb3565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e12565b611647565b6040516108429190611ce4565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123b1565b5b9050602002016020810190610a409190612408565b90506001151581151503610a8557610a80878784818110610a6457610a636123b1565b5b9050602002016020810190610a799190611e12565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123b1565b5b9050602002016020810190610ab09190611e12565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612629565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb93929190612655565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120f0565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d53949392919061268a565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da981611739565b5f8585810190610db991906127e6565b90505f8160200151806020019051810190610dd49190612841565b90508060025f828254610de79190612899565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e19092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612931565b604051602081830303815290604052604051610ecd91906120d0565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129a8565b9250509150604051806080016040528060016002811115610f5357610f526120f0565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a21565b604051602081830303815290604052815250604051602001610fd19190612b28565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f61192a565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bb6565b60076040518060800160405290815f82015f9054906101000a900460ff166001811115611113576111126120f0565b5b6001811115611125576111246120f0565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bcd565b90505f81602001518060200190518101906111de9190612841565b90505f6111ea876119f0565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c14565b6112509190612c82565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cb2565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cb2565b92505081905550600160045f8282546112e49190612cb2565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e19092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612931565b6040516020818303038152906040526040516113c191906120d0565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123b1565b5b90506020020160208101906114599190611e12565b85858481811061146c5761146b6123b1565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c3846119f0565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123b1565b5b905060200201602081019061154e9190611e12565b858584818110611561576115606123b1565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c88161192a565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f18161192a565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d1826119ff565b5b9050919050565b6116e482825f611a78565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a78565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611ad0565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611921576390b8ec185f526004601cfd5b5f603452505050565b611932611ad0565b15611997577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a715750611a7082611ad4565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a9a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b465750611b4582611b4d565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bd457611bd36120f0565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c4d81611c19565b8114611c57575f80fd5b50565b5f81359050611c6881611c44565b92915050565b5f60208284031215611c8357611c82611c11565b5b5f611c9084828501611c5a565b91505092915050565b5f8115159050919050565b611cad81611c99565b82525050565b5f602082019050611cc65f830184611ca4565b92915050565b5f819050919050565b611cde81611ccc565b82525050565b5f602082019050611cf75f830184611cd5565b92915050565b611d0681611ccc565b8114611d10575f80fd5b50565b5f81359050611d2181611cfd565b92915050565b5f60208284031215611d3c57611d3b611c11565b5b5f611d4984828501611d13565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d7b82611d52565b9050919050565b611d8b81611d71565b8114611d95575f80fd5b50565b5f81359050611da681611d82565b92915050565b5f8060408385031215611dc257611dc1611c11565b5b5f611dcf85828601611d98565b9250506020611de085828601611d13565b9150509250929050565b611df381611c19565b82525050565b5f602082019050611e0c5f830184611dea565b92915050565b5f60208284031215611e2757611e26611c11565b5b5f611e3484828501611d98565b91505092915050565b611e4681611d71565b82525050565b5f602082019050611e5f5f830184611e3d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e8657611e85611e65565b5b8235905067ffffffffffffffff811115611ea357611ea2611e69565b5b602083019150836020820283011115611ebf57611ebe611e6d565b5b9250929050565b5f8083601f840112611edb57611eda611e65565b5b8235905067ffffffffffffffff811115611ef857611ef7611e69565b5b602083019150836020820283011115611f1457611f13611e6d565b5b9250929050565b5f805f8060408587031215611f3357611f32611c11565b5b5f85013567ffffffffffffffff811115611f5057611f4f611c15565b5b611f5c87828801611e71565b9450945050602085013567ffffffffffffffff811115611f7f57611f7e611c15565b5b611f8b87828801611ec6565b925092505092959194509250565b5f8083601f840112611fae57611fad611e65565b5b8235905067ffffffffffffffff811115611fcb57611fca611e69565b5b602083019150836001820283011115611fe757611fe6611e6d565b5b9250929050565b5f806020838503121561200457612003611c11565b5b5f83013567ffffffffffffffff81111561202157612020611c15565b5b61202d85828601611f99565b92509250509250929050565b5f60408201905061204c5f830185611cd5565b6120596020830184611e3d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120a282612060565b6120ac818561206a565b93506120bc81856020860161207a565b6120c581612088565b840191505092915050565b5f6020820190508181035f8301526120e88184612098565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061212e5761212d6120f0565b5b50565b5f81905061213e8261211d565b919050565b5f61214d82612131565b9050919050565b61215d81612143565b82525050565b5f819050919050565b61217581612163565b82525050565b5f60ff82169050919050565b6121908161217b565b82525050565b5f6080820190506121a95f830187612154565b6121b6602083018661216c565b6121c36040830185612187565b6121d06060830184611e3d565b95945050505050565b6121e281612143565b82525050565b6121f181612163565b82525050565b6122008161217b565b82525050565b61220f81611d71565b82525050565b608082015f8201516122295f8501826121d9565b50602082015161223c60208501826121e8565b50604082015161224f60408501826121f7565b5060608201516122626060850182612206565b50505050565b5f60808201905061227b5f830184612215565b92915050565b5f805f6040848603121561229857612297611c11565b5b5f6122a586828701611d98565b935050602084013567ffffffffffffffff8111156122c6576122c5611c15565b5b6122d286828701611f99565b92509250509250925092565b5f8083601f8401126122f3576122f2611e65565b5b8235905067ffffffffffffffff8111156123105761230f611e69565b5b60208301915083602082028301111561232c5761232b611e6d565b5b9250929050565b5f805f806040858703121561234b5761234a611c11565b5b5f85013567ffffffffffffffff81111561236857612367611c15565b5b61237487828801611e71565b9450945050602085013567ffffffffffffffff81111561239757612396611c15565b5b6123a3878288016122de565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123e781611c99565b81146123f1575f80fd5b50565b5f81359050612402816123de565b92915050565b5f6020828403121561241d5761241c611c11565b5b5f61242a848285016123f4565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61246d82612088565b810181811067ffffffffffffffff8211171561248c5761248b612437565b5b80604052505050565b5f61249e611c08565b90506124aa8282612464565b919050565b5f80fd5b600281106124bf575f80fd5b50565b5f813590506124d0816124b3565b92915050565b6124df81612163565b81146124e9575f80fd5b50565b5f813590506124fa816124d6565b92915050565b6125098161217b565b8114612513575f80fd5b50565b5f8135905061252481612500565b92915050565b5f6080828403121561253f5761253e612433565b5b6125496080612495565b90505f612558848285016124c2565b5f83015250602061256b848285016124ec565b602083015250604061257f84828501612516565b604083015250606061259384828501611d98565b60608301525092915050565b5f61010082840312156125b5576125b4612433565b5b6125bf60a0612495565b90505f6125ce84828501611d98565b5f8301525060206125e184828501611d13565b60208301525060406125f584828501611d13565b604083015250606061260984828501611d13565b606083015250608061261d8482850161252a565b60808301525092915050565b5f610100828403121561263f5761263e611c11565b5b5f61264c8482850161259f565b91505092915050565b5f6060820190506126685f830186611e3d565b6126756020830185611cd5565b6126826040830184611cd5565b949350505050565b5f60e08201905061269d5f830187611cd5565b6126aa6020830186611cd5565b6126b76040830185611cd5565b6126c46060830184612215565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156126eb576126ea612437565b5b6126f482612088565b9050602081019050919050565b828183375f83830152505050565b5f61272161271c846126d1565b612495565b90508281526020810184848401111561273d5761273c6126cd565b5b612748848285612701565b509392505050565b5f82601f83011261276457612763611e65565b5b813561277484826020860161270f565b91505092915050565b5f6040828403121561279257612791612433565b5b61279c6040612495565b90505f6127ab84828501611d98565b5f83015250602082013567ffffffffffffffff8111156127ce576127cd6124af565b5b6127da84828501612750565b60208301525092915050565b5f602082840312156127fb576127fa611c11565b5b5f82013567ffffffffffffffff81111561281857612817611c15565b5b6128248482850161277d565b91505092915050565b5f8151905061283b81611cfd565b92915050565b5f6020828403121561285657612855611c11565b5b5f6128638482850161282d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128a382611ccc565b91506128ae83611ccc565b92508282039050818111156128c6576128c561286c565b5b92915050565b5f8160601b9050919050565b5f6128e2826128cc565b9050919050565b5f6128f3826128d8565b9050919050565b61290b61290682611d71565b6128e9565b82525050565b5f819050919050565b61292b61292682611ccc565b612911565b82525050565b5f61293c82866128fa565b60148201915061294c82856128fa565b60148201915061295c828461291a565b602082019150819050949350505050565b5f61297782611d52565b9050919050565b6129878161296d565b8114612991575f80fd5b50565b5f813590506129a28161297e565b92915050565b5f805f606084860312156129bf576129be611c11565b5b5f6129cc86828701612994565b93505060206129dd86828701611d13565b92505060406129ee86828701611d13565b9150509250925092565b612a0181611ccc565b82525050565b602082015f820151612a1b5f8501826129f8565b50505050565b5f602082019050612a345f830184612a07565b92915050565b60038110612a4b57612a4a6120f0565b5b50565b5f819050612a5b82612a3a565b919050565b5f612a6a82612a4e565b9050919050565b612a7a81612a60565b82525050565b5f82825260208201905092915050565b5f612a9a82612060565b612aa48185612a80565b9350612ab481856020860161207a565b612abd81612088565b840191505092915050565b5f608083015f830151612add5f860182612a71565b506020830151612af06020860182612206565b506040830151612b036040860182612206565b5060608301518482036060860152612b1b8282612a90565b9150508091505092915050565b5f6020820190508181035f830152612b408184612ac8565b905092915050565b5f60408284031215612b5d57612b5c612433565b5b612b676040612495565b90505f82013567ffffffffffffffff811115612b8657612b856124af565b5b612b9284828501612750565b5f83015250602082013567ffffffffffffffff811115612bb557612bb46124af565b5b612bc184828501612750565b60208301525092915050565b5f60208284031215612be257612be1611c11565b5b5f82013567ffffffffffffffff811115612bff57612bfe611c15565b5b612c0b84828501612b48565b91505092915050565b5f612c1e82611ccc565b9150612c2983611ccc565b9250828202612c3781611ccc565b91508282048414831517612c4e57612c4d61286c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c8c82611ccc565b9150612c9783611ccc565b925082612ca757612ca6612c55565b5b828204905092915050565b5f612cbc82611ccc565b9150612cc783611ccc565b9250828201905080821115612cdf57612cde61286c565b5b9291505056fea2646970667358221220238a2694ac11aa8bece7145721bd76ab9cc7b07442e8c97be4bdd87624df868664736f6c634300081a0033",b5="0x608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c6e565b61084b565b6040516102509190611cb3565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611ce4565b60405180910390f35b61029d60048036038101906102989190611d27565b6108cc565b005b6102b960048036038101906102b49190611dac565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dac565b6108ef565b6040516102ee9190611cb3565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611ce4565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611df9565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e12565b610982565b6040516103889190611ce4565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e4c565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f1b565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190611fee565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190611fee565b610d9c565b60405161043f929190612039565b60405180910390f35b610462600480360381019061045d9190611dac565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611fee565b610f1c565b60405161049791906120d0565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dac565b610fea565b6040516104d39190611cb3565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611ce4565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611ce4565b60405180910390f35b34801561054f575f80fd5b50610558611058565b6040516105689493929190612196565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e4c565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611ce4565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e69190612268565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612281565b6111aa565b6040516106229190611cb3565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c9190612333565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611ce4565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e12565b611496565b6040516106b09190611cb3565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611ce4565b60405180910390f35b3480156106ee575f80fd5b5061070960048036038101906107049190612281565b6114b9565b6040516107169190611cb3565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190612333565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611ce4565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611ce4565b60405180910390f35b6107b560048036038101906107b09190611e12565b61158d565b005b6107d160048036038101906107cc9190611e12565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e12565b6115f4565b6040516108069190611cb3565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e12565b611647565b6040516108429190611ce4565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123b1565b5b9050602002016020810190610a409190612408565b90506001151581151503610a8557610a80878784818110610a6457610a636123b1565b5b9050602002016020810190610a799190611e12565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123b1565b5b9050602002016020810190610ab09190611e12565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612629565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb93929190612655565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c796120f0565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d53949392919061268a565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da981611739565b5f8585810190610db991906127e6565b90505f8160200151806020019051810190610dd49190612841565b90508060025f828254610de79190612899565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e19092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612931565b604051602081830303815290604052604051610ecd91906120d0565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129a8565b9250509150604051806080016040528060016002811115610f5357610f526120f0565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a21565b604051602081830303815290604052815250604051602001610fd19190612b28565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f61192a565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bb6565b60076040518060800160405290815f82015f9054906101000a900460ff166001811115611113576111126120f0565b5b6001811115611125576111246120f0565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bcd565b90505f81602001518060200190518101906111de9190612841565b90505f6111ea876119f0565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c14565b6112509190612c82565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cb2565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cb2565b92505081905550600160045f8282546112e49190612cb2565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e19092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612931565b6040516020818303038152906040526040516113c191906120d0565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123b1565b5b90506020020160208101906114599190611e12565b85858481811061146c5761146b6123b1565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c3846119f0565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123b1565b5b905060200201602081019061154e9190611e12565b858584818110611561576115606123b1565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c88161192a565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f18161192a565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d1826119ff565b5b9050919050565b6116e482825f611a78565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a78565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611ad0565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611921576390b8ec185f526004601cfd5b5f603452505050565b611932611ad0565b15611997577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506119ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a715750611a7082611ad4565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611a9a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b465750611b4582611b4d565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bd457611bd36120f0565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c4d81611c19565b8114611c57575f80fd5b50565b5f81359050611c6881611c44565b92915050565b5f60208284031215611c8357611c82611c11565b5b5f611c9084828501611c5a565b91505092915050565b5f8115159050919050565b611cad81611c99565b82525050565b5f602082019050611cc65f830184611ca4565b92915050565b5f819050919050565b611cde81611ccc565b82525050565b5f602082019050611cf75f830184611cd5565b92915050565b611d0681611ccc565b8114611d10575f80fd5b50565b5f81359050611d2181611cfd565b92915050565b5f60208284031215611d3c57611d3b611c11565b5b5f611d4984828501611d13565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d7b82611d52565b9050919050565b611d8b81611d71565b8114611d95575f80fd5b50565b5f81359050611da681611d82565b92915050565b5f8060408385031215611dc257611dc1611c11565b5b5f611dcf85828601611d98565b9250506020611de085828601611d13565b9150509250929050565b611df381611c19565b82525050565b5f602082019050611e0c5f830184611dea565b92915050565b5f60208284031215611e2757611e26611c11565b5b5f611e3484828501611d98565b91505092915050565b611e4681611d71565b82525050565b5f602082019050611e5f5f830184611e3d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e8657611e85611e65565b5b8235905067ffffffffffffffff811115611ea357611ea2611e69565b5b602083019150836020820283011115611ebf57611ebe611e6d565b5b9250929050565b5f8083601f840112611edb57611eda611e65565b5b8235905067ffffffffffffffff811115611ef857611ef7611e69565b5b602083019150836020820283011115611f1457611f13611e6d565b5b9250929050565b5f805f8060408587031215611f3357611f32611c11565b5b5f85013567ffffffffffffffff811115611f5057611f4f611c15565b5b611f5c87828801611e71565b9450945050602085013567ffffffffffffffff811115611f7f57611f7e611c15565b5b611f8b87828801611ec6565b925092505092959194509250565b5f8083601f840112611fae57611fad611e65565b5b8235905067ffffffffffffffff811115611fcb57611fca611e69565b5b602083019150836001820283011115611fe757611fe6611e6d565b5b9250929050565b5f806020838503121561200457612003611c11565b5b5f83013567ffffffffffffffff81111561202157612020611c15565b5b61202d85828601611f99565b92509250509250929050565b5f60408201905061204c5f830185611cd5565b6120596020830184611e3d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120a282612060565b6120ac818561206a565b93506120bc81856020860161207a565b6120c581612088565b840191505092915050565b5f6020820190508181035f8301526120e88184612098565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061212e5761212d6120f0565b5b50565b5f81905061213e8261211d565b919050565b5f61214d82612131565b9050919050565b61215d81612143565b82525050565b5f819050919050565b61217581612163565b82525050565b5f60ff82169050919050565b6121908161217b565b82525050565b5f6080820190506121a95f830187612154565b6121b6602083018661216c565b6121c36040830185612187565b6121d06060830184611e3d565b95945050505050565b6121e281612143565b82525050565b6121f181612163565b82525050565b6122008161217b565b82525050565b61220f81611d71565b82525050565b608082015f8201516122295f8501826121d9565b50602082015161223c60208501826121e8565b50604082015161224f60408501826121f7565b5060608201516122626060850182612206565b50505050565b5f60808201905061227b5f830184612215565b92915050565b5f805f6040848603121561229857612297611c11565b5b5f6122a586828701611d98565b935050602084013567ffffffffffffffff8111156122c6576122c5611c15565b5b6122d286828701611f99565b92509250509250925092565b5f8083601f8401126122f3576122f2611e65565b5b8235905067ffffffffffffffff8111156123105761230f611e69565b5b60208301915083602082028301111561232c5761232b611e6d565b5b9250929050565b5f805f806040858703121561234b5761234a611c11565b5b5f85013567ffffffffffffffff81111561236857612367611c15565b5b61237487828801611e71565b9450945050602085013567ffffffffffffffff81111561239757612396611c15565b5b6123a3878288016122de565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6123e781611c99565b81146123f1575f80fd5b50565b5f81359050612402816123de565b92915050565b5f6020828403121561241d5761241c611c11565b5b5f61242a848285016123f4565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61246d82612088565b810181811067ffffffffffffffff8211171561248c5761248b612437565b5b80604052505050565b5f61249e611c08565b90506124aa8282612464565b919050565b5f80fd5b600281106124bf575f80fd5b50565b5f813590506124d0816124b3565b92915050565b6124df81612163565b81146124e9575f80fd5b50565b5f813590506124fa816124d6565b92915050565b6125098161217b565b8114612513575f80fd5b50565b5f8135905061252481612500565b92915050565b5f6080828403121561253f5761253e612433565b5b6125496080612495565b90505f612558848285016124c2565b5f83015250602061256b848285016124ec565b602083015250604061257f84828501612516565b604083015250606061259384828501611d98565b60608301525092915050565b5f61010082840312156125b5576125b4612433565b5b6125bf60a0612495565b90505f6125ce84828501611d98565b5f8301525060206125e184828501611d13565b60208301525060406125f584828501611d13565b604083015250606061260984828501611d13565b606083015250608061261d8482850161252a565b60808301525092915050565b5f610100828403121561263f5761263e611c11565b5b5f61264c8482850161259f565b91505092915050565b5f6060820190506126685f830186611e3d565b6126756020830185611cd5565b6126826040830184611cd5565b949350505050565b5f60e08201905061269d5f830187611cd5565b6126aa6020830186611cd5565b6126b76040830185611cd5565b6126c46060830184612215565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156126eb576126ea612437565b5b6126f482612088565b9050602081019050919050565b828183375f83830152505050565b5f61272161271c846126d1565b612495565b90508281526020810184848401111561273d5761273c6126cd565b5b612748848285612701565b509392505050565b5f82601f83011261276457612763611e65565b5b813561277484826020860161270f565b91505092915050565b5f6040828403121561279257612791612433565b5b61279c6040612495565b90505f6127ab84828501611d98565b5f83015250602082013567ffffffffffffffff8111156127ce576127cd6124af565b5b6127da84828501612750565b60208301525092915050565b5f602082840312156127fb576127fa611c11565b5b5f82013567ffffffffffffffff81111561281857612817611c15565b5b6128248482850161277d565b91505092915050565b5f8151905061283b81611cfd565b92915050565b5f6020828403121561285657612855611c11565b5b5f6128638482850161282d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128a382611ccc565b91506128ae83611ccc565b92508282039050818111156128c6576128c561286c565b5b92915050565b5f8160601b9050919050565b5f6128e2826128cc565b9050919050565b5f6128f3826128d8565b9050919050565b61290b61290682611d71565b6128e9565b82525050565b5f819050919050565b61292b61292682611ccc565b612911565b82525050565b5f61293c82866128fa565b60148201915061294c82856128fa565b60148201915061295c828461291a565b602082019150819050949350505050565b5f61297782611d52565b9050919050565b6129878161296d565b8114612991575f80fd5b50565b5f813590506129a28161297e565b92915050565b5f805f606084860312156129bf576129be611c11565b5b5f6129cc86828701612994565b93505060206129dd86828701611d13565b92505060406129ee86828701611d13565b9150509250925092565b612a0181611ccc565b82525050565b602082015f820151612a1b5f8501826129f8565b50505050565b5f602082019050612a345f830184612a07565b92915050565b60038110612a4b57612a4a6120f0565b5b50565b5f819050612a5b82612a3a565b919050565b5f612a6a82612a4e565b9050919050565b612a7a81612a60565b82525050565b5f82825260208201905092915050565b5f612a9a82612060565b612aa48185612a80565b9350612ab481856020860161207a565b612abd81612088565b840191505092915050565b5f608083015f830151612add5f860182612a71565b506020830151612af06020860182612206565b506040830151612b036040860182612206565b5060608301518482036060860152612b1b8282612a90565b9150508091505092915050565b5f6020820190508181035f830152612b408184612ac8565b905092915050565b5f60408284031215612b5d57612b5c612433565b5b612b676040612495565b90505f82013567ffffffffffffffff811115612b8657612b856124af565b5b612b9284828501612750565b5f83015250602082013567ffffffffffffffff811115612bb557612bb46124af565b5b612bc184828501612750565b60208301525092915050565b5f60208284031215612be257612be1611c11565b5b5f82013567ffffffffffffffff811115612bff57612bfe611c15565b5b612c0b84828501612b48565b91505092915050565b5f612c1e82611ccc565b9150612c2983611ccc565b9250828202612c3781611ccc565b91508282048414831517612c4e57612c4d61286c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c8c82611ccc565b9150612c9783611ccc565b925082612ca757612ca6612c55565b5b828204905092915050565b5f612cbc82611ccc565b9150612cc783611ccc565b9250828201905080821115612cdf57612cde61286c565b5b9291505056fea2646970667358221220238a2694ac11aa8bece7145721bd76ab9cc7b07442e8c97be4bdd87624df868664736f6c634300081a0033",e5={},a5={},b0={_format:Qf,contractName:Yf,sourceName:Jf,abi:Xf,bytecode:f5,deployedBytecode:b5,linkReferences:e5,deployedLinkReferences:a5},d5="hh-sol-artifact-1",t5="ERC20VariableIncentive",c5="contracts/incentives/ERC20VariableIncentive.sol",n5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],i5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126fd806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118c3565b610774565b6040516102249190611908565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611939565b60405180910390f35b610271600480360381019061026c919061197c565b6107f5565b005b61028d60048036038101906102889190611a01565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a01565b610818565b6040516102c29190611908565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611939565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a4e565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a67565b6108ab565b60405161035c9190611939565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611aa1565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b70565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c43565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c43565b610c0d565b604051610413929190611c8e565b60405180910390f35b61043660048036038101906104319190611a01565b610d77565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c43565b610d8d565b60405161046b9190611d25565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a01565b610e5b565b6040516104a79190611908565b60405180910390f35b6104b8610e72565b005b6104c2610eab565b005b3480156104cf575f80fd5b506104d8610ebe565b6040516104e59190611939565b60405180910390f35b3480156104f9575f80fd5b50610502610ec3565b60405161050f9190611aa1565b60405180910390f35b348015610523575f80fd5b5061052c610eeb565b6040516105399190611939565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d45565b610ef1565b6040516105759190611908565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611df7565b611100565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a67565b6111b6565b6040516105d99190611908565b60405180910390f35b3480156105ed575f80fd5b506105f66111d3565b6040516106039190611939565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d45565b6111d9565b60405161063f9190611908565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611df7565b6111ec565b005b34801561067b575f80fd5b506106846112a2565b6040516106919190611939565b60405180910390f35b3480156106a5575f80fd5b506106ae6112a8565b6040516106bb9190611939565b60405180910390f35b6106de60048036038101906106d99190611a67565b6112ad565b005b6106fa60048036038101906106f59190611a67565b6112eb565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a67565b611314565b60405161072f9190611908565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a67565b611367565b60405161076b9190611939565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611380565b5b9050919050565b5f8054905090565b6107ff33826113f9565b50565b61080a611408565b610814828261143f565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c61144f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611459565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e75565b5b90506020020160208101906109699190611ecc565b905060011515811515036109ae576109a987878481811061098d5761098c611e75565b5b90506020020160208101906109a29190611a67565b600161143f565b6109e1565b6109e08787848181106109c4576109c3611e75565b5b90506020020160208101906109d99190611a67565b60016113f9565b5b508080600101915050610935565b505050505050565b5f610a0061148e565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611fec565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114b790919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612017565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114ea565b5f85606001519050610b7d8160016115c0565b8473ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8585604051610bc592919061204c565b60405180910390a25050505050508015610c08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c1a81611459565b5f8585810190610c2a919061218c565b90505f8160200151806020019051810190610c4591906121e7565b90508060025f828254610c58919061223f565b92505081905550610cae825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116019092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d22939291906122d7565b604051602081830303815290604052604051610d3e9190611d25565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d7f611408565b610d8982826113f9565b5050565b60605f808484810190610da0919061234e565b9250509150604051806080016040528060016002811115610dc457610dc361239e565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e2091906123f4565b604051602081830303815290604052815250604051602001610e42919061250a565b6040516020818303038152906040529250505092915050565b5f8082610e67856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eb3611408565b610ebc5f61164a565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610efa611408565b5f8383810190610f0a91906125af565b90505f8160200151806020019051810190610f2591906121e7565b90505f610f3187611710565b610f67576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f7757819050610f9a565b670de0b6b3a7640000825f54610f8d91906125f6565b610f979190612664565b90505b60025481600554610fab9190612694565b1115610fe3576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610ff49190612694565b92505081905550600160045f82825461100d9190612694565b92505081905550611060878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116019092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110ce939291906122d7565b6040516020818303038152906040526040516110ea9190611d25565b60405180910390a2600193505050509392505050565b600261110b81611459565b82829050858590501461114a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111ae576111a186868381811061116d5761116c611e75565b5b90506020020160208101906111829190611a67565b85858481811061119557611194611e75565b5b9050602002013561143f565b808060010191505061114c565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111e384611710565b90509392505050565b60026111f781611459565b828290508585905014611236576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561129a5761128d86868381811061125957611258611e75565b5b905060200201602081019061126e9190611a67565b85858481811061128157611280611e75565b5b905060200201356113f9565b8080600101915050611238565b505050505050565b60045481565b600181565b6112b5611408565b63389a75e1600c52805f526020600c2080544211156112db57636f5e88185f526004601cfd5b5f8155506112e88161164a565b50565b6112f3611408565b8060601b61130857637448fbae5f526004601cfd5b6113118161164a565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611334610ec3565b73ffffffffffffffffffffffffffffffffffffffff161480611360575061135f826002600117610e5b565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113f257506113f18261171f565b5b9050919050565b61140482825f611798565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461143d576382b429005f526004601cfd5b565b61144b82826001611798565b5050565b5f6202a300905090565b638b78c6d81954331461148b57638b78c6d8600c52335f52806020600c20541661148a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114f26117f0565b1561156a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115bd565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611641576390b8ec185f526004601cfd5b5f603452505050565b6116526117f0565b156116b7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061170d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117915750611790826117f4565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117ba57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118a28161186e565b81146118ac575f80fd5b50565b5f813590506118bd81611899565b92915050565b5f602082840312156118d8576118d7611866565b5b5f6118e5848285016118af565b91505092915050565b5f8115159050919050565b611902816118ee565b82525050565b5f60208201905061191b5f8301846118f9565b92915050565b5f819050919050565b61193381611921565b82525050565b5f60208201905061194c5f83018461192a565b92915050565b61195b81611921565b8114611965575f80fd5b50565b5f8135905061197681611952565b92915050565b5f6020828403121561199157611990611866565b5b5f61199e84828501611968565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119d0826119a7565b9050919050565b6119e0816119c6565b81146119ea575f80fd5b50565b5f813590506119fb816119d7565b92915050565b5f8060408385031215611a1757611a16611866565b5b5f611a24858286016119ed565b9250506020611a3585828601611968565b9150509250929050565b611a488161186e565b82525050565b5f602082019050611a615f830184611a3f565b92915050565b5f60208284031215611a7c57611a7b611866565b5b5f611a89848285016119ed565b91505092915050565b611a9b816119c6565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611adb57611ada611aba565b5b8235905067ffffffffffffffff811115611af857611af7611abe565b5b602083019150836020820283011115611b1457611b13611ac2565b5b9250929050565b5f8083601f840112611b3057611b2f611aba565b5b8235905067ffffffffffffffff811115611b4d57611b4c611abe565b5b602083019150836020820283011115611b6957611b68611ac2565b5b9250929050565b5f805f8060408587031215611b8857611b87611866565b5b5f85013567ffffffffffffffff811115611ba557611ba461186a565b5b611bb187828801611ac6565b9450945050602085013567ffffffffffffffff811115611bd457611bd361186a565b5b611be087828801611b1b565b925092505092959194509250565b5f8083601f840112611c0357611c02611aba565b5b8235905067ffffffffffffffff811115611c2057611c1f611abe565b5b602083019150836001820283011115611c3c57611c3b611ac2565b5b9250929050565b5f8060208385031215611c5957611c58611866565b5b5f83013567ffffffffffffffff811115611c7657611c7561186a565b5b611c8285828601611bee565b92509250509250929050565b5f604082019050611ca15f83018561192a565b611cae6020830184611a92565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cf782611cb5565b611d018185611cbf565b9350611d11818560208601611ccf565b611d1a81611cdd565b840191505092915050565b5f6020820190508181035f830152611d3d8184611ced565b905092915050565b5f805f60408486031215611d5c57611d5b611866565b5b5f611d69868287016119ed565b935050602084013567ffffffffffffffff811115611d8a57611d8961186a565b5b611d9686828701611bee565b92509250509250925092565b5f8083601f840112611db757611db6611aba565b5b8235905067ffffffffffffffff811115611dd457611dd3611abe565b5b602083019150836020820283011115611df057611def611ac2565b5b9250929050565b5f805f8060408587031215611e0f57611e0e611866565b5b5f85013567ffffffffffffffff811115611e2c57611e2b61186a565b5b611e3887828801611ac6565b9450945050602085013567ffffffffffffffff811115611e5b57611e5a61186a565b5b611e6787828801611da2565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611eab816118ee565b8114611eb5575f80fd5b50565b5f81359050611ec681611ea2565b92915050565b5f60208284031215611ee157611ee0611866565b5b5f611eee84828501611eb8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f3182611cdd565b810181811067ffffffffffffffff82111715611f5057611f4f611efb565b5b80604052505050565b5f611f6261185d565b9050611f6e8282611f28565b919050565b5f80fd5b5f60808284031215611f8c57611f8b611ef7565b5b611f966080611f59565b90505f611fa5848285016119ed565b5f830152506020611fb884828501611968565b6020830152506040611fcc84828501611968565b6040830152506060611fe0848285016119ed565b60608301525092915050565b5f6080828403121561200157612000611866565b5b5f61200e84828501611f77565b91505092915050565b5f60608201905061202a5f830186611a92565b612037602083018561192a565b612044604083018461192a565b949350505050565b5f60408201905061205f5f83018561192a565b61206c602083018461192a565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209157612090611efb565b5b61209a82611cdd565b9050602081019050919050565b828183375f83830152505050565b5f6120c76120c284612077565b611f59565b9050828152602081018484840111156120e3576120e2612073565b5b6120ee8482856120a7565b509392505050565b5f82601f83011261210a57612109611aba565b5b813561211a8482602086016120b5565b91505092915050565b5f6040828403121561213857612137611ef7565b5b6121426040611f59565b90505f612151848285016119ed565b5f83015250602082013567ffffffffffffffff81111561217457612173611f73565b5b612180848285016120f6565b60208301525092915050565b5f602082840312156121a1576121a0611866565b5b5f82013567ffffffffffffffff8111156121be576121bd61186a565b5b6121ca84828501612123565b91505092915050565b5f815190506121e181611952565b92915050565b5f602082840312156121fc576121fb611866565b5b5f612209848285016121d3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61224982611921565b915061225483611921565b925082820390508181111561226c5761226b612212565b5b92915050565b5f8160601b9050919050565b5f61228882612272565b9050919050565b5f6122998261227e565b9050919050565b6122b16122ac826119c6565b61228f565b82525050565b5f819050919050565b6122d16122cc82611921565b6122b7565b82525050565b5f6122e282866122a0565b6014820191506122f282856122a0565b60148201915061230282846122c0565b602082019150819050949350505050565b5f61231d826119a7565b9050919050565b61232d81612313565b8114612337575f80fd5b50565b5f8135905061234881612324565b92915050565b5f805f6060848603121561236557612364611866565b5b5f6123728682870161233a565b935050602061238386828701611968565b925050604061239486828701611968565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123d481611921565b82525050565b602082015f8201516123ee5f8501826123cb565b50505050565b5f6020820190506124075f8301846123da565b92915050565b6003811061241e5761241d61239e565b5b50565b5f81905061242e8261240d565b919050565b5f61243d82612421565b9050919050565b61244d81612433565b82525050565b61245c816119c6565b82525050565b5f82825260208201905092915050565b5f61247c82611cb5565b6124868185612462565b9350612496818560208601611ccf565b61249f81611cdd565b840191505092915050565b5f608083015f8301516124bf5f860182612444565b5060208301516124d26020860182612453565b5060408301516124e56040860182612453565b50606083015184820360608601526124fd8282612472565b9150508091505092915050565b5f6020820190508181035f83015261252281846124aa565b905092915050565b5f6040828403121561253f5761253e611ef7565b5b6125496040611f59565b90505f82013567ffffffffffffffff81111561256857612567611f73565b5b612574848285016120f6565b5f83015250602082013567ffffffffffffffff81111561259757612596611f73565b5b6125a3848285016120f6565b60208301525092915050565b5f602082840312156125c4576125c3611866565b5b5f82013567ffffffffffffffff8111156125e1576125e061186a565b5b6125ed8482850161252a565b91505092915050565b5f61260082611921565b915061260b83611921565b925082820261261981611921565b915082820484148315176126305761262f612212565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61266e82611921565b915061267983611921565b92508261268957612688612637565b5b828204905092915050565b5f61269e82611921565b91506126a983611921565b92508282019050808211156126c1576126c0612212565b5b9291505056fea26469706673582212209cef536cb54b749e44521d5e5c41ba45adacf436cac0cbb6baf2a091acf63d9a64736f6c634300081a0033",s5="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118c3565b610774565b6040516102249190611908565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611939565b60405180910390f35b610271600480360381019061026c919061197c565b6107f5565b005b61028d60048036038101906102889190611a01565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a01565b610818565b6040516102c29190611908565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611939565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a4e565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a67565b6108ab565b60405161035c9190611939565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611aa1565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b70565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c43565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c43565b610c0d565b604051610413929190611c8e565b60405180910390f35b61043660048036038101906104319190611a01565b610d77565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c43565b610d8d565b60405161046b9190611d25565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a01565b610e5b565b6040516104a79190611908565b60405180910390f35b6104b8610e72565b005b6104c2610eab565b005b3480156104cf575f80fd5b506104d8610ebe565b6040516104e59190611939565b60405180910390f35b3480156104f9575f80fd5b50610502610ec3565b60405161050f9190611aa1565b60405180910390f35b348015610523575f80fd5b5061052c610eeb565b6040516105399190611939565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d45565b610ef1565b6040516105759190611908565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611df7565b611100565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a67565b6111b6565b6040516105d99190611908565b60405180910390f35b3480156105ed575f80fd5b506105f66111d3565b6040516106039190611939565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d45565b6111d9565b60405161063f9190611908565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611df7565b6111ec565b005b34801561067b575f80fd5b506106846112a2565b6040516106919190611939565b60405180910390f35b3480156106a5575f80fd5b506106ae6112a8565b6040516106bb9190611939565b60405180910390f35b6106de60048036038101906106d99190611a67565b6112ad565b005b6106fa60048036038101906106f59190611a67565b6112eb565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a67565b611314565b60405161072f9190611908565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a67565b611367565b60405161076b9190611939565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611380565b5b9050919050565b5f8054905090565b6107ff33826113f9565b50565b61080a611408565b610814828261143f565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c61144f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611459565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e75565b5b90506020020160208101906109699190611ecc565b905060011515811515036109ae576109a987878481811061098d5761098c611e75565b5b90506020020160208101906109a29190611a67565b600161143f565b6109e1565b6109e08787848181106109c4576109c3611e75565b5b90506020020160208101906109d99190611a67565b60016113f9565b5b508080600101915050610935565b505050505050565b5f610a0061148e565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611fec565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114b790919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612017565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114ea565b5f85606001519050610b7d8160016115c0565b8473ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8585604051610bc592919061204c565b60405180910390a25050505050508015610c08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c1a81611459565b5f8585810190610c2a919061218c565b90505f8160200151806020019051810190610c4591906121e7565b90508060025f828254610c58919061223f565b92505081905550610cae825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116019092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d22939291906122d7565b604051602081830303815290604052604051610d3e9190611d25565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d7f611408565b610d8982826113f9565b5050565b60605f808484810190610da0919061234e565b9250509150604051806080016040528060016002811115610dc457610dc361239e565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e2091906123f4565b604051602081830303815290604052815250604051602001610e42919061250a565b6040516020818303038152906040529250505092915050565b5f8082610e67856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eb3611408565b610ebc5f61164a565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610efa611408565b5f8383810190610f0a91906125af565b90505f8160200151806020019051810190610f2591906121e7565b90505f610f3187611710565b610f67576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f7757819050610f9a565b670de0b6b3a7640000825f54610f8d91906125f6565b610f979190612664565b90505b60025481600554610fab9190612694565b1115610fe3576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610ff49190612694565b92505081905550600160045f82825461100d9190612694565b92505081905550611060878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116019092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110ce939291906122d7565b6040516020818303038152906040526040516110ea9190611d25565b60405180910390a2600193505050509392505050565b600261110b81611459565b82829050858590501461114a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111ae576111a186868381811061116d5761116c611e75565b5b90506020020160208101906111829190611a67565b85858481811061119557611194611e75565b5b9050602002013561143f565b808060010191505061114c565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111e384611710565b90509392505050565b60026111f781611459565b828290508585905014611236576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561129a5761128d86868381811061125957611258611e75565b5b905060200201602081019061126e9190611a67565b85858481811061128157611280611e75565b5b905060200201356113f9565b8080600101915050611238565b505050505050565b60045481565b600181565b6112b5611408565b63389a75e1600c52805f526020600c2080544211156112db57636f5e88185f526004601cfd5b5f8155506112e88161164a565b50565b6112f3611408565b8060601b61130857637448fbae5f526004601cfd5b6113118161164a565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611334610ec3565b73ffffffffffffffffffffffffffffffffffffffff161480611360575061135f826002600117610e5b565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113f257506113f18261171f565b5b9050919050565b61140482825f611798565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461143d576382b429005f526004601cfd5b565b61144b82826001611798565b5050565b5f6202a300905090565b638b78c6d81954331461148b57638b78c6d8600c52335f52806020600c20541661148a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114f26117f0565b1561156a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115bd565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611641576390b8ec185f526004601cfd5b5f603452505050565b6116526117f0565b156116b7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061170d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117915750611790826117f4565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117ba57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118a28161186e565b81146118ac575f80fd5b50565b5f813590506118bd81611899565b92915050565b5f602082840312156118d8576118d7611866565b5b5f6118e5848285016118af565b91505092915050565b5f8115159050919050565b611902816118ee565b82525050565b5f60208201905061191b5f8301846118f9565b92915050565b5f819050919050565b61193381611921565b82525050565b5f60208201905061194c5f83018461192a565b92915050565b61195b81611921565b8114611965575f80fd5b50565b5f8135905061197681611952565b92915050565b5f6020828403121561199157611990611866565b5b5f61199e84828501611968565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119d0826119a7565b9050919050565b6119e0816119c6565b81146119ea575f80fd5b50565b5f813590506119fb816119d7565b92915050565b5f8060408385031215611a1757611a16611866565b5b5f611a24858286016119ed565b9250506020611a3585828601611968565b9150509250929050565b611a488161186e565b82525050565b5f602082019050611a615f830184611a3f565b92915050565b5f60208284031215611a7c57611a7b611866565b5b5f611a89848285016119ed565b91505092915050565b611a9b816119c6565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611adb57611ada611aba565b5b8235905067ffffffffffffffff811115611af857611af7611abe565b5b602083019150836020820283011115611b1457611b13611ac2565b5b9250929050565b5f8083601f840112611b3057611b2f611aba565b5b8235905067ffffffffffffffff811115611b4d57611b4c611abe565b5b602083019150836020820283011115611b6957611b68611ac2565b5b9250929050565b5f805f8060408587031215611b8857611b87611866565b5b5f85013567ffffffffffffffff811115611ba557611ba461186a565b5b611bb187828801611ac6565b9450945050602085013567ffffffffffffffff811115611bd457611bd361186a565b5b611be087828801611b1b565b925092505092959194509250565b5f8083601f840112611c0357611c02611aba565b5b8235905067ffffffffffffffff811115611c2057611c1f611abe565b5b602083019150836001820283011115611c3c57611c3b611ac2565b5b9250929050565b5f8060208385031215611c5957611c58611866565b5b5f83013567ffffffffffffffff811115611c7657611c7561186a565b5b611c8285828601611bee565b92509250509250929050565b5f604082019050611ca15f83018561192a565b611cae6020830184611a92565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611cf782611cb5565b611d018185611cbf565b9350611d11818560208601611ccf565b611d1a81611cdd565b840191505092915050565b5f6020820190508181035f830152611d3d8184611ced565b905092915050565b5f805f60408486031215611d5c57611d5b611866565b5b5f611d69868287016119ed565b935050602084013567ffffffffffffffff811115611d8a57611d8961186a565b5b611d9686828701611bee565b92509250509250925092565b5f8083601f840112611db757611db6611aba565b5b8235905067ffffffffffffffff811115611dd457611dd3611abe565b5b602083019150836020820283011115611df057611def611ac2565b5b9250929050565b5f805f8060408587031215611e0f57611e0e611866565b5b5f85013567ffffffffffffffff811115611e2c57611e2b61186a565b5b611e3887828801611ac6565b9450945050602085013567ffffffffffffffff811115611e5b57611e5a61186a565b5b611e6787828801611da2565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611eab816118ee565b8114611eb5575f80fd5b50565b5f81359050611ec681611ea2565b92915050565b5f60208284031215611ee157611ee0611866565b5b5f611eee84828501611eb8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f3182611cdd565b810181811067ffffffffffffffff82111715611f5057611f4f611efb565b5b80604052505050565b5f611f6261185d565b9050611f6e8282611f28565b919050565b5f80fd5b5f60808284031215611f8c57611f8b611ef7565b5b611f966080611f59565b90505f611fa5848285016119ed565b5f830152506020611fb884828501611968565b6020830152506040611fcc84828501611968565b6040830152506060611fe0848285016119ed565b60608301525092915050565b5f6080828403121561200157612000611866565b5b5f61200e84828501611f77565b91505092915050565b5f60608201905061202a5f830186611a92565b612037602083018561192a565b612044604083018461192a565b949350505050565b5f60408201905061205f5f83018561192a565b61206c602083018461192a565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209157612090611efb565b5b61209a82611cdd565b9050602081019050919050565b828183375f83830152505050565b5f6120c76120c284612077565b611f59565b9050828152602081018484840111156120e3576120e2612073565b5b6120ee8482856120a7565b509392505050565b5f82601f83011261210a57612109611aba565b5b813561211a8482602086016120b5565b91505092915050565b5f6040828403121561213857612137611ef7565b5b6121426040611f59565b90505f612151848285016119ed565b5f83015250602082013567ffffffffffffffff81111561217457612173611f73565b5b612180848285016120f6565b60208301525092915050565b5f602082840312156121a1576121a0611866565b5b5f82013567ffffffffffffffff8111156121be576121bd61186a565b5b6121ca84828501612123565b91505092915050565b5f815190506121e181611952565b92915050565b5f602082840312156121fc576121fb611866565b5b5f612209848285016121d3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61224982611921565b915061225483611921565b925082820390508181111561226c5761226b612212565b5b92915050565b5f8160601b9050919050565b5f61228882612272565b9050919050565b5f6122998261227e565b9050919050565b6122b16122ac826119c6565b61228f565b82525050565b5f819050919050565b6122d16122cc82611921565b6122b7565b82525050565b5f6122e282866122a0565b6014820191506122f282856122a0565b60148201915061230282846122c0565b602082019150819050949350505050565b5f61231d826119a7565b9050919050565b61232d81612313565b8114612337575f80fd5b50565b5f8135905061234881612324565b92915050565b5f805f6060848603121561236557612364611866565b5b5f6123728682870161233a565b935050602061238386828701611968565b925050604061239486828701611968565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123d481611921565b82525050565b602082015f8201516123ee5f8501826123cb565b50505050565b5f6020820190506124075f8301846123da565b92915050565b6003811061241e5761241d61239e565b5b50565b5f81905061242e8261240d565b919050565b5f61243d82612421565b9050919050565b61244d81612433565b82525050565b61245c816119c6565b82525050565b5f82825260208201905092915050565b5f61247c82611cb5565b6124868185612462565b9350612496818560208601611ccf565b61249f81611cdd565b840191505092915050565b5f608083015f8301516124bf5f860182612444565b5060208301516124d26020860182612453565b5060408301516124e56040860182612453565b50606083015184820360608601526124fd8282612472565b9150508091505092915050565b5f6020820190508181035f83015261252281846124aa565b905092915050565b5f6040828403121561253f5761253e611ef7565b5b6125496040611f59565b90505f82013567ffffffffffffffff81111561256857612567611f73565b5b612574848285016120f6565b5f83015250602082013567ffffffffffffffff81111561259757612596611f73565b5b6125a3848285016120f6565b60208301525092915050565b5f602082840312156125c4576125c3611866565b5b5f82013567ffffffffffffffff8111156125e1576125e061186a565b5b6125ed8482850161252a565b91505092915050565b5f61260082611921565b915061260b83611921565b925082820261261981611921565b915082820484148315176126305761262f612212565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61266e82611921565b915061267983611921565b92508261268957612688612637565b5b828204905092915050565b5f61269e82611921565b91506126a983611921565b92508282019050808211156126c1576126c0612212565b5b9291505056fea26469706673582212209cef536cb54b749e44521d5e5c41ba45adacf436cac0cbb6baf2a091acf63d9a64736f6c634300081a0033",p5={},y5={},e0={_format:d5,contractName:t5,sourceName:c5,abi:n5,bytecode:i5,deployedBytecode:s5,linkReferences:p5,deployedLinkReferences:y5},r5="hh-sol-artifact-1",u5="ERC1155Incentive",o5="contracts/incentives/ERC1155Incentive.sol",l5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],m5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61331d806100bd5f395ff3fe608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611ce9565b61086c565b6040516102509190611d2e565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d5f565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d5f565b60405180910390f35b6102c760048036038101906102c29190611da2565b61095b565b005b6102e360048036038101906102de9190611e27565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e27565b61097e565b6040516103189190611d2e565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d5f565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e74565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e8d565b610a11565b6040516103b29190611d5f565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611ec7565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f96565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190612069565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190612069565b610e9a565b6040516104699291906120b4565b60405180910390f35b61048c60048036038101906104879190611e27565b6110cc565b005b348015610499575f80fd5b506104b460048036038101906104af9190612069565b6110e2565b6040516104c1919061214b565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e27565b6111c5565b6040516104fd9190611d2e565b60405180910390f35b61050e6111dc565b005b34801561051b575f80fd5b50610524611215565b604051610531919061214b565b60405180910390f35b6105426112a1565b005b34801561054f575f80fd5b506105586112b4565b6040516105659190611d5f565b60405180910390f35b348015610579575f80fd5b506105826112b9565b60405161058f9190611ec7565b60405180910390f35b3480156105a3575f80fd5b506105ac6112e1565b6040516105b99190611d5f565b60405180910390f35b3480156105cd575f80fd5b506105d66112e7565b6040516105e391906121de565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d91906121f7565b6112f9565b60405161061f9190611d2e565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122a9565b61150b565b60405161065b9190611e74565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612380565b611522565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612431565b6115d8565b6040516106bf9190611d2e565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e991906121f7565b6115f5565b6040516106fb9190611d2e565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612380565b611616565b005b348015610737575f80fd5b506107406116cc565b60405161074d9190611d5f565b60405180910390f35b348015610761575f80fd5b5061076a6116d2565b6040516107779190611d5f565b60405180910390f35b61079a60048036038101906107959190611e8d565b6116d7565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061245c565b611715565b6040516107cf9190611e74565b60405180910390f35b6107f260048036038101906107ed9190611e8d565b61172a565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e8d565b611753565b6040516108279190611d2e565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e8d565b6117a6565b6040516108639190611d5f565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bf565b5b9050919050565b5f8054905090565b60045481565b6109653382611838565b50565b610970611847565b61097a828261187e565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188e565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611898565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab96124f2565b5b9050602002016020810190610acf9190612549565b90506001151581151503610b1457610b0f878784818110610af357610af26124f2565b5b9050602002016020810190610b089190611e8d565b600161187e565b610b47565b610b46878784818110610b2a57610b296124f2565b5b9050602002016020810190610b3f9190611e8d565b6001611838565b5b508080600101915050610a9b565b505050505050565b5f610b666118cd565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127bb565b905060015f81905550600180811115610bc557610bc461216b565b5b81602001516001811115610bdc57610bdb61216b565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612802565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061283d565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612868565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161216b565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612a97565b50610dca336118f6565b610dd98260a0015160016119cc565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5693929190612b66565b60405180910390a250508015610e95576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea781611898565b5f8585810190610eb79190612c04565b90505f8160200151806020019051810190610ed2919061283d565b9050600754600354610ee49190612c78565b811115610f49573382604051602001610efd9190612d3c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f40929190612d5c565b60405180910390fd5b8060035f828254610f5a9190612c78565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fcc959493929190612d8a565b5f604051808303815f87803b158015610fe3575f80fd5b505af1158015610ff5573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611077959493929190612e81565b604051602081830303815290604052604051611093919061214b565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d4611847565b6110de8282611838565b5050565b60605f83838101906110f491906127bb565b905060405180608001604052806002808111156111145761111361216b565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180606001604052808460400151815260200184606001518152602001846080015181525060405160200161118b9190612f37565b6040516020818303038152906040528152506040516020016111ad9190612ffd565b60405160208183030381529060405291505092915050565b5f80826111d185610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60058054611222906128ca565b80601f016020809104026020016040519081016040528092919081815260200182805461124e906128ca565b80156112995780601f1061127057610100808354040283529160200191611299565b820191905f5260205f20905b81548152906001019060200180831161127c57829003601f168201915b505050505081565b6112a9611847565b6112b25f611a0d565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f611302611847565b5f61130d8484611ad3565b90505f60018111156113225761132161216b565b5b60025f9054906101000a900460ff1660018111156113435761134261216b565b5b036114ff5761135181611b0f565b611387576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113999061301d565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b815260040161142d969594939291906130c9565b5f604051808303815f87803b158015611444575f80fd5b505af1158015611456573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114d196959493929190613147565b6040516020818303038152906040526040516114ed919061214b565b60405180910390a26001915050611504565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152d81611898565b82829050858590501461156c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115d0576115c386868381811061158f5761158e6124f2565b5b90506020020160208101906115a49190611e8d565b8585848181106115b7576115b66124f2565b5b9050602002013561187e565b808060010191505061156e565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806116018484611ad3565b905061160c81611b0f565b9150509392505050565b600261162181611898565b828290508585905014611660576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c4576116b7868683818110611683576116826124f2565b5b90506020020160208101906116989190611e8d565b8585848181106116ab576116aa6124f2565b5b90506020020135611838565b8080600101915050611662565b505050505050565b60075481565b600181565b6116df611847565b63389a75e1600c52805f526020600c20805442111561170557636f5e88185f526004601cfd5b5f81555061171281611a0d565b50565b5f63f23a6e6160e01b90509695505050505050565b611732611847565b8060601b61174757637448fbae5f526004601cfd5b61175081611a0d565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166117736112b9565b73ffffffffffffffffffffffffffffffffffffffff16148061179f575061179e8260026001176111c5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611831575061183082611b45565b5b9050919050565b61184382825f611bbe565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461187c576382b429005f526004601cfd5b565b61188a82826001611bbe565b5050565b5f6202a300905090565b638b78c6d8195433146118ca57638b78c6d8600c52335f52806020600c2054166118c9576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe611c16565b15611976577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193857630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c9565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611a15611c16565b15611a7a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611ad0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611ae49190613228565b90505f8160200151806020019051810190611aff91906132bc565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b3e5750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bb75750611bb682611c1a565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611be057848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611cc881611c94565b8114611cd2575f80fd5b50565b5f81359050611ce381611cbf565b92915050565b5f60208284031215611cfe57611cfd611c8c565b5b5f611d0b84828501611cd5565b91505092915050565b5f8115159050919050565b611d2881611d14565b82525050565b5f602082019050611d415f830184611d1f565b92915050565b5f819050919050565b611d5981611d47565b82525050565b5f602082019050611d725f830184611d50565b92915050565b611d8181611d47565b8114611d8b575f80fd5b50565b5f81359050611d9c81611d78565b92915050565b5f60208284031215611db757611db6611c8c565b5b5f611dc484828501611d8e565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611df682611dcd565b9050919050565b611e0681611dec565b8114611e10575f80fd5b50565b5f81359050611e2181611dfd565b92915050565b5f8060408385031215611e3d57611e3c611c8c565b5b5f611e4a85828601611e13565b9250506020611e5b85828601611d8e565b9150509250929050565b611e6e81611c94565b82525050565b5f602082019050611e875f830184611e65565b92915050565b5f60208284031215611ea257611ea1611c8c565b5b5f611eaf84828501611e13565b91505092915050565b611ec181611dec565b82525050565b5f602082019050611eda5f830184611eb8565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f0157611f00611ee0565b5b8235905067ffffffffffffffff811115611f1e57611f1d611ee4565b5b602083019150836020820283011115611f3a57611f39611ee8565b5b9250929050565b5f8083601f840112611f5657611f55611ee0565b5b8235905067ffffffffffffffff811115611f7357611f72611ee4565b5b602083019150836020820283011115611f8f57611f8e611ee8565b5b9250929050565b5f805f8060408587031215611fae57611fad611c8c565b5b5f85013567ffffffffffffffff811115611fcb57611fca611c90565b5b611fd787828801611eec565b9450945050602085013567ffffffffffffffff811115611ffa57611ff9611c90565b5b61200687828801611f41565b925092505092959194509250565b5f8083601f84011261202957612028611ee0565b5b8235905067ffffffffffffffff81111561204657612045611ee4565b5b60208301915083600182028301111561206257612061611ee8565b5b9250929050565b5f806020838503121561207f5761207e611c8c565b5b5f83013567ffffffffffffffff81111561209c5761209b611c90565b5b6120a885828601612014565b92509250509250929050565b5f6040820190506120c75f830185611d50565b6120d46020830184611eb8565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61211d826120db565b61212781856120e5565b93506121378185602086016120f5565b61214081612103565b840191505092915050565b5f6020820190508181035f8301526121638184612113565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121a9576121a861216b565b5b50565b5f8190506121b982612198565b919050565b5f6121c8826121ac565b9050919050565b6121d8816121be565b82525050565b5f6020820190506121f15f8301846121cf565b92915050565b5f805f6040848603121561220e5761220d611c8c565b5b5f61221b86828701611e13565b935050602084013567ffffffffffffffff81111561223c5761223b611c90565b5b61224886828701612014565b92509250509250925092565b5f8083601f84011261226957612268611ee0565b5b8235905067ffffffffffffffff81111561228657612285611ee4565b5b6020830191508360208202830111156122a2576122a1611ee8565b5b9250929050565b5f805f805f805f8060a0898b0312156122c5576122c4611c8c565b5b5f6122d28b828c01611e13565b98505060206122e38b828c01611e13565b975050604089013567ffffffffffffffff81111561230457612303611c90565b5b6123108b828c01612254565b9650965050606089013567ffffffffffffffff81111561233357612332611c90565b5b61233f8b828c01612254565b9450945050608089013567ffffffffffffffff81111561236257612361611c90565b5b61236e8b828c01612014565b92509250509295985092959890939650565b5f805f806040858703121561239857612397611c8c565b5b5f85013567ffffffffffffffff8111156123b5576123b4611c90565b5b6123c187828801611eec565b9450945050602085013567ffffffffffffffff8111156123e4576123e3611c90565b5b6123f087828801612254565b925092505092959194509250565b5f819050919050565b612410816123fe565b811461241a575f80fd5b50565b5f8135905061242b81612407565b92915050565b5f6020828403121561244657612445611c8c565b5b5f6124538482850161241d565b91505092915050565b5f805f805f8060a0878903121561247657612475611c8c565b5b5f61248389828a01611e13565b965050602061249489828a01611e13565b95505060406124a589828a01611d8e565b94505060606124b689828a01611d8e565b935050608087013567ffffffffffffffff8111156124d7576124d6611c90565b5b6124e389828a01612014565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61252881611d14565b8114612532575f80fd5b50565b5f813590506125438161251f565b92915050565b5f6020828403121561255e5761255d611c8c565b5b5f61256b84828501612535565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125ae82612103565b810181811067ffffffffffffffff821117156125cd576125cc612578565b5b80604052505050565b5f6125df611c83565b90506125eb82826125a5565b919050565b5f80fd5b5f6125fe82611dec565b9050919050565b61260e816125f4565b8114612618575f80fd5b50565b5f8135905061262981612605565b92915050565b6002811061263b575f80fd5b50565b5f8135905061264c8161262f565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126705761266f612578565b5b61267982612103565b9050602081019050919050565b828183375f83830152505050565b5f6126a66126a184612656565b6125d6565b9050828152602081018484840111156126c2576126c1612652565b5b6126cd848285612686565b509392505050565b5f82601f8301126126e9576126e8611ee0565b5b81356126f9848260208601612694565b91505092915050565b5f60c0828403121561271757612716612574565b5b61272160c06125d6565b90505f6127308482850161261b565b5f8301525060206127438482850161263e565b602083015250604061275784828501611d8e565b604083015250606061276b84828501611d8e565b606083015250608082013567ffffffffffffffff81111561278f5761278e6125f0565b5b61279b848285016126d5565b60808301525060a06127af84828501611e13565b60a08301525092915050565b5f602082840312156127d0576127cf611c8c565b5b5f82013567ffffffffffffffff8111156127ed576127ec611c90565b5b6127f984828501612702565b91505092915050565b5f6040820190506128155f830185611eb8565b6128226020830184611d50565b9392505050565b5f8151905061283781611d78565b92915050565b5f6020828403121561285257612851611c8c565b5b5f61285f84828501612829565b91505092915050565b5f60608201905061287b5f830186611eb8565b6128886020830185611d50565b6128956040830184611d50565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128e157607f821691505b6020821081036128f4576128f361289d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261291b565b612960868361291b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61299b61299661299184611d47565b612978565b611d47565b9050919050565b5f819050919050565b6129b483612981565b6129c86129c0826129a2565b848454612927565b825550505050565b5f90565b6129dc6129d0565b6129e78184846129ab565b505050565b5b81811015612a0a576129ff5f826129d4565b6001810190506129ed565b5050565b601f821115612a4f57612a20816128fa565b612a298461290c565b81016020851015612a38578190505b612a4c612a448561290c565b8301826129ec565b50505b505050565b5f82821c905092915050565b5f612a6f5f1984600802612a54565b1980831691505092915050565b5f612a878383612a60565b9150826002028217905092915050565b612aa0826120db565b67ffffffffffffffff811115612ab957612ab8612578565b5b612ac382546128ca565b612ace828285612a0e565b5f60209050601f831160018114612aff575f8415612aed578287015190505b612af78582612a7c565b865550612b5e565b601f198416612b0d866128fa565b5f5b82811015612b3457848901518255600182019150602085019450602081019050612b0f565b86831015612b515784890151612b4d601f891682612a60565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b795f8301866121cf565b612b866020830185611d50565b612b936040830184611d50565b949350505050565b5f60408284031215612bb057612baf612574565b5b612bba60406125d6565b90505f612bc984828501611e13565b5f83015250602082013567ffffffffffffffff811115612bec57612beb6125f0565b5b612bf8848285016126d5565b60208301525092915050565b5f60208284031215612c1957612c18611c8c565b5b5f82013567ffffffffffffffff811115612c3657612c35611c90565b5b612c4284828501612b9b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c8282611d47565b9150612c8d83611d47565b9250828203905081811115612ca557612ca4612c4b565b5b92915050565b612cb481611dec565b82525050565b5f82825260208201905092915050565b5f612cd4826120db565b612cde8185612cba565b9350612cee8185602086016120f5565b612cf781612103565b840191505092915050565b5f604083015f830151612d175f860182612cab565b5060208301518482036020860152612d2f8282612cca565b9150508091505092915050565b5f6020820190508181035f830152612d548184612d02565b905092915050565b5f604082019050612d6f5f830185611eb8565b8181036020830152612d818184612113565b90509392505050565b5f60a082019050612d9d5f830188611eb8565b612daa6020830187611eb8565b612db76040830186611d50565b612dc46060830185611d50565b8181036080830152612dd68184612113565b90509695505050505050565b5f8160601b9050919050565b5f612df882612de2565b9050919050565b5f612e0982612dee565b9050919050565b612e21612e1c82611dec565b612dff565b82525050565b5f819050919050565b612e41612e3c82611d47565b612e27565b82525050565b5f81905092915050565b5f612e5b826120db565b612e658185612e47565b9350612e758185602086016120f5565b80840191505092915050565b5f612e8c8288612e10565b601482019150612e9c8287612e10565b601482019150612eac8286612e30565b602082019150612ebc8285612e30565b602082019150612ecc8284612e51565b91508190509695505050505050565b612ee481611d47565b82525050565b5f606083015f830151612eff5f860182612edb565b506020830151612f126020860182612edb565b5060408301518482036040860152612f2a8282612cca565b9150508091505092915050565b5f6020820190508181035f830152612f4f8184612eea565b905092915050565b60038110612f6857612f6761216b565b5b50565b5f819050612f7882612f57565b919050565b5f612f8782612f6b565b9050919050565b612f9781612f7d565b82525050565b5f608083015f830151612fb25f860182612f8e565b506020830151612fc56020860182612cab565b506040830151612fd86040860182612cab565b5060608301518482036060860152612ff08282612cca565b9150508091505092915050565b5f6020820190508181035f8301526130158184612f9d565b905092915050565b5f61302782611d47565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305957613058612c4b565b5b600182019050919050565b5f819050919050565b5f61308761308261307d84613064565b612978565b611d47565b9050919050565b6130978161306d565b82525050565b5f6130a883856120e5565b93506130b5838584612686565b6130be83612103565b840190509392505050565b5f60a0820190506130dc5f830189611eb8565b6130e96020830188611eb8565b6130f66040830187611d50565b613103606083018661308e565b818103608083015261311681848661309d565b9050979650505050505050565b5f61312e8385612e47565b935061313b838584612686565b82840190509392505050565b5f6131528289612e10565b6014820191506131628288612e10565b6014820191506131728287612e30565b6020820191506131828286612e30565b602082019150613193828486613123565b9150819050979650505050505050565b5f604082840312156131b8576131b7612574565b5b6131c260406125d6565b90505f82013567ffffffffffffffff8111156131e1576131e06125f0565b5b6131ed848285016126d5565b5f83015250602082013567ffffffffffffffff8111156132105761320f6125f0565b5b61321c848285016126d5565b60208301525092915050565b5f6020828403121561323d5761323c611c8c565b5b5f82013567ffffffffffffffff81111561325a57613259611c90565b5b613266848285016131a3565b91505092915050565b5f8151905061327d81612407565b92915050565b5f6020828403121561329857613297612574565b5b6132a260206125d6565b90505f6132b18482850161326f565b5f8301525092915050565b5f602082840312156132d1576132d0611c8c565b5b5f6132de84828501613283565b9150509291505056fea2646970667358221220b171e8c6a92dd7b8155b4c50cc1b028bf7a684698d3550beae729eca6a362f2464736f6c634300081a0033",T5="0x608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611ce9565b61086c565b6040516102509190611d2e565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d5f565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d5f565b60405180910390f35b6102c760048036038101906102c29190611da2565b61095b565b005b6102e360048036038101906102de9190611e27565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e27565b61097e565b6040516103189190611d2e565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d5f565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e74565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611e8d565b610a11565b6040516103b29190611d5f565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611ec7565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611f96565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e9190612069565b610b5d565b005b348015610440575f80fd5b5061045b60048036038101906104569190612069565b610e9a565b6040516104699291906120b4565b60405180910390f35b61048c60048036038101906104879190611e27565b6110cc565b005b348015610499575f80fd5b506104b460048036038101906104af9190612069565b6110e2565b6040516104c1919061214b565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e27565b6111c5565b6040516104fd9190611d2e565b60405180910390f35b61050e6111dc565b005b34801561051b575f80fd5b50610524611215565b604051610531919061214b565b60405180910390f35b6105426112a1565b005b34801561054f575f80fd5b506105586112b4565b6040516105659190611d5f565b60405180910390f35b348015610579575f80fd5b506105826112b9565b60405161058f9190611ec7565b60405180910390f35b3480156105a3575f80fd5b506105ac6112e1565b6040516105b99190611d5f565b60405180910390f35b3480156105cd575f80fd5b506105d66112e7565b6040516105e391906121de565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d91906121f7565b6112f9565b60405161061f9190611d2e565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122a9565b61150b565b60405161065b9190611e74565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612380565b611522565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612431565b6115d8565b6040516106bf9190611d2e565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e991906121f7565b6115f5565b6040516106fb9190611d2e565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612380565b611616565b005b348015610737575f80fd5b506107406116cc565b60405161074d9190611d5f565b60405180910390f35b348015610761575f80fd5b5061076a6116d2565b6040516107779190611d5f565b60405180910390f35b61079a60048036038101906107959190611e8d565b6116d7565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061245c565b611715565b6040516107cf9190611e74565b60405180910390f35b6107f260048036038101906107ed9190611e8d565b61172a565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611e8d565b611753565b6040516108279190611d2e565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611e8d565b6117a6565b6040516108639190611d5f565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bf565b5b9050919050565b5f8054905090565b60045481565b6109653382611838565b50565b610970611847565b61097a828261187e565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188e565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611898565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab96124f2565b5b9050602002016020810190610acf9190612549565b90506001151581151503610b1457610b0f878784818110610af357610af26124f2565b5b9050602002016020810190610b089190611e8d565b600161187e565b610b47565b610b46878784818110610b2a57610b296124f2565b5b9050602002016020810190610b3f9190611e8d565b6001611838565b5b508080600101915050610a9b565b505050505050565b5f610b666118cd565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127bb565b905060015f81905550600180811115610bc557610bc461216b565b5b81602001516001811115610bdc57610bdb61216b565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612802565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061283d565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612868565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161216b565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612a97565b50610dca336118f6565b610dd98260a0015160016119cc565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5693929190612b66565b60405180910390a250508015610e95576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea781611898565b5f8585810190610eb79190612c04565b90505f8160200151806020019051810190610ed2919061283d565b9050600754600354610ee49190612c78565b811115610f49573382604051602001610efd9190612d3c565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f40929190612d5c565b60405180910390fd5b8060035f828254610f5a9190612c78565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fcc959493929190612d8a565b5f604051808303815f87803b158015610fe3575f80fd5b505af1158015610ff5573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611077959493929190612e81565b604051602081830303815290604052604051611093919061214b565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d4611847565b6110de8282611838565b5050565b60605f83838101906110f491906127bb565b905060405180608001604052806002808111156111145761111361216b565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180606001604052808460400151815260200184606001518152602001846080015181525060405160200161118b9190612f37565b6040516020818303038152906040528152506040516020016111ad9190612ffd565b60405160208183030381529060405291505092915050565b5f80826111d185610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60058054611222906128ca565b80601f016020809104026020016040519081016040528092919081815260200182805461124e906128ca565b80156112995780601f1061127057610100808354040283529160200191611299565b820191905f5260205f20905b81548152906001019060200180831161127c57829003601f168201915b505050505081565b6112a9611847565b6112b25f611a0d565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f611302611847565b5f61130d8484611ad3565b90505f60018111156113225761132161216b565b5b60025f9054906101000a900460ff1660018111156113435761134261216b565b5b036114ff5761135181611b0f565b611387576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113999061301d565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b815260040161142d969594939291906130c9565b5f604051808303815f87803b158015611444575f80fd5b505af1158015611456573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114d196959493929190613147565b6040516020818303038152906040526040516114ed919061214b565b60405180910390a26001915050611504565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152d81611898565b82829050858590501461156c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115d0576115c386868381811061158f5761158e6124f2565b5b90506020020160208101906115a49190611e8d565b8585848181106115b7576115b66124f2565b5b9050602002013561187e565b808060010191505061156e565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806116018484611ad3565b905061160c81611b0f565b9150509392505050565b600261162181611898565b828290508585905014611660576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c4576116b7868683818110611683576116826124f2565b5b90506020020160208101906116989190611e8d565b8585848181106116ab576116aa6124f2565b5b90506020020135611838565b8080600101915050611662565b505050505050565b60075481565b600181565b6116df611847565b63389a75e1600c52805f526020600c20805442111561170557636f5e88185f526004601cfd5b5f81555061171281611a0d565b50565b5f63f23a6e6160e01b90509695505050505050565b611732611847565b8060601b61174757637448fbae5f526004601cfd5b61175081611a0d565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166117736112b9565b73ffffffffffffffffffffffffffffffffffffffff16148061179f575061179e8260026001176111c5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611831575061183082611b45565b5b9050919050565b61184382825f611bbe565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461187c576382b429005f526004601cfd5b565b61188a82826001611bbe565b5050565b5f6202a300905090565b638b78c6d8195433146118ca57638b78c6d8600c52335f52806020600c2054166118c9576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe611c16565b15611976577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193857630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c9565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611a15611c16565b15611a7a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611ad0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611ae49190613228565b90505f8160200151806020019051810190611aff91906132bc565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b3e5750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bb75750611bb682611c1a565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611be057848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611cc881611c94565b8114611cd2575f80fd5b50565b5f81359050611ce381611cbf565b92915050565b5f60208284031215611cfe57611cfd611c8c565b5b5f611d0b84828501611cd5565b91505092915050565b5f8115159050919050565b611d2881611d14565b82525050565b5f602082019050611d415f830184611d1f565b92915050565b5f819050919050565b611d5981611d47565b82525050565b5f602082019050611d725f830184611d50565b92915050565b611d8181611d47565b8114611d8b575f80fd5b50565b5f81359050611d9c81611d78565b92915050565b5f60208284031215611db757611db6611c8c565b5b5f611dc484828501611d8e565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611df682611dcd565b9050919050565b611e0681611dec565b8114611e10575f80fd5b50565b5f81359050611e2181611dfd565b92915050565b5f8060408385031215611e3d57611e3c611c8c565b5b5f611e4a85828601611e13565b9250506020611e5b85828601611d8e565b9150509250929050565b611e6e81611c94565b82525050565b5f602082019050611e875f830184611e65565b92915050565b5f60208284031215611ea257611ea1611c8c565b5b5f611eaf84828501611e13565b91505092915050565b611ec181611dec565b82525050565b5f602082019050611eda5f830184611eb8565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f0157611f00611ee0565b5b8235905067ffffffffffffffff811115611f1e57611f1d611ee4565b5b602083019150836020820283011115611f3a57611f39611ee8565b5b9250929050565b5f8083601f840112611f5657611f55611ee0565b5b8235905067ffffffffffffffff811115611f7357611f72611ee4565b5b602083019150836020820283011115611f8f57611f8e611ee8565b5b9250929050565b5f805f8060408587031215611fae57611fad611c8c565b5b5f85013567ffffffffffffffff811115611fcb57611fca611c90565b5b611fd787828801611eec565b9450945050602085013567ffffffffffffffff811115611ffa57611ff9611c90565b5b61200687828801611f41565b925092505092959194509250565b5f8083601f84011261202957612028611ee0565b5b8235905067ffffffffffffffff81111561204657612045611ee4565b5b60208301915083600182028301111561206257612061611ee8565b5b9250929050565b5f806020838503121561207f5761207e611c8c565b5b5f83013567ffffffffffffffff81111561209c5761209b611c90565b5b6120a885828601612014565b92509250509250929050565b5f6040820190506120c75f830185611d50565b6120d46020830184611eb8565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61211d826120db565b61212781856120e5565b93506121378185602086016120f5565b61214081612103565b840191505092915050565b5f6020820190508181035f8301526121638184612113565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121a9576121a861216b565b5b50565b5f8190506121b982612198565b919050565b5f6121c8826121ac565b9050919050565b6121d8816121be565b82525050565b5f6020820190506121f15f8301846121cf565b92915050565b5f805f6040848603121561220e5761220d611c8c565b5b5f61221b86828701611e13565b935050602084013567ffffffffffffffff81111561223c5761223b611c90565b5b61224886828701612014565b92509250509250925092565b5f8083601f84011261226957612268611ee0565b5b8235905067ffffffffffffffff81111561228657612285611ee4565b5b6020830191508360208202830111156122a2576122a1611ee8565b5b9250929050565b5f805f805f805f8060a0898b0312156122c5576122c4611c8c565b5b5f6122d28b828c01611e13565b98505060206122e38b828c01611e13565b975050604089013567ffffffffffffffff81111561230457612303611c90565b5b6123108b828c01612254565b9650965050606089013567ffffffffffffffff81111561233357612332611c90565b5b61233f8b828c01612254565b9450945050608089013567ffffffffffffffff81111561236257612361611c90565b5b61236e8b828c01612014565b92509250509295985092959890939650565b5f805f806040858703121561239857612397611c8c565b5b5f85013567ffffffffffffffff8111156123b5576123b4611c90565b5b6123c187828801611eec565b9450945050602085013567ffffffffffffffff8111156123e4576123e3611c90565b5b6123f087828801612254565b925092505092959194509250565b5f819050919050565b612410816123fe565b811461241a575f80fd5b50565b5f8135905061242b81612407565b92915050565b5f6020828403121561244657612445611c8c565b5b5f6124538482850161241d565b91505092915050565b5f805f805f8060a0878903121561247657612475611c8c565b5b5f61248389828a01611e13565b965050602061249489828a01611e13565b95505060406124a589828a01611d8e565b94505060606124b689828a01611d8e565b935050608087013567ffffffffffffffff8111156124d7576124d6611c90565b5b6124e389828a01612014565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61252881611d14565b8114612532575f80fd5b50565b5f813590506125438161251f565b92915050565b5f6020828403121561255e5761255d611c8c565b5b5f61256b84828501612535565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125ae82612103565b810181811067ffffffffffffffff821117156125cd576125cc612578565b5b80604052505050565b5f6125df611c83565b90506125eb82826125a5565b919050565b5f80fd5b5f6125fe82611dec565b9050919050565b61260e816125f4565b8114612618575f80fd5b50565b5f8135905061262981612605565b92915050565b6002811061263b575f80fd5b50565b5f8135905061264c8161262f565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126705761266f612578565b5b61267982612103565b9050602081019050919050565b828183375f83830152505050565b5f6126a66126a184612656565b6125d6565b9050828152602081018484840111156126c2576126c1612652565b5b6126cd848285612686565b509392505050565b5f82601f8301126126e9576126e8611ee0565b5b81356126f9848260208601612694565b91505092915050565b5f60c0828403121561271757612716612574565b5b61272160c06125d6565b90505f6127308482850161261b565b5f8301525060206127438482850161263e565b602083015250604061275784828501611d8e565b604083015250606061276b84828501611d8e565b606083015250608082013567ffffffffffffffff81111561278f5761278e6125f0565b5b61279b848285016126d5565b60808301525060a06127af84828501611e13565b60a08301525092915050565b5f602082840312156127d0576127cf611c8c565b5b5f82013567ffffffffffffffff8111156127ed576127ec611c90565b5b6127f984828501612702565b91505092915050565b5f6040820190506128155f830185611eb8565b6128226020830184611d50565b9392505050565b5f8151905061283781611d78565b92915050565b5f6020828403121561285257612851611c8c565b5b5f61285f84828501612829565b91505092915050565b5f60608201905061287b5f830186611eb8565b6128886020830185611d50565b6128956040830184611d50565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128e157607f821691505b6020821081036128f4576128f361289d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261291b565b612960868361291b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61299b61299661299184611d47565b612978565b611d47565b9050919050565b5f819050919050565b6129b483612981565b6129c86129c0826129a2565b848454612927565b825550505050565b5f90565b6129dc6129d0565b6129e78184846129ab565b505050565b5b81811015612a0a576129ff5f826129d4565b6001810190506129ed565b5050565b601f821115612a4f57612a20816128fa565b612a298461290c565b81016020851015612a38578190505b612a4c612a448561290c565b8301826129ec565b50505b505050565b5f82821c905092915050565b5f612a6f5f1984600802612a54565b1980831691505092915050565b5f612a878383612a60565b9150826002028217905092915050565b612aa0826120db565b67ffffffffffffffff811115612ab957612ab8612578565b5b612ac382546128ca565b612ace828285612a0e565b5f60209050601f831160018114612aff575f8415612aed578287015190505b612af78582612a7c565b865550612b5e565b601f198416612b0d866128fa565b5f5b82811015612b3457848901518255600182019150602085019450602081019050612b0f565b86831015612b515784890151612b4d601f891682612a60565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b795f8301866121cf565b612b866020830185611d50565b612b936040830184611d50565b949350505050565b5f60408284031215612bb057612baf612574565b5b612bba60406125d6565b90505f612bc984828501611e13565b5f83015250602082013567ffffffffffffffff811115612bec57612beb6125f0565b5b612bf8848285016126d5565b60208301525092915050565b5f60208284031215612c1957612c18611c8c565b5b5f82013567ffffffffffffffff811115612c3657612c35611c90565b5b612c4284828501612b9b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c8282611d47565b9150612c8d83611d47565b9250828203905081811115612ca557612ca4612c4b565b5b92915050565b612cb481611dec565b82525050565b5f82825260208201905092915050565b5f612cd4826120db565b612cde8185612cba565b9350612cee8185602086016120f5565b612cf781612103565b840191505092915050565b5f604083015f830151612d175f860182612cab565b5060208301518482036020860152612d2f8282612cca565b9150508091505092915050565b5f6020820190508181035f830152612d548184612d02565b905092915050565b5f604082019050612d6f5f830185611eb8565b8181036020830152612d818184612113565b90509392505050565b5f60a082019050612d9d5f830188611eb8565b612daa6020830187611eb8565b612db76040830186611d50565b612dc46060830185611d50565b8181036080830152612dd68184612113565b90509695505050505050565b5f8160601b9050919050565b5f612df882612de2565b9050919050565b5f612e0982612dee565b9050919050565b612e21612e1c82611dec565b612dff565b82525050565b5f819050919050565b612e41612e3c82611d47565b612e27565b82525050565b5f81905092915050565b5f612e5b826120db565b612e658185612e47565b9350612e758185602086016120f5565b80840191505092915050565b5f612e8c8288612e10565b601482019150612e9c8287612e10565b601482019150612eac8286612e30565b602082019150612ebc8285612e30565b602082019150612ecc8284612e51565b91508190509695505050505050565b612ee481611d47565b82525050565b5f606083015f830151612eff5f860182612edb565b506020830151612f126020860182612edb565b5060408301518482036040860152612f2a8282612cca565b9150508091505092915050565b5f6020820190508181035f830152612f4f8184612eea565b905092915050565b60038110612f6857612f6761216b565b5b50565b5f819050612f7882612f57565b919050565b5f612f8782612f6b565b9050919050565b612f9781612f7d565b82525050565b5f608083015f830151612fb25f860182612f8e565b506020830151612fc56020860182612cab565b506040830151612fd86040860182612cab565b5060608301518482036060860152612ff08282612cca565b9150508091505092915050565b5f6020820190508181035f8301526130158184612f9d565b905092915050565b5f61302782611d47565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305957613058612c4b565b5b600182019050919050565b5f819050919050565b5f61308761308261307d84613064565b612978565b611d47565b9050919050565b6130978161306d565b82525050565b5f6130a883856120e5565b93506130b5838584612686565b6130be83612103565b840190509392505050565b5f60a0820190506130dc5f830189611eb8565b6130e96020830188611eb8565b6130f66040830187611d50565b613103606083018661308e565b818103608083015261311681848661309d565b9050979650505050505050565b5f61312e8385612e47565b935061313b838584612686565b82840190509392505050565b5f6131528289612e10565b6014820191506131628288612e10565b6014820191506131728287612e30565b6020820191506131828286612e30565b602082019150613193828486613123565b9150819050979650505050505050565b5f604082840312156131b8576131b7612574565b5b6131c260406125d6565b90505f82013567ffffffffffffffff8111156131e1576131e06125f0565b5b6131ed848285016126d5565b5f83015250602082013567ffffffffffffffff8111156132105761320f6125f0565b5b61321c848285016126d5565b60208301525092915050565b5f6020828403121561323d5761323c611c8c565b5b5f82013567ffffffffffffffff81111561325a57613259611c90565b5b613266848285016131a3565b91505092915050565b5f8151905061327d81612407565b92915050565b5f6020828403121561329857613297612574565b5b6132a260206125d6565b90505f6132b18482850161326f565b5f8301525092915050565b5f602082840312156132d1576132d0611c8c565b5b5f6132de84828501613283565b9150509291505056fea2646970667358221220b171e8c6a92dd7b8155b4c50cc1b028bf7a684698d3550beae729eca6a362f2464736f6c634300081a0033",v5={},w5={},a0={_format:r5,contractName:u5,sourceName:o5,abi:l5,bytecode:m5,deployedBytecode:T5,linkReferences:v5,deployedLinkReferences:w5},M5="hh-sol-artifact-1",I5="PointsIncentive",h5="contracts/incentives/PointsIncentive.sol",A5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],g5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611c21806100bd5f395ff3fe6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",R5="0x6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",O5={},x5={},d0={_format:M5,contractName:I5,sourceName:h5,abi:A5,bytecode:g5,deployedBytecode:R5,linkReferences:O5,deployedLinkReferences:x5},C5="hh-sol-artifact-1",_5="LimitedSignerValidator",z5="contracts/validators/LimitedSignerValidator.sol",N5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],E5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e0516101005161235761028a5f395f610fda01525f61128101525f61125e01525f6112f001525f61131401526123575ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f14610351578063d3de6e751461037b578063f04e283e146103b7578063f2fde38b146103d3578063fee81cf4146103ef57610113565b8063715018a614610289578063736c0d5b1461029357806384b0196e146102cf5780638da5cb5b146102ff578063a1d2756f1461032957610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611505565b61042b565b60405161014a919061154a565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115f0565b6104a4565b6040516101869190611658565b60405180910390f35b6101976104d9565b005b3480156101a4575f80fd5b506101ad61052a565b6040516101ba9190611680565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116c3565b610551565b6040516101f691906116fd565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117cc565b610566565b005b348015610232575f80fd5b5061024d6004803603810190610248919061189f565b61066f565b005b6102576107f1565b005b610273600480360381019061026e91906118ea565b61082a565b604051610280919061154a565b60405180910390f35b61029161088f565b005b34801561029e575f80fd5b506102b960048036038101906102b4919061196e565b6108a2565b6040516102c6919061154a565b60405180910390f35b3480156102da575f80fd5b506102e36108be565b6040516102f69796959493929190611b09565b60405180910390f35b34801561030a575f80fd5b50610313610909565b6040516103209190611b8b565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a919061196e565b610931565b005b34801561035c575f80fd5b5061036561097c565b60405161037291906116fd565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c9190611d02565b610982565b6040516103ae9190611658565b60405180910390f35b6103d160048036038101906103cc919061196e565b6109eb565b005b6103ed60048036038101906103e8919061196e565b610a29565b005b3480156103fa575f80fd5b506104156004803603810190610410919061196e565b610a52565b60405161042291906116fd565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049d575061049c82610a6b565b5b9050919050565b5f8383836040516020016104ba93929190611de7565b6040516020818303038152906040528051906020012090509392505050565b5f6104e2610ae4565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61056e610aee565b8181905084849050146105ad576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610668578282828181106105cd576105cc611e23565b5b90506020020160208101906105e29190611e7a565b5f808787858181106105f7576105f6611e23565b5b905060200201602081019061060c919061196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105af565b5050505050565b5f610678610b25565b905080546003825580156106aa5760018160011c14303b106106a15763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106bd9190611fa0565b9250925092506106e6835f815181106106d9576106d8611e23565b5b6020026020010151610b4e565b806002819055505f5b83518110156107735760015f8086848151811061070f5761070e611e23565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106ef565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107ec576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610836868686610c24565b61087757836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161086e9190611b8b565b60405180910390fd5b6108848686868686610c8b565b905095945050505050565b610897610aee565b6108a05f610e7e565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108f2610f44565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610939610aee565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109e17ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109c695949392919061201b565b60405160208183030381529060405280519060200120610fbb565b9050949350505050565b6109f3610aee565b63389a75e1600c52805f526020600c208054421115610a1957636f5e88185f526004601cfd5b5f815550610a2681610e7e565b50565b610a31610aee565b8060601b610a4657637448fbae5f526004601cfd5b610a4f81610e7e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610add5750610adc82611037565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b23576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b566110b0565b15610bce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c21565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c318585856104a4565b90505f6001805f8481526020019081526020015f2054610c519190612099565b9050600254811115610c67575f92505050610c84565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d229190612159565b90505f815f0151806020019051810190610d3c91906122b3565b90505f610d53898360400151898660200151610982565b905087826040015160ff1611610da6578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610d9d9291906122fa565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e28576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3e818960036110b49092919063ffffffff16565b610e70818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111199092919063ffffffff16565b935050505095945050505050565b610e866110b0565b15610eeb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f41565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fc461121c565b15610fd857610fd1611224565b9050611014565b7f000000000000000000000000000000000000000000000000000000000000000090506110036112ec565b1561101357611010611224565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110a957506110a882611344565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110df57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561110c57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561121557604051835f5260208301516040526040835103611186576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118357600193505f60605282604052505050611215565b50505b60418351036111cc5760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111ca57600192505f606052816040525050611215565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061122e61121c565b1561125c575f8061123d610f44565b91509150818051906020012093508080519060200120925050506112a3565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113b657506113b5826113bd565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061142f575061142e82611436565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114e4816114b0565b81146114ee575f80fd5b50565b5f813590506114ff816114db565b92915050565b5f6020828403121561151a576115196114a8565b5b5f611527848285016114f1565b91505092915050565b5f8115159050919050565b61154481611530565b82525050565b5f60208201905061155d5f83018461153b565b92915050565b5f819050919050565b61157581611563565b811461157f575f80fd5b50565b5f813590506115908161156c565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115bf82611596565b9050919050565b6115cf816115b5565b81146115d9575f80fd5b50565b5f813590506115ea816115c6565b92915050565b5f805f60608486031215611607576116066114a8565b5b5f61161486828701611582565b935050602061162586828701611582565b9250506040611636868287016115dc565b9150509250925092565b5f819050919050565b61165281611640565b82525050565b5f60208201905061166b5f830184611649565b92915050565b61167a816114b0565b82525050565b5f6020820190506116935f830184611671565b92915050565b6116a281611640565b81146116ac575f80fd5b50565b5f813590506116bd81611699565b92915050565b5f602082840312156116d8576116d76114a8565b5b5f6116e5848285016116af565b91505092915050565b6116f781611563565b82525050565b5f6020820190506117105f8301846116ee565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261173757611736611716565b5b8235905067ffffffffffffffff8111156117545761175361171a565b5b6020830191508360208202830111156117705761176f61171e565b5b9250929050565b5f8083601f84011261178c5761178b611716565b5b8235905067ffffffffffffffff8111156117a9576117a861171a565b5b6020830191508360208202830111156117c5576117c461171e565b5b9250929050565b5f805f80604085870312156117e4576117e36114a8565b5b5f85013567ffffffffffffffff811115611801576118006114ac565b5b61180d87828801611722565b9450945050602085013567ffffffffffffffff8111156118305761182f6114ac565b5b61183c87828801611777565b925092505092959194509250565b5f8083601f84011261185f5761185e611716565b5b8235905067ffffffffffffffff81111561187c5761187b61171a565b5b6020830191508360018202830111156118985761189761171e565b5b9250929050565b5f80602083850312156118b5576118b46114a8565b5b5f83013567ffffffffffffffff8111156118d2576118d16114ac565b5b6118de8582860161184a565b92509250509250929050565b5f805f805f60808688031215611903576119026114a8565b5b5f61191088828901611582565b955050602061192188828901611582565b9450506040611932888289016115dc565b935050606086013567ffffffffffffffff811115611953576119526114ac565b5b61195f8882890161184a565b92509250509295509295909350565b5f60208284031215611983576119826114a8565b5b5f611990848285016115dc565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119cd81611999565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a15826119d3565b611a1f81856119dd565b9350611a2f8185602086016119ed565b611a38816119fb565b840191505092915050565b611a4c816115b5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a8481611563565b82525050565b5f611a958383611a7b565b60208301905092915050565b5f602082019050919050565b5f611ab782611a52565b611ac18185611a5c565b9350611acc83611a6c565b805f5b83811015611afc578151611ae38882611a8a565b9750611aee83611aa1565b925050600181019050611acf565b5085935050505092915050565b5f60e082019050611b1c5f83018a6119c4565b8181036020830152611b2e8189611a0b565b90508181036040830152611b428188611a0b565b9050611b5160608301876116ee565b611b5e6080830186611a43565b611b6b60a0830185611649565b81810360c0830152611b7d8184611aad565b905098975050505050505050565b5f602082019050611b9e5f830184611a43565b92915050565b5f60ff82169050919050565b611bb981611ba4565b8114611bc3575f80fd5b50565b5f81359050611bd481611bb0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c14826119fb565b810181811067ffffffffffffffff82111715611c3357611c32611bde565b5b80604052505050565b5f611c4561149f565b9050611c518282611c0b565b919050565b5f67ffffffffffffffff821115611c7057611c6f611bde565b5b611c79826119fb565b9050602081019050919050565b828183375f83830152505050565b5f611ca6611ca184611c56565b611c3c565b905082815260208101848484011115611cc257611cc1611bda565b5b611ccd848285611c86565b509392505050565b5f82601f830112611ce957611ce8611716565b5b8135611cf9848260208601611c94565b91505092915050565b5f805f8060808587031215611d1a57611d196114a8565b5b5f611d2787828801611582565b9450506020611d3887828801611bc6565b9350506040611d49878288016115dc565b925050606085013567ffffffffffffffff811115611d6a57611d696114ac565b5b611d7687828801611cd5565b91505092959194509250565b5f819050919050565b611d9c611d9782611563565b611d82565b82525050565b5f8160601b9050919050565b5f611db882611da2565b9050919050565b5f611dc982611dae565b9050919050565b611de1611ddc826115b5565b611dbf565b82525050565b5f611df28286611d8b565b602082019150611e028285611d8b565b602082019150611e128284611dd0565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e5981611530565b8114611e63575f80fd5b50565b5f81359050611e7481611e50565b92915050565b5f60208284031215611e8f57611e8e6114a8565b5b5f611e9c84828501611e66565b91505092915050565b5f67ffffffffffffffff821115611ebf57611ebe611bde565b5b602082029050602081019050919050565b5f611ee2611edd84611ea5565b611c3c565b90508083825260208201905060208402830185811115611f0557611f0461171e565b5b835b81811015611f2e5780611f1a88826115dc565b845260208401935050602081019050611f07565b5050509392505050565b5f82601f830112611f4c57611f4b611716565b5b8135611f5c848260208601611ed0565b91505092915050565b5f611f6f82611596565b9050919050565b611f7f81611f65565b8114611f89575f80fd5b50565b5f81359050611f9a81611f76565b92915050565b5f805f60608486031215611fb757611fb66114a8565b5b5f84013567ffffffffffffffff811115611fd457611fd36114ac565b5b611fe086828701611f38565b9350506020611ff186828701611f8c565b925050604061200286828701611582565b9150509250925092565b61201581611ba4565b82525050565b5f60a08201905061202e5f830188611649565b61203b60208301876116ee565b612048604083018661200c565b6120556060830185611a43565b6120626080830184611649565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120a382611563565b91506120ae83611563565b92508282019050808211156120c6576120c561206c565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120e9576120e86120cc565b5b6120f36040611c3c565b90505f82013567ffffffffffffffff811115612112576121116120d0565b5b61211e84828501611cd5565b5f83015250602082013567ffffffffffffffff811115612141576121406120d0565b5b61214d84828501611cd5565b60208301525092915050565b5f6020828403121561216e5761216d6114a8565b5b5f82013567ffffffffffffffff81111561218b5761218a6114ac565b5b612197848285016120d4565b91505092915050565b5f815190506121ae816115c6565b92915050565b5f6121c66121c184611c56565b611c3c565b9050828152602081018484840111156121e2576121e1611bda565b5b6121ed8482856119ed565b509392505050565b5f82601f83011261220957612208611716565b5b81516122198482602086016121b4565b91505092915050565b5f8151905061223081611bb0565b92915050565b5f6060828403121561224b5761224a6120cc565b5b6122556060611c3c565b90505f612264848285016121a0565b5f83015250602082015167ffffffffffffffff811115612287576122866120d0565b5b612293848285016121f5565b60208301525060406122a784828501612222565b60408301525092915050565b5f602082840312156122c8576122c76114a8565b5b5f82015167ffffffffffffffff8111156122e5576122e46114ac565b5b6122f184828501612236565b91505092915050565b5f60408201905061230d5f83018561200c565b61231a60208301846116ee565b939250505056fea2646970667358221220a6a2f680d6474f5dfa7720a37994a4015b61738d0d41bbea1eee6064131ca86c64736f6c634300081a0033",$5="0x608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f14610351578063d3de6e751461037b578063f04e283e146103b7578063f2fde38b146103d3578063fee81cf4146103ef57610113565b8063715018a614610289578063736c0d5b1461029357806384b0196e146102cf5780638da5cb5b146102ff578063a1d2756f1461032957610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611505565b61042b565b60405161014a919061154a565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115f0565b6104a4565b6040516101869190611658565b60405180910390f35b6101976104d9565b005b3480156101a4575f80fd5b506101ad61052a565b6040516101ba9190611680565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116c3565b610551565b6040516101f691906116fd565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117cc565b610566565b005b348015610232575f80fd5b5061024d6004803603810190610248919061189f565b61066f565b005b6102576107f1565b005b610273600480360381019061026e91906118ea565b61082a565b604051610280919061154a565b60405180910390f35b61029161088f565b005b34801561029e575f80fd5b506102b960048036038101906102b4919061196e565b6108a2565b6040516102c6919061154a565b60405180910390f35b3480156102da575f80fd5b506102e36108be565b6040516102f69796959493929190611b09565b60405180910390f35b34801561030a575f80fd5b50610313610909565b6040516103209190611b8b565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a919061196e565b610931565b005b34801561035c575f80fd5b5061036561097c565b60405161037291906116fd565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c9190611d02565b610982565b6040516103ae9190611658565b60405180910390f35b6103d160048036038101906103cc919061196e565b6109eb565b005b6103ed60048036038101906103e8919061196e565b610a29565b005b3480156103fa575f80fd5b506104156004803603810190610410919061196e565b610a52565b60405161042291906116fd565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049d575061049c82610a6b565b5b9050919050565b5f8383836040516020016104ba93929190611de7565b6040516020818303038152906040528051906020012090509392505050565b5f6104e2610ae4565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61056e610aee565b8181905084849050146105ad576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610668578282828181106105cd576105cc611e23565b5b90506020020160208101906105e29190611e7a565b5f808787858181106105f7576105f6611e23565b5b905060200201602081019061060c919061196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105af565b5050505050565b5f610678610b25565b905080546003825580156106aa5760018160011c14303b106106a15763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106bd9190611fa0565b9250925092506106e6835f815181106106d9576106d8611e23565b5b6020026020010151610b4e565b806002819055505f5b83518110156107735760015f8086848151811061070f5761070e611e23565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106ef565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107ec576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610836868686610c24565b61087757836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161086e9190611b8b565b60405180910390fd5b6108848686868686610c8b565b905095945050505050565b610897610aee565b6108a05f610e7e565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108f2610f44565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610939610aee565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109e17ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109c695949392919061201b565b60405160208183030381529060405280519060200120610fbb565b9050949350505050565b6109f3610aee565b63389a75e1600c52805f526020600c208054421115610a1957636f5e88185f526004601cfd5b5f815550610a2681610e7e565b50565b610a31610aee565b8060601b610a4657637448fbae5f526004601cfd5b610a4f81610e7e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610add5750610adc82611037565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b23576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b566110b0565b15610bce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c21565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c318585856104a4565b90505f6001805f8481526020019081526020015f2054610c519190612099565b9050600254811115610c67575f92505050610c84565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d229190612159565b90505f815f0151806020019051810190610d3c91906122b3565b90505f610d53898360400151898660200151610982565b905087826040015160ff1611610da6578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610d9d9291906122fa565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e28576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3e818960036110b49092919063ffffffff16565b610e70818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111199092919063ffffffff16565b935050505095945050505050565b610e866110b0565b15610eeb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f41565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fc461121c565b15610fd857610fd1611224565b9050611014565b7f000000000000000000000000000000000000000000000000000000000000000090506110036112ec565b1561101357611010611224565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110a957506110a882611344565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110df57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561110c57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561121557604051835f5260208301516040526040835103611186576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118357600193505f60605282604052505050611215565b50505b60418351036111cc5760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111ca57600192505f606052816040525050611215565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061122e61121c565b1561125c575f8061123d610f44565b91509150818051906020012093508080519060200120925050506112a3565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113b657506113b5826113bd565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061142f575061142e82611436565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114e4816114b0565b81146114ee575f80fd5b50565b5f813590506114ff816114db565b92915050565b5f6020828403121561151a576115196114a8565b5b5f611527848285016114f1565b91505092915050565b5f8115159050919050565b61154481611530565b82525050565b5f60208201905061155d5f83018461153b565b92915050565b5f819050919050565b61157581611563565b811461157f575f80fd5b50565b5f813590506115908161156c565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115bf82611596565b9050919050565b6115cf816115b5565b81146115d9575f80fd5b50565b5f813590506115ea816115c6565b92915050565b5f805f60608486031215611607576116066114a8565b5b5f61161486828701611582565b935050602061162586828701611582565b9250506040611636868287016115dc565b9150509250925092565b5f819050919050565b61165281611640565b82525050565b5f60208201905061166b5f830184611649565b92915050565b61167a816114b0565b82525050565b5f6020820190506116935f830184611671565b92915050565b6116a281611640565b81146116ac575f80fd5b50565b5f813590506116bd81611699565b92915050565b5f602082840312156116d8576116d76114a8565b5b5f6116e5848285016116af565b91505092915050565b6116f781611563565b82525050565b5f6020820190506117105f8301846116ee565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261173757611736611716565b5b8235905067ffffffffffffffff8111156117545761175361171a565b5b6020830191508360208202830111156117705761176f61171e565b5b9250929050565b5f8083601f84011261178c5761178b611716565b5b8235905067ffffffffffffffff8111156117a9576117a861171a565b5b6020830191508360208202830111156117c5576117c461171e565b5b9250929050565b5f805f80604085870312156117e4576117e36114a8565b5b5f85013567ffffffffffffffff811115611801576118006114ac565b5b61180d87828801611722565b9450945050602085013567ffffffffffffffff8111156118305761182f6114ac565b5b61183c87828801611777565b925092505092959194509250565b5f8083601f84011261185f5761185e611716565b5b8235905067ffffffffffffffff81111561187c5761187b61171a565b5b6020830191508360018202830111156118985761189761171e565b5b9250929050565b5f80602083850312156118b5576118b46114a8565b5b5f83013567ffffffffffffffff8111156118d2576118d16114ac565b5b6118de8582860161184a565b92509250509250929050565b5f805f805f60808688031215611903576119026114a8565b5b5f61191088828901611582565b955050602061192188828901611582565b9450506040611932888289016115dc565b935050606086013567ffffffffffffffff811115611953576119526114ac565b5b61195f8882890161184a565b92509250509295509295909350565b5f60208284031215611983576119826114a8565b5b5f611990848285016115dc565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119cd81611999565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a15826119d3565b611a1f81856119dd565b9350611a2f8185602086016119ed565b611a38816119fb565b840191505092915050565b611a4c816115b5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a8481611563565b82525050565b5f611a958383611a7b565b60208301905092915050565b5f602082019050919050565b5f611ab782611a52565b611ac18185611a5c565b9350611acc83611a6c565b805f5b83811015611afc578151611ae38882611a8a565b9750611aee83611aa1565b925050600181019050611acf565b5085935050505092915050565b5f60e082019050611b1c5f83018a6119c4565b8181036020830152611b2e8189611a0b565b90508181036040830152611b428188611a0b565b9050611b5160608301876116ee565b611b5e6080830186611a43565b611b6b60a0830185611649565b81810360c0830152611b7d8184611aad565b905098975050505050505050565b5f602082019050611b9e5f830184611a43565b92915050565b5f60ff82169050919050565b611bb981611ba4565b8114611bc3575f80fd5b50565b5f81359050611bd481611bb0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c14826119fb565b810181811067ffffffffffffffff82111715611c3357611c32611bde565b5b80604052505050565b5f611c4561149f565b9050611c518282611c0b565b919050565b5f67ffffffffffffffff821115611c7057611c6f611bde565b5b611c79826119fb565b9050602081019050919050565b828183375f83830152505050565b5f611ca6611ca184611c56565b611c3c565b905082815260208101848484011115611cc257611cc1611bda565b5b611ccd848285611c86565b509392505050565b5f82601f830112611ce957611ce8611716565b5b8135611cf9848260208601611c94565b91505092915050565b5f805f8060808587031215611d1a57611d196114a8565b5b5f611d2787828801611582565b9450506020611d3887828801611bc6565b9350506040611d49878288016115dc565b925050606085013567ffffffffffffffff811115611d6a57611d696114ac565b5b611d7687828801611cd5565b91505092959194509250565b5f819050919050565b611d9c611d9782611563565b611d82565b82525050565b5f8160601b9050919050565b5f611db882611da2565b9050919050565b5f611dc982611dae565b9050919050565b611de1611ddc826115b5565b611dbf565b82525050565b5f611df28286611d8b565b602082019150611e028285611d8b565b602082019150611e128284611dd0565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e5981611530565b8114611e63575f80fd5b50565b5f81359050611e7481611e50565b92915050565b5f60208284031215611e8f57611e8e6114a8565b5b5f611e9c84828501611e66565b91505092915050565b5f67ffffffffffffffff821115611ebf57611ebe611bde565b5b602082029050602081019050919050565b5f611ee2611edd84611ea5565b611c3c565b90508083825260208201905060208402830185811115611f0557611f0461171e565b5b835b81811015611f2e5780611f1a88826115dc565b845260208401935050602081019050611f07565b5050509392505050565b5f82601f830112611f4c57611f4b611716565b5b8135611f5c848260208601611ed0565b91505092915050565b5f611f6f82611596565b9050919050565b611f7f81611f65565b8114611f89575f80fd5b50565b5f81359050611f9a81611f76565b92915050565b5f805f60608486031215611fb757611fb66114a8565b5b5f84013567ffffffffffffffff811115611fd457611fd36114ac565b5b611fe086828701611f38565b9350506020611ff186828701611f8c565b925050604061200286828701611582565b9150509250925092565b61201581611ba4565b82525050565b5f60a08201905061202e5f830188611649565b61203b60208301876116ee565b612048604083018661200c565b6120556060830185611a43565b6120626080830184611649565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120a382611563565b91506120ae83611563565b92508282019050808211156120c6576120c561206c565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120e9576120e86120cc565b5b6120f36040611c3c565b90505f82013567ffffffffffffffff811115612112576121116120d0565b5b61211e84828501611cd5565b5f83015250602082013567ffffffffffffffff811115612141576121406120d0565b5b61214d84828501611cd5565b60208301525092915050565b5f6020828403121561216e5761216d6114a8565b5b5f82013567ffffffffffffffff81111561218b5761218a6114ac565b5b612197848285016120d4565b91505092915050565b5f815190506121ae816115c6565b92915050565b5f6121c66121c184611c56565b611c3c565b9050828152602081018484840111156121e2576121e1611bda565b5b6121ed8482856119ed565b509392505050565b5f82601f83011261220957612208611716565b5b81516122198482602086016121b4565b91505092915050565b5f8151905061223081611bb0565b92915050565b5f6060828403121561224b5761224a6120cc565b5b6122556060611c3c565b90505f612264848285016121a0565b5f83015250602082015167ffffffffffffffff811115612287576122866120d0565b5b612293848285016121f5565b60208301525060406122a784828501612222565b60408301525092915050565b5f602082840312156122c8576122c76114a8565b5b5f82015167ffffffffffffffff8111156122e5576122e46114ac565b5b6122f184828501612236565b91505092915050565b5f60408201905061230d5f83018561200c565b61231a60208301846116ee565b939250505056fea2646970667358221220a6a2f680d6474f5dfa7720a37994a4015b61738d0d41bbea1eee6064131ca86c64736f6c634300081a0033",k5={},L5={},t0={_format:C5,contractName:_5,sourceName:z5,abi:N5,bytecode:E5,deployedBytecode:$5,linkReferences:k5,deployedLinkReferences:L5},H5="hh-sol-artifact-1",D5="SignerValidator",B5="contracts/validators/SignerValidator.sol",S5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],V5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e05161010051611efa61028a5f395f610f8f01525f6110ce01525f6110ab01525f61113d01525f6111610152611efa5ff3fe6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102b8578063f04e283e146102f4578063f2fde38b14610310578063fee81cf41461032c576100f2565b8063736c0d5b146101fa57806384b0196e146102365780638da5cb5b14610266578063a1d2756f14610290576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101f0576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611260565b610368565b60405161012991906112a5565b60405180910390f35b61013a6103e1565b005b348015610147575f80fd5b50610150610432565b60405161015d91906112cd565b60405180910390f35b348015610171575f80fd5b5061018c6004803603810190610187919061139c565b610459565b005b348015610199575f80fd5b506101b460048036038101906101af919061146f565b610562565b005b6101be610710565b005b6101da60048036038101906101d59190611547565b610749565b6040516101e791906112a5565b60405180910390f35b6101f861093c565b005b348015610205575f80fd5b50610220600480360381019061021b91906115cb565b61094f565b60405161022d91906112a5565b60405180910390f35b348015610241575f80fd5b5061024a61096b565b60405161025d979695949392919061178d565b60405180910390f35b348015610271575f80fd5b5061027a6109b6565b604051610287919061180f565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b191906115cb565b6109de565b005b3480156102c3575f80fd5b506102de60048036038101906102d99190611986565b610a29565b6040516102eb9190611a06565b60405180910390f35b61030e600480360381019061030991906115cb565b610a92565b005b61032a600480360381019061032591906115cb565b610ad0565b005b348015610337575f80fd5b50610352600480360381019061034d91906115cb565b610af9565b60405161035f9190611a1f565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103da57506103d982610b12565b5b9050919050565b5f6103ea610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b610461610b95565b8181905084849050146104a0576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8484905081101561055b578282828181106104c0576104bf611a38565b5b90506020020160208101906104d59190611a8f565b5f808787858181106104ea576104e9611a38565b5b90506020020160208101906104ff91906115cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104a2565b5050505050565b5f61056b610bcc565b9050805460038255801561059d5760018160011c14303b106105945763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105af9190611bb5565b915091506105d6825f815181106105c9576105c8611a38565b5b6020026020010151610bf5565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b825181101561069c5760015f8085848151811061063857610637611a38565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610618565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106cc919061180f565b60405180910390a15050801561070b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107e09190611c9c565b90505f815f01518060200190518101906107fa9190611df6565b90505f610811898360400151898660200151610a29565b905087826040015160ff1611610864578160400151886040517f17c66bc700000000000000000000000000000000000000000000000000000000815260040161085b929190611e4c565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108e6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc81896001610ccb9092919063ffffffff16565b61092e818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d309092919063ffffffff16565b935050505095945050505050565b610944610b95565b61094d5f610e33565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f00000000000000000000000000000000000000000000000000000000000000965061099f610ef9565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109e6610b95565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a887ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a6d959493929190611e73565b60405160208183030381529060405280519060200120610f70565b9050949350505050565b610a9a610b95565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610e33565b50565b610ad8610b95565b8060601b610aed57637448fbae5f526004601cfd5b610af681610e33565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610fec565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bca576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bfd611065565b15610c75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c3757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cc8565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610cf657815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2357835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e2c57604051835f5260208301516040526040835103610d9d576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d9a57600193505f60605282604052505050610e2c565b50505b6041835103610de35760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610de157600192505f606052816040525050610e2c565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e3b611065565b15610ea0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ef6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f79611069565b15610f8d57610f86611071565b9050610fc9565b7f00000000000000000000000000000000000000000000000000000000000000009050610fb8611139565b15610fc857610fc5611071565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061105e575061105d82611191565b5b9050919050565b5f90565b5f6001905090565b5f8061107b611069565b156110a9575f8061108a610ef9565b91509150818051906020012093508080519060200120925050506110f0565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61123f8161120b565b8114611249575f80fd5b50565b5f8135905061125a81611236565b92915050565b5f6020828403121561127557611274611203565b5b5f6112828482850161124c565b91505092915050565b5f8115159050919050565b61129f8161128b565b82525050565b5f6020820190506112b85f830184611296565b92915050565b6112c78161120b565b82525050565b5f6020820190506112e05f8301846112be565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611307576113066112e6565b5b8235905067ffffffffffffffff811115611324576113236112ea565b5b6020830191508360208202830111156113405761133f6112ee565b5b9250929050565b5f8083601f84011261135c5761135b6112e6565b5b8235905067ffffffffffffffff811115611379576113786112ea565b5b602083019150836020820283011115611395576113946112ee565b5b9250929050565b5f805f80604085870312156113b4576113b3611203565b5b5f85013567ffffffffffffffff8111156113d1576113d0611207565b5b6113dd878288016112f2565b9450945050602085013567ffffffffffffffff811115611400576113ff611207565b5b61140c87828801611347565b925092505092959194509250565b5f8083601f84011261142f5761142e6112e6565b5b8235905067ffffffffffffffff81111561144c5761144b6112ea565b5b602083019150836001820283011115611468576114676112ee565b5b9250929050565b5f806020838503121561148557611484611203565b5b5f83013567ffffffffffffffff8111156114a2576114a1611207565b5b6114ae8582860161141a565b92509250509250929050565b5f819050919050565b6114cc816114ba565b81146114d6575f80fd5b50565b5f813590506114e7816114c3565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611516826114ed565b9050919050565b6115268161150c565b8114611530575f80fd5b50565b5f813590506115418161151d565b92915050565b5f805f805f608086880312156115605761155f611203565b5b5f61156d888289016114d9565b955050602061157e888289016114d9565b945050604061158f88828901611533565b935050606086013567ffffffffffffffff8111156115b0576115af611207565b5b6115bc8882890161141a565b92509250509295509295909350565b5f602082840312156115e0576115df611203565b5b5f6115ed84828501611533565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61162a816115f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167282611630565b61167c818561163a565b935061168c81856020860161164a565b61169581611658565b840191505092915050565b6116a9816114ba565b82525050565b6116b88161150c565b82525050565b5f819050919050565b6116d0816116be565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611708816114ba565b82525050565b5f61171983836116ff565b60208301905092915050565b5f602082019050919050565b5f61173b826116d6565b61174581856116e0565b9350611750836116f0565b805f5b83811015611780578151611767888261170e565b975061177283611725565b925050600181019050611753565b5085935050505092915050565b5f60e0820190506117a05f83018a611621565b81810360208301526117b28189611668565b905081810360408301526117c68188611668565b90506117d560608301876116a0565b6117e260808301866116af565b6117ef60a08301856116c7565b81810360c08301526118018184611731565b905098975050505050505050565b5f6020820190506118225f8301846116af565b92915050565b5f60ff82169050919050565b61183d81611828565b8114611847575f80fd5b50565b5f8135905061185881611834565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61189882611658565b810181811067ffffffffffffffff821117156118b7576118b6611862565b5b80604052505050565b5f6118c96111fa565b90506118d5828261188f565b919050565b5f67ffffffffffffffff8211156118f4576118f3611862565b5b6118fd82611658565b9050602081019050919050565b828183375f83830152505050565b5f61192a611925846118da565b6118c0565b9050828152602081018484840111156119465761194561185e565b5b61195184828561190a565b509392505050565b5f82601f83011261196d5761196c6112e6565b5b813561197d848260208601611918565b91505092915050565b5f805f806080858703121561199e5761199d611203565b5b5f6119ab878288016114d9565b94505060206119bc8782880161184a565b93505060406119cd87828801611533565b925050606085013567ffffffffffffffff8111156119ee576119ed611207565b5b6119fa87828801611959565b91505092959194509250565b5f602082019050611a195f8301846116c7565b92915050565b5f602082019050611a325f8301846116a0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a6e8161128b565b8114611a78575f80fd5b50565b5f81359050611a8981611a65565b92915050565b5f60208284031215611aa457611aa3611203565b5b5f611ab184828501611a7b565b91505092915050565b5f67ffffffffffffffff821115611ad457611ad3611862565b5b602082029050602081019050919050565b5f611af7611af284611aba565b6118c0565b90508083825260208201905060208402830185811115611b1a57611b196112ee565b5b835b81811015611b435780611b2f8882611533565b845260208401935050602081019050611b1c565b5050509392505050565b5f82601f830112611b6157611b606112e6565b5b8135611b71848260208601611ae5565b91505092915050565b5f611b84826114ed565b9050919050565b611b9481611b7a565b8114611b9e575f80fd5b50565b5f81359050611baf81611b8b565b92915050565b5f8060408385031215611bcb57611bca611203565b5b5f83013567ffffffffffffffff811115611be857611be7611207565b5b611bf485828601611b4d565b9250506020611c0585828601611ba1565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c2c57611c2b611c0f565b5b611c3660406118c0565b90505f82013567ffffffffffffffff811115611c5557611c54611c13565b5b611c6184828501611959565b5f83015250602082013567ffffffffffffffff811115611c8457611c83611c13565b5b611c9084828501611959565b60208301525092915050565b5f60208284031215611cb157611cb0611203565b5b5f82013567ffffffffffffffff811115611cce57611ccd611207565b5b611cda84828501611c17565b91505092915050565b5f81519050611cf18161151d565b92915050565b5f611d09611d04846118da565b6118c0565b905082815260208101848484011115611d2557611d2461185e565b5b611d3084828561164a565b509392505050565b5f82601f830112611d4c57611d4b6112e6565b5b8151611d5c848260208601611cf7565b91505092915050565b5f81519050611d7381611834565b92915050565b5f60608284031215611d8e57611d8d611c0f565b5b611d9860606118c0565b90505f611da784828501611ce3565b5f83015250602082015167ffffffffffffffff811115611dca57611dc9611c13565b5b611dd684828501611d38565b6020830152506040611dea84828501611d65565b60408301525092915050565b5f60208284031215611e0b57611e0a611203565b5b5f82015167ffffffffffffffff811115611e2857611e27611207565b5b611e3484828501611d79565b91505092915050565b611e4681611828565b82525050565b5f604082019050611e5f5f830185611e3d565b611e6c60208301846116a0565b9392505050565b5f60a082019050611e865f8301886116c7565b611e9360208301876116a0565b611ea06040830186611e3d565b611ead60608301856116af565b611eba60808301846116c7565b969550505050505056fea2646970667358221220df7e7dceed473a00c9aa36f5d0e419cf9b288b3195c47bc070ff38cb5ac9d20064736f6c634300081a0033",q5="0x6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102b8578063f04e283e146102f4578063f2fde38b14610310578063fee81cf41461032c576100f2565b8063736c0d5b146101fa57806384b0196e146102365780638da5cb5b14610266578063a1d2756f14610290576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101f0576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611260565b610368565b60405161012991906112a5565b60405180910390f35b61013a6103e1565b005b348015610147575f80fd5b50610150610432565b60405161015d91906112cd565b60405180910390f35b348015610171575f80fd5b5061018c6004803603810190610187919061139c565b610459565b005b348015610199575f80fd5b506101b460048036038101906101af919061146f565b610562565b005b6101be610710565b005b6101da60048036038101906101d59190611547565b610749565b6040516101e791906112a5565b60405180910390f35b6101f861093c565b005b348015610205575f80fd5b50610220600480360381019061021b91906115cb565b61094f565b60405161022d91906112a5565b60405180910390f35b348015610241575f80fd5b5061024a61096b565b60405161025d979695949392919061178d565b60405180910390f35b348015610271575f80fd5b5061027a6109b6565b604051610287919061180f565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b191906115cb565b6109de565b005b3480156102c3575f80fd5b506102de60048036038101906102d99190611986565b610a29565b6040516102eb9190611a06565b60405180910390f35b61030e600480360381019061030991906115cb565b610a92565b005b61032a600480360381019061032591906115cb565b610ad0565b005b348015610337575f80fd5b50610352600480360381019061034d91906115cb565b610af9565b60405161035f9190611a1f565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103da57506103d982610b12565b5b9050919050565b5f6103ea610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b610461610b95565b8181905084849050146104a0576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8484905081101561055b578282828181106104c0576104bf611a38565b5b90506020020160208101906104d59190611a8f565b5f808787858181106104ea576104e9611a38565b5b90506020020160208101906104ff91906115cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104a2565b5050505050565b5f61056b610bcc565b9050805460038255801561059d5760018160011c14303b106105945763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105af9190611bb5565b915091506105d6825f815181106105c9576105c8611a38565b5b6020026020010151610bf5565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b825181101561069c5760015f8085848151811061063857610637611a38565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610618565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106cc919061180f565b60405180910390a15050801561070b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107e09190611c9c565b90505f815f01518060200190518101906107fa9190611df6565b90505f610811898360400151898660200151610a29565b905087826040015160ff1611610864578160400151886040517f17c66bc700000000000000000000000000000000000000000000000000000000815260040161085b929190611e4c565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108e6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc81896001610ccb9092919063ffffffff16565b61092e818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d309092919063ffffffff16565b935050505095945050505050565b610944610b95565b61094d5f610e33565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f00000000000000000000000000000000000000000000000000000000000000965061099f610ef9565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109e6610b95565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a887ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a6d959493929190611e73565b60405160208183030381529060405280519060200120610f70565b9050949350505050565b610a9a610b95565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610e33565b50565b610ad8610b95565b8060601b610aed57637448fbae5f526004601cfd5b610af681610e33565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610fec565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bca576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bfd611065565b15610c75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c3757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cc8565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610cf657815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2357835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e2c57604051835f5260208301516040526040835103610d9d576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d9a57600193505f60605282604052505050610e2c565b50505b6041835103610de35760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610de157600192505f606052816040525050610e2c565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e3b611065565b15610ea0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ef6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f79611069565b15610f8d57610f86611071565b9050610fc9565b7f00000000000000000000000000000000000000000000000000000000000000009050610fb8611139565b15610fc857610fc5611071565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061105e575061105d82611191565b5b9050919050565b5f90565b5f6001905090565b5f8061107b611069565b156110a9575f8061108a610ef9565b91509150818051906020012093508080519060200120925050506110f0565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61123f8161120b565b8114611249575f80fd5b50565b5f8135905061125a81611236565b92915050565b5f6020828403121561127557611274611203565b5b5f6112828482850161124c565b91505092915050565b5f8115159050919050565b61129f8161128b565b82525050565b5f6020820190506112b85f830184611296565b92915050565b6112c78161120b565b82525050565b5f6020820190506112e05f8301846112be565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611307576113066112e6565b5b8235905067ffffffffffffffff811115611324576113236112ea565b5b6020830191508360208202830111156113405761133f6112ee565b5b9250929050565b5f8083601f84011261135c5761135b6112e6565b5b8235905067ffffffffffffffff811115611379576113786112ea565b5b602083019150836020820283011115611395576113946112ee565b5b9250929050565b5f805f80604085870312156113b4576113b3611203565b5b5f85013567ffffffffffffffff8111156113d1576113d0611207565b5b6113dd878288016112f2565b9450945050602085013567ffffffffffffffff811115611400576113ff611207565b5b61140c87828801611347565b925092505092959194509250565b5f8083601f84011261142f5761142e6112e6565b5b8235905067ffffffffffffffff81111561144c5761144b6112ea565b5b602083019150836001820283011115611468576114676112ee565b5b9250929050565b5f806020838503121561148557611484611203565b5b5f83013567ffffffffffffffff8111156114a2576114a1611207565b5b6114ae8582860161141a565b92509250509250929050565b5f819050919050565b6114cc816114ba565b81146114d6575f80fd5b50565b5f813590506114e7816114c3565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611516826114ed565b9050919050565b6115268161150c565b8114611530575f80fd5b50565b5f813590506115418161151d565b92915050565b5f805f805f608086880312156115605761155f611203565b5b5f61156d888289016114d9565b955050602061157e888289016114d9565b945050604061158f88828901611533565b935050606086013567ffffffffffffffff8111156115b0576115af611207565b5b6115bc8882890161141a565b92509250509295509295909350565b5f602082840312156115e0576115df611203565b5b5f6115ed84828501611533565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61162a816115f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167282611630565b61167c818561163a565b935061168c81856020860161164a565b61169581611658565b840191505092915050565b6116a9816114ba565b82525050565b6116b88161150c565b82525050565b5f819050919050565b6116d0816116be565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611708816114ba565b82525050565b5f61171983836116ff565b60208301905092915050565b5f602082019050919050565b5f61173b826116d6565b61174581856116e0565b9350611750836116f0565b805f5b83811015611780578151611767888261170e565b975061177283611725565b925050600181019050611753565b5085935050505092915050565b5f60e0820190506117a05f83018a611621565b81810360208301526117b28189611668565b905081810360408301526117c68188611668565b90506117d560608301876116a0565b6117e260808301866116af565b6117ef60a08301856116c7565b81810360c08301526118018184611731565b905098975050505050505050565b5f6020820190506118225f8301846116af565b92915050565b5f60ff82169050919050565b61183d81611828565b8114611847575f80fd5b50565b5f8135905061185881611834565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61189882611658565b810181811067ffffffffffffffff821117156118b7576118b6611862565b5b80604052505050565b5f6118c96111fa565b90506118d5828261188f565b919050565b5f67ffffffffffffffff8211156118f4576118f3611862565b5b6118fd82611658565b9050602081019050919050565b828183375f83830152505050565b5f61192a611925846118da565b6118c0565b9050828152602081018484840111156119465761194561185e565b5b61195184828561190a565b509392505050565b5f82601f83011261196d5761196c6112e6565b5b813561197d848260208601611918565b91505092915050565b5f805f806080858703121561199e5761199d611203565b5b5f6119ab878288016114d9565b94505060206119bc8782880161184a565b93505060406119cd87828801611533565b925050606085013567ffffffffffffffff8111156119ee576119ed611207565b5b6119fa87828801611959565b91505092959194509250565b5f602082019050611a195f8301846116c7565b92915050565b5f602082019050611a325f8301846116a0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a6e8161128b565b8114611a78575f80fd5b50565b5f81359050611a8981611a65565b92915050565b5f60208284031215611aa457611aa3611203565b5b5f611ab184828501611a7b565b91505092915050565b5f67ffffffffffffffff821115611ad457611ad3611862565b5b602082029050602081019050919050565b5f611af7611af284611aba565b6118c0565b90508083825260208201905060208402830185811115611b1a57611b196112ee565b5b835b81811015611b435780611b2f8882611533565b845260208401935050602081019050611b1c565b5050509392505050565b5f82601f830112611b6157611b606112e6565b5b8135611b71848260208601611ae5565b91505092915050565b5f611b84826114ed565b9050919050565b611b9481611b7a565b8114611b9e575f80fd5b50565b5f81359050611baf81611b8b565b92915050565b5f8060408385031215611bcb57611bca611203565b5b5f83013567ffffffffffffffff811115611be857611be7611207565b5b611bf485828601611b4d565b9250506020611c0585828601611ba1565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c2c57611c2b611c0f565b5b611c3660406118c0565b90505f82013567ffffffffffffffff811115611c5557611c54611c13565b5b611c6184828501611959565b5f83015250602082013567ffffffffffffffff811115611c8457611c83611c13565b5b611c9084828501611959565b60208301525092915050565b5f60208284031215611cb157611cb0611203565b5b5f82013567ffffffffffffffff811115611cce57611ccd611207565b5b611cda84828501611c17565b91505092915050565b5f81519050611cf18161151d565b92915050565b5f611d09611d04846118da565b6118c0565b905082815260208101848484011115611d2557611d2461185e565b5b611d3084828561164a565b509392505050565b5f82601f830112611d4c57611d4b6112e6565b5b8151611d5c848260208601611cf7565b91505092915050565b5f81519050611d7381611834565b92915050565b5f60608284031215611d8e57611d8d611c0f565b5b611d9860606118c0565b90505f611da784828501611ce3565b5f83015250602082015167ffffffffffffffff811115611dca57611dc9611c13565b5b611dd684828501611d38565b6020830152506040611dea84828501611d65565b60408301525092915050565b5f60208284031215611e0b57611e0a611203565b5b5f82015167ffffffffffffffff811115611e2857611e27611207565b5b611e3484828501611d79565b91505092915050565b611e4681611828565b82525050565b5f604082019050611e5f5f830185611e3d565b611e6c60208301846116a0565b9392505050565b5f60a082019050611e865f8301886116c7565b611e9360208301876116a0565b611ea06040830186611e3d565b611ead60608301856116af565b611eba60808301846116c7565b969550505050505056fea2646970667358221220df7e7dceed473a00c9aa36f5d0e419cf9b288b3195c47bc070ff38cb5ac9d20064736f6c634300081a0033",F5={},U5={},c0={_format:H5,contractName:D5,sourceName:B5,abi:S5,bytecode:V5,deployedBytecode:q5,linkReferences:F5,deployedLinkReferences:U5};function P5(i,s,a){const c=i[s.name];if(typeof c=="function")return c;const r=i[a];return typeof r=="function"?r:p=>s(i,p)}async function G5(i,s={}){let a;if(s.connector){const{connector:e}=s;if(i.state.status==="reconnecting"&&!e.getAccounts&&!e.getChainId)throw new y.ConnectorUnavailableReconnectingError({connector:e});const[d,x]=await Promise.all([e.getAccounts(),e.getChainId()]);a={accounts:d,chainId:x,connector:e}}else a=i.state.connections.get(i.state.current);if(!a)throw new y.ConnectorNotConnectedError;const c=s.chainId??a.chainId,r=await a.connector.getChainId();if(r!==a.chainId)throw new y.ConnectorChainMismatchError({connectionChainId:a.chainId,connectorChainId:r});const p=a.connector;if(p.getClient)return p.getClient({chainId:c});const n=y.parseAccount(s.account??a.accounts[0]);if(n.address=y.getAddress(n.address),s.account&&!a.accounts.some(e=>e.toLowerCase()===n.address.toLowerCase()))throw new y.ConnectorAccountNotFoundError({address:n.address,connector:p});const O=i.chains.find(e=>e.id===c),f=await a.connector.getProvider({chainId:c});return y.createClient({account:n,chain:O,name:"Connector Client",transport:e=>y.custom(f)({...e,retryCount:0})})}async function t(i,s){const{account:a,chainId:c,connector:r,...p}=s;let n;return typeof a=="object"&&a.type==="local"?n=i.getClient({chainId:c}):n=await G5(i,{account:a,chainId:c,connector:r}),await P5(n,y.deployContract,"deployContract")({...p,...a?{account:a}:{},chain:c?{id:c}:null})}const Z5=async function(s,a){var u,o,l,m,T,v,w,M,I,h,A,g,R;const c=a.privateKey,r=a.mnemonic,p=a.chain;if(!c&&!r)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!p||!y.Chains[p])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[n,O]=y.getDeployableOptions({chain:p,privateKey:c,mnemonic:r}),{config:f,account:e}=n,d=O.id,x=await new b.BoostRegistry({address:null,...n}).deploy(),z=class z extends b.BoostRegistry{};z.addresses={[d]:x.assertValidAddress()};let C=z;const _=new C({...n,address:x.assertValidAddress()}),n0=await new b.BoostCore({...n,registryAddress:_.assertValidAddress(),protocolFeeReceiver:e.address,owner:e.address}).deploy(),i0=await b.getDeployedContractAddress(f,t(f,{abi:P.abi,bytecode:P.bytecode,account:e})),s0=await b.getDeployedContractAddress(f,t(f,{abi:G.abi,bytecode:G.bytecode,account:e})),N=await b.getDeployedContractAddress(f,t(f,{abi:W.abi,bytecode:W.bytecode,account:e})),E=await b.getDeployedContractAddress(f,t(f,{abi:j.abi,bytecode:j.bytecode,account:e})),$=await b.getDeployedContractAddress(f,t(f,{abi:K.abi,bytecode:K.bytecode,account:e})),p0=await b.getDeployedContractAddress(f,t(f,{abi:Q.abi,bytecode:Q.bytecode,account:e})),y0=await b.getDeployedContractAddress(f,t(f,{abi:Y.abi,bytecode:Y.bytecode,account:e})),k=await b.getDeployedContractAddress(f,t(f,{abi:J.abi,bytecode:J.bytecode,account:e})),L=await b.getDeployedContractAddress(f,t(f,{abi:X.abi,bytecode:X.bytecode,account:e})),H=await b.getDeployedContractAddress(f,t(f,{abi:f0.abi,bytecode:f0.bytecode,account:e})),r0=await b.getDeployedContractAddress(f,t(f,{abi:a0.abi,bytecode:a0.bytecode,account:e})),D=await b.getDeployedContractAddress(f,t(f,{abi:Z.abi,bytecode:Z.bytecode,account:e})),B=await b.getDeployedContractAddress(f,t(f,{abi:d0.abi,bytecode:d0.bytecode,account:e})),S=await b.getDeployedContractAddress(f,t(f,{abi:e0.abi,bytecode:e0.bytecode,account:e})),V=await b.getDeployedContractAddress(f,t(f,{abi:b0.abi,bytecode:b0.bytecode,account:e})),q=await b.getDeployedContractAddress(f,t(f,{abi:c0.abi,bytecode:c0.bytecode,account:e})),F=await b.getDeployedContractAddress(f,t(f,{abi:t0.abi,bytecode:t0.bytecode,account:e})),u0={EventAction:(u=class extends b.EventAction{},u.bases={[d]:D},u),SimpleAllowList:(o=class extends b.SimpleAllowList{},o.bases={[d]:N},o),SimpleDenyList:(l=class extends b.SimpleDenyList{},l.bases={[d]:E},l),ManagedBudget:(m=class extends b.ManagedBudget{},m.bases={[d]:$},m),ManagedBudgetWithFees:(T=class extends b.ManagedBudgetWithFees{},T.bases={[d]:p0},T),AllowListIncentive:(v=class extends b.AllowListIncentive{},v.bases={[d]:k},v),CGDAIncentive:(w=class extends b.CGDAIncentive{},w.bases={[d]:L},w),ERC20Incentive:(M=class extends b.ERC20Incentive{},M.bases={[d]:H},M),ERC20VariableIncentive:(I=class extends b.ERC20VariableIncentive{},I.bases={[d]:S},I),ERC20VariableCriteriaIncentive:(h=class extends b.ERC20VariableCriteriaIncentive{},h.bases={[d]:V},h),PointsIncentive:(A=class extends b.PointsIncentive{},A.bases={[d]:B},A),SignerValidator:(g=class extends b.SignerValidator{},g.bases={[d]:q},g),LimitedSignerValidator:(R=class extends b.LimitedSignerValidator{},R.bases={[d]:F},R)};for(const[o0,U]of Object.entries(u0))await _.register(U.registryType,o0,U.bases[d]);return{BOOST_CORE_ADDRESS:n0.assertValidAddress(),BOOST_REGISTRY_ADDRESS:_.assertValidAddress(),CONTRACT_ACTION_BASE:i0,EVENT_ACTION_BASE:D,ERC721_MINT_ACTION_BASE:s0,SIMPLE_ALLOWLIST_BASE:N,SIMPLE_DENYLIST_BASE:E,MANAGED_BUDGET_BASE:$,VESTING_BUDGET_BASE:y0,ALLOWLIST_INCENTIVE_BASE:k,CGDA_INCENTIVE_BASE:L,ERC20_INCENTIVE_BASE:H,ERC20_VARIABLE_INCENTIVE_BASE:S,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:V,ERC1155_INCENTIVE_BASE:r0,POINTS_INCENTIVE_BASE:B,SIGNER_VALIDATOR_BASE:q,LIMITED_SIGNER_VALIDATOR_BASE:F}};exports.deploy=Z5;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("@boostxyz/sdk"),t=require("../utils-BLfs3EZx.cjs"),yf="hh-sol-artifact-1",lf="ContractAction",mf="contracts/actions/ContractAction.sol",Tf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],hf="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6080516108c46100905f395f61017601526108c45ff3fe6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220565859fe3054762cc5690542fd83f600eae00bf2d525e3eade5c8075af145c9564736f6c634300081a0033",wf="0x6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220565859fe3054762cc5690542fd83f600eae00bf2d525e3eade5c8075af145c9564736f6c634300081a0033",vf={},gf={},x0={_format:yf,contractName:lf,sourceName:mf,abi:Tf,bytecode:hf,deployedBytecode:wf,linkReferences:vf,deployedLinkReferences:gf},Mf="hh-sol-artifact-1",xf="ERC721MintAction",If="contracts/actions/ERC721MintAction.sol",Af=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Ef="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051610f896100905f395f6102100152610f895ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea264697066735822122018f8b3a12cbe661b46e1ac05e494f7269412be3c2659d60bf4dad429ab0ca1a864736f6c634300081a0033",Rf="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea264697066735822122018f8b3a12cbe661b46e1ac05e494f7269412be3c2659d60bf4dad429ab0ca1a864736f6c634300081a0033",Of={},Cf={},I0={_format:Mf,contractName:xf,sourceName:If,abi:Af,bytecode:Ef,deployedBytecode:Rf,linkReferences:Of,deployedLinkReferences:Cf},Bf="hh-sol-artifact-1",_f="EventAction",Pf="contracts/actions/EventAction.sol",zf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],Nf="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051611c276100905f395f6101510152611c275ff3fe6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220d56d85089e2c998c805bbe0d4e5ad7257c3cb379f303d0012771ee0f026004f864736f6c634300081a0033",$f="0x6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220d56d85089e2c998c805bbe0d4e5ad7257c3cb379f303d0012771ee0f026004f864736f6c634300081a0033",Hf={},Lf={},A0={_format:Bf,contractName:_f,sourceName:Pf,abi:zf,bytecode:Nf,deployedBytecode:$f,linkReferences:Hf,deployedLinkReferences:Lf},Ff="hh-sol-artifact-1",kf="SimpleAllowList",Sf="contracts/allowlists/SimpleAllowList.sol",Gf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Df="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611160806100855f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea2646970667358221220392d1f98427e115da35fb42135dcbab39c81d38fa3079a8b98ac9d488ba0c1f764736f6c634300081a0033",Uf="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea2646970667358221220392d1f98427e115da35fb42135dcbab39c81d38fa3079a8b98ac9d488ba0c1f764736f6c634300081a0033",Vf={},qf={},E0={_format:Ff,contractName:kf,sourceName:Sf,abi:Gf,bytecode:Df,deployedBytecode:Uf,linkReferences:Vf,deployedLinkReferences:qf},jf="hh-sol-artifact-1",Zf="SimpleDenyList",Wf="contracts/allowlists/SimpleDenyList.sol",Kf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Yf="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611161806100855f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea2646970667358221220693fef5ebd345c6186dd2eca2c237bba8f7f63fbc241dc656400c725c22ef67f64736f6c634300081a0033",Jf="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea2646970667358221220693fef5ebd345c6186dd2eca2c237bba8f7f63fbc241dc656400c725c22ef67f64736f6c634300081a0033",Qf={},Xf={},R0={_format:jf,contractName:Zf,sourceName:Wf,abi:Kf,bytecode:Yf,deployedBytecode:Jf,linkReferences:Qf,deployedLinkReferences:Xf},f1="hh-sol-artifact-1",e1="ManagedBudget",b1="contracts/budgets/ManagedBudget.sol",a1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],t1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612ba6806100855f395ff3fe608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120a4565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612104565b6108d0565b6040519081526020016102b6565b6102ff6102fa36600461211f565b610919565b005b6102ff61030f366004612136565b610926565b34801561031f575f80fd5b506102aa61032e366004612136565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612104565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121a8565b610989565b34801561040b575f80fd5b506102ff61041a366004612252565b610a83565b34801561042a575f80fd5b506102de610439366004612252565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612252565b610b87565b6102ff61046d366004612136565b610d4a565b34801561047d575f80fd5b506102aa61048c366004612136565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612104565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612252565b610d95565b34801561050e575f80fd5b506102aa61051d366004612291565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de610558366004612136565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122c4565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f610627366004612326565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121a8565b6112e4565b34801561067e575f80fd5b506102de61068d366004612104565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121a8565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612104565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123e9565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612104565b611492565b34801561073b575f80fd5b506102de61074a366004612136565b6114b8565b34801561075a575f80fd5b506102de610769366004612136565b611552565b348015610779575f80fd5b506102aa610788366004612252565b611609565b348015610798575f80fd5b506102aa6107a7366004612104565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612104565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612460565b90506020020160208101906109ff919061248d565b9050801515600103610a4157610a3c878784818110610a2057610a20612460565b9050602002016020810190610a359190612104565b60016119ed565b610a72565b610a72878784818110610a5657610a56612460565b9050602002016020810190610a6b9190612104565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612601565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612460565b602002602001015183604001518381518110610b3657610b36612460565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612750565b90505f8082516002811115610bb757610bb7612836565b1480610bd55750600182516002811115610bd357610bd3612836565b145b15610c2c575f8260600151806020019051810190610bf39190612863565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c41612836565b03610d36575f8260600151806020019051810190610c5f91906128a5565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612963565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612750565b90505f81516002811115610db957610db9612836565b03610e44575f8160600151806020019051810190610dd79190612863565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e59612836565b03610f2d575f8160600151806020019051810190610e779190612863565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f42612836565b036110e2575f8160600151806020019051810190610f6091906128a5565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129c6565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612963565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612460565b90506020028101906107889190612a27565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f0b565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a88565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612aca565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612aee565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b4a565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612460565b905060200201602081019061135c9190612104565b85858481811061136e5761136e612460565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b5d565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612460565b90506020020160208101906114329190612104565b85858481811061144457611444612460565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f0b565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f0b565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612963565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612963565b61154b9190612b5d565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612750565b905060018151600281111561166d5761166d612836565b148061168a57505f8151600281111561168857611688612836565b145b15611780575f81606001518060200190518101906116a89190612863565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b5d565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b60028151600281111561179557611795612836565b036110e2575f81606001518060200190518101906117b391906128a5565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612963565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f55565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611feb565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611feb565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be78282612042565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff8416838361205b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b5d565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129c6565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611efe57637939f4245f526004601cfd5b5f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c2080548381178361200c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661209b576390b8ec185f526004601cfd5b5f603452505050565b5f602082840312156120b4575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612114575f80fd5b813561154b816120e3565b5f6020828403121561212f575f80fd5b5035919050565b5f8060408385031215612147575f80fd5b8235612152816120e3565b946020939093013593505050565b5f8083601f840112612170575f80fd5b50813567ffffffffffffffff811115612187575f80fd5b6020830191508360208260051b85010111156121a1575f80fd5b9250929050565b5f805f80604085870312156121bb575f80fd5b843567ffffffffffffffff8111156121d1575f80fd5b6121dd87828801612160565b909550935050602085013567ffffffffffffffff8111156121fc575f80fd5b61220887828801612160565b95989497509550505050565b5f8083601f840112612224575f80fd5b50813567ffffffffffffffff81111561223b575f80fd5b6020830191508360208285010111156121a1575f80fd5b5f8060208385031215612263575f80fd5b823567ffffffffffffffff811115612279575f80fd5b61228585828601612214565b90969095509350505050565b5f80602083850312156122a2575f80fd5b823567ffffffffffffffff8111156122b8575f80fd5b61228585828601612160565b5f805f805f608086880312156122d8575f80fd5b85356122e3816120e3565b9450602086013567ffffffffffffffff8111156122fe575f80fd5b61230a88828901612214565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b03121561233d575f80fd5b8835612348816120e3565b97506020890135612358816120e3565b9650604089013567ffffffffffffffff811115612373575f80fd5b61237f8b828c01612160565b909750955050606089013567ffffffffffffffff81111561239e575f80fd5b6123aa8b828c01612160565b909550935050608089013567ffffffffffffffff8111156123c9575f80fd5b6123d58b828c01612214565b999c989b5096995094979396929594505050565b5f805f805f8060a087890312156123fe575f80fd5b8635612409816120e3565b95506020870135612419816120e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612442575f80fd5b61244e89828a01612214565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561249d575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156124fc576124fc6124ac565b60405290565b6040516080810167ffffffffffffffff811182821017156124fc576124fc6124ac565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561256c5761256c6124ac565b604052919050565b5f67ffffffffffffffff82111561258d5761258d6124ac565b5060051b60200190565b5f82601f8301126125a6575f80fd5b81356125b96125b482612574565b612525565b8082825260208201915060208360051b8601019250858311156125da575f80fd5b602085015b838110156125f75780358352602092830192016125df565b5095945050505050565b5f60208284031215612611575f80fd5b813567ffffffffffffffff811115612627575f80fd5b820160608185031215612638575f80fd5b6126406124d9565b813561264b816120e3565b8152602082013567ffffffffffffffff811115612666575f80fd5b8201601f81018613612676575f80fd5b80356126846125b482612574565b8082825260208201915060208360051b8501019250888311156126a5575f80fd5b6020840193505b828410156126d05783356126bf816120e3565b8252602093840193909101906126ac565b6020850152505050604082013567ffffffffffffffff8111156126f1575f80fd5b6126fd86828501612597565b604083015250949350505050565b5f67ffffffffffffffff821115612724576127246124ac565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612760575f80fd5b813567ffffffffffffffff811115612776575f80fd5b820160808185031215612787575f80fd5b61278f612502565b81356003811061279d575f80fd5b815260208201356127ad816120e3565b602082015260408201356127c0816120e3565b6040820152606082013567ffffffffffffffff8111156127de575f80fd5b80830192505084601f8301126127f2575f80fd5b81356128006125b48261270b565b818152866020838601011115612814575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612874575f80fd5b506040516020810167ffffffffffffffff81118282101715612898576128986124ac565b6040529151825250919050565b5f602082840312156128b5575f80fd5b815167ffffffffffffffff8111156128cb575f80fd5b8201606081850312156128dc575f80fd5b6128e46124d9565b8151815260208083015190820152604082015167ffffffffffffffff81111561290b575f80fd5b80830192505084601f83011261291f575f80fd5b815161292d6125b48261270b565b818152866020838601011115612941575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612973575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a1c60a083018461297a565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a5a575f80fd5b83018035915067ffffffffffffffff821115612a74575f80fd5b6020019150368190038213156121a1575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ac2606084018261297a565b949350505050565b606081525f612adc606083018661297a565b60208301949094525060400152919050565b5f8060408385031215612aff575f80fd5b82516020840151909250612b12816120e3565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b1d565b808201808211156108ca576108ca612b1d56fea26469706673582212200609e7c0419216f3ee5f34117a2ce4c02422b031a1d7065e2621834a487df80064736f6c634300081a0033",d1="0x608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120a4565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612104565b6108d0565b6040519081526020016102b6565b6102ff6102fa36600461211f565b610919565b005b6102ff61030f366004612136565b610926565b34801561031f575f80fd5b506102aa61032e366004612136565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612104565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121a8565b610989565b34801561040b575f80fd5b506102ff61041a366004612252565b610a83565b34801561042a575f80fd5b506102de610439366004612252565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612252565b610b87565b6102ff61046d366004612136565b610d4a565b34801561047d575f80fd5b506102aa61048c366004612136565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612104565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612252565b610d95565b34801561050e575f80fd5b506102aa61051d366004612291565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de610558366004612136565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122c4565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f610627366004612326565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121a8565b6112e4565b34801561067e575f80fd5b506102de61068d366004612104565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121a8565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612104565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123e9565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612104565b611492565b34801561073b575f80fd5b506102de61074a366004612136565b6114b8565b34801561075a575f80fd5b506102de610769366004612136565b611552565b348015610779575f80fd5b506102aa610788366004612252565b611609565b348015610798575f80fd5b506102aa6107a7366004612104565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612104565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612460565b90506020020160208101906109ff919061248d565b9050801515600103610a4157610a3c878784818110610a2057610a20612460565b9050602002016020810190610a359190612104565b60016119ed565b610a72565b610a72878784818110610a5657610a56612460565b9050602002016020810190610a6b9190612104565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612601565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612460565b602002602001015183604001518381518110610b3657610b36612460565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612750565b90505f8082516002811115610bb757610bb7612836565b1480610bd55750600182516002811115610bd357610bd3612836565b145b15610c2c575f8260600151806020019051810190610bf39190612863565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c41612836565b03610d36575f8260600151806020019051810190610c5f91906128a5565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612963565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612750565b90505f81516002811115610db957610db9612836565b03610e44575f8160600151806020019051810190610dd79190612863565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e59612836565b03610f2d575f8160600151806020019051810190610e779190612863565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f42612836565b036110e2575f8160600151806020019051810190610f6091906128a5565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129c6565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612963565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612460565b90506020028101906107889190612a27565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f0b565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a88565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612aca565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612aee565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b4a565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612460565b905060200201602081019061135c9190612104565b85858481811061136e5761136e612460565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b5d565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612460565b90506020020160208101906114329190612104565b85858481811061144457611444612460565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f0b565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f0b565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612963565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612963565b61154b9190612b5d565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612750565b905060018151600281111561166d5761166d612836565b148061168a57505f8151600281111561168857611688612836565b145b15611780575f81606001518060200190518101906116a89190612863565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b5d565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b60028151600281111561179557611795612836565b036110e2575f81606001518060200190518101906117b391906128a5565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612963565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f55565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611feb565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611feb565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be78282612042565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff8416838361205b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b5d565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129c6565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611efe57637939f4245f526004601cfd5b5f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c2080548381178361200c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661209b576390b8ec185f526004601cfd5b5f603452505050565b5f602082840312156120b4575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612114575f80fd5b813561154b816120e3565b5f6020828403121561212f575f80fd5b5035919050565b5f8060408385031215612147575f80fd5b8235612152816120e3565b946020939093013593505050565b5f8083601f840112612170575f80fd5b50813567ffffffffffffffff811115612187575f80fd5b6020830191508360208260051b85010111156121a1575f80fd5b9250929050565b5f805f80604085870312156121bb575f80fd5b843567ffffffffffffffff8111156121d1575f80fd5b6121dd87828801612160565b909550935050602085013567ffffffffffffffff8111156121fc575f80fd5b61220887828801612160565b95989497509550505050565b5f8083601f840112612224575f80fd5b50813567ffffffffffffffff81111561223b575f80fd5b6020830191508360208285010111156121a1575f80fd5b5f8060208385031215612263575f80fd5b823567ffffffffffffffff811115612279575f80fd5b61228585828601612214565b90969095509350505050565b5f80602083850312156122a2575f80fd5b823567ffffffffffffffff8111156122b8575f80fd5b61228585828601612160565b5f805f805f608086880312156122d8575f80fd5b85356122e3816120e3565b9450602086013567ffffffffffffffff8111156122fe575f80fd5b61230a88828901612214565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b03121561233d575f80fd5b8835612348816120e3565b97506020890135612358816120e3565b9650604089013567ffffffffffffffff811115612373575f80fd5b61237f8b828c01612160565b909750955050606089013567ffffffffffffffff81111561239e575f80fd5b6123aa8b828c01612160565b909550935050608089013567ffffffffffffffff8111156123c9575f80fd5b6123d58b828c01612214565b999c989b5096995094979396929594505050565b5f805f805f8060a087890312156123fe575f80fd5b8635612409816120e3565b95506020870135612419816120e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612442575f80fd5b61244e89828a01612214565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561249d575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156124fc576124fc6124ac565b60405290565b6040516080810167ffffffffffffffff811182821017156124fc576124fc6124ac565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561256c5761256c6124ac565b604052919050565b5f67ffffffffffffffff82111561258d5761258d6124ac565b5060051b60200190565b5f82601f8301126125a6575f80fd5b81356125b96125b482612574565b612525565b8082825260208201915060208360051b8601019250858311156125da575f80fd5b602085015b838110156125f75780358352602092830192016125df565b5095945050505050565b5f60208284031215612611575f80fd5b813567ffffffffffffffff811115612627575f80fd5b820160608185031215612638575f80fd5b6126406124d9565b813561264b816120e3565b8152602082013567ffffffffffffffff811115612666575f80fd5b8201601f81018613612676575f80fd5b80356126846125b482612574565b8082825260208201915060208360051b8501019250888311156126a5575f80fd5b6020840193505b828410156126d05783356126bf816120e3565b8252602093840193909101906126ac565b6020850152505050604082013567ffffffffffffffff8111156126f1575f80fd5b6126fd86828501612597565b604083015250949350505050565b5f67ffffffffffffffff821115612724576127246124ac565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612760575f80fd5b813567ffffffffffffffff811115612776575f80fd5b820160808185031215612787575f80fd5b61278f612502565b81356003811061279d575f80fd5b815260208201356127ad816120e3565b602082015260408201356127c0816120e3565b6040820152606082013567ffffffffffffffff8111156127de575f80fd5b80830192505084601f8301126127f2575f80fd5b81356128006125b48261270b565b818152866020838601011115612814575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612874575f80fd5b506040516020810167ffffffffffffffff81118282101715612898576128986124ac565b6040529151825250919050565b5f602082840312156128b5575f80fd5b815167ffffffffffffffff8111156128cb575f80fd5b8201606081850312156128dc575f80fd5b6128e46124d9565b8151815260208083015190820152604082015167ffffffffffffffff81111561290b575f80fd5b80830192505084601f83011261291f575f80fd5b815161292d6125b48261270b565b818152866020838601011115612941575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612973575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a1c60a083018461297a565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a5a575f80fd5b83018035915067ffffffffffffffff821115612a74575f80fd5b6020019150368190038213156121a1575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ac2606084018261297a565b949350505050565b606081525f612adc606083018661297a565b60208301949094525060400152919050565b5f8060408385031215612aff575f80fd5b82516020840151909250612b12816120e3565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b1d565b808201808211156108ca576108ca612b1d56fea26469706673582212200609e7c0419216f3ee5f34117a2ce4c02422b031a1d7065e2621834a487df80064736f6c634300081a0033",n1={},c1={},O0={_format:f1,contractName:e1,sourceName:b1,abi:a1,bytecode:t1,deployedBytecode:d1,linkReferences:n1,deployedLinkReferences:c1},i1="hh-sol-artifact-1",s1="ManagedBudgetWithFees",r1="contracts/budgets/ManagedBudgetWithFees.sol",p1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"topupIncentive",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],o1="0x6080604052348015600e575f80fd5b506015601f565b601b601f565b607e565b63409feecd1980546001811615603c5763f92ee8a95f526004601cfd5b8160c01c808260011c146079578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6137998061008b5f395ff3fe6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129b4565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a07565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a07565b60046020525f908152604090205481565b6103c26103bd366004612a22565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a7e565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612ae0565b6109c3565b34801561041e575f80fd5b5061034261042d366004612ae0565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a07565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b4b565b610a26565b34801561050a575f80fd5b506103c2610519366004612bb7565b610b20565b348015610529575f80fd5b506103c2610538366004612bf6565b610d2a565b348015610548575f80fd5b50610376610557366004612bb7565b5f92915050565b348015610569575f80fd5b50610376610578366004612bb7565b6110b3565b6103c261058b366004612ae0565b611269565b34801561059b575f80fd5b506103426105aa366004612ae0565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a07565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bb7565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c16565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612ae0565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c49565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a7e565b6116d4565b348015610719575f80fd5b5061047e610728366004612cae565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b4b565b611842565b34801561077f575f80fd5b5061037661078e366004612a07565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a07565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a07565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b4b565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a07565b6119be565b34801561083a575f80fd5b5061047e610849366004612d71565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a07565b6119f8565b348015610892575f80fd5b506103766108a1366004612ae0565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612ae0565b611aab565b3480156108d0575f80fd5b506103426108df366004612bb7565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a22565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a07565b611f50565b34801561092d575f80fd5b5061037661093c366004612a07565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e15565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e28565b9050602002016020810190610a9c9190612e62565b9050801515600103610ade57610ad9878784818110610abd57610abd612e28565b9050602002016020810190610ad29190612a07565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e28565b9050602002016020810190610b089190612a07565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f83850185612ff6565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e28565b602002602001015183604001518381518110610bd357610bd3612e28565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e28565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce9190810190613197565b90505f81608001518381518110610de757610de7612e28565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613274565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f919061328f565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613274565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132eb565b90505f80825160028111156110e3576110e36133d1565b148061110157506001825160028111156110ff576110ff6133d1565b145b15611158575f826060015180602001905181019061111f91906133fe565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133d1565b03611255575f826060015180602001905181019061118b9190613440565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611240919061328f565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132eb565b90505f815160028111156112d8576112d86133d1565b03611351575f81606001518060200190518101906112f691906133fe565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133d1565b03611413575f816060015180602001905181019061138491906133fe565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126b8565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133d1565b036115a1575f81606001518060200190518101906114469190613440565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061354a565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e919061328f565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e28565b90506020028101906108df9190613591565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126eb565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b90889088908890889030906004016135f2565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c9061179390879060200161365e565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c293929190613693565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136b7565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e15565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e28565b90506020020160208101906118ba9190612a07565b8585848181106118cc576118cc612e28565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136e6565b61095d91906136e6565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e28565b90506020020160208101906119989190612a07565b8585848181106119aa576119aa612e28565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126eb565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126eb565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa4919061328f565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b919061328f565b611aa491906136e6565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132eb565b9050600181516002811115611bb957611bb96133d1565b1480611bd657505f81516002811115611bd457611bd46133d1565b145b15611d4f575f8160600151806020019051810190611bf491906133fe565b90505f612710600154835f0151611c0b91906136f9565b611c159190613710565b90505f611c258460200151610963565b90508082845f0151611c3791906136e6565b1115611c9c57602084015183518290611c519085906136e6565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136e6565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136e6565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136e6565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133d1565b036115a1575f8160600151806020019051810190611d829190613440565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e14919061328f565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612728565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126b8565b61095d565b4792915050565b6109d582825f612815565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d582826001612815565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e28565b6020908102919091018101516001600160a01b0381165f908152600283526040808220546003909452812054919350818561214988866136f9565b6121539190613710565b61215d9190612e15565b905061216981836136e6565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f89190613748565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e15565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136e6565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc828261286c565b612415565b6124156001600160a01b0384168383612885565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136e6565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161354a565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166126ab57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127ba57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061280657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128ce565b638b78c6d8600c52825f526020600c20805483811783612836575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c5576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a17575f80fd5b8135611aa4816129f3565b5f60208284031215612a32575f80fd5b5035919050565b5f8083601f840112612a49575f80fd5b50813567ffffffffffffffff811115612a60575f80fd5b602083019150836020828501011115612a77575f80fd5b9250929050565b5f805f805f60808688031215612a92575f80fd5b8535612a9d816129f3565b9450602086013567ffffffffffffffff811115612ab8575f80fd5b612ac488828901612a39565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612af1575f80fd5b8235612afc816129f3565b946020939093013593505050565b5f8083601f840112612b1a575f80fd5b50813567ffffffffffffffff811115612b31575f80fd5b6020830191508360208260051b8501011115612a77575f80fd5b5f805f8060408587031215612b5e575f80fd5b843567ffffffffffffffff811115612b74575f80fd5b612b8087828801612b0a565b909550935050602085013567ffffffffffffffff811115612b9f575f80fd5b612bab87828801612b0a565b95989497509550505050565b5f8060208385031215612bc8575f80fd5b823567ffffffffffffffff811115612bde575f80fd5b612bea85828601612a39565b90969095509350505050565b5f8060408385031215612c07575f80fd5b50508035926020909101359150565b5f8060208385031215612c27575f80fd5b823567ffffffffffffffff811115612c3d575f80fd5b612bea85828601612b0a565b5f805f805f60808688031215612c5d575f80fd5b8535612c68816129f3565b94506020860135935060408601359250606086013567ffffffffffffffff811115612c91575f80fd5b612c9d88828901612a39565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cc5575f80fd5b8835612cd0816129f3565b97506020890135612ce0816129f3565b9650604089013567ffffffffffffffff811115612cfb575f80fd5b612d078b828c01612b0a565b909750955050606089013567ffffffffffffffff811115612d26575f80fd5b612d328b828c01612b0a565b909550935050608089013567ffffffffffffffff811115612d51575f80fd5b612d5d8b828c01612a39565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d86575f80fd5b8635612d91816129f3565b95506020870135612da1816129f3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dca575f80fd5b612dd689828a01612a39565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612de8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e72575f80fd5b8135611aa481612e55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b60405290565b604051610100810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b6040516060810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f6157612f61612e7d565b604052919050565b5f67ffffffffffffffff821115612f8257612f82612e7d565b5060051b60200190565b5f82601f830112612f9b575f80fd5b8135612fae612fa982612f69565b612f1a565b8082825260208201915060208360051b860101925085831115612fcf575f80fd5b602085015b83811015612fec578035835260209283019201612fd4565b5095945050505050565b5f60208284031215613006575f80fd5b813567ffffffffffffffff81111561301c575f80fd5b82016080818503121561302d575f80fd5b613035612eaa565b8135613040816129f3565b8152602082013567ffffffffffffffff81111561305b575f80fd5b8201601f8101861361306b575f80fd5b8035613079612fa982612f69565b8082825260208201915060208360051b85010192508883111561309a575f80fd5b6020840193505b828410156130c55783356130b4816129f3565b8252602093840193909101906130a1565b6020850152505050604082013567ffffffffffffffff8111156130e6575f80fd5b6130f286828501612f8c565b604083015250606091820135918101919091529392505050565b8051613117816129f3565b919050565b5f82601f83011261312b575f80fd5b8151613139612fa982612f69565b8082825260208201915060208360051b86010192508583111561315a575f80fd5b602085015b83811015612fec578051613172816129f3565b83526020928301920161315f565b805167ffffffffffffffff81168114613117575f80fd5b5f602082840312156131a7575f80fd5b815167ffffffffffffffff8111156131bd575f80fd5b820161010081850312156131cf575f80fd5b6131d7612ed3565b6131e08261310c565b81526131ee6020830161310c565b60208201526131ff6040830161310c565b60408201526132106060830161310c565b6060820152608082015167ffffffffffffffff81111561322e575f80fd5b61323a8682850161311c565b60808301525061324c60a08301613180565b60a082015260c0828101519082015261326760e0830161310c565b60e0820152949350505050565b5f60208284031215613284575f80fd5b8151611aa481612e55565b5f6020828403121561329f575f80fd5b5051919050565b5f67ffffffffffffffff8211156132bf576132bf612e7d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f602082840312156132fb575f80fd5b813567ffffffffffffffff811115613311575f80fd5b820160808185031215613322575f80fd5b61332a612eaa565b813560038110613338575f80fd5b81526020820135613348816129f3565b6020820152604082013561335b816129f3565b6040820152606082013567ffffffffffffffff811115613379575f80fd5b80830192505084601f83011261338d575f80fd5b813561339b612fa9826132a6565b8181528660208386010111156133af575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312801561340f575f80fd5b506040516020810167ffffffffffffffff8111828210171561343357613433612e7d565b6040529151825250919050565b5f60208284031215613450575f80fd5b815167ffffffffffffffff811115613466575f80fd5b820160608185031215613477575f80fd5b61347f612ef7565b8151815260208083015190820152604082015167ffffffffffffffff8111156134a6575f80fd5b80830192505084601f8301126134ba575f80fd5b81516134c8612fa9826132a6565b8181528660208386010111156134dc575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61358660a08301846134fe565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135c4575f80fd5b83018035915067ffffffffffffffff8211156135de575f80fd5b602001915036819003821315612a77575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261368b60608401826134fe565b949350505050565b606081525f6136a560608301866134fe565b60208301949094525060400152919050565b5f80604083850312156136c8575f80fd5b825160208401519092506136db816129f3565b809150509250929050565b8082018082111561095d5761095d612de8565b808202811582820484141761095d5761095d612de8565b5f82613743577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613758575f80fd5b8151611aa4816129f356fea2646970667358221220dbd4f70bed9b922212a5c6bf33fbf9a035a23d8d6e2d872430cdd227c89ca9b664736f6c634300081a0033",u1="0x6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129b4565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a07565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a07565b60046020525f908152604090205481565b6103c26103bd366004612a22565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a7e565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612ae0565b6109c3565b34801561041e575f80fd5b5061034261042d366004612ae0565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a07565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b4b565b610a26565b34801561050a575f80fd5b506103c2610519366004612bb7565b610b20565b348015610529575f80fd5b506103c2610538366004612bf6565b610d2a565b348015610548575f80fd5b50610376610557366004612bb7565b5f92915050565b348015610569575f80fd5b50610376610578366004612bb7565b6110b3565b6103c261058b366004612ae0565b611269565b34801561059b575f80fd5b506103426105aa366004612ae0565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a07565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bb7565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c16565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612ae0565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c49565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a7e565b6116d4565b348015610719575f80fd5b5061047e610728366004612cae565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b4b565b611842565b34801561077f575f80fd5b5061037661078e366004612a07565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a07565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a07565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b4b565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a07565b6119be565b34801561083a575f80fd5b5061047e610849366004612d71565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a07565b6119f8565b348015610892575f80fd5b506103766108a1366004612ae0565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612ae0565b611aab565b3480156108d0575f80fd5b506103426108df366004612bb7565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a22565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a07565b611f50565b34801561092d575f80fd5b5061037661093c366004612a07565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e15565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e28565b9050602002016020810190610a9c9190612e62565b9050801515600103610ade57610ad9878784818110610abd57610abd612e28565b9050602002016020810190610ad29190612a07565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e28565b9050602002016020810190610b089190612a07565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f83850185612ff6565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e28565b602002602001015183604001518381518110610bd357610bd3612e28565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e28565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce9190810190613197565b90505f81608001518381518110610de757610de7612e28565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613274565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f919061328f565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613274565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132eb565b90505f80825160028111156110e3576110e36133d1565b148061110157506001825160028111156110ff576110ff6133d1565b145b15611158575f826060015180602001905181019061111f91906133fe565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133d1565b03611255575f826060015180602001905181019061118b9190613440565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611240919061328f565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132eb565b90505f815160028111156112d8576112d86133d1565b03611351575f81606001518060200190518101906112f691906133fe565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133d1565b03611413575f816060015180602001905181019061138491906133fe565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126b8565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133d1565b036115a1575f81606001518060200190518101906114469190613440565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061354a565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e919061328f565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e28565b90506020028101906108df9190613591565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126eb565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b90889088908890889030906004016135f2565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c9061179390879060200161365e565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c293929190613693565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136b7565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e15565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e28565b90506020020160208101906118ba9190612a07565b8585848181106118cc576118cc612e28565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136e6565b61095d91906136e6565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e28565b90506020020160208101906119989190612a07565b8585848181106119aa576119aa612e28565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126eb565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126eb565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa4919061328f565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b919061328f565b611aa491906136e6565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132eb565b9050600181516002811115611bb957611bb96133d1565b1480611bd657505f81516002811115611bd457611bd46133d1565b145b15611d4f575f8160600151806020019051810190611bf491906133fe565b90505f612710600154835f0151611c0b91906136f9565b611c159190613710565b90505f611c258460200151610963565b90508082845f0151611c3791906136e6565b1115611c9c57602084015183518290611c519085906136e6565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136e6565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136e6565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136e6565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133d1565b036115a1575f8160600151806020019051810190611d829190613440565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e14919061328f565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612728565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126b8565b61095d565b4792915050565b6109d582825f612815565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d582826001612815565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e28565b6020908102919091018101516001600160a01b0381165f908152600283526040808220546003909452812054919350818561214988866136f9565b6121539190613710565b61215d9190612e15565b905061216981836136e6565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f89190613748565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e15565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136e6565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc828261286c565b612415565b6124156001600160a01b0384168383612885565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136e6565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161354a565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166126ab57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127ba57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061280657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128ce565b638b78c6d8600c52825f526020600c20805483811783612836575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c5576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a17575f80fd5b8135611aa4816129f3565b5f60208284031215612a32575f80fd5b5035919050565b5f8083601f840112612a49575f80fd5b50813567ffffffffffffffff811115612a60575f80fd5b602083019150836020828501011115612a77575f80fd5b9250929050565b5f805f805f60808688031215612a92575f80fd5b8535612a9d816129f3565b9450602086013567ffffffffffffffff811115612ab8575f80fd5b612ac488828901612a39565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612af1575f80fd5b8235612afc816129f3565b946020939093013593505050565b5f8083601f840112612b1a575f80fd5b50813567ffffffffffffffff811115612b31575f80fd5b6020830191508360208260051b8501011115612a77575f80fd5b5f805f8060408587031215612b5e575f80fd5b843567ffffffffffffffff811115612b74575f80fd5b612b8087828801612b0a565b909550935050602085013567ffffffffffffffff811115612b9f575f80fd5b612bab87828801612b0a565b95989497509550505050565b5f8060208385031215612bc8575f80fd5b823567ffffffffffffffff811115612bde575f80fd5b612bea85828601612a39565b90969095509350505050565b5f8060408385031215612c07575f80fd5b50508035926020909101359150565b5f8060208385031215612c27575f80fd5b823567ffffffffffffffff811115612c3d575f80fd5b612bea85828601612b0a565b5f805f805f60808688031215612c5d575f80fd5b8535612c68816129f3565b94506020860135935060408601359250606086013567ffffffffffffffff811115612c91575f80fd5b612c9d88828901612a39565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cc5575f80fd5b8835612cd0816129f3565b97506020890135612ce0816129f3565b9650604089013567ffffffffffffffff811115612cfb575f80fd5b612d078b828c01612b0a565b909750955050606089013567ffffffffffffffff811115612d26575f80fd5b612d328b828c01612b0a565b909550935050608089013567ffffffffffffffff811115612d51575f80fd5b612d5d8b828c01612a39565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d86575f80fd5b8635612d91816129f3565b95506020870135612da1816129f3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dca575f80fd5b612dd689828a01612a39565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612de8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e72575f80fd5b8135611aa481612e55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b60405290565b604051610100810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b6040516060810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f6157612f61612e7d565b604052919050565b5f67ffffffffffffffff821115612f8257612f82612e7d565b5060051b60200190565b5f82601f830112612f9b575f80fd5b8135612fae612fa982612f69565b612f1a565b8082825260208201915060208360051b860101925085831115612fcf575f80fd5b602085015b83811015612fec578035835260209283019201612fd4565b5095945050505050565b5f60208284031215613006575f80fd5b813567ffffffffffffffff81111561301c575f80fd5b82016080818503121561302d575f80fd5b613035612eaa565b8135613040816129f3565b8152602082013567ffffffffffffffff81111561305b575f80fd5b8201601f8101861361306b575f80fd5b8035613079612fa982612f69565b8082825260208201915060208360051b85010192508883111561309a575f80fd5b6020840193505b828410156130c55783356130b4816129f3565b8252602093840193909101906130a1565b6020850152505050604082013567ffffffffffffffff8111156130e6575f80fd5b6130f286828501612f8c565b604083015250606091820135918101919091529392505050565b8051613117816129f3565b919050565b5f82601f83011261312b575f80fd5b8151613139612fa982612f69565b8082825260208201915060208360051b86010192508583111561315a575f80fd5b602085015b83811015612fec578051613172816129f3565b83526020928301920161315f565b805167ffffffffffffffff81168114613117575f80fd5b5f602082840312156131a7575f80fd5b815167ffffffffffffffff8111156131bd575f80fd5b820161010081850312156131cf575f80fd5b6131d7612ed3565b6131e08261310c565b81526131ee6020830161310c565b60208201526131ff6040830161310c565b60408201526132106060830161310c565b6060820152608082015167ffffffffffffffff81111561322e575f80fd5b61323a8682850161311c565b60808301525061324c60a08301613180565b60a082015260c0828101519082015261326760e0830161310c565b60e0820152949350505050565b5f60208284031215613284575f80fd5b8151611aa481612e55565b5f6020828403121561329f575f80fd5b5051919050565b5f67ffffffffffffffff8211156132bf576132bf612e7d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f602082840312156132fb575f80fd5b813567ffffffffffffffff811115613311575f80fd5b820160808185031215613322575f80fd5b61332a612eaa565b813560038110613338575f80fd5b81526020820135613348816129f3565b6020820152604082013561335b816129f3565b6040820152606082013567ffffffffffffffff811115613379575f80fd5b80830192505084601f83011261338d575f80fd5b813561339b612fa9826132a6565b8181528660208386010111156133af575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312801561340f575f80fd5b506040516020810167ffffffffffffffff8111828210171561343357613433612e7d565b6040529151825250919050565b5f60208284031215613450575f80fd5b815167ffffffffffffffff811115613466575f80fd5b820160608185031215613477575f80fd5b61347f612ef7565b8151815260208083015190820152604082015167ffffffffffffffff8111156134a6575f80fd5b80830192505084601f8301126134ba575f80fd5b81516134c8612fa9826132a6565b8181528660208386010111156134dc575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61358660a08301846134fe565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135c4575f80fd5b83018035915067ffffffffffffffff8211156135de575f80fd5b602001915036819003821315612a77575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261368b60608401826134fe565b949350505050565b606081525f6136a560608301866134fe565b60208301949094525060400152919050565b5f80604083850312156136c8575f80fd5b825160208401519092506136db816129f3565b809150509250929050565b8082018082111561095d5761095d612de8565b808202811582820484141761095d5761095d612de8565b5f82613743577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613758575f80fd5b8151611aa4816129f356fea2646970667358221220dbd4f70bed9b922212a5c6bf33fbf9a035a23d8d6e2d872430cdd227c89ca9b664736f6c634300081a0033",y1={},l1={},C0={_format:i1,contractName:s1,sourceName:r1,abi:p1,bytecode:o1,deployedBytecode:u1,linkReferences:y1,deployedLinkReferences:l1},m1="hh-sol-artifact-1",T1="VestingBudget",h1="contracts/budgets/VestingBudget.sol",w1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],v1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6121dd806100855f395ff3fe608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461191a565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461197a565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b610356366004611995565b6107c3565b005b61035b61036b3660046119ac565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119ac565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461197a565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a1e565b610833565b348015610442575f80fd5b5061035b610451366004611ac8565b61092d565b348015610461575f80fd5b50610307610470366004611ac8565b5f92915050565b348015610482575f80fd5b50610307610491366004611ac8565b610aa9565b61035b6104a43660046119ac565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119ac565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461197a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611ac8565b610ba7565b348015610545575f80fd5b5061028f610554366004611b07565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b3a565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a1e565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461197a565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a1e565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461197a565b6110ea565b61035b6106bb36600461197a565b611124565b3480156106cb575f80fd5b5061028f6106da366004611ac8565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461197a565b611201565b348015610709575f80fd5b5061030761071836600461197a565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bc9565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bdc565b90506020020160208101906108a99190611c09565b90508015156001036108eb576108e68787848181106108ca576108ca611bdc565b90506020020160208101906108df919061197a565b600161135b565b61091c565b61091c87878481811061090057610900611bdc565b9050602002016020810190610915919061197a565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d0c565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bdc565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e39565b90505f8082516002811115610ad657610ad6611f5c565b1480610af45750600182516002811115610af257610af2611f5c565b145b15610b4b575f8260600151806020019051810190610b129190611f89565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e39565b90505f81516002811115610bcb57610bcb611f5c565b03610c56575f8160600151806020019051810190610be99190611f89565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f5c565b03610d3f575f8160600151806020019051810190610c899190611f89565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff1630611670565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bdc565b90506020028101906106da9190611fcb565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116a3565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e908490602001612078565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120b2565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120d6565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bdc565b9050602002016020810190610f73919061197a565b858584818110610f8557610f85611bdc565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff841630611670565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612105565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bdc565b9050602002016020810190611090919061197a565b8585848181106110a2576110a2611bdc565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116a3565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116a3565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e39565b90506001815160028111156111ae576111ae611f5c565b14806111cb57505f815160028111156111c9576111c9611f5c565b145b15610d3f575f81606001518060200190518101906111e99190611f89565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116ed565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff851630611670565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612105565b84611783565b6107e282825f611861565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e282826001611861565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612105565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118b8565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661166357637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117b09067ffffffffffffffff700100000000000000000000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610156117d257505f610784565b5f546117f69067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610611817575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161183c911684612138565b6118509067ffffffffffffffff1685612158565b61185a919061216f565b9050610784565b638b78c6d8600c52825f526020600c20805483811783611882575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611911576390b8ec185f526004601cfd5b5f603452505050565b5f6020828403121561192a575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561198a575f80fd5b813561101181611959565b5f602082840312156119a5575f80fd5b5035919050565b5f80604083850312156119bd575f80fd5b82356119c881611959565b946020939093013593505050565b5f8083601f8401126119e6575f80fd5b50813567ffffffffffffffff8111156119fd575f80fd5b6020830191508360208260051b8501011115611a17575f80fd5b9250929050565b5f805f8060408587031215611a31575f80fd5b843567ffffffffffffffff811115611a47575f80fd5b611a53878288016119d6565b909550935050602085013567ffffffffffffffff811115611a72575f80fd5b611a7e878288016119d6565b95989497509550505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b602083019150836020828501011115611a17575f80fd5b5f8060208385031215611ad9575f80fd5b823567ffffffffffffffff811115611aef575f80fd5b611afb85828601611a8a565b90969095509350505050565b5f8060208385031215611b18575f80fd5b823567ffffffffffffffff811115611b2e575f80fd5b611afb858286016119d6565b5f805f805f60808688031215611b4e575f80fd5b8535611b5981611959565b9450602086013567ffffffffffffffff811115611b74575f80fd5b611b8088828901611a8a565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611b9c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c19575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c7857611c78611c28565b60405290565b6040516080810167ffffffffffffffff81118282101715611c7857611c78611c28565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ce857611ce8611c28565b604052919050565b803567ffffffffffffffff81168114611d07575f80fd5b919050565b5f60208284031215611d1c575f80fd5b813567ffffffffffffffff811115611d32575f80fd5b820160a08185031215611d43575f80fd5b611d4b611c55565b8135611d5681611959565b8152602082013567ffffffffffffffff811115611d71575f80fd5b8201601f81018613611d81575f80fd5b803567ffffffffffffffff811115611d9b57611d9b611c28565b8060051b611dab60208201611ca1565b91825260208184018101929081019089841115611dc6575f80fd5b6020850194505b83851015611df45784359250611de283611959565b82825260209485019490910190611dcd565b602086015250611e0a9250505060408301611cf0565b6040820152611e1b60608301611cf0565b6060820152611e2c60808301611cf0565b6080820152949350505050565b5f60208284031215611e49575f80fd5b813567ffffffffffffffff811115611e5f575f80fd5b820160808185031215611e70575f80fd5b611e78611c7e565b813560038110611e86575f80fd5b81526020820135611e9681611959565b60208201526040820135611ea981611959565b6040820152606082013567ffffffffffffffff811115611ec7575f80fd5b80830192505084601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611c28565b611f2660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611ca1565b818152866020838601011115611f3a575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611f9a575f80fd5b506040516020810167ffffffffffffffff81118282101715611fbe57611fbe611c28565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ffe575f80fd5b83018035915067ffffffffffffffff821115612018575f80fd5b602001915036819003821315611a17575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b54606084018261202c565b606081525f6120c4606083018661202c565b60208301949094525060400152919050565b5f80604083850312156120e7575f80fd5b825160208401519092506120fa81611959565b809150509250929050565b8082018082111561078457610784611b9c565b67ffffffffffffffff818116838216019081111561078457610784611b9c565b67ffffffffffffffff828116828216039081111561078457610784611b9c565b808202811582820484141761078457610784611b9c565b5f826121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122016330cf4e5bc0eda6c6034a2eb4105027076ec6727948c9ccc60c2dd738627a964736f6c634300081a0033",g1="0x608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461191a565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461197a565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b610356366004611995565b6107c3565b005b61035b61036b3660046119ac565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119ac565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461197a565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a1e565b610833565b348015610442575f80fd5b5061035b610451366004611ac8565b61092d565b348015610461575f80fd5b50610307610470366004611ac8565b5f92915050565b348015610482575f80fd5b50610307610491366004611ac8565b610aa9565b61035b6104a43660046119ac565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119ac565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461197a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611ac8565b610ba7565b348015610545575f80fd5b5061028f610554366004611b07565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b3a565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a1e565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461197a565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a1e565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461197a565b6110ea565b61035b6106bb36600461197a565b611124565b3480156106cb575f80fd5b5061028f6106da366004611ac8565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461197a565b611201565b348015610709575f80fd5b5061030761071836600461197a565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bc9565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bdc565b90506020020160208101906108a99190611c09565b90508015156001036108eb576108e68787848181106108ca576108ca611bdc565b90506020020160208101906108df919061197a565b600161135b565b61091c565b61091c87878481811061090057610900611bdc565b9050602002016020810190610915919061197a565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d0c565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bdc565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e39565b90505f8082516002811115610ad657610ad6611f5c565b1480610af45750600182516002811115610af257610af2611f5c565b145b15610b4b575f8260600151806020019051810190610b129190611f89565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e39565b90505f81516002811115610bcb57610bcb611f5c565b03610c56575f8160600151806020019051810190610be99190611f89565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f5c565b03610d3f575f8160600151806020019051810190610c899190611f89565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff1630611670565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bdc565b90506020028101906106da9190611fcb565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116a3565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e908490602001612078565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120b2565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120d6565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bdc565b9050602002016020810190610f73919061197a565b858584818110610f8557610f85611bdc565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff841630611670565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612105565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bdc565b9050602002016020810190611090919061197a565b8585848181106110a2576110a2611bdc565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116a3565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116a3565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e39565b90506001815160028111156111ae576111ae611f5c565b14806111cb57505f815160028111156111c9576111c9611f5c565b145b15610d3f575f81606001518060200190518101906111e99190611f89565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116ed565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff851630611670565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612105565b84611783565b6107e282825f611861565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e282826001611861565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612105565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118b8565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661166357637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117b09067ffffffffffffffff700100000000000000000000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610156117d257505f610784565b5f546117f69067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610611817575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161183c911684612138565b6118509067ffffffffffffffff1685612158565b61185a919061216f565b9050610784565b638b78c6d8600c52825f526020600c20805483811783611882575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611911576390b8ec185f526004601cfd5b5f603452505050565b5f6020828403121561192a575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561198a575f80fd5b813561101181611959565b5f602082840312156119a5575f80fd5b5035919050565b5f80604083850312156119bd575f80fd5b82356119c881611959565b946020939093013593505050565b5f8083601f8401126119e6575f80fd5b50813567ffffffffffffffff8111156119fd575f80fd5b6020830191508360208260051b8501011115611a17575f80fd5b9250929050565b5f805f8060408587031215611a31575f80fd5b843567ffffffffffffffff811115611a47575f80fd5b611a53878288016119d6565b909550935050602085013567ffffffffffffffff811115611a72575f80fd5b611a7e878288016119d6565b95989497509550505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b602083019150836020828501011115611a17575f80fd5b5f8060208385031215611ad9575f80fd5b823567ffffffffffffffff811115611aef575f80fd5b611afb85828601611a8a565b90969095509350505050565b5f8060208385031215611b18575f80fd5b823567ffffffffffffffff811115611b2e575f80fd5b611afb858286016119d6565b5f805f805f60808688031215611b4e575f80fd5b8535611b5981611959565b9450602086013567ffffffffffffffff811115611b74575f80fd5b611b8088828901611a8a565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611b9c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c19575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c7857611c78611c28565b60405290565b6040516080810167ffffffffffffffff81118282101715611c7857611c78611c28565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ce857611ce8611c28565b604052919050565b803567ffffffffffffffff81168114611d07575f80fd5b919050565b5f60208284031215611d1c575f80fd5b813567ffffffffffffffff811115611d32575f80fd5b820160a08185031215611d43575f80fd5b611d4b611c55565b8135611d5681611959565b8152602082013567ffffffffffffffff811115611d71575f80fd5b8201601f81018613611d81575f80fd5b803567ffffffffffffffff811115611d9b57611d9b611c28565b8060051b611dab60208201611ca1565b91825260208184018101929081019089841115611dc6575f80fd5b6020850194505b83851015611df45784359250611de283611959565b82825260209485019490910190611dcd565b602086015250611e0a9250505060408301611cf0565b6040820152611e1b60608301611cf0565b6060820152611e2c60808301611cf0565b6080820152949350505050565b5f60208284031215611e49575f80fd5b813567ffffffffffffffff811115611e5f575f80fd5b820160808185031215611e70575f80fd5b611e78611c7e565b813560038110611e86575f80fd5b81526020820135611e9681611959565b60208201526040820135611ea981611959565b6040820152606082013567ffffffffffffffff811115611ec7575f80fd5b80830192505084601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611c28565b611f2660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611ca1565b818152866020838601011115611f3a575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611f9a575f80fd5b506040516020810167ffffffffffffffff81118282101715611fbe57611fbe611c28565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ffe575f80fd5b83018035915067ffffffffffffffff821115612018575f80fd5b602001915036819003821315611a17575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b54606084018261202c565b606081525f6120c4606083018661202c565b60208301949094525060400152919050565b5f80604083850312156120e7575f80fd5b825160208401519092506120fa81611959565b809150509250929050565b8082018082111561078457610784611b9c565b67ffffffffffffffff818116838216019081111561078457610784611b9c565b67ffffffffffffffff828116828216039081111561078457610784611b9c565b808202811582820484141761078457610784611b9c565b5f826121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122016330cf4e5bc0eda6c6034a2eb4105027076ec6727948c9ccc60c2dd738627a964736f6c634300081a0033",M1={},x1={},B0={_format:m1,contractName:T1,sourceName:h1,abi:w1,bytecode:v1,deployedBytecode:g1,linkReferences:M1,deployedLinkReferences:x1},I1="hh-sol-artifact-1",A1="AllowListIncentive",E1="contracts/incentives/AllowListIncentive.sol",R1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],O1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b610f75806100855f395ff3fe608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212206a53b42071a063a12c6de7f3c53595b9f2c06373aae4a0ebd9d9bb586862922664736f6c634300081a0033",C1="0x608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212206a53b42071a063a12c6de7f3c53595b9f2c06373aae4a0ebd9d9bb586862922664736f6c634300081a0033",B1={},_1={},_0={_format:I1,contractName:A1,sourceName:E1,abi:R1,bytecode:O1,deployedBytecode:C1,linkReferences:B1,deployedLinkReferences:_1},P1="hh-sol-artifact-1",z1="CGDAIncentive",N1="contracts/incentives/CGDAIncentive.sol",$1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],H1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611b65806100855f395ff3fe6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b506102186102133660046114f8565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611537565b610736565b005b610262610272366004611576565b610743565b348015610282575f80fd5b50610218610291366004611576565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c36600461159e565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e3660046115ff565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116a9565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116a9565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611576565b610c90565b348015610429575f80fd5b5061043d6104383660046116a9565b610ca2565b6040516102249190611716565b348015610455575f80fd5b50610218610464366004611576565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611728565b610dac565b348015610527575f80fd5b506102626105363660046115ff565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a36600461159e565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611728565b611020565b3480156105a8575f80fd5b506102626105b73660046115ff565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f336600461159e565b6110d0565b61026261060636600461159e565b61110a565b348015610616575f80fd5b5061021861062536600461159e565b611130565b348015610635575f80fd5b5061024161064436600461159e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117a4565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117b7565b61071091906117ce565b60055461071d9190611806565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611819565b905060200201602081019061081c9190611846565b905080151560010361085e5761085987878481811061083d5761083d611819565b9050602002016020810190610852919061159e565b600161123c565b61088f565b61088f87878481811061087357610873611819565b9050602002016020810190610888919061159e565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118ec565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d8587018761196f565b90505f8160200151806020019051810190610b989190611a46565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611716565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118ec565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a5d565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f61134b565b565b5f610db5611222565b610dbe84611395565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611af8565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117a4565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611716565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611819565b9050602002016020810190610ffa919061159e565b85858481811061100c5761100c611819565b9050602002013561123c565b600101610fc8565b5f61102a84611395565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611819565b90506020020160208101906110aa919061159e565b8585848181106110bc576110bc611819565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f90556107408161134b565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b6107408161134b565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b08261140b565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114a1565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114a1565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611342576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061139f6106b6565b90505f811180156113d3575060075481906113d09073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b8015611404575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114c2575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611508575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611404575f80fd5b5f60208284031215611547575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611571575f80fd5b919050565b5f8060408385031215611587575f80fd5b6115908361154e565b946020939093013593505050565b5f602082840312156115ae575f80fd5b6114048261154e565b5f8083601f8401126115c7575f80fd5b50813567ffffffffffffffff8111156115de575f80fd5b6020830191508360208260051b85010111156115f8575f80fd5b9250929050565b5f805f8060408587031215611612575f80fd5b843567ffffffffffffffff811115611628575f80fd5b611634878288016115b7565b909550935050602085013567ffffffffffffffff811115611653575f80fd5b61165f878288016115b7565b95989497509550505050565b5f8083601f84011261167b575f80fd5b50813567ffffffffffffffff811115611692575f80fd5b6020830191508360208285010111156115f8575f80fd5b5f80602083850312156116ba575f80fd5b823567ffffffffffffffff8111156116d0575f80fd5b6116dc8582860161166b565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140460208301846116e8565b5f805f6040848603121561173a575f80fd5b6117438461154e565b9250602084013567ffffffffffffffff81111561175e575f80fd5b61176a8682870161166b565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611777565b80820281158282048414176106b0576106b0611777565b5f82611801577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611856575f80fd5b81358015158114611404575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118b5576118b5611865565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118e4576118e4611865565b604052919050565b5f60c08284031280156118fd575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192157611921611865565b60405261192d8361154e565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196360a0840161154e565b60a08201529392505050565b5f6020828403121561197f575f80fd5b813567ffffffffffffffff811115611995575f80fd5b8201604081850312156119a6575f80fd5b6119ae611892565b6119b78261154e565b8152602082013567ffffffffffffffff8111156119d2575f80fd5b80830192505084601f8301126119e6575f80fd5b813567ffffffffffffffff811115611a0057611a00611865565b611a136020601f19601f840116016118bb565b818152866020838601011115611a27575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a56575f80fd5b5051919050565b602081525f825160038110611a99577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116e8565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b2857611b28611777565b506001019056fea2646970667358221220e6b93f6915e88cb71a52f2fc66651bb20e78e4fc576be1786f6530ebff60d6b264736f6c634300081a0033",L1="0x6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b506102186102133660046114f8565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611537565b610736565b005b610262610272366004611576565b610743565b348015610282575f80fd5b50610218610291366004611576565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c36600461159e565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e3660046115ff565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116a9565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116a9565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611576565b610c90565b348015610429575f80fd5b5061043d6104383660046116a9565b610ca2565b6040516102249190611716565b348015610455575f80fd5b50610218610464366004611576565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611728565b610dac565b348015610527575f80fd5b506102626105363660046115ff565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a36600461159e565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611728565b611020565b3480156105a8575f80fd5b506102626105b73660046115ff565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f336600461159e565b6110d0565b61026261060636600461159e565b61110a565b348015610616575f80fd5b5061021861062536600461159e565b611130565b348015610635575f80fd5b5061024161064436600461159e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117a4565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117b7565b61071091906117ce565b60055461071d9190611806565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611819565b905060200201602081019061081c9190611846565b905080151560010361085e5761085987878481811061083d5761083d611819565b9050602002016020810190610852919061159e565b600161123c565b61088f565b61088f87878481811061087357610873611819565b9050602002016020810190610888919061159e565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118ec565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d8587018761196f565b90505f8160200151806020019051810190610b989190611a46565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611716565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118ec565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a5d565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f61134b565b565b5f610db5611222565b610dbe84611395565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611af8565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117a4565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611716565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611819565b9050602002016020810190610ffa919061159e565b85858481811061100c5761100c611819565b9050602002013561123c565b600101610fc8565b5f61102a84611395565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611819565b90506020020160208101906110aa919061159e565b8585848181106110bc576110bc611819565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f90556107408161134b565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b6107408161134b565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b08261140b565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114a1565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114a1565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611342576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061139f6106b6565b90505f811180156113d3575060075481906113d09073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b8015611404575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114c2575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611508575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611404575f80fd5b5f60208284031215611547575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611571575f80fd5b919050565b5f8060408385031215611587575f80fd5b6115908361154e565b946020939093013593505050565b5f602082840312156115ae575f80fd5b6114048261154e565b5f8083601f8401126115c7575f80fd5b50813567ffffffffffffffff8111156115de575f80fd5b6020830191508360208260051b85010111156115f8575f80fd5b9250929050565b5f805f8060408587031215611612575f80fd5b843567ffffffffffffffff811115611628575f80fd5b611634878288016115b7565b909550935050602085013567ffffffffffffffff811115611653575f80fd5b61165f878288016115b7565b95989497509550505050565b5f8083601f84011261167b575f80fd5b50813567ffffffffffffffff811115611692575f80fd5b6020830191508360208285010111156115f8575f80fd5b5f80602083850312156116ba575f80fd5b823567ffffffffffffffff8111156116d0575f80fd5b6116dc8582860161166b565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140460208301846116e8565b5f805f6040848603121561173a575f80fd5b6117438461154e565b9250602084013567ffffffffffffffff81111561175e575f80fd5b61176a8682870161166b565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611777565b80820281158282048414176106b0576106b0611777565b5f82611801577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611856575f80fd5b81358015158114611404575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118b5576118b5611865565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118e4576118e4611865565b604052919050565b5f60c08284031280156118fd575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192157611921611865565b60405261192d8361154e565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196360a0840161154e565b60a08201529392505050565b5f6020828403121561197f575f80fd5b813567ffffffffffffffff811115611995575f80fd5b8201604081850312156119a6575f80fd5b6119ae611892565b6119b78261154e565b8152602082013567ffffffffffffffff8111156119d2575f80fd5b80830192505084601f8301126119e6575f80fd5b813567ffffffffffffffff811115611a0057611a00611865565b611a136020601f19601f840116016118bb565b818152866020838601011115611a27575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a56575f80fd5b5051919050565b602081525f825160038110611a99577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116e8565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b2857611b28611777565b506001019056fea2646970667358221220e6b93f6915e88cb71a52f2fc66651bb20e78e4fc576be1786f6530ebff60d6b264736f6c634300081a0033",F1={},k1={},P0={_format:P1,contractName:z1,sourceName:N1,abi:$1,bytecode:H1,deployedBytecode:L1,linkReferences:F1,deployedLinkReferences:k1},S1="hh-sol-artifact-1",G1="ERC20Incentive",D1="contracts/incentives/ERC20Incentive.sol",U1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],V1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612135806100855f395ff3fe608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119da565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a19565b610735565b005b6102ab6102bb366004611a58565b610742565b3480156102cb575f80fd5b506102666102da366004611a58565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a80565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a19565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611ae1565b610a83565b34801561042a575f80fd5b506102ab610439366004611b8b565b610b7d565b348015610449575f80fd5b5061045d610458366004611b8b565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a58565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b8b565b61105f565b6040516102729190611bf8565b3480156104d1575f80fd5b506102666104e0366004611a58565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c4b565b34801561057d575f80fd5b506103db61058c366004611a19565b61117b565b34801561059c575f80fd5b506102666105ab366004611c59565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611ae1565b611421565b3480156105da575f80fd5b506102666105e9366004611a80565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c59565b6114bf565b348015610627575f80fd5b506102ab610636366004611ae1565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a80565b61156f565b6102ab610685366004611a80565b6115a9565b348015610695575f80fd5b506102666106a4366004611a80565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a80565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c0a565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611cd5565b905260038054602083208084529293505f926107e79190611d15565b815481106107f7576107f7611d28565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611bf8565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f81611721565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff16333085611752565b600160025460ff1660018111156109a6576109a6611c0a565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d15565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d55565b90508060065f828254610a409190611cd5565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e81611721565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d28565b9050602002016020810190610af99190611d68565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d28565b9050602002016020810190610b2f9190611a80565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d28565b9050602002016020810190610b659190611a80565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e0e565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c0a565b03610c51578160400151610c65565b81606001518260400151610c659190611e93565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117aa565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c0a565b021790555060408301515f556060830151600655610d97336117dd565b610da683608001516001611825565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611eaa565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e5781611721565b5f610e6485870187611ee9565b90505f8160200151806020019051810190610e7f9190611fc0565b9050600160025460ff166001811115610e9a57610e9a611c0a565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611fd7565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612011565b5f600655610f56565b5f54610f1d9082611d15565b15610f34573382604051602001610ec79190611fd7565b5f54610f409082611d55565b60065f828254610f50919061203f565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611bf8565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e0e565b90505f60018260200151600181111561108957611089611c0a565b036110985781604001516110ac565b816060015182604001516110ac9190611e93565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612052565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f611866565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118b0565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c0a565b036113375760058054905f611224836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611bf8565b60405180910390a250600161141a565b60058054905f611346836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c81611721565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d28565b90506020020160208101906114999190611a80565b8585848181106114ab576114ab611d28565b905060200201356116a8565b600101611467565b5f6114c9846118b0565b949350505050565b60026114dc81611721565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d28565b90506020020160208101906115499190611a80565b85858481811061155b5761155b611d28565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f81611866565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f81611866565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f826118ed565b61075482825f611983565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611983565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611718576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661179d57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119a4575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119ea575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a29575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a53575f80fd5b919050565b5f8060408385031215611a69575f80fd5b611a7283611a30565b946020939093013593505050565b5f60208284031215611a90575f80fd5b61141a82611a30565b5f8083601f840112611aa9575f80fd5b50813567ffffffffffffffff811115611ac0575f80fd5b6020830191508360208260051b8501011115611ada575f80fd5b9250929050565b5f805f8060408587031215611af4575f80fd5b843567ffffffffffffffff811115611b0a575f80fd5b611b1687828801611a99565b909550935050602085013567ffffffffffffffff811115611b35575f80fd5b611b4187828801611a99565b95989497509550505050565b5f8083601f840112611b5d575f80fd5b50813567ffffffffffffffff811115611b74575f80fd5b602083019150836020828501011115611ada575f80fd5b5f8060208385031215611b9c575f80fd5b823567ffffffffffffffff811115611bb2575f80fd5b611bbe85828601611b4d565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c4757611c47611c0a565b9052565b6020810161072f8284611c37565b5f805f60408486031215611c6b575f80fd5b611c7484611a30565b9250602084013567ffffffffffffffff811115611c8f575f80fd5b611c9b86828701611b4d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611ca8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d2357611d23611ce8565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d6357611d63611ce8565b500490565b5f60208284031215611d78575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611dd757611dd7611d87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611d87565b604052919050565b5f60a0828403128015611e1f575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e4357611e43611d87565b604052611e4f83611a30565b8152602083013560028110611e62575f80fd5b60208201526040838101359082015260608084013590820152611e8760808401611a30565b60808201529392505050565b808202811582820484141761072f5761072f611ca8565b60808101611eb88287611c37565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611ef9575f80fd5b813567ffffffffffffffff811115611f0f575f80fd5b820160408185031215611f20575f80fd5b611f28611db4565b611f3182611a30565b8152602082013567ffffffffffffffff811115611f4c575f80fd5b80830192505084601f830112611f60575f80fd5b813567ffffffffffffffff811115611f7a57611f7a611d87565b611f8d6020601f19601f84011601611ddd565b818152866020838601011115611fa1575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fd0575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bca565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bca565b8181038181111561072f5761072f611ca8565b602081525f82516003811061206957612069611c0a565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bca565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120f8576120f8611ca8565b506001019056fea264697066735822122088443730ea9175c8d52add442a13f07026ebe487eeb655e4277c54c4a70cdd2064736f6c634300081a0033",q1="0x608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119da565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a19565b610735565b005b6102ab6102bb366004611a58565b610742565b3480156102cb575f80fd5b506102666102da366004611a58565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a80565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a19565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611ae1565b610a83565b34801561042a575f80fd5b506102ab610439366004611b8b565b610b7d565b348015610449575f80fd5b5061045d610458366004611b8b565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a58565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b8b565b61105f565b6040516102729190611bf8565b3480156104d1575f80fd5b506102666104e0366004611a58565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c4b565b34801561057d575f80fd5b506103db61058c366004611a19565b61117b565b34801561059c575f80fd5b506102666105ab366004611c59565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611ae1565b611421565b3480156105da575f80fd5b506102666105e9366004611a80565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c59565b6114bf565b348015610627575f80fd5b506102ab610636366004611ae1565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a80565b61156f565b6102ab610685366004611a80565b6115a9565b348015610695575f80fd5b506102666106a4366004611a80565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a80565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c0a565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611cd5565b905260038054602083208084529293505f926107e79190611d15565b815481106107f7576107f7611d28565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611bf8565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f81611721565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff16333085611752565b600160025460ff1660018111156109a6576109a6611c0a565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d15565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d55565b90508060065f828254610a409190611cd5565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e81611721565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d28565b9050602002016020810190610af99190611d68565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d28565b9050602002016020810190610b2f9190611a80565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d28565b9050602002016020810190610b659190611a80565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e0e565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c0a565b03610c51578160400151610c65565b81606001518260400151610c659190611e93565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117aa565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c0a565b021790555060408301515f556060830151600655610d97336117dd565b610da683608001516001611825565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611eaa565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e5781611721565b5f610e6485870187611ee9565b90505f8160200151806020019051810190610e7f9190611fc0565b9050600160025460ff166001811115610e9a57610e9a611c0a565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611fd7565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612011565b5f600655610f56565b5f54610f1d9082611d15565b15610f34573382604051602001610ec79190611fd7565b5f54610f409082611d55565b60065f828254610f50919061203f565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611bf8565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e0e565b90505f60018260200151600181111561108957611089611c0a565b036110985781604001516110ac565b816060015182604001516110ac9190611e93565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612052565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f611866565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118b0565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c0a565b036113375760058054905f611224836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611bf8565b60405180910390a250600161141a565b60058054905f611346836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c81611721565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d28565b90506020020160208101906114999190611a80565b8585848181106114ab576114ab611d28565b905060200201356116a8565b600101611467565b5f6114c9846118b0565b949350505050565b60026114dc81611721565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d28565b90506020020160208101906115499190611a80565b85858481811061155b5761155b611d28565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f81611866565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f81611866565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f826118ed565b61075482825f611983565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611983565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611718576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661179d57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119a4575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119ea575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a29575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a53575f80fd5b919050565b5f8060408385031215611a69575f80fd5b611a7283611a30565b946020939093013593505050565b5f60208284031215611a90575f80fd5b61141a82611a30565b5f8083601f840112611aa9575f80fd5b50813567ffffffffffffffff811115611ac0575f80fd5b6020830191508360208260051b8501011115611ada575f80fd5b9250929050565b5f805f8060408587031215611af4575f80fd5b843567ffffffffffffffff811115611b0a575f80fd5b611b1687828801611a99565b909550935050602085013567ffffffffffffffff811115611b35575f80fd5b611b4187828801611a99565b95989497509550505050565b5f8083601f840112611b5d575f80fd5b50813567ffffffffffffffff811115611b74575f80fd5b602083019150836020828501011115611ada575f80fd5b5f8060208385031215611b9c575f80fd5b823567ffffffffffffffff811115611bb2575f80fd5b611bbe85828601611b4d565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c4757611c47611c0a565b9052565b6020810161072f8284611c37565b5f805f60408486031215611c6b575f80fd5b611c7484611a30565b9250602084013567ffffffffffffffff811115611c8f575f80fd5b611c9b86828701611b4d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611ca8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d2357611d23611ce8565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d6357611d63611ce8565b500490565b5f60208284031215611d78575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611dd757611dd7611d87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611d87565b604052919050565b5f60a0828403128015611e1f575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e4357611e43611d87565b604052611e4f83611a30565b8152602083013560028110611e62575f80fd5b60208201526040838101359082015260608084013590820152611e8760808401611a30565b60808201529392505050565b808202811582820484141761072f5761072f611ca8565b60808101611eb88287611c37565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611ef9575f80fd5b813567ffffffffffffffff811115611f0f575f80fd5b820160408185031215611f20575f80fd5b611f28611db4565b611f3182611a30565b8152602082013567ffffffffffffffff811115611f4c575f80fd5b80830192505084601f830112611f60575f80fd5b813567ffffffffffffffff811115611f7a57611f7a611d87565b611f8d6020601f19601f84011601611ddd565b818152866020838601011115611fa1575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fd0575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bca565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bca565b8181038181111561072f5761072f611ca8565b602081525f82516003811061206957612069611c0a565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bca565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120f8576120f8611ca8565b506001019056fea264697066735822122088443730ea9175c8d52add442a13f07026ebe487eeb655e4277c54c4a70cdd2064736f6c634300081a0033",j1={},Z1={},z0={_format:S1,contractName:G1,sourceName:D1,abi:U1,bytecode:V1,deployedBytecode:q1,linkReferences:j1,deployedLinkReferences:Z1},W1="hh-sol-artifact-1",K1="ERC20VariableCriteriaIncentive",Y1="contracts/incentives/ERC20VariableCriteriaIncentive.sol",J1=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Q1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612096806100855f395ff3fe608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610703578063fe9fbb8014610716578063fee81cf414610735575f80fd5b8063ec87621c146106dc578063f04e283e146106f0575f80fd5b8063db09da12116100ac578063db09da1214610689578063dcc21361146106a8578063dcc59b6f146106c7575f80fd5b8063c884ef8314610646578063d54ad2a114610674575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105f4578063be4994f814610613578063c213f3f914610632575f80fd5b8063a4d66daf146105be578063a871ced2146105d3575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105a6575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046117f6565b610766565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da36600461183c565b6107c1565b005b6102df6102ef366004611874565b6107ce565b3480156102ff575f80fd5b5061029a61030e366004611874565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df6107e4565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be61039936600461189e565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca36600461183c565b610831565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a366004611901565b6108ed565b34801561044a575f80fd5b506102df6104593660046119ab565b6109e7565b348015610469575f80fd5b5061047d6104783660046119ab565b610cd1565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b5366004611874565b610e33565b3480156104c5575f80fd5b506104d96104d43660046119ab565b610e45565b6040516102a69190611a36565b3480156104f1575f80fd5b5061029a610500366004611874565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610f2e565b34801561052e575f80fd5b506102be60065481565b6102df610f67565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105969260ff908116929190811690610100900473ffffffffffffffffffffffffffffffffffffffff1684565b6040516102a69493929190611a89565b3480156105b1575f80fd5b50638b78c6d819546103fb565b3480156105c9575f80fd5b506102be60025481565b3480156105de575f80fd5b506105e7610f7a565b6040516102a69190611b11565b3480156105ff575f80fd5b5061029a61060e366004611b1f565b611014565b34801561061e575f80fd5b506102df61062d366004611901565b611245565b34801561063d575f80fd5b506006546102be565b348015610651575f80fd5b5061029a61066036600461189e565b60016020525f908152604090205460ff1681565b34801561067f575f80fd5b506102be60055481565b348015610694575f80fd5b5061029a6106a3366004611b1f565b6112e3565b3480156106b3575f80fd5b506102df6106c2366004611901565b6112f9565b3480156106d2575f80fd5b506102be60045481565b3480156106e7575f80fd5b506102be600181565b6102df6106fe36600461189e565b611397565b6102df61071136600461189e565b6113d1565b348015610721575f80fd5b5061029a61073036600461189e565b6113f7565b348015610740575f80fd5b506102be61074f36600461189e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611456565b92915050565b6107cb33826114ab565b50565b6107d66114b6565b6107e082826114d0565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161083c816114dc565b815f03610875576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035461089a9073ffffffffffffffffffffffffffffffffffffffff1633308561150d565b8160025f8282546108ab9190611b9d565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026108f8816114dc565b838214610931576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df575f84848381811061094e5761094e611bb0565b90506020020160208101906109639190611bdd565b90508015156001036109a5576109a087878481811061098457610984611bb0565b9050602002016020810190610999919061189e565b60016114d0565b6109d6565b6109d68787848181106109ba576109ba611bb0565b90506020020160208101906109cf919061189e565b60016114ab565b50600101610933565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a385760018160011c14303b10610a2f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a4683850185611c98565b805160208201516040830151606084015160808501519495509293919290915f839003610a9f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ac073ffffffffffffffffffffffffffffffffffffffff871630611565565b905083811015610b295786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bba57610bba611a48565b02179055506020820151600182015560408201516002909101805460609093015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090931660ff90921691909117919091179055610c3133611598565b610c3c3360016115e0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610c889493929190611d6f565b60405180910390a2505050505050508015610ccc576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cde816114dc565b5f610ceb85870187611e43565b90505f8160200151806020019051810190610d069190611ec2565b90508060025f828254610d199190611ed9565b90915550508151600354610d469173ffffffffffffffffffffffffffffffffffffffff9091169083611621565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e0491611a36565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610e3b6114b6565b6107e082826114ab565b60605f80610e5584860186611eec565b9250509150604051806080016040528060016002811115610e7857610e78611a48565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610ed79151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f159190602001611f1e565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f6f6114b6565b610f785f61166a565b565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810190915260078054829060ff166001811115610fc257610fc2611a48565b6001811115610fd357610fd3611a48565b81526001820154602082015260029091015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff16606090910152919050565b5f61101d6114b6565b5f61102a83850185611f94565b90505f81602001518060200190518101906110459190611ec2565b90505f6110556002546005541090565b61108b576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361109a5750806110bd565b670de0b6b3a7640000825f546110b09190612011565b6110ba9190612028565b90505b600654158015906110cf575060065481115b156110d957506006545b600254816005546110ea9190611b9d565b1115611122576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111339190611b9d565b92505081905550600160045f82825461114c9190611b9d565b90915550506003546111759073ffffffffffffffffffffffffffffffffffffffff168883611621565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261123091611a36565b60405180910390a25060019695505050505050565b6002611250816114dc565b838214611289576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df576112db8686838181106112a8576112a8611bb0565b90506020020160208101906112bd919061189e565b8585848181106112cf576112cf611bb0565b905060200201356114d0565b60010161128b565b5f6112f16002546005541090565b949350505050565b6002611304816114dc565b83821461133d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df5761138f86868381811061135c5761135c611bb0565b9050602002016020810190611371919061189e565b85858481811061138357611383611bb0565b905060200201356114ab565b60010161133f565b61139f6114b6565b63389a75e1600c52805f526020600c2080544211156113c557636f5e88185f526004601cfd5b5f90556107cb8161166a565b6113d96114b6565b8060601b6113ee57637448fbae5f526004601cfd5b6107cb8161166a565b5f8173ffffffffffffffffffffffffffffffffffffffff1661141c638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107bb5750638b78c6d8600c9081525f839052602090205460031615156107bb565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107bb57506107bb826116b4565b6107e082825f611709565b638b78c6d819543314610f78576382b429005f526004601cfd5b6107e082826001611709565b638b78c6d8195433146107cb57638b78c6d8600c52335f52806020600c2054166107cb576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661155857637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611661576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611760565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107bb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107bb565b5f60208284031215611806575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611835575f80fd5b9392505050565b5f6020828403121561184c575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107cb575f80fd5b5f8060408385031215611885575f80fd5b823561189081611853565b946020939093013593505050565b5f602082840312156118ae575f80fd5b813561183581611853565b5f8083601f8401126118c9575f80fd5b50813567ffffffffffffffff8111156118e0575f80fd5b6020830191508360208260051b85010111156118fa575f80fd5b9250929050565b5f805f8060408587031215611914575f80fd5b843567ffffffffffffffff81111561192a575f80fd5b611936878288016118b9565b909550935050602085013567ffffffffffffffff811115611955575f80fd5b611961878288016118b9565b95989497509550505050565b5f8083601f84011261197d575f80fd5b50813567ffffffffffffffff811115611994575f80fd5b6020830191508360208285010111156118fa575f80fd5b5f80602083850312156119bc575f80fd5b823567ffffffffffffffff8111156119d2575f80fd5b6119de8582860161196d565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61183560208301846119ea565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611a8557611a85611a48565b9052565b60808101611a978287611a75565b84602083015260ff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b611ad6828251611a75565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301525050565b608081016107bb8284611acb565b5f805f60408486031215611b31575f80fd5b8335611b3c81611853565b9250602084013567ffffffffffffffff811115611b57575f80fd5b611b638682870161196d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107bb576107bb611b70565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bed575f80fd5b81358015158114611835575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b60405290565b6040516080810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b6040805190810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b5f81830361010081128015611cab575f80fd5b50611cb4611c29565b8335611cbf81611853565b815260208481013590820152604080850135908201526060808501359082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611d0e575f80fd5b611d16611c52565b9150608084013560028110611d29575f80fd5b825260a0840135602083015260c084013560ff81168114611d48575f80fd5b604083015260e0840135611d5b81611853565b606083015260808101919091529392505050565b848152602081018490526040810183905260e08101611d916060830184611acb565b95945050505050565b5f82601f830112611da9575f80fd5b813567ffffffffffffffff811115611dc357611dc3611bfc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611e1057611e10611bfc565b604052818152838201602001851015611e27575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611e53575f80fd5b813567ffffffffffffffff811115611e69575f80fd5b820160408185031215611e7a575f80fd5b611e82611c75565b8135611e8d81611853565b8152602082013567ffffffffffffffff811115611ea8575f80fd5b611eb486828501611d9a565b602083015250949350505050565b5f60208284031215611ed2575f80fd5b5051919050565b818103818111156107bb576107bb611b70565b5f805f60608486031215611efe575f80fd5b8335611f0981611853565b95602085013595506040909401359392505050565b602081525f825160038110611f3557611f35611a48565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526112f160a08401826119ea565b5f60208284031215611fa4575f80fd5b813567ffffffffffffffff811115611fba575f80fd5b820160408185031215611fcb575f80fd5b611fd3611c75565b813567ffffffffffffffff811115611fe9575f80fd5b611ff586828501611d9a565b825250602082013567ffffffffffffffff811115611ea8575f80fd5b80820281158282048414176107bb576107bb611b70565b5f8261205b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220a054d83b4648d8288f47fd626c174e69093fb97c77e64305e6a84b53711a253064736f6c634300081a0033",X1="0x608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610703578063fe9fbb8014610716578063fee81cf414610735575f80fd5b8063ec87621c146106dc578063f04e283e146106f0575f80fd5b8063db09da12116100ac578063db09da1214610689578063dcc21361146106a8578063dcc59b6f146106c7575f80fd5b8063c884ef8314610646578063d54ad2a114610674575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105f4578063be4994f814610613578063c213f3f914610632575f80fd5b8063a4d66daf146105be578063a871ced2146105d3575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105a6575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046117f6565b610766565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da36600461183c565b6107c1565b005b6102df6102ef366004611874565b6107ce565b3480156102ff575f80fd5b5061029a61030e366004611874565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df6107e4565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be61039936600461189e565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca36600461183c565b610831565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a366004611901565b6108ed565b34801561044a575f80fd5b506102df6104593660046119ab565b6109e7565b348015610469575f80fd5b5061047d6104783660046119ab565b610cd1565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b5366004611874565b610e33565b3480156104c5575f80fd5b506104d96104d43660046119ab565b610e45565b6040516102a69190611a36565b3480156104f1575f80fd5b5061029a610500366004611874565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610f2e565b34801561052e575f80fd5b506102be60065481565b6102df610f67565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105969260ff908116929190811690610100900473ffffffffffffffffffffffffffffffffffffffff1684565b6040516102a69493929190611a89565b3480156105b1575f80fd5b50638b78c6d819546103fb565b3480156105c9575f80fd5b506102be60025481565b3480156105de575f80fd5b506105e7610f7a565b6040516102a69190611b11565b3480156105ff575f80fd5b5061029a61060e366004611b1f565b611014565b34801561061e575f80fd5b506102df61062d366004611901565b611245565b34801561063d575f80fd5b506006546102be565b348015610651575f80fd5b5061029a61066036600461189e565b60016020525f908152604090205460ff1681565b34801561067f575f80fd5b506102be60055481565b348015610694575f80fd5b5061029a6106a3366004611b1f565b6112e3565b3480156106b3575f80fd5b506102df6106c2366004611901565b6112f9565b3480156106d2575f80fd5b506102be60045481565b3480156106e7575f80fd5b506102be600181565b6102df6106fe36600461189e565b611397565b6102df61071136600461189e565b6113d1565b348015610721575f80fd5b5061029a61073036600461189e565b6113f7565b348015610740575f80fd5b506102be61074f36600461189e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611456565b92915050565b6107cb33826114ab565b50565b6107d66114b6565b6107e082826114d0565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161083c816114dc565b815f03610875576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035461089a9073ffffffffffffffffffffffffffffffffffffffff1633308561150d565b8160025f8282546108ab9190611b9d565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026108f8816114dc565b838214610931576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df575f84848381811061094e5761094e611bb0565b90506020020160208101906109639190611bdd565b90508015156001036109a5576109a087878481811061098457610984611bb0565b9050602002016020810190610999919061189e565b60016114d0565b6109d6565b6109d68787848181106109ba576109ba611bb0565b90506020020160208101906109cf919061189e565b60016114ab565b50600101610933565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a385760018160011c14303b10610a2f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a4683850185611c98565b805160208201516040830151606084015160808501519495509293919290915f839003610a9f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ac073ffffffffffffffffffffffffffffffffffffffff871630611565565b905083811015610b295786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bba57610bba611a48565b02179055506020820151600182015560408201516002909101805460609093015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090931660ff90921691909117919091179055610c3133611598565b610c3c3360016115e0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610c889493929190611d6f565b60405180910390a2505050505050508015610ccc576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cde816114dc565b5f610ceb85870187611e43565b90505f8160200151806020019051810190610d069190611ec2565b90508060025f828254610d199190611ed9565b90915550508151600354610d469173ffffffffffffffffffffffffffffffffffffffff9091169083611621565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e0491611a36565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610e3b6114b6565b6107e082826114ab565b60605f80610e5584860186611eec565b9250509150604051806080016040528060016002811115610e7857610e78611a48565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610ed79151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f159190602001611f1e565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f6f6114b6565b610f785f61166a565b565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810190915260078054829060ff166001811115610fc257610fc2611a48565b6001811115610fd357610fd3611a48565b81526001820154602082015260029091015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff16606090910152919050565b5f61101d6114b6565b5f61102a83850185611f94565b90505f81602001518060200190518101906110459190611ec2565b90505f6110556002546005541090565b61108b576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361109a5750806110bd565b670de0b6b3a7640000825f546110b09190612011565b6110ba9190612028565b90505b600654158015906110cf575060065481115b156110d957506006545b600254816005546110ea9190611b9d565b1115611122576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111339190611b9d565b92505081905550600160045f82825461114c9190611b9d565b90915550506003546111759073ffffffffffffffffffffffffffffffffffffffff168883611621565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261123091611a36565b60405180910390a25060019695505050505050565b6002611250816114dc565b838214611289576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df576112db8686838181106112a8576112a8611bb0565b90506020020160208101906112bd919061189e565b8585848181106112cf576112cf611bb0565b905060200201356114d0565b60010161128b565b5f6112f16002546005541090565b949350505050565b6002611304816114dc565b83821461133d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df5761138f86868381811061135c5761135c611bb0565b9050602002016020810190611371919061189e565b85858481811061138357611383611bb0565b905060200201356114ab565b60010161133f565b61139f6114b6565b63389a75e1600c52805f526020600c2080544211156113c557636f5e88185f526004601cfd5b5f90556107cb8161166a565b6113d96114b6565b8060601b6113ee57637448fbae5f526004601cfd5b6107cb8161166a565b5f8173ffffffffffffffffffffffffffffffffffffffff1661141c638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107bb5750638b78c6d8600c9081525f839052602090205460031615156107bb565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107bb57506107bb826116b4565b6107e082825f611709565b638b78c6d819543314610f78576382b429005f526004601cfd5b6107e082826001611709565b638b78c6d8195433146107cb57638b78c6d8600c52335f52806020600c2054166107cb576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661155857637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611661576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611760565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107bb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107bb565b5f60208284031215611806575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611835575f80fd5b9392505050565b5f6020828403121561184c575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107cb575f80fd5b5f8060408385031215611885575f80fd5b823561189081611853565b946020939093013593505050565b5f602082840312156118ae575f80fd5b813561183581611853565b5f8083601f8401126118c9575f80fd5b50813567ffffffffffffffff8111156118e0575f80fd5b6020830191508360208260051b85010111156118fa575f80fd5b9250929050565b5f805f8060408587031215611914575f80fd5b843567ffffffffffffffff81111561192a575f80fd5b611936878288016118b9565b909550935050602085013567ffffffffffffffff811115611955575f80fd5b611961878288016118b9565b95989497509550505050565b5f8083601f84011261197d575f80fd5b50813567ffffffffffffffff811115611994575f80fd5b6020830191508360208285010111156118fa575f80fd5b5f80602083850312156119bc575f80fd5b823567ffffffffffffffff8111156119d2575f80fd5b6119de8582860161196d565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61183560208301846119ea565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611a8557611a85611a48565b9052565b60808101611a978287611a75565b84602083015260ff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b611ad6828251611a75565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301525050565b608081016107bb8284611acb565b5f805f60408486031215611b31575f80fd5b8335611b3c81611853565b9250602084013567ffffffffffffffff811115611b57575f80fd5b611b638682870161196d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107bb576107bb611b70565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bed575f80fd5b81358015158114611835575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b60405290565b6040516080810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b6040805190810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b5f81830361010081128015611cab575f80fd5b50611cb4611c29565b8335611cbf81611853565b815260208481013590820152604080850135908201526060808501359082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611d0e575f80fd5b611d16611c52565b9150608084013560028110611d29575f80fd5b825260a0840135602083015260c084013560ff81168114611d48575f80fd5b604083015260e0840135611d5b81611853565b606083015260808101919091529392505050565b848152602081018490526040810183905260e08101611d916060830184611acb565b95945050505050565b5f82601f830112611da9575f80fd5b813567ffffffffffffffff811115611dc357611dc3611bfc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611e1057611e10611bfc565b604052818152838201602001851015611e27575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611e53575f80fd5b813567ffffffffffffffff811115611e69575f80fd5b820160408185031215611e7a575f80fd5b611e82611c75565b8135611e8d81611853565b8152602082013567ffffffffffffffff811115611ea8575f80fd5b611eb486828501611d9a565b602083015250949350505050565b5f60208284031215611ed2575f80fd5b5051919050565b818103818111156107bb576107bb611b70565b5f805f60608486031215611efe575f80fd5b8335611f0981611853565b95602085013595506040909401359392505050565b602081525f825160038110611f3557611f35611a48565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526112f160a08401826119ea565b5f60208284031215611fa4575f80fd5b813567ffffffffffffffff811115611fba575f80fd5b820160408185031215611fcb575f80fd5b611fd3611c75565b813567ffffffffffffffff811115611fe9575f80fd5b611ff586828501611d9a565b825250602082013567ffffffffffffffff811115611ea8575f80fd5b80820281158282048414176107bb576107bb611b70565b5f8261205b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220a054d83b4648d8288f47fd626c174e69093fb97c77e64305e6a84b53711a253064736f6c634300081a0033",f5={},e5={},N0={_format:W1,contractName:K1,sourceName:Y1,abi:J1,bytecode:Q1,deployedBytecode:X1,linkReferences:f5,deployedLinkReferences:e5},b5="hh-sol-artifact-1",a5="ERC20VariableIncentive",t5="contracts/incentives/ERC20VariableIncentive.sol",d5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],n5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611c6d806100855f395ff3fe60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d366004611527565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b61027761027236600461156d565b6106bd565b005b6102776102873660046115a5565b6106ca565b348015610297575f80fd5b506102326102a63660046115a5565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115cf565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b5061027761036236600461156d565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611632565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116dc565b6108e3565b348015610401575f80fd5b506104156104103660046116dc565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115a5565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116dc565b610c81565b60405161023e9190611767565b348015610489575f80fd5b506102326104983660046115a5565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e366004611779565b610db6565b34801561052e575f80fd5b5061027761053d366004611632565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115cf565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f366004611779565b611069565b3480156105af575f80fd5b506102776105be366004611632565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115cf565b61111d565b61027761060d3660046115cf565b611157565b34801561061d575f80fd5b5061023261062c3660046115cf565b61117d565b34801561063c575f80fd5b5061025661064b3660046115cf565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a791906117f7565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61180a565b905060200201602081019061085f9190611837565b90508015156001036108a15761089c8787848181106108805761088061180a565b905060200201602081019061089591906115cf565b6001611256565b6108d2565b6108d28787848181106108b6576108b661180a565b90506020020160208101906108cb91906115cf565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118ac565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112eb565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c3361131e565b6060850151610a7c816001611366565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119c8565b90505f8160200151806020019051810190610b429190611a47565b90508060025f828254610b559190611a5e565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113a7565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4091611767565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a71565b9250509150604051806080016040528060016002811115610cb457610cb4611aa3565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ad0565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f6113f0565b565b5f610dbf61123c565b5f610dcc83850185611b6b565b90505f8160200151806020019051810190610de79190611a47565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611be8565b610e5c9190611bff565b90505b60025481600554610e7091906117f7565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb991906117f7565b92505081905550600160045f828254610ed291906117f7565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113a7565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb691611767565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61180a565b905060200201602081019061104391906115cf565b8585848181106110555761105561180a565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261180a565b90506020020160208101906110f791906115cf565b8585848181106111095761110961180a565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c7816113f0565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c7816113f0565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261143a565b6106dc82825f6114d0565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114d0565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166112de57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166113e7576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c208054838117836114f1575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611537575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611566575f80fd5b9392505050565b5f6020828403121561157d575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115b6575f80fd5b82356115c181611584565b946020939093013593505050565b5f602082840312156115df575f80fd5b813561156681611584565b5f8083601f8401126115fa575f80fd5b50813567ffffffffffffffff811115611611575f80fd5b6020830191508360208260051b850101111561162b575f80fd5b9250929050565b5f805f8060408587031215611645575f80fd5b843567ffffffffffffffff81111561165b575f80fd5b611667878288016115ea565b909550935050602085013567ffffffffffffffff811115611686575f80fd5b611692878288016115ea565b95989497509550505050565b5f8083601f8401126116ae575f80fd5b50813567ffffffffffffffff8111156116c5575f80fd5b60208301915083602082850101111561162b575f80fd5b5f80602083850312156116ed575f80fd5b823567ffffffffffffffff811115611703575f80fd5b61170f8582860161169e565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611566602083018461171b565b5f805f6040848603121561178b575f80fd5b833561179681611584565b9250602084013567ffffffffffffffff8111156117b1575f80fd5b6117bd8682870161169e565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611847575f80fd5b81358015158114611566575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118a6576118a6611856565b60405290565b5f60808284031280156118bd575f80fd5b506040516080810167ffffffffffffffff811182821017156118e1576118e1611856565b60405282356118ef81611584565b81526020838101359082015260408084013590820152606083013561191381611584565b60608201529392505050565b5f82601f83011261192e575f80fd5b813567ffffffffffffffff81111561194857611948611856565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561199557611995611856565b6040528181528382016020018510156119ac575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119d8575f80fd5b813567ffffffffffffffff8111156119ee575f80fd5b8201604081850312156119ff575f80fd5b611a07611883565b8135611a1281611584565b8152602082013567ffffffffffffffff811115611a2d575f80fd5b611a398682850161191f565b602083015250949350505050565b5f60208284031215611a57575f80fd5b5051919050565b818103818111156106b7576106b76117ca565b5f805f60608486031215611a83575f80fd5b8335611a8e81611584565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b0c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261171b565b5f60208284031215611b7b575f80fd5b813567ffffffffffffffff811115611b91575f80fd5b820160408185031215611ba2575f80fd5b611baa611883565b813567ffffffffffffffff811115611bc0575f80fd5b611bcc8682850161191f565b825250602082013567ffffffffffffffff811115611a2d575f80fd5b80820281158282048414176106b7576106b76117ca565b5f82611c32577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220359b85089605758f3c64773e6f7fe7639dfc5ac1adb7a4578b2b6a3ca7f4a83864736f6c634300081a0033",c5="0x60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d366004611527565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b61027761027236600461156d565b6106bd565b005b6102776102873660046115a5565b6106ca565b348015610297575f80fd5b506102326102a63660046115a5565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115cf565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b5061027761036236600461156d565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611632565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116dc565b6108e3565b348015610401575f80fd5b506104156104103660046116dc565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115a5565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116dc565b610c81565b60405161023e9190611767565b348015610489575f80fd5b506102326104983660046115a5565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e366004611779565b610db6565b34801561052e575f80fd5b5061027761053d366004611632565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115cf565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f366004611779565b611069565b3480156105af575f80fd5b506102776105be366004611632565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115cf565b61111d565b61027761060d3660046115cf565b611157565b34801561061d575f80fd5b5061023261062c3660046115cf565b61117d565b34801561063c575f80fd5b5061025661064b3660046115cf565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a791906117f7565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61180a565b905060200201602081019061085f9190611837565b90508015156001036108a15761089c8787848181106108805761088061180a565b905060200201602081019061089591906115cf565b6001611256565b6108d2565b6108d28787848181106108b6576108b661180a565b90506020020160208101906108cb91906115cf565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118ac565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112eb565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c3361131e565b6060850151610a7c816001611366565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119c8565b90505f8160200151806020019051810190610b429190611a47565b90508060025f828254610b559190611a5e565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113a7565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4091611767565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a71565b9250509150604051806080016040528060016002811115610cb457610cb4611aa3565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ad0565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f6113f0565b565b5f610dbf61123c565b5f610dcc83850185611b6b565b90505f8160200151806020019051810190610de79190611a47565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611be8565b610e5c9190611bff565b90505b60025481600554610e7091906117f7565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb991906117f7565b92505081905550600160045f828254610ed291906117f7565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113a7565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb691611767565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61180a565b905060200201602081019061104391906115cf565b8585848181106110555761105561180a565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261180a565b90506020020160208101906110f791906115cf565b8585848181106111095761110961180a565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c7816113f0565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c7816113f0565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261143a565b6106dc82825f6114d0565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114d0565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166112de57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166113e7576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c208054838117836114f1575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611537575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611566575f80fd5b9392505050565b5f6020828403121561157d575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115b6575f80fd5b82356115c181611584565b946020939093013593505050565b5f602082840312156115df575f80fd5b813561156681611584565b5f8083601f8401126115fa575f80fd5b50813567ffffffffffffffff811115611611575f80fd5b6020830191508360208260051b850101111561162b575f80fd5b9250929050565b5f805f8060408587031215611645575f80fd5b843567ffffffffffffffff81111561165b575f80fd5b611667878288016115ea565b909550935050602085013567ffffffffffffffff811115611686575f80fd5b611692878288016115ea565b95989497509550505050565b5f8083601f8401126116ae575f80fd5b50813567ffffffffffffffff8111156116c5575f80fd5b60208301915083602082850101111561162b575f80fd5b5f80602083850312156116ed575f80fd5b823567ffffffffffffffff811115611703575f80fd5b61170f8582860161169e565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611566602083018461171b565b5f805f6040848603121561178b575f80fd5b833561179681611584565b9250602084013567ffffffffffffffff8111156117b1575f80fd5b6117bd8682870161169e565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611847575f80fd5b81358015158114611566575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118a6576118a6611856565b60405290565b5f60808284031280156118bd575f80fd5b506040516080810167ffffffffffffffff811182821017156118e1576118e1611856565b60405282356118ef81611584565b81526020838101359082015260408084013590820152606083013561191381611584565b60608201529392505050565b5f82601f83011261192e575f80fd5b813567ffffffffffffffff81111561194857611948611856565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561199557611995611856565b6040528181528382016020018510156119ac575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119d8575f80fd5b813567ffffffffffffffff8111156119ee575f80fd5b8201604081850312156119ff575f80fd5b611a07611883565b8135611a1281611584565b8152602082013567ffffffffffffffff811115611a2d575f80fd5b611a398682850161191f565b602083015250949350505050565b5f60208284031215611a57575f80fd5b5051919050565b818103818111156106b7576106b76117ca565b5f805f60608486031215611a83575f80fd5b8335611a8e81611584565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b0c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261171b565b5f60208284031215611b7b575f80fd5b813567ffffffffffffffff811115611b91575f80fd5b820160408185031215611ba2575f80fd5b611baa611883565b813567ffffffffffffffff811115611bc0575f80fd5b611bcc8682850161191f565b825250602082013567ffffffffffffffff811115611a2d575f80fd5b80820281158282048414176106b7576106b76117ca565b5f82611c32577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220359b85089605758f3c64773e6f7fe7639dfc5ac1adb7a4578b2b6a3ca7f4a83864736f6c634300081a0033",i5={},s5={},$0={_format:b5,contractName:a5,sourceName:t5,abi:d5,bytecode:n5,deployedBytecode:c5,linkReferences:i5,deployedLinkReferences:s5},r5="hh-sol-artifact-1",p5="ERC1155Incentive",o5="contracts/incentives/ERC1155Incentive.sol",u5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],y5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612419806100855f395ff3fe60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a979a52950ce832d567a08c8391cfd3c73e1343604124b34b12aee95c4cb6f6f64736f6c634300081a0033",l5="0x60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a979a52950ce832d567a08c8391cfd3c73e1343604124b34b12aee95c4cb6f6f64736f6c634300081a0033",m5={},T5={},H0={_format:r5,contractName:p5,sourceName:o5,abi:u5,bytecode:y5,deployedBytecode:l5,linkReferences:m5,deployedLinkReferences:T5},h5="hh-sol-artifact-1",w5="PointsIncentive",v5="contracts/incentives/PointsIncentive.sol",g5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],M5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6113ca806100855f395ff3fe6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea264697066735822122079bb08e80a9bd9117e174b7d6f5a63383597f9fcb4a121e18bc1685a513d4f3f64736f6c634300081a0033",x5="0x6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea264697066735822122079bb08e80a9bd9117e174b7d6f5a63383597f9fcb4a121e18bc1685a513d4f3f64736f6c634300081a0033",I5={},A5={},L0={_format:h5,contractName:w5,sourceName:v5,abi:g5,bytecode:M5,deployedBytecode:x5,linkReferences:I5,deployedLinkReferences:A5},E5="hh-sol-artifact-1",R5="LimitedSignerValidator",O5="contracts/validators/LimitedSignerValidator.sol",C5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],B5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b610096565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b8160c01c808260011c14610091578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e0516101005161194d6100c45f395f50505f50505f50505f50505f505061194d5ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b36600461110d565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461116d565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b506101946102003660046111a3565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b366004611202565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112ac565b6105c9565b6101aa61075e565b6101606102653660046112eb565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611350565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b7565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611350565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115c0565b610917565b6101aa61037b366004611350565b6109aa565b6101aa61038e366004611350565b6109e7565b34801561039e575f80fd5b506101946103ad366004611350565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611628565b905060200201602081019061053f9190611655565b5f8087878581811061055357610553611628565b90506020020160208101906105689190611350565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a85870187611684565b925092509250610652835f8151811061064557610645611628565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611628565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b2591611754565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb48385018561178c565b90505f815f0151806020019051810190610bce919061184c565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f5a565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611027565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f831561047957604051835f5260208301516040526040835103610ec9576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610ec757505f606052604052506001610479565b505b6041835103610f0c5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610f0a57505f606052604052506001610479565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b5f805f80610fcc604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f6020828403121561111d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f6060848603121561117f575f80fd5b833592506020840135915060408401356111988161114c565b809150509250925092565b5f602082840312156111b3575f80fd5b5035919050565b5f8083601f8401126111ca575f80fd5b50813567ffffffffffffffff8111156111e1575f80fd5b6020830191508360208260051b85010111156111fb575f80fd5b9250929050565b5f805f8060408587031215611215575f80fd5b843567ffffffffffffffff81111561122b575f80fd5b611237878288016111ba565b909550935050602085013567ffffffffffffffff811115611256575f80fd5b611262878288016111ba565b95989497509550505050565b5f8083601f84011261127e575f80fd5b50813567ffffffffffffffff811115611295575f80fd5b6020830191508360208285010111156111fb575f80fd5b5f80602083850312156112bd575f80fd5b823567ffffffffffffffff8111156112d3575f80fd5b6112df8582860161126e565b90969095509350505050565b5f805f805f608086880312156112ff575f80fd5b853594506020860135935060408601356113188161114c565b9250606086013567ffffffffffffffff811115611333575f80fd5b61133f8882890161126e565b969995985093965092949392505050565b5f60208284031215611360575f80fd5b81356104798161114c565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113f160e083018961136b565b8281036040840152611403818961136b565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611465578351835260209384019390920191600101611447565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d4576114d4611484565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152157611521611484565b604052919050565b5f67ffffffffffffffff82111561154257611542611484565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261157d575f80fd5b813561159061158b82611529565b6114da565b8181528460208386010111156115a4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115d3575f80fd5b8435935060208501356115e581611476565b925060408501356115f58161114c565b9150606085013567ffffffffffffffff811115611610575f80fd5b61161c8782880161156e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611665575f80fd5b81358015158114610479575f80fd5b803561167f8161114c565b919050565b5f805f60608486031215611696575f80fd5b833567ffffffffffffffff8111156116ac575f80fd5b8401601f810186136116bc575f80fd5b803567ffffffffffffffff8111156116d6576116d6611484565b8060051b6116e6602082016114da565b91825260208184018101929081019089841115611701575f80fd5b6020850194505b8385101561172f578435925061171d8361114c565b82825260209485019490910190611708565b809750505050505061174360208501611674565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6020828403121561179c575f80fd5b813567ffffffffffffffff8111156117b2575f80fd5b8201604081850312156117c3575f80fd5b6040805190810167ffffffffffffffff811182821017156117e6576117e6611484565b604052813567ffffffffffffffff8111156117ff575f80fd5b61180b8682850161156e565b825250602082013567ffffffffffffffff811115611827575f80fd5b6118338682850161156e565b602083015250949350505050565b805161167f81611476565b5f6020828403121561185c575f80fd5b815167ffffffffffffffff811115611872575f80fd5b820160608185031215611883575f80fd5b61188b6114b1565b81516118968161114c565b8152602082015167ffffffffffffffff8111156118b1575f80fd5b8201601f810186136118c1575f80fd5b80516118cf61158b82611529565b8181528760208385010111156118e3575f80fd5b8160208401602083015e5f6020838301015280602085015250505061190a60408301611841565b604082015294935050505056fea264697066735822122063c3658c9a3036ea162ceac551ee8d1dfba428fee8f20bcb409727cb88030d5a64736f6c634300081a0033",_5="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b36600461110d565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461116d565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b506101946102003660046111a3565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b366004611202565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112ac565b6105c9565b6101aa61075e565b6101606102653660046112eb565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611350565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b7565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611350565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115c0565b610917565b6101aa61037b366004611350565b6109aa565b6101aa61038e366004611350565b6109e7565b34801561039e575f80fd5b506101946103ad366004611350565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611628565b905060200201602081019061053f9190611655565b5f8087878581811061055357610553611628565b90506020020160208101906105689190611350565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a85870187611684565b925092509250610652835f8151811061064557610645611628565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611628565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b2591611754565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb48385018561178c565b90505f815f0151806020019051810190610bce919061184c565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f5a565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611027565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f831561047957604051835f5260208301516040526040835103610ec9576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610ec757505f606052604052506001610479565b505b6041835103610f0c5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610f0a57505f606052604052506001610479565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b5f805f80610fcc604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f6020828403121561111d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f6060848603121561117f575f80fd5b833592506020840135915060408401356111988161114c565b809150509250925092565b5f602082840312156111b3575f80fd5b5035919050565b5f8083601f8401126111ca575f80fd5b50813567ffffffffffffffff8111156111e1575f80fd5b6020830191508360208260051b85010111156111fb575f80fd5b9250929050565b5f805f8060408587031215611215575f80fd5b843567ffffffffffffffff81111561122b575f80fd5b611237878288016111ba565b909550935050602085013567ffffffffffffffff811115611256575f80fd5b611262878288016111ba565b95989497509550505050565b5f8083601f84011261127e575f80fd5b50813567ffffffffffffffff811115611295575f80fd5b6020830191508360208285010111156111fb575f80fd5b5f80602083850312156112bd575f80fd5b823567ffffffffffffffff8111156112d3575f80fd5b6112df8582860161126e565b90969095509350505050565b5f805f805f608086880312156112ff575f80fd5b853594506020860135935060408601356113188161114c565b9250606086013567ffffffffffffffff811115611333575f80fd5b61133f8882890161126e565b969995985093965092949392505050565b5f60208284031215611360575f80fd5b81356104798161114c565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113f160e083018961136b565b8281036040840152611403818961136b565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611465578351835260209384019390920191600101611447565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d4576114d4611484565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152157611521611484565b604052919050565b5f67ffffffffffffffff82111561154257611542611484565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261157d575f80fd5b813561159061158b82611529565b6114da565b8181528460208386010111156115a4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115d3575f80fd5b8435935060208501356115e581611476565b925060408501356115f58161114c565b9150606085013567ffffffffffffffff811115611610575f80fd5b61161c8782880161156e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611665575f80fd5b81358015158114610479575f80fd5b803561167f8161114c565b919050565b5f805f60608486031215611696575f80fd5b833567ffffffffffffffff8111156116ac575f80fd5b8401601f810186136116bc575f80fd5b803567ffffffffffffffff8111156116d6576116d6611484565b8060051b6116e6602082016114da565b91825260208184018101929081019089841115611701575f80fd5b6020850194505b8385101561172f578435925061171d8361114c565b82825260209485019490910190611708565b809750505050505061174360208501611674565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6020828403121561179c575f80fd5b813567ffffffffffffffff8111156117b2575f80fd5b8201604081850312156117c3575f80fd5b6040805190810167ffffffffffffffff811182821017156117e6576117e6611484565b604052813567ffffffffffffffff8111156117ff575f80fd5b61180b8682850161156e565b825250602082013567ffffffffffffffff811115611827575f80fd5b6118338682850161156e565b602083015250949350505050565b805161167f81611476565b5f6020828403121561185c575f80fd5b815167ffffffffffffffff811115611872575f80fd5b820160608185031215611883575f80fd5b61188b6114b1565b81516118968161114c565b8152602082015167ffffffffffffffff8111156118b1575f80fd5b8201601f810186136118c1575f80fd5b80516118cf61158b82611529565b8181528760208385010111156118e3575f80fd5b8160208401602083015e5f6020838301015280602085015250505061190a60408301611841565b604082015294935050505056fea264697066735822122063c3658c9a3036ea162ceac551ee8d1dfba428fee8f20bcb409727cb88030d5a64736f6c634300081a0033",P5={},z5={},F0={_format:E5,contractName:R5,sourceName:O5,abi:C5,bytecode:B5,deployedBytecode:_5,linkReferences:P5,deployedLinkReferences:z5},N5="hh-sol-artifact-1",$5="SignerValidator",H5="contracts/validators/SignerValidator.sol",L5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],F5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b610096565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b8160c01c808260011c14610091578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e0516101005161167d6100c45f395f50505f50505f50505f50505f505061167d5ff3fe6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ecb565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f52565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ffc565b6104bb565b61012f61068c565b6101126101bf36600461105c565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110c1565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611128565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110c1565b61090c565b34801561029e575f80fd5b506102b26102ad366004611331565b61095b565b60405190815260200161011e565b61012f6102ce3660046110c1565b6109ee565b61012f6102e13660046110c1565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110c1565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611399565b905060200201602081019061043191906113c6565b5f8087878581811061044557610445611399565b905060200201602081019061045a91906110c1565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113f5565b91509150610541825f8151811061053457610534611399565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611399565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114bc565b90505f815f015180602001905181019061073f919061157c565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd7565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d3c565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd7565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d68565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f8315610cd057604051835f5260208301516040526040835103610c45576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610c4357505f606052604052506001610cd0565b505b6041835103610c885760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610c8657505f606052604052506001610cd0565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d45610dfe565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e70604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610edb575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cd0575f80fd5b5f8083601f840112610f1a575f80fd5b50813567ffffffffffffffff811115610f31575f80fd5b6020830191508360208260051b8501011115610f4b575f80fd5b9250929050565b5f805f8060408587031215610f65575f80fd5b843567ffffffffffffffff811115610f7b575f80fd5b610f8787828801610f0a565b909550935050602085013567ffffffffffffffff811115610fa6575f80fd5b610fb287828801610f0a565b95989497509550505050565b5f8083601f840112610fce575f80fd5b50813567ffffffffffffffff811115610fe5575f80fd5b602083019150836020828501011115610f4b575f80fd5b5f806020838503121561100d575f80fd5b823567ffffffffffffffff811115611023575f80fd5b61102f85828601610fbe565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611070575f80fd5b853594506020860135935060408601356110898161103b565b9250606086013567ffffffffffffffff8111156110a4575f80fd5b6110b088828901610fbe565b969995985093965092949392505050565b5f602082840312156110d1575f80fd5b8135610cd08161103b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61116260e08301896110dc565b828103604084015261117481896110dc565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111d65783518352602093840193909201916001016111b8565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611245576112456111f5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611292576112926111f5565b604052919050565b5f67ffffffffffffffff8211156112b3576112b36111f5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112ee575f80fd5b81356113016112fc8261129a565b61124b565b818152846020838601011115611315575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611344575f80fd5b843593506020850135611356816111e7565b925060408501356113668161103b565b9150606085013567ffffffffffffffff811115611381575f80fd5b61138d878288016112df565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113d6575f80fd5b81358015158114610cd0575f80fd5b80356113f08161103b565b919050565b5f8060408385031215611406575f80fd5b823567ffffffffffffffff81111561141c575f80fd5b8301601f8101851361142c575f80fd5b803567ffffffffffffffff811115611446576114466111f5565b8060051b6114566020820161124b565b91825260208184018101929081019088841115611471575f80fd5b6020850194505b8385101561149f578435925061148d8361103b565b82825260209485019490910190611478565b80965050505050506114b3602084016113e5565b90509250929050565b5f602082840312156114cc575f80fd5b813567ffffffffffffffff8111156114e2575f80fd5b8201604081850312156114f3575f80fd5b6040805190810167ffffffffffffffff81118282101715611516576115166111f5565b604052813567ffffffffffffffff81111561152f575f80fd5b61153b868285016112df565b825250602082013567ffffffffffffffff811115611557575f80fd5b611563868285016112df565b602083015250949350505050565b80516113f0816111e7565b5f6020828403121561158c575f80fd5b815167ffffffffffffffff8111156115a2575f80fd5b8201606081850312156115b3575f80fd5b6115bb611222565b81516115c68161103b565b8152602082015167ffffffffffffffff8111156115e1575f80fd5b8201601f810186136115f1575f80fd5b80516115ff6112fc8261129a565b818152876020838501011115611613575f80fd5b8160208401602083015e5f6020838301015280602085015250505061163a60408301611571565b604082015294935050505056fea264697066735822122032bca89fce2f3bb99b837cc5cdf14197bc0e5dc59150ba871f24c9de6291396864736f6c634300081a0033",k5="0x6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ecb565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f52565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ffc565b6104bb565b61012f61068c565b6101126101bf36600461105c565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110c1565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611128565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110c1565b61090c565b34801561029e575f80fd5b506102b26102ad366004611331565b61095b565b60405190815260200161011e565b61012f6102ce3660046110c1565b6109ee565b61012f6102e13660046110c1565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110c1565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611399565b905060200201602081019061043191906113c6565b5f8087878581811061044557610445611399565b905060200201602081019061045a91906110c1565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113f5565b91509150610541825f8151811061053457610534611399565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611399565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114bc565b90505f815f015180602001905181019061073f919061157c565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd7565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d3c565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd7565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d68565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f8315610cd057604051835f5260208301516040526040835103610c45576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610c4357505f606052604052506001610cd0565b505b6041835103610c885760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610c8657505f606052604052506001610cd0565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d45610dfe565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e70604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610edb575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cd0575f80fd5b5f8083601f840112610f1a575f80fd5b50813567ffffffffffffffff811115610f31575f80fd5b6020830191508360208260051b8501011115610f4b575f80fd5b9250929050565b5f805f8060408587031215610f65575f80fd5b843567ffffffffffffffff811115610f7b575f80fd5b610f8787828801610f0a565b909550935050602085013567ffffffffffffffff811115610fa6575f80fd5b610fb287828801610f0a565b95989497509550505050565b5f8083601f840112610fce575f80fd5b50813567ffffffffffffffff811115610fe5575f80fd5b602083019150836020828501011115610f4b575f80fd5b5f806020838503121561100d575f80fd5b823567ffffffffffffffff811115611023575f80fd5b61102f85828601610fbe565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611070575f80fd5b853594506020860135935060408601356110898161103b565b9250606086013567ffffffffffffffff8111156110a4575f80fd5b6110b088828901610fbe565b969995985093965092949392505050565b5f602082840312156110d1575f80fd5b8135610cd08161103b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61116260e08301896110dc565b828103604084015261117481896110dc565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111d65783518352602093840193909201916001016111b8565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611245576112456111f5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611292576112926111f5565b604052919050565b5f67ffffffffffffffff8211156112b3576112b36111f5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112ee575f80fd5b81356113016112fc8261129a565b61124b565b818152846020838601011115611315575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611344575f80fd5b843593506020850135611356816111e7565b925060408501356113668161103b565b9150606085013567ffffffffffffffff811115611381575f80fd5b61138d878288016112df565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113d6575f80fd5b81358015158114610cd0575f80fd5b80356113f08161103b565b919050565b5f8060408385031215611406575f80fd5b823567ffffffffffffffff81111561141c575f80fd5b8301601f8101851361142c575f80fd5b803567ffffffffffffffff811115611446576114466111f5565b8060051b6114566020820161124b565b91825260208184018101929081019088841115611471575f80fd5b6020850194505b8385101561149f578435925061148d8361103b565b82825260209485019490910190611478565b80965050505050506114b3602084016113e5565b90509250929050565b5f602082840312156114cc575f80fd5b813567ffffffffffffffff8111156114e2575f80fd5b8201604081850312156114f3575f80fd5b6040805190810167ffffffffffffffff81118282101715611516576115166111f5565b604052813567ffffffffffffffff81111561152f575f80fd5b61153b868285016112df565b825250602082013567ffffffffffffffff811115611557575f80fd5b611563868285016112df565b602083015250949350505050565b80516113f0816111e7565b5f6020828403121561158c575f80fd5b815167ffffffffffffffff8111156115a2575f80fd5b8201606081850312156115b3575f80fd5b6115bb611222565b81516115c68161103b565b8152602082015167ffffffffffffffff8111156115e1575f80fd5b8201601f810186136115f1575f80fd5b80516115ff6112fc8261129a565b818152876020838501011115611613575f80fd5b8160208401602083015e5f6020838301015280602085015250505061163a60408301611571565b604082015294935050505056fea264697066735822122032bca89fce2f3bb99b837cc5cdf14197bc0e5dc59150ba871f24c9de6291396864736f6c634300081a0033",S5={},G5={},k0={_format:N5,contractName:$5,sourceName:H5,abi:L5,bytecode:F5,deployedBytecode:k5,linkReferences:S5,deployedLinkReferences:G5};class D5 extends t.BaseError{constructor({docsPath:e}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(`
2
+ `),{docsPath:e,name:"AbiConstructorNotFoundError"})}}class S0 extends t.BaseError{constructor({docsPath:e}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(`
3
+ `),{docsPath:e,name:"AbiConstructorParamsNotFoundError"})}}class U5 extends t.BaseError{constructor({expectedLength:e,givenLength:b,type:a}){super([`ABI encoding array length mismatch for type ${a}.`,`Expected length: ${e}`,`Given length: ${b}`].join(`
4
+ `),{name:"AbiEncodingArrayLengthMismatchError"})}}class V5 extends t.BaseError{constructor({expectedSize:e,value:b}){super(`Size of bytes "${b}" (bytes${t.size(b)}) does not match expected size (bytes${e}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class q5 extends t.BaseError{constructor({expectedLength:e,givenLength:b}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${e}`,`Given length (values): ${b}`].join(`
5
+ `),{name:"AbiEncodingLengthMismatchError"})}}class j5 extends t.BaseError{constructor(e,{docsPath:b}){super([`Type "${e}" is not a valid encoding type.`,"Please provide a valid ABI type."].join(`
6
+ `),{docsPath:b,name:"InvalidAbiEncodingType"})}}class Z5 extends t.BaseError{constructor(e){super([`Value "${e}" is not a valid array.`].join(`
7
+ `),{name:"InvalidArrayError"})}}function j(f){return typeof f[0]=="string"?y0(f):W5(f)}function W5(f){let e=0;for(const d of f)e+=d.length;const b=new Uint8Array(e);let a=0;for(const d of f)b.set(d,a),a+=d.length;return b}function y0(f){return`0x${f.reduce((e,b)=>e+b.replace("0x",""),"")}`}function K5(f,e,b,{strict:a}={}){return t.isHex(f,{strict:!1})?J5(f,e,b,{strict:a}):Y5(f,e,b,{strict:a})}function Z0(f,e){if(typeof e=="number"&&e>0&&e>t.size(f)-1)throw new t.SliceOffsetOutOfBoundsError({offset:e,position:"start",size:t.size(f)})}function W0(f,e,b){if(typeof e=="number"&&typeof b=="number"&&t.size(f)!==b-e)throw new t.SliceOffsetOutOfBoundsError({offset:b,position:"end",size:t.size(f)})}function Y5(f,e,b,{strict:a}={}){Z0(f,e);const d=f.slice(e,b);return a&&W0(d,e,b),d}function J5(f,e,b,{strict:a}={}){Z0(f,e);const d=`0x${f.replace("0x","").slice((e??0)*2,(b??f.length)*2)}`;return a&&W0(d,e,b),d}function Q5(f,e){if(f.length!==e.length)throw new q5({expectedLength:f.length,givenLength:e.length});const b=X5({params:f,values:e}),a=m0(b);return a.length===0?"0x":a}function X5({params:f,values:e}){const b=[];for(let a=0;a<f.length;a++)b.push(l0({param:f[a],value:e[a]}));return b}function l0({param:f,value:e}){const b=c6(f.type);if(b){const[a,d]=b;return e6(e,{length:a,param:{...f,type:d}})}if(f.type==="tuple")return n6(e,{param:f});if(f.type==="address")return f6(e);if(f.type==="bool")return a6(e);if(f.type.startsWith("uint")||f.type.startsWith("int")){const a=f.type.startsWith("int");return t6(e,{signed:a})}if(f.type.startsWith("bytes"))return b6(e,{param:f});if(f.type==="string")return d6(e);throw new j5(f.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function m0(f){let e=0;for(let n=0;n<f.length;n++){const{dynamic:c,encoded:r}=f[n];c?e+=32:e+=t.size(r)}const b=[],a=[];let d=0;for(let n=0;n<f.length;n++){const{dynamic:c,encoded:r}=f[n];c?(b.push(t.numberToHex(e+d,{size:32})),a.push(r),d+=t.size(r)):b.push(r)}return j([...b,...a])}function f6(f){if(!t.isAddress(f))throw new t.InvalidAddressError({address:f});return{dynamic:!1,encoded:t.padHex(f.toLowerCase())}}function e6(f,{length:e,param:b}){const a=e===null;if(!Array.isArray(f))throw new Z5(f);if(!a&&f.length!==e)throw new U5({expectedLength:e,givenLength:f.length,type:`${b.type}[${e}]`});let d=!1;const n=[];for(let c=0;c<f.length;c++){const r=l0({param:b,value:f[c]});r.dynamic&&(d=!0),n.push(r)}if(a||d){const c=m0(n);if(a){const r=t.numberToHex(n.length,{size:32});return{dynamic:!0,encoded:n.length>0?j([r,c]):r}}if(d)return{dynamic:!0,encoded:c}}return{dynamic:!1,encoded:j(n.map(({encoded:c})=>c))}}function b6(f,{param:e}){const[,b]=e.type.split("bytes"),a=t.size(f);if(!b){let d=f;return a%32!==0&&(d=t.padHex(d,{dir:"right",size:Math.ceil((f.length-2)/2/32)*32})),{dynamic:!0,encoded:j([t.padHex(t.numberToHex(a,{size:32})),d])}}if(a!==Number.parseInt(b))throw new V5({expectedSize:Number.parseInt(b),value:f});return{dynamic:!1,encoded:t.padHex(f,{dir:"right"})}}function a6(f){if(typeof f!="boolean")throw new t.BaseError(`Invalid boolean value: "${f}" (type: ${typeof f}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:t.padHex(t.boolToHex(f))}}function t6(f,{signed:e}){return{dynamic:!1,encoded:t.numberToHex(f,{size:32,signed:e})}}function d6(f){const e=t.stringToHex(f),b=Math.ceil(t.size(e)/32),a=[];for(let d=0;d<b;d++)a.push(t.padHex(K5(e,d*32,(d+1)*32),{dir:"right"}));return{dynamic:!0,encoded:j([t.padHex(t.numberToHex(t.size(e),{size:32})),...a])}}function n6(f,{param:e}){let b=!1;const a=[];for(let d=0;d<e.components.length;d++){const n=e.components[d],c=Array.isArray(f)?d:n.name,r=l0({param:n,value:f[c]});a.push(r),r.dynamic&&(b=!0)}return{dynamic:b,encoded:b?m0(a):j(a.map(({encoded:d})=>d))}}function c6(f){const e=f.match(/^(.*)\[(\d+)?\]$/);return e?[e[2]?Number(e[2]):null,e[1]]:void 0}const t0="/docs/contract/encodeDeployData";function i6(f){const{abi:e,args:b,bytecode:a}=f;if(!b||b.length===0)return a;const d=e.find(c=>"type"in c&&c.type==="constructor");if(!d)throw new D5({docsPath:t0});if(!("inputs"in d))throw new S0({docsPath:t0});if(!d.inputs||d.inputs.length===0)throw new S0({docsPath:t0});const n=Q5(d.inputs,b);return y0([a,n])}class s6 extends t.BaseError{constructor({docsPath:e}={}){super(["Could not find an Account to execute with this Action.","Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(`
8
+ `),{docsPath:e,docsSlug:"account",name:"AccountNotFoundError"})}}class d0 extends t.BaseError{constructor({docsPath:e,metaMessages:b,type:a}){super(`Account type "${a}" is not supported.`,{docsPath:e,metaMessages:b,name:"AccountTypeNotSupportedError"})}}function r6(f){const e=t.keccak256(`0x${f.substring(4)}`).substring(26);return t.checksumAddress(`0x${e}`)}async function p6({hash:f,signature:e}){const b=t.isHex(f)?f:t.toHex(f),{secp256k1:a}=await Promise.resolve().then(()=>require("../utils-BLfs3EZx.cjs")).then(c=>c.secp256k1);return`0x${(()=>{if(typeof e=="object"&&"r"in e&&"s"in e){const{r:s,s:p,v:u,yParity:o}=e,m=Number(o??u),l=G0(m);return new a.Signature(t.hexToBigInt(s),t.hexToBigInt(p)).addRecoveryBit(l)}const c=t.isHex(e)?e:t.toHex(e),r=t.hexToNumber(`0x${c.slice(130)}`),i=G0(r);return a.Signature.fromCompact(c.substring(2,130)).addRecoveryBit(i)})().recoverPublicKey(b.substring(2)).toHex(!1)}`}function G0(f){if(f===0||f===1)return f;if(f===27)return 0;if(f===28)return 1;throw new Error("Invalid yParityOrV value")}async function o6({hash:f,signature:e}){return r6(await p6({hash:f,signature:e}))}class D0 extends t.BaseError{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class u6 extends t.BaseError{constructor({length:e,position:b}){super(`Position \`${b}\` is out of bounds (\`0 < position < ${e}\`).`,{name:"PositionOutOfBoundsError"})}}class y6 extends t.BaseError{constructor({count:e,limit:b}){super(`Recursive read limit of \`${b}\` exceeded (recursive read count: \`${e}\`).`,{name:"RecursiveReadLimitExceededError"})}}const l6={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new y6({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(f){if(f<0||f>this.bytes.length-1)throw new u6({length:this.bytes.length,position:f})},decrementPosition(f){if(f<0)throw new D0({offset:f});const e=this.position-f;this.assertPosition(e),this.position=e},getReadCount(f){return this.positionReadCount.get(f||this.position)||0},incrementPosition(f){if(f<0)throw new D0({offset:f});const e=this.position+f;this.assertPosition(e),this.position=e},inspectByte(f){const e=f??this.position;return this.assertPosition(e),this.bytes[e]},inspectBytes(f,e){const b=e??this.position;return this.assertPosition(b+f-1),this.bytes.subarray(b,b+f)},inspectUint8(f){const e=f??this.position;return this.assertPosition(e),this.bytes[e]},inspectUint16(f){const e=f??this.position;return this.assertPosition(e+1),this.dataView.getUint16(e)},inspectUint24(f){const e=f??this.position;return this.assertPosition(e+2),(this.dataView.getUint16(e)<<8)+this.dataView.getUint8(e+2)},inspectUint32(f){const e=f??this.position;return this.assertPosition(e+3),this.dataView.getUint32(e)},pushByte(f){this.assertPosition(this.position),this.bytes[this.position]=f,this.position++},pushBytes(f){this.assertPosition(this.position+f.length-1),this.bytes.set(f,this.position),this.position+=f.length},pushUint8(f){this.assertPosition(this.position),this.bytes[this.position]=f,this.position++},pushUint16(f){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,f),this.position+=2},pushUint24(f){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,f>>8),this.dataView.setUint8(this.position+2,f&255),this.position+=3},pushUint32(f){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,f),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const f=this.inspectByte();return this.position++,f},readBytes(f,e){this.assertReadLimit(),this._touch();const b=this.inspectBytes(f);return this.position+=e??f,b},readUint8(){this.assertReadLimit(),this._touch();const f=this.inspectUint8();return this.position+=1,f},readUint16(){this.assertReadLimit(),this._touch();const f=this.inspectUint16();return this.position+=2,f},readUint24(){this.assertReadLimit(),this._touch();const f=this.inspectUint24();return this.position+=3,f},readUint32(){this.assertReadLimit(),this._touch();const f=this.inspectUint32();return this.position+=4,f},get remaining(){return this.bytes.length-this.position},setPosition(f){const e=this.position;return this.assertPosition(f),this.position=f,()=>this.position=e},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const f=this.getReadCount();this.positionReadCount.set(this.position,f+1),f>0&&this.recursiveReadCount++}};function K0(f,{recursiveReadLimit:e=8192}={}){const b=Object.create(l6);return b.bytes=f,b.dataView=new DataView(f.buffer,f.byteOffset,f.byteLength),b.positionReadCount=new Map,b.recursiveReadLimit=e,b}function m6(f,e="hex"){const b=Y0(f),a=K0(new Uint8Array(b.length));return b.encode(a),e==="hex"?t.bytesToHex(a.bytes):a.bytes}function Y0(f){return Array.isArray(f)?T6(f.map(e=>Y0(e))):h6(f)}function T6(f){const e=f.reduce((d,n)=>d+n.length,0),b=J0(e);return{length:e<=55?1+e:1+b+e,encode(d){e<=55?d.pushByte(192+e):(d.pushByte(247+b),b===1?d.pushUint8(e):b===2?d.pushUint16(e):b===3?d.pushUint24(e):d.pushUint32(e));for(const{encode:n}of f)n(d)}}}function h6(f){const e=typeof f=="string"?t.hexToBytes(f):f,b=J0(e.length);return{length:e.length===1&&e[0]<128?1:e.length<=55?1+e.length:1+b+e.length,encode(d){e.length===1&&e[0]<128?d.pushBytes(e):e.length<=55?(d.pushByte(128+e.length),d.pushBytes(e)):(d.pushByte(183+b),b===1?d.pushUint8(e.length):b===2?d.pushUint16(e.length):b===3?d.pushUint24(e.length):d.pushUint32(e.length),d.pushBytes(e))}}}function J0(f){if(f<2**8)return 1;if(f<2**16)return 2;if(f<2**24)return 3;if(f<2**32)return 4;throw new t.BaseError("Length is too large.")}function w6(f){const{chainId:e,contractAddress:b,nonce:a,to:d}=f,n=t.keccak256(y0(["0x05",m6([t.numberToHex(e),b,a?t.numberToHex(a):"0x"])]));return d==="bytes"?t.hexToBytes(n):n}async function Q0(f){const{authorization:e,signature:b}=f;return o6({hash:w6(e),signature:b??e})}class v6 extends t.BaseError{constructor({chain:e,currentChainId:b}){super(`The current chain of the wallet (id: ${b}) does not match the target chain for the transaction (id: ${e.id} – ${e.name}).`,{metaMessages:[`Current Chain ID: ${b}`,`Expected Chain ID: ${e.id} – ${e.name}`],name:"ChainMismatchError"})}}class g6 extends t.BaseError{constructor(){super(["No chain was provided to the request.","Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(`
9
+ `),{name:"ChainNotFoundError"})}}function M6({chain:f,currentChainId:e}){if(!f)throw new g6;if(e!==f.id)throw new v6({chain:f,currentChainId:e})}const x6={gwei:9,wei:18},I6={ether:-9,wei:9};function X0(f,e){let b=f.toString();const a=b.startsWith("-");a&&(b=b.slice(1)),b=b.padStart(e,"0");let[d,n]=[b.slice(0,b.length-e),b.slice(b.length-e)];return n=n.replace(/(0+)$/,""),`${a?"-":""}${d||"0"}${n?`.${n}`:""}`}function R(f,e="wei"){return X0(f,I6[e])}class q extends t.BaseError{constructor({cause:e,message:b}={}){var d;const a=(d=b==null?void 0:b.replace("execution reverted: ",""))==null?void 0:d.replace("execution reverted","");super(`Execution reverted ${a?`with reason: ${a}`:"for an unknown reason"}.`,{cause:e,name:"ExecutionRevertedError"})}}Object.defineProperty(q,"code",{enumerable:!0,configurable:!0,writable:!0,value:3});Object.defineProperty(q,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});class f0 extends t.BaseError{constructor({cause:e,maxFeePerGas:b}={}){super(`The fee cap (\`maxFeePerGas\`${b?` = ${R(b)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e,name:"FeeCapTooHighError"})}}Object.defineProperty(f0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class n0 extends t.BaseError{constructor({cause:e,maxFeePerGas:b}={}){super(`The fee cap (\`maxFeePerGas\`${b?` = ${R(b)}`:""} gwei) cannot be lower than the block base fee.`,{cause:e,name:"FeeCapTooLowError"})}}Object.defineProperty(n0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});class c0 extends t.BaseError{constructor({cause:e,nonce:b}={}){super(`Nonce provided for the transaction ${b?`(${b}) `:""}is higher than the next one expected.`,{cause:e,name:"NonceTooHighError"})}}Object.defineProperty(c0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});class i0 extends t.BaseError{constructor({cause:e,nonce:b}={}){super([`Nonce provided for the transaction ${b?`(${b}) `:""}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(`
10
+ `),{cause:e,name:"NonceTooLowError"})}}Object.defineProperty(i0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});class s0 extends t.BaseError{constructor({cause:e,nonce:b}={}){super(`Nonce provided for the transaction ${b?`(${b}) `:""}exceeds the maximum allowed nonce.`,{cause:e,name:"NonceMaxValueError"})}}Object.defineProperty(s0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});class r0 extends t.BaseError{constructor({cause:e}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join(`
11
+ `),{cause:e,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}}Object.defineProperty(r0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class p0 extends t.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:"IntrinsicGasTooHighError"})}}Object.defineProperty(p0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class o0 extends t.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction is too low.`,{cause:e,name:"IntrinsicGasTooLowError"})}}Object.defineProperty(o0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class u0 extends t.BaseError{constructor({cause:e}){super("The transaction type is not supported for this chain.",{cause:e,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(u0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class e0 extends t.BaseError{constructor({cause:e,maxPriorityFeePerGas:b,maxFeePerGas:a}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${b?` = ${R(b)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${a?` = ${R(a)} gwei`:""}).`].join(`
12
+ `),{cause:e,name:"TipAboveFeeCapError"})}}Object.defineProperty(e0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class T0 extends t.BaseError{constructor({cause:e}){super(`An error occurred while executing: ${e==null?void 0:e.shortMessage}`,{cause:e,name:"UnknownNodeError"})}}function ff(f,e="wei"){return X0(f,x6[e])}function h0(f){const e=Object.entries(f).map(([a,d])=>d===void 0||d===!1?null:[a,d]).filter(Boolean),b=e.reduce((a,[d])=>Math.max(a,d.length),0);return e.map(([a,d])=>` ${`${a}:`.padEnd(b+1)} ${d}`).join(`
13
+ `)}class A6 extends t.BaseError{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(`
14
+ `),{name:"FeeConflictError"})}}class E6 extends t.BaseError{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",h0(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class R6 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:u,value:o}){var l;const m=h0({chain:d&&`${d==null?void 0:d.name} (id: ${d==null?void 0:d.id})`,from:b==null?void 0:b.address,to:u,value:typeof o<"u"&&`${ff(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${R(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${R(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${R(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Request Arguments:",m].filter(Boolean),name:"TransactionExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function ef(f,e){const b=(f.details||"").toLowerCase(),a=f instanceof t.BaseError?f.walk(d=>(d==null?void 0:d.code)===q.code):f;return a instanceof t.BaseError?new q({cause:f,message:a.details}):q.nodeMessage.test(b)?new q({cause:f,message:f.details}):f0.nodeMessage.test(b)?new f0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):n0.nodeMessage.test(b)?new n0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):c0.nodeMessage.test(b)?new c0({cause:f,nonce:e==null?void 0:e.nonce}):i0.nodeMessage.test(b)?new i0({cause:f,nonce:e==null?void 0:e.nonce}):s0.nodeMessage.test(b)?new s0({cause:f,nonce:e==null?void 0:e.nonce}):r0.nodeMessage.test(b)?new r0({cause:f}):p0.nodeMessage.test(b)?new p0({cause:f,gas:e==null?void 0:e.gas}):o0.nodeMessage.test(b)?new o0({cause:f,gas:e==null?void 0:e.gas}):u0.nodeMessage.test(b)?new u0({cause:f}):e0.nodeMessage.test(b)?new e0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas,maxPriorityFeePerGas:e==null?void 0:e.maxPriorityFeePerGas}):new T0({cause:f})}function O6(f,{docsPath:e,...b}){const a=(()=>{const d=ef(f,b);return d instanceof T0?f:d})();return new R6(a,{docsPath:e,...b})}function bf(f,{format:e}){if(!e)return{};const b={};function a(n){const c=Object.keys(n);for(const r of c)r in f&&(b[r]=f[r]),n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])&&a(n[r])}const d=e(f||{});return a(d),b}const C6={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function af(f){const e={};return typeof f.authorizationList<"u"&&(e.authorizationList=B6(f.authorizationList)),typeof f.accessList<"u"&&(e.accessList=f.accessList),typeof f.blobVersionedHashes<"u"&&(e.blobVersionedHashes=f.blobVersionedHashes),typeof f.blobs<"u"&&(typeof f.blobs[0]!="string"?e.blobs=f.blobs.map(b=>t.bytesToHex(b)):e.blobs=f.blobs),typeof f.data<"u"&&(e.data=f.data),typeof f.from<"u"&&(e.from=f.from),typeof f.gas<"u"&&(e.gas=t.numberToHex(f.gas)),typeof f.gasPrice<"u"&&(e.gasPrice=t.numberToHex(f.gasPrice)),typeof f.maxFeePerBlobGas<"u"&&(e.maxFeePerBlobGas=t.numberToHex(f.maxFeePerBlobGas)),typeof f.maxFeePerGas<"u"&&(e.maxFeePerGas=t.numberToHex(f.maxFeePerGas)),typeof f.maxPriorityFeePerGas<"u"&&(e.maxPriorityFeePerGas=t.numberToHex(f.maxPriorityFeePerGas)),typeof f.nonce<"u"&&(e.nonce=t.numberToHex(f.nonce)),typeof f.to<"u"&&(e.to=f.to),typeof f.type<"u"&&(e.type=C6[f.type]),typeof f.value<"u"&&(e.value=t.numberToHex(f.value)),e}function B6(f){return f.map(e=>({address:e.contractAddress,r:e.r,s:e.s,chainId:t.numberToHex(e.chainId),nonce:t.numberToHex(e.nonce),...typeof e.yParity<"u"?{yParity:t.numberToHex(e.yParity)}:{},...typeof e.v<"u"&&typeof e.yParity>"u"?{v:t.numberToHex(e.v)}:{}}))}function E(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}const _6=2n**256n-1n;function w0(f){const{account:e,gasPrice:b,maxFeePerGas:a,maxPriorityFeePerGas:d,to:n}=f,c=e?t.parseAccount(e):void 0;if(c&&!t.isAddress(c.address))throw new t.InvalidAddressError({address:c.address});if(n&&!t.isAddress(n))throw new t.InvalidAddressError({address:n});if(typeof b<"u"&&(typeof a<"u"||typeof d<"u"))throw new A6;if(a&&a>_6)throw new f0({maxFeePerGas:a});if(d&&a&&d>a)throw new e0({maxFeePerGas:a,maxPriorityFeePerGas:d})}async function tf(f){const e=await f.request({method:"eth_chainId"},{dedupe:!0});return t.hexToNumber(e)}class P6 extends t.BaseError{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:"BaseFeeScalarError"})}}class v0 extends t.BaseError{constructor(){super("Chain does not support EIP-1559 fees.",{name:"Eip1559FeesNotSupportedError"})}}class z6 extends t.BaseError{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${R(e)} gwei).`,{name:"MaxFeePerGasTooLowError"})}}class N6 extends t.BaseError{constructor({blockHash:e,blockNumber:b}){let a="Block";e&&(a=`Block at hash "${e}"`),b&&(a=`Block at number "${b}"`),super(`${a} could not be found.`,{name:"BlockNotFoundError"})}}const $6={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function H6(f){const e={...f,blockHash:f.blockHash?f.blockHash:null,blockNumber:f.blockNumber?BigInt(f.blockNumber):null,chainId:f.chainId?t.hexToNumber(f.chainId):void 0,gas:f.gas?BigInt(f.gas):void 0,gasPrice:f.gasPrice?BigInt(f.gasPrice):void 0,maxFeePerBlobGas:f.maxFeePerBlobGas?BigInt(f.maxFeePerBlobGas):void 0,maxFeePerGas:f.maxFeePerGas?BigInt(f.maxFeePerGas):void 0,maxPriorityFeePerGas:f.maxPriorityFeePerGas?BigInt(f.maxPriorityFeePerGas):void 0,nonce:f.nonce?t.hexToNumber(f.nonce):void 0,to:f.to?f.to:null,transactionIndex:f.transactionIndex?Number(f.transactionIndex):null,type:f.type?$6[f.type]:void 0,typeHex:f.type?f.type:void 0,value:f.value?BigInt(f.value):void 0,v:f.v?BigInt(f.v):void 0};return f.authorizationList&&(e.authorizationList=L6(f.authorizationList)),e.yParity=(()=>{if(f.yParity)return Number(f.yParity);if(typeof e.v=="bigint"){if(e.v===0n||e.v===27n)return 0;if(e.v===1n||e.v===28n)return 1;if(e.v>=35n)return e.v%2n===0n?1:0}})(),e.type==="legacy"&&(delete e.accessList,delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas,delete e.yParity),e.type==="eip2930"&&(delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),e.type==="eip1559"&&delete e.maxFeePerBlobGas,e}function L6(f){return f.map(e=>({contractAddress:e.address,r:e.r,s:e.s,chainId:Number(e.chainId),nonce:Number(e.nonce),...typeof e.yParity<"u"?{yParity:Number(e.yParity)}:{},...typeof e.v<"u"&&typeof e.yParity>"u"?{v:Number(e.v)}:{}}))}function F6(f){var b;const e=(b=f.transactions)==null?void 0:b.map(a=>typeof a=="string"?a:H6(a));return{...f,baseFeePerGas:f.baseFeePerGas?BigInt(f.baseFeePerGas):null,blobGasUsed:f.blobGasUsed?BigInt(f.blobGasUsed):void 0,difficulty:f.difficulty?BigInt(f.difficulty):void 0,excessBlobGas:f.excessBlobGas?BigInt(f.excessBlobGas):void 0,gasLimit:f.gasLimit?BigInt(f.gasLimit):void 0,gasUsed:f.gasUsed?BigInt(f.gasUsed):void 0,hash:f.hash?f.hash:null,logsBloom:f.logsBloom?f.logsBloom:null,nonce:f.nonce?f.nonce:null,number:f.number?BigInt(f.number):null,size:f.size?BigInt(f.size):void 0,timestamp:f.timestamp?BigInt(f.timestamp):void 0,transactions:e,totalDifficulty:f.totalDifficulty?BigInt(f.totalDifficulty):null}}async function b0(f,{blockHash:e,blockNumber:b,blockTag:a,includeTransactions:d}={}){var p,u,o;const n=a??"latest",c=d??!1,r=b!==void 0?t.numberToHex(b):void 0;let i=null;if(e?i=await f.request({method:"eth_getBlockByHash",params:[e,c]},{dedupe:!0}):i=await f.request({method:"eth_getBlockByNumber",params:[r||n,c]},{dedupe:!!r}),!i)throw new N6({blockHash:e,blockNumber:b});return(((o=(u=(p=f.chain)==null?void 0:p.formatters)==null?void 0:u.block)==null?void 0:o.format)||F6)(i)}async function df(f){const e=await f.request({method:"eth_gasPrice"});return BigInt(e)}async function k6(f,e){var n,c;const{block:b,chain:a=f.chain,request:d}=e||{};try{const r=((n=a==null?void 0:a.fees)==null?void 0:n.maxPriorityFeePerGas)??((c=a==null?void 0:a.fees)==null?void 0:c.defaultPriorityFee);if(typeof r=="function"){const s=b||await E(f,b0,"getBlock")({}),p=await r({block:s,client:f,request:d});if(p===null)throw new Error;return p}if(typeof r<"u")return r;const i=await f.request({method:"eth_maxPriorityFeePerGas"});return t.hexToBigInt(i)}catch{const[r,i]=await Promise.all([b?Promise.resolve(b):E(f,b0,"getBlock")({}),E(f,df,"getGasPrice")({})]);if(typeof r.baseFeePerGas!="bigint")throw new v0;const s=i-r.baseFeePerGas;return s<0n?0n:s}}async function U0(f,e){var o,m;const{block:b,chain:a=f.chain,request:d,type:n="eip1559"}=e||{},c=await(async()=>{var l,v;return typeof((l=a==null?void 0:a.fees)==null?void 0:l.baseFeeMultiplier)=="function"?a.fees.baseFeeMultiplier({block:b,client:f,request:d}):((v=a==null?void 0:a.fees)==null?void 0:v.baseFeeMultiplier)??1.2})();if(c<1)throw new P6;const i=10**(((o=c.toString().split(".")[1])==null?void 0:o.length)??0),s=l=>l*BigInt(Math.ceil(c*i))/BigInt(i),p=b||await E(f,b0,"getBlock")({});if(typeof((m=a==null?void 0:a.fees)==null?void 0:m.estimateFeesPerGas)=="function"){const l=await a.fees.estimateFeesPerGas({block:b,client:f,multiply:s,request:d,type:n});if(l!==null)return l}if(n==="eip1559"){if(typeof p.baseFeePerGas!="bigint")throw new v0;const l=typeof(d==null?void 0:d.maxPriorityFeePerGas)=="bigint"?d.maxPriorityFeePerGas:await k6(f,{block:p,chain:a,request:d}),v=s(p.baseFeePerGas);return{maxFeePerGas:(d==null?void 0:d.maxFeePerGas)??v+l,maxPriorityFeePerGas:l}}return{gasPrice:(d==null?void 0:d.gasPrice)??s(await E(f,df,"getGasPrice")({}))}}class S6 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:u,value:o}){var l;const m=h0({from:b==null?void 0:b.address,to:u,value:typeof o<"u"&&`${ff(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${R(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${R(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${R(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Estimate Gas Arguments:",m].filter(Boolean),name:"EstimateGasExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function G6(f,{docsPath:e,...b}){const a=(()=>{const d=ef(f,b);return d instanceof T0?f:d})();return new S6(a,{docsPath:e,...b})}class D6 extends t.BaseError{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:"AccountStateConflictError"})}}class U6 extends t.BaseError{constructor(){super("state and stateDiff are set on the same account.",{name:"StateAssignmentConflictError"})}}function V0(f){if(!(!f||f.length===0))return f.reduce((e,{slot:b,value:a})=>{if(b.length!==66)throw new t.InvalidBytesLengthError({size:b.length,targetSize:66,type:"hex"});if(a.length!==66)throw new t.InvalidBytesLengthError({size:a.length,targetSize:66,type:"hex"});return e[b]=a,e},{})}function V6(f){const{balance:e,nonce:b,state:a,stateDiff:d,code:n}=f,c={};if(n!==void 0&&(c.code=n),e!==void 0&&(c.balance=t.numberToHex(e)),b!==void 0&&(c.nonce=t.numberToHex(b)),a!==void 0&&(c.state=V0(a)),d!==void 0){if(c.state)throw new U6;c.stateDiff=V0(d)}return c}function q6(f){if(!f)return;const e={};for(const{address:b,...a}of f){if(!t.isAddress(b,{strict:!1}))throw new t.InvalidAddressError({address:b});if(e[b])throw new D6({address:b});e[b]=V6(a)}return e}async function j6(f,{address:e,blockNumber:b,blockTag:a="latest"}){const d=b?t.numberToHex(b):void 0,n=await f.request({method:"eth_getBalance",params:[e,d||a]});return BigInt(n)}async function Z6(f,e){var d,n,c;const b=e.account??f.account,a=b?t.parseAccount(b):void 0;try{let K=function(J){const{block:C,request:M,rpcStateOverride:I}=J;return f.request({method:"eth_estimateGas",params:I?[M,C??"latest",I]:C?[M,C]:[M]})};const{accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,blockNumber:u,blockTag:o,data:m,gas:l,gasPrice:v,maxFeePerBlobGas:h,maxFeePerGas:T,maxPriorityFeePerGas:g,nonce:x,value:z,stateOverride:O,...A}=await of(f,{...e,parameters:(a==null?void 0:a.type)==="local"?void 0:["blobVersionedHashes"]}),_=(u?t.numberToHex(u):void 0)||o,N=q6(O),Q=await(async()=>{if(A.to)return A.to;if(i&&i.length>0)return await Q0({authorization:i[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`")})})();w0(e);const Z=(c=(n=(d=f.chain)==null?void 0:d.formatters)==null?void 0:n.transactionRequest)==null?void 0:c.format,W=(Z||af)({...bf(A,{format:Z}),from:a==null?void 0:a.address,accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,data:m,gas:l,gasPrice:v,maxFeePerBlobGas:h,maxFeePerGas:T,maxPriorityFeePerGas:g,nonce:x,to:Q,value:z});let Y=BigInt(await K({block:_,request:W,rpcStateOverride:N}));if(i){const J=await j6(f,{address:W.from}),C=await Promise.all(i.map(async M=>{const{contractAddress:I}=M,P=await K({block:_,request:{authorizationList:void 0,data:m,from:a==null?void 0:a.address,to:I,value:t.numberToHex(J)},rpcStateOverride:N}).catch(()=>100000n);return 2n*BigInt(P)}));Y+=C.reduce((M,I)=>M+I,0n)}return Y}catch(r){throw G6(r,{...e,account:a,chain:f.chain})}}async function W6(f,{address:e,blockTag:b="latest",blockNumber:a}){const d=await f.request({method:"eth_getTransactionCount",params:[e,a?t.numberToHex(a):b]},{dedupe:!!a});return t.hexToNumber(d)}function nf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(n=>t.hexToBytes(n)):f.blobs,d=[];for(const n of a)d.push(Uint8Array.from(e.blobToKzgCommitment(n)));return b==="bytes"?d:d.map(n=>t.bytesToHex(n))}function cf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(c=>t.hexToBytes(c)):f.blobs,d=typeof f.commitments[0]=="string"?f.commitments.map(c=>t.hexToBytes(c)):f.commitments,n=[];for(let c=0;c<a.length;c++){const r=a[c],i=d[c];n.push(Uint8Array.from(e.computeBlobKzgProof(r,i)))}return b==="bytes"?n:n.map(c=>t.bytesToHex(c))}function K6(f,e){return t.sha256(t.isHex(f,{strict:!1})?t.toBytes(f):f)}function Y6(f){const{commitment:e,version:b=1}=f,a=f.to??(typeof e=="string"?"hex":"bytes"),d=K6(e);return d.set([b],0),a==="bytes"?d:t.bytesToHex(d)}function J6(f){const{commitments:e,version:b}=f,a=f.to??(typeof e[0]=="string"?"hex":"bytes"),d=[];for(const n of e)d.push(Y6({commitment:n,to:a,version:b}));return d}const q0=6,sf=32,g0=4096,rf=sf*g0,j0=rf*q0-1-1*g0*q0;class Q6 extends t.BaseError{constructor({maxSize:e,size:b}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${b} bytes`],name:"BlobSizeTooLargeError"})}}class X6 extends t.BaseError{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}function f8(f){const e=f.to??(typeof f.data=="string"?"hex":"bytes"),b=typeof f.data=="string"?t.hexToBytes(f.data):f.data,a=t.size(b);if(!a)throw new X6;if(a>j0)throw new Q6({maxSize:j0,size:a});const d=[];let n=!0,c=0;for(;n;){const r=K0(new Uint8Array(rf));let i=0;for(;i<g0;){const s=b.slice(c,c+(sf-1));if(r.pushByte(0),r.pushBytes(s),s.length<31){r.pushByte(128),n=!1;break}i++,c+=31}d.push(r)}return e==="bytes"?d.map(r=>r.bytes):d.map(r=>t.bytesToHex(r.bytes))}function e8(f){const{data:e,kzg:b,to:a}=f,d=f.blobs??f8({data:e,to:a}),n=f.commitments??nf({blobs:d,kzg:b,to:a}),c=f.proofs??cf({blobs:d,commitments:n,kzg:b,to:a}),r=[];for(let i=0;i<d.length;i++)r.push({blob:d[i],commitment:n[i],proof:c[i]});return r}function b8(f){if(f.type)return f.type;if(typeof f.authorizationList<"u")return"eip7702";if(typeof f.blobs<"u"||typeof f.blobVersionedHashes<"u"||typeof f.maxFeePerBlobGas<"u"||typeof f.sidecars<"u")return"eip4844";if(typeof f.maxFeePerGas<"u"||typeof f.maxPriorityFeePerGas<"u")return"eip1559";if(typeof f.gasPrice<"u")return typeof f.accessList<"u"?"eip2930":"legacy";throw new E6({transaction:f})}const pf=["blobVersionedHashes","chainId","fees","gas","nonce","type"];async function of(f,e){const{account:b=f.account,blobs:a,chain:d,gas:n,kzg:c,nonce:r,nonceManager:i,parameters:s=pf,type:p}=e,u=b?t.parseAccount(b):void 0,o={...e,...u?{from:u==null?void 0:u.address}:{}};let m;async function l(){return m||(m=await E(f,b0,"getBlock")({blockTag:"latest"}),m)}let v;async function h(){return v||(d?d.id:typeof e.chainId<"u"?e.chainId:(v=await E(f,tf,"getChainId")({}),v))}if((s.includes("blobVersionedHashes")||s.includes("sidecars"))&&a&&c){const T=nf({blobs:a,kzg:c});if(s.includes("blobVersionedHashes")){const g=J6({commitments:T,to:"hex"});o.blobVersionedHashes=g}if(s.includes("sidecars")){const g=cf({blobs:a,commitments:T,kzg:c}),x=e8({blobs:a,commitments:T,proofs:g,to:"hex"});o.sidecars=x}}if(s.includes("chainId")&&(o.chainId=await h()),s.includes("nonce")&&typeof r>"u"&&u)if(i){const T=await h();o.nonce=await i.consume({address:u.address,chainId:T,client:f})}else o.nonce=await E(f,W6,"getTransactionCount")({address:u.address,blockTag:"pending"});if((s.includes("fees")||s.includes("type"))&&typeof p>"u")try{o.type=b8(o)}catch{const T=await l();o.type=typeof(T==null?void 0:T.baseFeePerGas)=="bigint"?"eip1559":"legacy"}if(s.includes("fees"))if(o.type!=="legacy"&&o.type!=="eip2930"){if(typeof o.maxFeePerGas>"u"||typeof o.maxPriorityFeePerGas>"u"){const T=await l(),{maxFeePerGas:g,maxPriorityFeePerGas:x}=await U0(f,{block:T,chain:d,request:o});if(typeof e.maxPriorityFeePerGas>"u"&&e.maxFeePerGas&&e.maxFeePerGas<x)throw new z6({maxPriorityFeePerGas:x});o.maxPriorityFeePerGas=x,o.maxFeePerGas=g}}else{if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")throw new v0;const T=await l(),{gasPrice:g}=await U0(f,{block:T,chain:d,request:o,type:"legacy"});o.gasPrice=g}return s.includes("gas")&&typeof n>"u"&&(o.gas=await E(f,Z6,"estimateGas")({...o,account:u?{address:u.address,type:"json-rpc"}:void 0})),w0(o),delete o.parameters,o}async function a8(f,{serializedTransaction:e}){return f.request({method:"eth_sendRawTransaction",params:[e]},{retryCount:0})}async function t8(f,e){var T,g,x,z;const{account:b=f.account,chain:a=f.chain,accessList:d,authorizationList:n,blobs:c,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:m,value:l,...v}=e;if(!b)throw new s6({docsPath:"/docs/actions/wallet/sendTransaction"});const h=t.parseAccount(b);try{w0(e);const O=await(async()=>{if(e.to)return e.to;if(n&&n.length>0)return await Q0({authorization:n[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`.")})})();if(h.type==="json-rpc"){let A;a!==null&&(A=await E(f,tf,"getChainId")({}),M6({currentChainId:A,chain:a}));const B=(x=(g=(T=f.chain)==null?void 0:T.formatters)==null?void 0:g.transactionRequest)==null?void 0:x.format,N=(B||af)({...bf(v,{format:B}),accessList:d,authorizationList:n,blobs:c,chainId:A,data:r,from:h.address,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:m,to:O,value:l});return await f.request({method:"eth_sendTransaction",params:[N]},{retryCount:0})}if(h.type==="local"){const A=await E(f,of,"prepareTransactionRequest")({account:h,accessList:d,authorizationList:n,blobs:c,chain:a,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:m,nonceManager:h.nonceManager,parameters:[...pf,"sidecars"],value:l,...v,to:O}),B=(z=a==null?void 0:a.serializers)==null?void 0:z.transaction,_=await h.signTransaction(A,{serializer:B});return await E(f,a8,"sendRawTransaction")({serializedTransaction:_})}throw h.type==="smart"?new d0({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new d0({docsPath:"/docs/actions/wallet/sendTransaction",type:h.type})}catch(O){throw O instanceof d0?O:O6(O,{...e,account:h,chain:e.chain||void 0})}}function d8(f,e){const{abi:b,args:a,bytecode:d,...n}=e,c=i6({abi:b,args:a,bytecode:d});return t8(f,{...n,data:c})}const X=new t.LruMap(8192);function n8(f,{enabled:e=!0,id:b}){if(!e||!b)return f();if(X.get(b))return X.get(b);const a=f().finally(()=>X.delete(b));return X.set(b,a),a}function c8(f,e={}){return async(b,a={})=>{const{dedupe:d=!1,retryDelay:n=150,retryCount:c=3,uid:r}={...e,...a},i=d?t.keccak256(t.stringToHex(`${r}.${t.stringify(b)}`)):void 0;return n8(()=>t.withRetry(async()=>{try{return await f(b)}catch(s){const p=s;switch(p.code){case t.ParseRpcError.code:throw new t.ParseRpcError(p);case t.InvalidRequestRpcError.code:throw new t.InvalidRequestRpcError(p);case t.MethodNotFoundRpcError.code:throw new t.MethodNotFoundRpcError(p,{method:b.method});case t.InvalidParamsRpcError.code:throw new t.InvalidParamsRpcError(p);case t.InternalRpcError.code:throw new t.InternalRpcError(p);case t.InvalidInputRpcError.code:throw new t.InvalidInputRpcError(p);case t.ResourceNotFoundRpcError.code:throw new t.ResourceNotFoundRpcError(p);case t.ResourceUnavailableRpcError.code:throw new t.ResourceUnavailableRpcError(p);case t.TransactionRejectedRpcError.code:throw new t.TransactionRejectedRpcError(p);case t.MethodNotSupportedRpcError.code:throw new t.MethodNotSupportedRpcError(p,{method:b.method});case t.LimitExceededRpcError.code:throw new t.LimitExceededRpcError(p);case t.JsonRpcVersionUnsupportedError.code:throw new t.JsonRpcVersionUnsupportedError(p);case t.UserRejectedRequestError.code:throw new t.UserRejectedRequestError(p);case t.UnauthorizedProviderError.code:throw new t.UnauthorizedProviderError(p);case t.UnsupportedProviderMethodError.code:throw new t.UnsupportedProviderMethodError(p);case t.ProviderDisconnectedError.code:throw new t.ProviderDisconnectedError(p);case t.ChainDisconnectedError.code:throw new t.ChainDisconnectedError(p);case t.SwitchChainError.code:throw new t.SwitchChainError(p);case 5e3:throw new t.UserRejectedRequestError(p);default:throw s instanceof t.BaseError?s:new t.UnknownRpcError(p)}}},{delay:({count:s,error:p})=>{var u;if(p&&p instanceof t.HttpRequestError){const o=(u=p==null?void 0:p.headers)==null?void 0:u.get("Retry-After");if(o!=null&&o.match(/\d/))return Number.parseInt(o)*1e3}return~~(1<<s)*n},retryCount:c,shouldRetry:({error:s})=>i8(s)}),{enabled:d,id:i})}}function i8(f){return"code"in f&&typeof f.code=="number"?f.code===-1||f.code===t.LimitExceededRpcError.code||f.code===t.InternalRpcError.code:f instanceof t.HttpRequestError&&f.status?f.status===403||f.status===408||f.status===413||f.status===429||f.status===500||f.status===502||f.status===503||f.status===504:!0}function s8(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}function r8({key:f,name:e,request:b,retryCount:a=3,retryDelay:d=150,timeout:n,type:c},r){const i=t.uid();return{config:{key:f,name:e,request:b,retryCount:a,retryDelay:d,timeout:n,type:c},request:c8(b,{retryCount:a,retryDelay:d,uid:i}),value:r}}function p8(f,e={}){const{key:b="custom",name:a="Custom Provider",retryDelay:d}=e;return({retryCount:n})=>r8({key:b,name:a,request:f.request.bind(f),retryCount:e.retryCount??n,retryDelay:d,type:"custom"})}async function o8(f,e={}){let b;if(e.connector){const{connector:s}=e;if(f.state.status==="reconnecting"&&!s.getAccounts&&!s.getChainId)throw new t.ConnectorUnavailableReconnectingError({connector:s});const[p,u]=await Promise.all([s.getAccounts(),s.getChainId()]);b={accounts:p,chainId:u,connector:s}}else b=f.state.connections.get(f.state.current);if(!b)throw new t.ConnectorNotConnectedError;const a=e.chainId??b.chainId,d=await b.connector.getChainId();if(d!==b.chainId)throw new t.ConnectorChainMismatchError({connectionChainId:b.chainId,connectorChainId:d});const n=b.connector;if(n.getClient)return n.getClient({chainId:a});const c=t.parseAccount(e.account??b.accounts[0]);if(c.address=t.getAddress(c.address),e.account&&!b.accounts.some(s=>s.toLowerCase()===c.address.toLowerCase()))throw new t.ConnectorAccountNotFoundError({address:c.address,connector:n});const r=f.chains.find(s=>s.id===a),i=await b.connector.getProvider({chainId:a});return t.createClient({account:c,chain:r,name:"Connector Client",transport:s=>p8(i)({...s,retryCount:0})})}async function w(f,e){const{account:b,chainId:a,connector:d,...n}=e;let c;return typeof b=="object"&&b.type==="local"?c=f.getClient({chainId:a}):c=await o8(f,{account:b,chainId:a,connector:d}),await s8(c,d8,"deployContract")({...n,...b?{account:b}:{},chain:a?{id:a}:null})}const u8=async function(e,b){var M,I,P,$,H,L,F,k,S,G,D,U,V;const a=b.privateKey,d=b.mnemonic,n=b.chain;if(!a&&!d)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!n||!t.Chains[n])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[c,r]=t.getDeployableOptions({chain:n,privateKey:a,mnemonic:d}),{config:i,account:s}=c,p=r.id,u=await new y.BoostRegistry({address:null,...c}).deploy(),C=class C extends y.BoostRegistry{};C.addresses={[p]:u.assertValidAddress()};let o=C;const m=new o({...c,address:u.assertValidAddress()}),l=await new y.BoostCore({...c,registryAddress:m.assertValidAddress(),protocolFeeReceiver:s.address,owner:s.address}).deploy(),v=await y.getDeployedContractAddress(i,w(i,{abi:x0.abi,bytecode:x0.bytecode,account:s})),h=await y.getDeployedContractAddress(i,w(i,{abi:I0.abi,bytecode:I0.bytecode,account:s})),T=await y.getDeployedContractAddress(i,w(i,{abi:E0.abi,bytecode:E0.bytecode,account:s})),g=await y.getDeployedContractAddress(i,w(i,{abi:R0.abi,bytecode:R0.bytecode,account:s})),x=await y.getDeployedContractAddress(i,w(i,{abi:O0.abi,bytecode:O0.bytecode,account:s})),z=await y.getDeployedContractAddress(i,w(i,{abi:C0.abi,bytecode:C0.bytecode,account:s})),O=await y.getDeployedContractAddress(i,w(i,{abi:B0.abi,bytecode:B0.bytecode,account:s})),A=await y.getDeployedContractAddress(i,w(i,{abi:_0.abi,bytecode:_0.bytecode,account:s})),B=await y.getDeployedContractAddress(i,w(i,{abi:P0.abi,bytecode:P0.bytecode,account:s})),_=await y.getDeployedContractAddress(i,w(i,{abi:z0.abi,bytecode:z0.bytecode,account:s})),N=await y.getDeployedContractAddress(i,w(i,{abi:H0.abi,bytecode:H0.bytecode,account:s})),Q=await y.getDeployedContractAddress(i,w(i,{abi:A0.abi,bytecode:A0.bytecode,account:s})),Z=await y.getDeployedContractAddress(i,w(i,{abi:L0.abi,bytecode:L0.bytecode,account:s})),a0=await y.getDeployedContractAddress(i,w(i,{abi:$0.abi,bytecode:$0.bytecode,account:s})),W=await y.getDeployedContractAddress(i,w(i,{abi:N0.abi,bytecode:N0.bytecode,account:s})),K=await y.getDeployedContractAddress(i,w(i,{abi:k0.abi,bytecode:k0.bytecode,account:s})),Y=await y.getDeployedContractAddress(i,w(i,{abi:F0.abi,bytecode:F0.bytecode,account:s})),J={EventAction:(M=class extends y.EventAction{},M.bases={[p]:Q},M),SimpleAllowList:(I=class extends y.SimpleAllowList{},I.bases={[p]:T},I),SimpleDenyList:(P=class extends y.SimpleDenyList{},P.bases={[p]:g},P),ManagedBudget:($=class extends y.ManagedBudget{},$.bases={[p]:x},$),ManagedBudgetWithFees:(H=class extends y.ManagedBudgetWithFees{},H.bases={[p]:z},H),AllowListIncentive:(L=class extends y.AllowListIncentive{},L.bases={[p]:A},L),CGDAIncentive:(F=class extends y.CGDAIncentive{},F.bases={[p]:B},F),ERC20Incentive:(k=class extends y.ERC20Incentive{},k.bases={[p]:_},k),ERC20VariableIncentive:(S=class extends y.ERC20VariableIncentive{},S.bases={[p]:a0},S),ERC20VariableCriteriaIncentive:(G=class extends y.ERC20VariableCriteriaIncentive{},G.bases={[p]:W},G),PointsIncentive:(D=class extends y.PointsIncentive{},D.bases={[p]:Z},D),SignerValidator:(U=class extends y.SignerValidator{},U.bases={[p]:K},U),LimitedSignerValidator:(V=class extends y.LimitedSignerValidator{},V.bases={[p]:Y},V)};for(const[uf,M0]of Object.entries(J))await m.register(M0.registryType,uf,M0.bases[p]);return{BOOST_CORE_ADDRESS:l.assertValidAddress(),BOOST_REGISTRY_ADDRESS:m.assertValidAddress(),CONTRACT_ACTION_BASE:v,EVENT_ACTION_BASE:Q,ERC721_MINT_ACTION_BASE:h,SIMPLE_ALLOWLIST_BASE:T,SIMPLE_DENYLIST_BASE:g,MANAGED_BUDGET_BASE:x,VESTING_BUDGET_BASE:O,ALLOWLIST_INCENTIVE_BASE:A,CGDA_INCENTIVE_BASE:B,ERC20_INCENTIVE_BASE:_,ERC20_VARIABLE_INCENTIVE_BASE:a0,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:W,ERC1155_INCENTIVE_BASE:N,POINTS_INCENTIVE_BASE:Z,SIGNER_VALIDATOR_BASE:K,LIMITED_SIGNER_VALIDATOR_BASE:Y}};exports.deploy=u8;