[ { "inputs": [], "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": "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": "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": [ { "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": "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" } ]
6101606040523480156200001257600080fd5b506040518060400160405280600881526020017f426c6173744f6666000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f426c6173744f66660000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4f464600000000000000000000000000000000000000000000000000000000008152508160039081620000fd919062000875565b5080600490816200010f919062000875565b505050620001286005836200020960201b90919060201c565b6101208181525050620001466006826200020960201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001856200026160201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506200020333620001d8620002be60201b60201c565b600a620001e6919062000aec565b63042343e0620001f7919062000b3d565b620002c760201b60201c565b62000e5d565b60006020835110156200022f5762000227836200035460201b60201c565b90506200025b565b826200024183620003c160201b60201c565b600001908162000252919062000875565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e051610100514630604051602001620002a395949392919062000bf9565b60405160208183030381529060405280519060200120905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200033c5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000333919062000c56565b60405180910390fd5b6200035060008383620003cb60201b60201c565b5050565b600080829050601f81511115620003a457826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200039b919062000d02565b60405180910390fd5b805181620003b29062000d58565b60001c1760001b915050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200042157806002600082825462000414919062000dc8565b92505081905550620004f7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620004b0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004a79392919062000e03565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200054257806002600082825403925050819055506200058f565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005ee919062000e40565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200067d57607f821691505b60208210810362000693576200069262000635565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006be565b620007098683620006be565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000756620007506200074a8462000721565b6200072b565b62000721565b9050919050565b6000819050919050565b620007728362000735565b6200078a62000781826200075d565b848454620006cb565b825550505050565b600090565b620007a162000792565b620007ae81848462000767565b505050565b5b81811015620007d657620007ca60008262000797565b600181019050620007b4565b5050565b601f8211156200082557620007ef8162000699565b620007fa84620006ae565b810160208510156200080a578190505b620008226200081985620006ae565b830182620007b3565b50505b505050565b600082821c905092915050565b60006200084a600019846008026200082a565b1980831691505092915050565b600062000865838362000837565b9150826002028217905092915050565b6200088082620005fb565b67ffffffffffffffff8111156200089c576200089b62000606565b5b620008a8825462000664565b620008b5828285620007da565b600060209050601f831160018114620008ed5760008415620008d8578287015190505b620008e4858262000857565b86555062000954565b601f198416620008fd8662000699565b60005b82811015620009275784890151825560018201915060208501945060208101905062000900565b8683101562000947578489015162000943601f89168262000837565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009ea57808604811115620009c257620009c16200095c565b5b6001851615620009d25780820291505b8081029050620009e2856200098b565b9450620009a2565b94509492505050565b60008262000a05576001905062000ad8565b8162000a15576000905062000ad8565b816001811462000a2e576002811462000a395762000a6f565b600191505062000ad8565b60ff84111562000a4e5762000a4d6200095c565b5b8360020a91508482111562000a685762000a676200095c565b5b5062000ad8565b5060208310610133831016604e8410600b841016171562000aa95782820a90508381111562000aa35762000aa26200095c565b5b62000ad8565b62000ab8848484600162000998565b9250905081840481111562000ad25762000ad16200095c565b5b81810290505b9392505050565b600060ff82169050919050565b600062000af98262000721565b915062000b068362000adf565b925062000b357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009f3565b905092915050565b600062000b4a8262000721565b915062000b578362000721565b925082820262000b678162000721565b9150828204841483151762000b815762000b806200095c565b5b5092915050565b6000819050919050565b62000b9d8162000b88565b82525050565b62000bae8162000721565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000be18262000bb4565b9050919050565b62000bf38162000bd4565b82525050565b600060a08201905062000c10600083018862000b92565b62000c1f602083018762000b92565b62000c2e604083018662000b92565b62000c3d606083018562000ba3565b62000c4c608083018462000be8565b9695505050505050565b600060208201905062000c6d600083018462000be8565b92915050565b600082825260208201905092915050565b60005b8381101562000ca457808201518184015260208101905062000c87565b60008484015250505050565b6000601f19601f8301169050919050565b600062000cce82620005fb565b62000cda818562000c73565b935062000cec81856020860162000c84565b62000cf78162000cb0565b840191505092915050565b6000602082019050818103600083015262000d1e818462000cc1565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000d4f825162000b88565b80915050919050565b600062000d658262000d26565b8262000d718462000d31565b905062000d7e8162000d41565b9250602082101562000dc15762000dbc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620006be565b831692505b5050919050565b600062000dd58262000721565b915062000de28362000721565b925082820190508082111562000dfd5762000dfc6200095c565b5b92915050565b600060608201905062000e1a600083018662000be8565b62000e29602083018562000ba3565b62000e38604083018462000ba3565b949350505050565b600060208201905062000e57600083018462000ba3565b92915050565b60805160a05160c05160e051610100516101205161014051611d5862000eb86000396000610b5201526000610b17015260006110670152600061104601526000610990015260006109e601526000610a0f0152611d586000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a082311161009757806395d89b411161006657806395d89b411461028e578063a9059cbb146102ac578063d505accf146102dc578063dd62ed3e146102f8576100f5565b806370a08231146101ee57806379cc67901461021e5780637ecebe001461023a57806384b0196e1461026a576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce567146101965780633644e515146101b457806342966c68146101d2576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610328565b60405161010f9190611554565b60405180910390f35b610132600480360381019061012d919061160f565b6103ba565b60405161013f919061166a565b60405180910390f35b6101506103dd565b60405161015d9190611694565b60405180910390f35b610180600480360381019061017b91906116af565b6103e7565b60405161018d919061166a565b60405180910390f35b61019e610416565b6040516101ab919061171e565b60405180910390f35b6101bc61041f565b6040516101c99190611752565b60405180910390f35b6101ec60048036038101906101e7919061176d565b61042e565b005b6102086004803603810190610203919061179a565b610442565b6040516102159190611694565b60405180910390f35b6102386004803603810190610233919061160f565b61048a565b005b610254600480360381019061024f919061179a565b6104aa565b6040516102619190611694565b60405180910390f35b6102726104bc565b60405161028597969594939291906118cf565b60405180910390f35b610296610566565b6040516102a39190611554565b60405180910390f35b6102c660048036038101906102c1919061160f565b6105f8565b6040516102d3919061166a565b60405180910390f35b6102f660048036038101906102f191906119ab565b61061b565b005b610312600480360381019061030d9190611a4d565b610763565b60405161031f9190611694565b60405180910390f35b60606003805461033790611abc565b80601f016020809104026020016040519081016040528092919081815260200182805461036390611abc565b80156103b05780601f10610385576101008083540402835291602001916103b0565b820191906000526020600020905b81548152906001019060200180831161039357829003601f168201915b5050505050905090565b6000806103c56107ea565b90506103d28185856107f2565b600191505092915050565b6000600254905090565b6000806103f26107ea565b90506103ff858285610804565b61040a858585610898565b60019150509392505050565b60006012905090565b600061042961098c565b905090565b61043f6104396107ea565b82610a43565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61049c826104966107ea565b83610804565b6104a68282610a43565b5050565b60006104b582610ac5565b9050919050565b6000606080600080600060606104d0610b0e565b6104d8610b49565b46306000801b600067ffffffffffffffff8111156104f9576104f8611aed565b5b6040519080825280602002602001820160405280156105275781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b60606004805461057590611abc565b80601f01602080910402602001604051908101604052809291908181526020018280546105a190611abc565b80156105ee5780601f106105c3576101008083540402835291602001916105ee565b820191906000526020600020905b8154815290600101906020018083116105d157829003601f168201915b5050505050905090565b6000806106036107ea565b9050610610818585610898565b600191505092915050565b8342111561066057836040517f627913020000000000000000000000000000000000000000000000000000000081526004016106579190611694565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861068f8c610b84565b896040516020016106a596959493929190611b1c565b60405160208183030381529060405280519060200120905060006106c882610bdb565b905060006106d882878787610bf5565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074c57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610743929190611b7d565b60405180910390fd5b6107578a8a8a6107f2565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6107ff8383836001610c25565b505050565b60006108108484610763565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108925781811015610882578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161087993929190611ba6565b60405180910390fd5b61089184848484036000610c25565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361090a5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109019190611bdd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361097c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109739190611bdd565b60405180910390fd5b610987838383610dfc565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610a0857507f000000000000000000000000000000000000000000000000000000000000000046145b15610a35577f00000000000000000000000000000000000000000000000000000000000000009050610a40565b610a3d611021565b90505b90565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab55760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610aac9190611bdd565b60405180910390fd5b610ac182600083610dfc565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060610b4460057f00000000000000000000000000000000000000000000000000000000000000006110b790919063ffffffff16565b905090565b6060610b7f60067f00000000000000000000000000000000000000000000000000000000000000006110b790919063ffffffff16565b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050559050919050565b6000610bee610be861098c565b83611167565b9050919050565b600080600080610c07888888886111a8565b925092509250610c17828261129c565b829350505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c975760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610c8e9190611bdd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d095760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610d009190611bdd565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610df6578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ded9190611694565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e4e578060026000828254610e429190611c27565b92505081905550610f21565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eda578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ed193929190611ba6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f6a5780600260008282540392505081905550610fb7565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110149190611694565b60405180910390a3505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161109c959493929190611c5b565b60405160208183030381529060405280519060200120905090565b606060ff60001b83146110d4576110cd83611400565b9050611161565b8180546110e090611abc565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90611abc565b80156111595780601f1061112e57610100808354040283529160200191611159565b820191906000526020600020905b81548152906001019060200180831161113c57829003601f168201915b505050505090505b92915050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156111e8576000600385925092509250611292565b60006001888888886040516000815260200160405260405161120d9493929190611cae565b6020604051602081039080840390855afa15801561122f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361128357600060016000801b93509350935050611292565b8060008060001b935093509350505b9450945094915050565b600060038111156112b0576112af611cf3565b5b8260038111156112c3576112c2611cf3565b5b03156113fc57600160038111156112dd576112dc611cf3565b5b8260038111156112f0576112ef611cf3565b5b03611327576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561133b5761133a611cf3565b5b82600381111561134e5761134d611cf3565b5b03611393578060001c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161138a9190611694565b60405180910390fd5b6003808111156113a6576113a5611cf3565b5b8260038111156113b9576113b8611cf3565b5b036113fb57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016113f29190611752565b60405180910390fd5b5b5050565b6060600061140d83611474565b90506000602067ffffffffffffffff81111561142c5761142b611aed565b5b6040519080825280601f01601f19166020018201604052801561145e5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60008060ff8360001c169050601f8111156114bb576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114fe5780820151818401526020810190506114e3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611526826114c4565b61153081856114cf565b93506115408185602086016114e0565b6115498161150a565b840191505092915050565b6000602082019050818103600083015261156e818461151b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115a68261157b565b9050919050565b6115b68161159b565b81146115c157600080fd5b50565b6000813590506115d3816115ad565b92915050565b6000819050919050565b6115ec816115d9565b81146115f757600080fd5b50565b600081359050611609816115e3565b92915050565b6000806040838503121561162657611625611576565b5b6000611634858286016115c4565b9250506020611645858286016115fa565b9150509250929050565b60008115159050919050565b6116648161164f565b82525050565b600060208201905061167f600083018461165b565b92915050565b61168e816115d9565b82525050565b60006020820190506116a96000830184611685565b92915050565b6000806000606084860312156116c8576116c7611576565b5b60006116d6868287016115c4565b93505060206116e7868287016115c4565b92505060406116f8868287016115fa565b9150509250925092565b600060ff82169050919050565b61171881611702565b82525050565b6000602082019050611733600083018461170f565b92915050565b6000819050919050565b61174c81611739565b82525050565b60006020820190506117676000830184611743565b92915050565b60006020828403121561178357611782611576565b5b6000611791848285016115fa565b91505092915050565b6000602082840312156117b0576117af611576565b5b60006117be848285016115c4565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6117fc816117c7565b82525050565b61180b8161159b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611846816115d9565b82525050565b6000611858838361183d565b60208301905092915050565b6000602082019050919050565b600061187c82611811565b611886818561181c565b93506118918361182d565b8060005b838110156118c25781516118a9888261184c565b97506118b483611864565b925050600181019050611895565b5085935050505092915050565b600060e0820190506118e4600083018a6117f3565b81810360208301526118f6818961151b565b9050818103604083015261190a818861151b565b90506119196060830187611685565b6119266080830186611802565b61193360a0830185611743565b81810360c08301526119458184611871565b905098975050505050505050565b61195c81611702565b811461196757600080fd5b50565b60008135905061197981611953565b92915050565b61198881611739565b811461199357600080fd5b50565b6000813590506119a58161197f565b92915050565b600080600080600080600060e0888a0312156119ca576119c9611576565b5b60006119d88a828b016115c4565b97505060206119e98a828b016115c4565b96505060406119fa8a828b016115fa565b9550506060611a0b8a828b016115fa565b9450506080611a1c8a828b0161196a565b93505060a0611a2d8a828b01611996565b92505060c0611a3e8a828b01611996565b91505092959891949750929550565b60008060408385031215611a6457611a63611576565b5b6000611a72858286016115c4565b9250506020611a83858286016115c4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ad457607f821691505b602082108103611ae757611ae6611a8d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c082019050611b316000830189611743565b611b3e6020830188611802565b611b4b6040830187611802565b611b586060830186611685565b611b656080830185611685565b611b7260a0830184611685565b979650505050505050565b6000604082019050611b926000830185611802565b611b9f6020830184611802565b9392505050565b6000606082019050611bbb6000830186611802565b611bc86020830185611685565b611bd56040830184611685565b949350505050565b6000602082019050611bf26000830184611802565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c32826115d9565b9150611c3d836115d9565b9250828201905080821115611c5557611c54611bf8565b5b92915050565b600060a082019050611c706000830188611743565b611c7d6020830187611743565b611c8a6040830186611743565b611c976060830185611685565b611ca46080830184611802565b9695505050505050565b6000608082019050611cc36000830187611743565b611cd0602083018661170f565b611cdd6040830185611743565b611cea6060830184611743565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212206d8871047e3082e5a98b560c63eda54ea7c0c7bdd4750f9a28e5b4b33555118964736f6c63430008150033