[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61016060405234801562000011575f80fd5b5060405162002f4938038062002f498339818101604052810190620000379190620007b8565b806040518060400160405280601381526020017f42616420496e766573746d656e7420436f696e00000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280601381526020017f42616420496e766573746d656e7420436f696e000000000000000000000000008152506040518060400160405280600381526020017f4241440000000000000000000000000000000000000000000000000000000000815250816003908162000122919062000a4c565b50806004908162000134919062000a4c565b5050506200014d600583620002b660201b90919060201c565b61012081815250506200016b600682620002b660201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001aa6200030b60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200025b575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000252919062000b41565b60405180910390fd5b6200026c816200036760201b60201c565b50620002af33620002826200042a60201b60201c565b600a62000290919062000ce5565b655af3107a4000620002a3919062000d35565b6200043260201b60201c565b5062000fdf565b5f602083511015620002db57620002d383620004bc60201b60201c565b905062000305565b82620002ed836200052660201b60201c565b5f019081620002fd919062000a4c565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200034c95949392919062000daa565b60405160208183030381529060405280519060200120905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004a5575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200049c919062000b41565b60405180910390fd5b620004b85f83836200052f60201b60201c565b5050565b5f80829050601f815111156200050b57826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040162000502919062000e8f565b60405180910390fd5b805181620005199062000ee0565b5f1c175f1b915050919050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000583578060025f82825462000576919062000f4f565b9250508190555062000654565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200060f578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620006069392919062000f89565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200069d578060025f8282540392505081905550620006e7565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000746919062000fc4565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007828262000757565b9050919050565b620007948162000776565b81146200079f575f80fd5b50565b5f81519050620007b28162000789565b92915050565b5f60208284031215620007d057620007cf62000753565b5b5f620007df84828501620007a2565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200086457607f821691505b6020821081036200087a57620008796200081f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008a1565b620008ea8683620008a1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009346200092e620009288462000902565b6200090b565b62000902565b9050919050565b5f819050919050565b6200094f8362000914565b620009676200095e826200093b565b848454620008ad565b825550505050565b5f90565b6200097d6200096f565b6200098a81848462000944565b505050565b5b81811015620009b157620009a55f8262000973565b60018101905062000990565b5050565b601f82111562000a0057620009ca8162000880565b620009d58462000892565b81016020851015620009e5578190505b620009fd620009f48562000892565b8301826200098f565b50505b505050565b5f82821c905092915050565b5f62000a225f198460080262000a05565b1980831691505092915050565b5f62000a3c838362000a11565b9150826002028217905092915050565b62000a5782620007e8565b67ffffffffffffffff81111562000a735762000a72620007f2565b5b62000a7f82546200084c565b62000a8c828285620009b5565b5f60209050601f83116001811462000ac2575f841562000aad578287015190505b62000ab9858262000a2f565b86555062000b28565b601f19841662000ad28662000880565b5f5b8281101562000afb5784890151825560018201915060208501945060208101905062000ad4565b8683101562000b1b578489015162000b17601f89168262000a11565b8355505b6001600288020188555050505b505050505050565b62000b3b8162000776565b82525050565b5f60208201905062000b565f83018462000b30565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000be65780860481111562000bbe5762000bbd62000b5c565b5b600185161562000bce5780820291505b808102905062000bde8562000b89565b945062000b9e565b94509492505050565b5f8262000c00576001905062000cd2565b8162000c0f575f905062000cd2565b816001811462000c28576002811462000c335762000c69565b600191505062000cd2565b60ff84111562000c485762000c4762000b5c565b5b8360020a91508482111562000c625762000c6162000b5c565b5b5062000cd2565b5060208310610133831016604e8410600b841016171562000ca35782820a90508381111562000c9d5762000c9c62000b5c565b5b62000cd2565b62000cb2848484600162000b95565b9250905081840481111562000ccc5762000ccb62000b5c565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000cf18262000902565b915062000cfe8362000cd9565b925062000d2d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bef565b905092915050565b5f62000d418262000902565b915062000d4e8362000902565b925082820262000d5e8162000902565b9150828204841483151762000d785762000d7762000b5c565b5b5092915050565b5f819050919050565b62000d938162000d7f565b82525050565b62000da48162000902565b82525050565b5f60a08201905062000dbf5f83018862000d88565b62000dce602083018762000d88565b62000ddd604083018662000d88565b62000dec606083018562000d99565b62000dfb608083018462000b30565b9695505050505050565b5f82825260208201905092915050565b5f5b8381101562000e3457808201518184015260208101905062000e17565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000e5b82620007e8565b62000e67818562000e05565b935062000e7981856020860162000e15565b62000e848162000e3f565b840191505092915050565b5f6020820190508181035f83015262000ea9818462000e4f565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f62000ed7825162000d7f565b80915050919050565b5f62000eec8262000eb1565b8262000ef88462000ebb565b905062000f058162000eca565b9250602082101562000f485762000f437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620008a1565b831692505b5050919050565b5f62000f5b8262000902565b915062000f688362000902565b925082820190508082111562000f835762000f8262000b5c565b5b92915050565b5f60608201905062000f9e5f83018662000b30565b62000fad602083018562000d99565b62000fbc604083018462000d99565b949350505050565b5f60208201905062000fd95f83018462000d99565b92915050565b60805160a05160c05160e051610100516101205161014051611f18620010315f395f610d9401525f610d5901525f61128d01525f61126c01525f610a8e01525f610ae401525f610b0d0152611f185ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c806379cc6790116100a057806395d89b411161006f57806395d89b41146102d4578063a9059cbb146102f2578063d505accf14610322578063dd62ed3e1461033e578063f2fde38b1461036e57610114565b806379cc6790146102465780637ecebe001461026257806384b0196e146102925780638da5cb5b146102b657610114565b8063313ce567116100e7578063313ce567146101b45780633644e515146101d257806342966c68146101f057806370a082311461020c578063715018a61461023c57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f80fd5b61012061038a565b60405161012d919061175d565b60405180910390f35b610150600480360381019061014b919061180e565b61041a565b60405161015d9190611866565b60405180910390f35b61016e61043c565b60405161017b919061188e565b60405180910390f35b61019e600480360381019061019991906118a7565b610445565b6040516101ab9190611866565b60405180910390f35b6101bc610473565b6040516101c99190611912565b60405180910390f35b6101da61047b565b6040516101e79190611943565b60405180910390f35b61020a6004803603810190610205919061195c565b610489565b005b61022660048036038101906102219190611987565b61049d565b604051610233919061188e565b60405180910390f35b6102446104e2565b005b610260600480360381019061025b919061180e565b6104f5565b005b61027c60048036038101906102779190611987565b610515565b604051610289919061188e565b60405180910390f35b61029a610526565b6040516102ad9796959493929190611ab2565b60405180910390f35b6102be6105cb565b6040516102cb9190611b34565b60405180910390f35b6102dc6105f3565b6040516102e9919061175d565b60405180910390f35b61030c6004803603810190610307919061180e565b610683565b6040516103199190611866565b60405180910390f35b61033c60048036038101906103379190611ba1565b6106a5565b005b61035860048036038101906103539190611c3e565b6107ea565b604051610365919061188e565b60405180910390f35b61038860048036038101906103839190611987565b61086c565b005b60606003805461039990611ca9565b80601f01602080910402602001604051908101604052809291908181526020018280546103c590611ca9565b80156104105780601f106103e757610100808354040283529160200191610410565b820191905f5260205f20905b8154815290600101906020018083116103f357829003601f168201915b5050505050905090565b5f806104246108f0565b90506104318185856108f7565b600191505092915050565b5f600254905090565b5f8061044f6108f0565b905061045c858285610909565b61046785858561099b565b60019150509392505050565b5f6012905090565b5f610484610a8b565b905090565b61049a6104946108f0565b82610b41565b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104ea610bc0565b6104f35f610c47565b565b610507826105016108f0565b83610909565b6105118282610b41565b5050565b5f61051f82610d0a565b9050919050565b5f6060805f805f6060610537610d50565b61053f610d8b565b46305f801b5f67ffffffffffffffff81111561055e5761055d611cd9565b5b60405190808252806020026020018201604052801561058c5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461060290611ca9565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90611ca9565b80156106795780601f1061065057610100808354040283529160200191610679565b820191905f5260205f20905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b5f8061068d6108f0565b905061069a81858561099b565b600191505092915050565b834211156106ea57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016106e1919061188e565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107188c610dc6565b8960405160200161072e96959493929190611d06565b6040516020818303038152906040528051906020012090505f61075082610e19565b90505f61075f82878787610e32565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107d357808a6040517f4b800e460000000000000000000000000000000000000000000000000000000081526004016107ca929190611d65565b60405180910390fd5b6107de8a8a8a6108f7565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610874610bc0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108e4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108db9190611b34565b60405180910390fd5b6108ed81610c47565b50565b5f33905090565b6109048383836001610e60565b505050565b5f61091484846107ea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109955781811015610986578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161097d93929190611d8c565b60405180910390fd5b61099484848484035f610e60565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a0b575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a029190611b34565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a7b575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a729190611b34565b60405180910390fd5b610a8683838361102f565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610b0657507f000000000000000000000000000000000000000000000000000000000000000046145b15610b33577f00000000000000000000000000000000000000000000000000000000000000009050610b3e565b610b3b611248565b90505b90565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bb1575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610ba89190611b34565b60405180910390fd5b610bbc825f8361102f565b5050565b610bc86108f0565b73ffffffffffffffffffffffffffffffffffffffff16610be66105cb565b73ffffffffffffffffffffffffffffffffffffffff1614610c4557610c096108f0565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c3c9190611b34565b60405180910390fd5b565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060610d8660057f00000000000000000000000000000000000000000000000000000000000000006112dd90919063ffffffff16565b905090565b6060610dc160067f00000000000000000000000000000000000000000000000000000000000000006112dd90919063ffffffff16565b905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f610e2b610e25610a8b565b8361138a565b9050919050565b5f805f80610e42888888886113ca565b925092509250610e5282826114b1565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ed0575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ec79190611b34565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f40575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f379190611b34565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611029578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611020919061188e565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361107f578060025f8282546110739190611dee565b9250508190555061114d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611108578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016110ff93929190611d8c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611194578060025f82825403925050819055506111de565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161123b919061188e565b60405180910390a3505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016112c2959493929190611e21565b60405160208183030381529060405280519060200120905090565b606060ff5f1b83146112f9576112f283611613565b9050611384565b81805461130590611ca9565b80601f016020809104026020016040519081016040528092919081815260200182805461133190611ca9565b801561137c5780601f106113535761010080835404028352916020019161137c565b820191905f5260205f20905b81548152906001019060200180831161135f57829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611406575f6003859250925092506114a7565b5f6001888888886040515f81526020016040526040516114299493929190611e72565b6020604051602081039080840390855afa158015611449573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361149a575f60015f801b935093509350506114a7565b805f805f1b935093509350505b9450945094915050565b5f60038111156114c4576114c3611eb5565b5b8260038111156114d7576114d6611eb5565b5b031561160f57600160038111156114f1576114f0611eb5565b5b82600381111561150457611503611eb5565b5b0361153b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561154f5761154e611eb5565b5b82600381111561156257611561611eb5565b5b036115a657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161159d919061188e565b60405180910390fd5b6003808111156115b9576115b8611eb5565b5b8260038111156115cc576115cb611eb5565b5b0361160e57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016116059190611943565b60405180910390fd5b5b5050565b60605f61161f83611685565b90505f602067ffffffffffffffff81111561163d5761163c611cd9565b5b6040519080825280601f01601f19166020018201604052801561166f5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f8111156116ca576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561170a5780820151818401526020810190506116ef565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61172f826116d3565b61173981856116dd565b93506117498185602086016116ed565b61175281611715565b840191505092915050565b5f6020820190508181035f8301526117758184611725565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117aa82611781565b9050919050565b6117ba816117a0565b81146117c4575f80fd5b50565b5f813590506117d5816117b1565b92915050565b5f819050919050565b6117ed816117db565b81146117f7575f80fd5b50565b5f81359050611808816117e4565b92915050565b5f80604083850312156118245761182361177d565b5b5f611831858286016117c7565b9250506020611842858286016117fa565b9150509250929050565b5f8115159050919050565b6118608161184c565b82525050565b5f6020820190506118795f830184611857565b92915050565b611888816117db565b82525050565b5f6020820190506118a15f83018461187f565b92915050565b5f805f606084860312156118be576118bd61177d565b5b5f6118cb868287016117c7565b93505060206118dc868287016117c7565b92505060406118ed868287016117fa565b9150509250925092565b5f60ff82169050919050565b61190c816118f7565b82525050565b5f6020820190506119255f830184611903565b92915050565b5f819050919050565b61193d8161192b565b82525050565b5f6020820190506119565f830184611934565b92915050565b5f602082840312156119715761197061177d565b5b5f61197e848285016117fa565b91505092915050565b5f6020828403121561199c5761199b61177d565b5b5f6119a9848285016117c7565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119e6816119b2565b82525050565b6119f5816117a0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a2d816117db565b82525050565b5f611a3e8383611a24565b60208301905092915050565b5f602082019050919050565b5f611a60826119fb565b611a6a8185611a05565b9350611a7583611a15565b805f5b83811015611aa5578151611a8c8882611a33565b9750611a9783611a4a565b925050600181019050611a78565b5085935050505092915050565b5f60e082019050611ac55f83018a6119dd565b8181036020830152611ad78189611725565b90508181036040830152611aeb8188611725565b9050611afa606083018761187f565b611b0760808301866119ec565b611b1460a0830185611934565b81810360c0830152611b268184611a56565b905098975050505050505050565b5f602082019050611b475f8301846119ec565b92915050565b611b56816118f7565b8114611b60575f80fd5b50565b5f81359050611b7181611b4d565b92915050565b611b808161192b565b8114611b8a575f80fd5b50565b5f81359050611b9b81611b77565b92915050565b5f805f805f805f60e0888a031215611bbc57611bbb61177d565b5b5f611bc98a828b016117c7565b9750506020611bda8a828b016117c7565b9650506040611beb8a828b016117fa565b9550506060611bfc8a828b016117fa565b9450506080611c0d8a828b01611b63565b93505060a0611c1e8a828b01611b8d565b92505060c0611c2f8a828b01611b8d565b91505092959891949750929550565b5f8060408385031215611c5457611c5361177d565b5b5f611c61858286016117c7565b9250506020611c72858286016117c7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611cc057607f821691505b602082108103611cd357611cd2611c7c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c082019050611d195f830189611934565b611d2660208301886119ec565b611d3360408301876119ec565b611d40606083018661187f565b611d4d608083018561187f565b611d5a60a083018461187f565b979650505050505050565b5f604082019050611d785f8301856119ec565b611d8560208301846119ec565b9392505050565b5f606082019050611d9f5f8301866119ec565b611dac602083018561187f565b611db9604083018461187f565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611df8826117db565b9150611e03836117db565b9250828201905080821115611e1b57611e1a611dc1565b5b92915050565b5f60a082019050611e345f830188611934565b611e416020830187611934565b611e4e6040830186611934565b611e5b606083018561187f565b611e6860808301846119ec565b9695505050505050565b5f608082019050611e855f830187611934565b611e926020830186611903565b611e9f6040830185611934565b611eac6060830184611934565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220c0c60ef97492431454f9d3e2767a19efccd6415fdc6aac797f04fce8c83356db64736f6c63430008140033000000000000000000000000841ace4e85d0501a47b2c200659ed605635988cb