Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "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": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "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": [ { "indexed": true, "internalType": "address", "name": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationUsed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "Blacklisted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Burned", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "UnBlacklisted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "BLACKLISTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "address", "name": "account", "type": "address" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "blacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "cancelAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "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": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "receiveWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "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": "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "transferWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015610042575f80fd5b5061005161005660201b60201c565b6101b6565b5f61006561015460201b60201c565b9050805f0160089054906101000a900460ff16156100af576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101515767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051610148919061019d565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b6101978161017b565b82525050565b5f6020820190506101b05f83018461018e565b92915050565b608051614d016101dc5f395f81816120ce0152818161212301526123430152614d015ff3fe608060405260043610610224575f3560e01c80638129fc1c11610122578063d5391393116100aa578063e63ab1e91161006e578063e63ab1e9146107f0578063ef55bec61461081a578063f515e6f214610842578063f72c0d8b1461086c578063f9f92be41461089657610224565b8063d5391393146106fe578063d547741f14610728578063dbac26e914610750578063dd62ed3e1461078c578063e3ee160e146107c857610224565b806395d89b41116100f157806395d89b411461061c578063a217fddf14610646578063a9059cbb14610670578063ad3cb1cc146106ac578063d505accf146106d657610224565b80638129fc1c146105845780638456cb591461059a57806384b0196e146105b057806391d14854146105e057610224565b806336568abe116101b057806352d1902d1161017457806352d1902d146104905780635a049a70146104ba5780635c975abb146104e257806370a082311461050c5780637ecebe001461054857610224565b806336568abe146103e65780633f4ba83a1461040e57806340c10f191461042457806342966c681461044c5780634f1ef2861461047457610224565b80631a895266116101f75780631a895266146102f457806323b872dd1461031c578063248a9ca3146103585780632f2ff15d14610394578063313ce567146103bc57610224565b806301ffc9a71461022857806306fdde0314610264578063095ea7b31461028e57806318160ddd146102ca575b5f80fd5b348015610233575f80fd5b5061024e600480360381019061024991906136fb565b6108be565b60405161025b9190613740565b60405180910390f35b34801561026f575f80fd5b50610278610937565b60405161028591906137c9565b60405180910390f35b348015610299575f80fd5b506102b460048036038101906102af9190613876565b6109d5565b6040516102c19190613740565b60405180910390f35b3480156102d5575f80fd5b506102de6109f7565b6040516102eb91906138c3565b60405180910390f35b3480156102ff575f80fd5b5061031a600480360381019061031591906138dc565b610a0e565b005b348015610327575f80fd5b50610342600480360381019061033d9190613907565b610ad3565b60405161034f9190613740565b60405180910390f35b348015610363575f80fd5b5061037e6004803603810190610379919061398a565b610b01565b60405161038b91906139c4565b60405180910390f35b34801561039f575f80fd5b506103ba60048036038101906103b591906139dd565b610b2b565b005b3480156103c7575f80fd5b506103d0610b4d565b6040516103dd9190613a36565b60405180910390f35b3480156103f1575f80fd5b5061040c600480360381019061040791906139dd565b610b55565b005b348015610419575f80fd5b50610422610bd0565b005b34801561042f575f80fd5b5061044a60048036038101906104459190613876565b610c05565b005b348015610457575f80fd5b50610472600480360381019061046d9190613a4f565b610c8c565b005b61048e60048036038101906104899190613ba6565b610ce7565b005b34801561049b575f80fd5b506104a4610d06565b6040516104b191906139c4565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190613c2a565b610d37565b005b3480156104ed575f80fd5b506104f6610f59565b6040516105039190613740565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d91906138dc565b610f6d565b60405161053f91906138c3565b60405180910390f35b348015610553575f80fd5b5061056e600480360381019061056991906138dc565b610fc0565b60405161057b91906138c3565b60405180910390f35b34801561058f575f80fd5b50610598610fd5565b005b3480156105a5575f80fd5b506105ae611305565b005b3480156105bb575f80fd5b506105c461133a565b6040516105d79796959493929190613da1565b60405180910390f35b3480156105eb575f80fd5b50610606600480360381019061060191906139dd565b611443565b6040516106139190613740565b60405180910390f35b348015610627575f80fd5b506106306114b4565b60405161063d91906137c9565b60405180910390f35b348015610651575f80fd5b5061065a611552565b60405161066791906139c4565b60405180910390f35b34801561067b575f80fd5b5061069660048036038101906106919190613876565b611558565b6040516106a39190613740565b60405180910390f35b3480156106b7575f80fd5b506106c061157a565b6040516106cd91906137c9565b60405180910390f35b3480156106e1575f80fd5b506106fc60048036038101906106f79190613e23565b6115b3565b005b348015610709575f80fd5b50610712611779565b60405161071f91906139c4565b60405180910390f35b348015610733575f80fd5b5061074e600480360381019061074991906139dd565b61179d565b005b34801561075b575f80fd5b50610776600480360381019061077191906138dc565b6117bf565b6040516107839190613740565b60405180910390f35b348015610797575f80fd5b506107b260048036038101906107ad9190613ec0565b6117dc565b6040516107bf91906138c3565b60405180910390f35b3480156107d3575f80fd5b506107ee60048036038101906107e99190613efe565b61186c565b005b3480156107fb575f80fd5b506108046118f2565b60405161081191906139c4565b60405180910390f35b348015610825575f80fd5b50610840600480360381019061083b9190613efe565b611916565b005b34801561084d575f80fd5b50610856611a0a565b60405161086391906139c4565b60405180910390f35b348015610877575f80fd5b50610880611a2e565b60405161088d91906139c4565b60405180910390f35b3480156108a1575f80fd5b506108bc60048036038101906108b791906138dc565b611a52565b005b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610930575061092f82611b18565b5b9050919050565b60605f610942611b81565b905080600301805461095390613fef565b80601f016020809104026020016040519081016040528092919081815260200182805461097f90613fef565b80156109ca5780601f106109a1576101008083540402835291602001916109ca565b820191905f5260205f20905b8154815290600101906020018083116109ad57829003601f168201915b505050505091505090565b5f806109df611ba8565b90506109ec818585611baf565b600191505092915050565b5f80610a01611b81565b9050806002015491505090565b7f98db8a220cd0f09badce9f22d0ba7e93edb3d404448cc3560d391ab096ad16e9610a3881611bc1565b5f60325f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e60405160405180910390a25050565b5f80610add611ba8565b9050610aea858285611bd5565b610af5858585611c67565b60019150509392505050565b5f80610b0b611d57565b9050805f015f8481526020019081526020015f2060010154915050919050565b610b3482610b01565b610b3d81611bc1565b610b478383611d7e565b50505050565b5f6006905090565b610b5d611ba8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc1576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcb8282611e76565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610bfa81611bc1565b610c02611f6e565b50565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610c2f81611bc1565b610c398383611fce565b8273ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe83604051610c7f91906138c3565b60405180910390a2505050565b610c96338261204d565b3373ffffffffffffffffffffffffffffffffffffffff167f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df782604051610cdc91906138c3565b60405180910390a250565b610cef6120cc565b610cf8826121b2565b610d028282612223565b5050565b5f610d0f612341565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b60345f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f9054906101000a900460ff1615610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc79061408f565b60405180910390fd5b5f7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a15974298686604051602001610e06939291906140ad565b6040516020818303038152906040528051906020012090505f610e28826123c8565b90505f610e37828787876123e1565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e9061412c565b60405180910390fd5b600160345f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8981526020019081526020015f205f6101000a81548160ff021916908315150217905550868873ffffffffffffffffffffffffffffffffffffffff167f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8160405160405180910390a35050505050505050565b5f805f9054906101000a900460ff16905090565b5f80610f77611b81565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b6033602052805f5260405f205f915090505481565b5f610fde61240a565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156110265750825b90505f60018367ffffffffffffffff1614801561105957505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611067575080155b1561109e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156110eb576001855f0160086101000a81548160ff0219169083151502179055505b61115f6040518060400160405280600981526020017f4d6f636b205553444300000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5553444300000000000000000000000000000000000000000000000000000000815250612431565b611167612447565b61116f612451565b6111e36040518060400160405280600981526020017f4d6f636b205553444300000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612463565b6111eb612479565b6111f75f801b33611d7e565b506112227f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611d7e565b5061124d7f98db8a220cd0f09badce9f22d0ba7e93edb3d404448cc3560d391ab096ad16e933611d7e565b506112787f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33611d7e565b506112a37f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e333611d7e565b5083156112fe575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516112f5919061419f565b60405180910390a15b5050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61132f81611bc1565b611337612483565b50565b5f6060805f805f60605f61134c6124e4565b90505f801b815f015414801561136757505f801b8160010154145b6113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d90614202565b60405180910390fd5b6113ae61250b565b6113b66125a9565b46305f801b5f67ffffffffffffffff8111156113d5576113d4613a82565b5b6040519080825280602002602001820160405280156114035781602001602082028036833780820191505090505b507f0f0000000000000000000000000000000000000000000000000000000000000095949392919097509750975097509750975097505090919293949596565b5f8061144d611d57565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b60605f6114bf611b81565b90508060040180546114d090613fef565b80601f01602080910402602001604051908101604052809291908181526020018280546114fc90613fef565b80156115475780601f1061151e57610100808354040283529160200191611547565b820191905f5260205f20905b81548152906001019060200180831161152a57829003601f168201915b505050505091505090565b5f801b81565b5f80611562611ba8565b905061156f818585611c67565b600191505092915050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b834211156115f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ed9061426a565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888860335f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548960405160200161166f96959493929190614288565b6040516020818303038152906040528051906020012090505f611691826123c8565b90505f6116a0828787876123e1565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170790614331565b60405180910390fd5b60335f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061175d9061437c565b919050555061176d8a8a8a611baf565b50505050505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6117a682610b01565b6117af81611bc1565b6117b98383611e76565b50505050565b6032602052805f5260405f205f915054906101000a900460ff1681565b5f806117e6611b81565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b61187889858888612647565b5f7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a22678a8a8a8a8a8a6040516020016118b697969594939291906143c3565b6040516020818303038152906040528051906020012090506118db8a82868686612812565b6118e68a8a8a611c67565b50505050505050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b9061447a565b60405180910390fd5b61199089858888612647565b5f7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de88a8a8a8a8a8a6040516020016119ce97969594939291906143c3565b6040516020818303038152906040528051906020012090506119f38a82868686612812565b6119fe8a8a8a611c67565b50505050505050505050565b7f98db8a220cd0f09badce9f22d0ba7e93edb3d404448cc3560d391ab096ad16e981565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b7f98db8a220cd0f09badce9f22d0ba7e93edb3d404448cc3560d391ab096ad16e9611a7c81611bc1565b600160325f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a25050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00905090565b5f33905090565b611bbc83838360016128a4565b505050565b611bd281611bcd611ba8565b612a81565b50565b5f611be084846117dc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c615781811015611c52578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611c4993929190614498565b60405180910390fd5b611c6084848484035f6128a4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cd7575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611cce91906144cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d47575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611d3e91906144cd565b60405180910390fd5b611d52838383612ad2565b505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b5f80611d88611d57565b9050611d948484611443565b611e6b576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611e07611ba8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611e70565b5f9150505b92915050565b5f80611e80611d57565b9050611e8c8484611443565b15611f63575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611eff611ba8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611f68565b5f9150505b92915050565b611f76612bc7565b5f805f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611fb7611ba8565b604051611fc491906144cd565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361203e575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161203591906144cd565b60405180910390fd5b6120495f8383612ad2565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120bd575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016120b491906144cd565b60405180910390fd5b6120c8825f83612ad2565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061217957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612160612c10565b73ffffffffffffffffffffffffffffffffffffffff1614155b156121b0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e36121dc81611bc1565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25050565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561228b57506040513d601f19601f8201168201806040525081019061228891906144fa565b60015b6122cc57816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016122c391906144cd565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b811461233257806040517faa1d49a400000000000000000000000000000000000000000000000000000000815260040161232991906139c4565b60405180910390fd5b61233c8383612c63565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146123c6576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6123da6123d4612cd5565b83612ce3565b9050919050565b5f805f6123f087878787612d23565b915091506123fd81612dfb565b8192505050949350505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b612439612f60565b6124438282612fa0565b5050565b61244f612f60565b565b612459612f60565b612461612fdc565b565b61246b612f60565b6124758282612ffe565b5050565b612481612f60565b565b61248b61304f565b60015f806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586124cd611ba8565b6040516124da91906144cd565b60405180910390a1565b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100905090565b60605f6125166124e4565b905080600201805461252790613fef565b80601f016020809104026020016040519081016040528092919081815260200182805461255390613fef565b801561259e5780601f106125755761010080835404028352916020019161259e565b820191905f5260205f20905b81548152906001019060200180831161258157829003601f168201915b505050505091505090565b60605f6125b46124e4565b90508060030180546125c590613fef565b80601f01602080910402602001604051908101604052809291908181526020018280546125f190613fef565b801561263c5780601f106126135761010080835404028352916020019161263c565b820191905f5260205f20905b81548152906001019060200180831161261f57829003601f168201915b505050505091505090565b814211612689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126809061456f565b60405180910390fd5b8042106126cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c2906145d7565b60405180910390fd5b60345f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f9054906101000a900460ff1615612764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275b9061408f565b60405180910390fd5b600160345f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550828473ffffffffffffffffffffffffffffffffffffffff167f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a560405160405180910390a350505050565b5f61281c856123c8565b90505f61282b828686866123e1565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461289b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128929061463f565b60405180910390fd5b50505050505050565b5f6128ad611b81565b90505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361291f575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161291691906144cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361298f575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161298691906144cd565b60405180910390fd5b82816001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508115612a7a578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612a7191906138c3565b60405180910390a35b5050505050565b612a8b8282611443565b612ace5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401612ac592919061465d565b60405180910390fd5b5050565b612ada61304f565b60325f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612b78575060325f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bae906146ce565b60405180910390fd5b612bc2838383613099565b505050565b612bcf610f59565b612c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0590614736565b60405180910390fd5b565b5f612c3c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6132c8565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612c6c826132d1565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f81511115612cc857612cc2828261339a565b50612cd1565b612cd061341a565b5b5050565b5f612cde613456565b905090565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0835f1c1115612d5b575f600391509150612df2565b5f6001878787876040515f8152602001604052604051612d7e9493929190614754565b6020604051602081039080840390855afa158015612d9e573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dea575f60019250925050612df2565b805f92509250505b94509492505050565b5f6004811115612e0e57612e0d614797565b5b816004811115612e2157612e20614797565b5b0315612f5d5760016004811115612e3b57612e3a614797565b5b816004811115612e4e57612e4d614797565b5b03612e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e859061480e565b60405180910390fd5b60026004811115612ea257612ea1614797565b5b816004811115612eb557612eb4614797565b5b03612ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eec90614876565b60405180910390fd5b60036004811115612f0957612f08614797565b5b816004811115612f1c57612f1b614797565b5b03612f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5390614904565b60405180910390fd5b5b50565b612f686134b9565b612f9e576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612fa8612f60565b5f612fb1611b81565b905082816003019081612fc49190614ab6565b5081816004019081612fd69190614ab6565b50505050565b612fe4612f60565b5f805f6101000a81548160ff021916908315150217905550565b613006612f60565b5f61300f6124e4565b9050828160020190816130229190614ab6565b50818160030190816130349190614ab6565b505f801b815f01819055505f801b8160010181905550505050565b613057610f59565b15613097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308e90614bcf565b60405180910390fd5b565b5f6130a2611b81565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036130f65781816002015f8282546130ea9190614bed565b925050819055506131c8565b5f815f015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015613181578481846040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161317893929190614498565b60405180910390fd5b828103825f015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132115781816002015f828254039250508190555061325d565b81815f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132ba91906138c3565b60405180910390a350505050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0361332c57806040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161332391906144cd565b60405180910390fd5b806133587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6132c8565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516133c39190614c64565b5f60405180830381855af49150503d805f81146133fb576040519150601f19603f3d011682016040523d82523d5f602084013e613400565b606091505b50915091506134108583836134d7565b9250505092915050565b5f341115613454576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613480613564565b6134886135da565b463060405160200161349e959493929190614c7a565b60405160208183030381529060405280519060200120905090565b5f6134c261240a565b5f0160089054906101000a900460ff16905090565b6060826134ec576134e782613651565b61355c565b5f825114801561351257505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561355457836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161354b91906144cd565b60405180910390fd5b81905061355d565b5b9392505050565b5f8061356e6124e4565b90505f61357961250b565b90505f81511115613595578080519060200120925050506135d7565b5f825f015490505f801b81146135b0578093505050506135d7565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47093505050505b90565b5f806135e46124e4565b90505f6135ef6125a9565b90505f8151111561360b5780805190602001209250505061364e565b5f826001015490505f801b81146136275780935050505061364e565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47093505050505b90565b5f815111156136635780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6136da816136a6565b81146136e4575f80fd5b50565b5f813590506136f5816136d1565b92915050565b5f602082840312156137105761370f61369e565b5b5f61371d848285016136e7565b91505092915050565b5f8115159050919050565b61373a81613726565b82525050565b5f6020820190506137535f830184613731565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61379b82613759565b6137a58185613763565b93506137b5818560208601613773565b6137be81613781565b840191505092915050565b5f6020820190508181035f8301526137e18184613791565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613812826137e9565b9050919050565b61382281613808565b811461382c575f80fd5b50565b5f8135905061383d81613819565b92915050565b5f819050919050565b61385581613843565b811461385f575f80fd5b50565b5f813590506138708161384c565b92915050565b5f806040838503121561388c5761388b61369e565b5b5f6138998582860161382f565b92505060206138aa85828601613862565b9150509250929050565b6138bd81613843565b82525050565b5f6020820190506138d65f8301846138b4565b92915050565b5f602082840312156138f1576138f061369e565b5b5f6138fe8482850161382f565b91505092915050565b5f805f6060848603121561391e5761391d61369e565b5b5f61392b8682870161382f565b935050602061393c8682870161382f565b925050604061394d86828701613862565b9150509250925092565b5f819050919050565b61396981613957565b8114613973575f80fd5b50565b5f8135905061398481613960565b92915050565b5f6020828403121561399f5761399e61369e565b5b5f6139ac84828501613976565b91505092915050565b6139be81613957565b82525050565b5f6020820190506139d75f8301846139b5565b92915050565b5f80604083850312156139f3576139f261369e565b5b5f613a0085828601613976565b9250506020613a118582860161382f565b9150509250929050565b5f60ff82169050919050565b613a3081613a1b565b82525050565b5f602082019050613a495f830184613a27565b92915050565b5f60208284031215613a6457613a6361369e565b5b5f613a7184828501613862565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ab882613781565b810181811067ffffffffffffffff82111715613ad757613ad6613a82565b5b80604052505050565b5f613ae9613695565b9050613af58282613aaf565b919050565b5f67ffffffffffffffff821115613b1457613b13613a82565b5b613b1d82613781565b9050602081019050919050565b828183375f83830152505050565b5f613b4a613b4584613afa565b613ae0565b905082815260208101848484011115613b6657613b65613a7e565b5b613b71848285613b2a565b509392505050565b5f82601f830112613b8d57613b8c613a7a565b5b8135613b9d848260208601613b38565b91505092915050565b5f8060408385031215613bbc57613bbb61369e565b5b5f613bc98582860161382f565b925050602083013567ffffffffffffffff811115613bea57613be96136a2565b5b613bf685828601613b79565b9150509250929050565b613c0981613a1b565b8114613c13575f80fd5b50565b5f81359050613c2481613c00565b92915050565b5f805f805f60a08688031215613c4357613c4261369e565b5b5f613c508882890161382f565b9550506020613c6188828901613976565b9450506040613c7288828901613c16565b9350506060613c8388828901613976565b9250506080613c9488828901613976565b9150509295509295909350565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b613cd581613ca1565b82525050565b613ce481613808565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d1c81613843565b82525050565b5f613d2d8383613d13565b60208301905092915050565b5f602082019050919050565b5f613d4f82613cea565b613d598185613cf4565b9350613d6483613d04565b805f5b83811015613d94578151613d7b8882613d22565b9750613d8683613d39565b925050600181019050613d67565b5085935050505092915050565b5f60e082019050613db45f83018a613ccc565b8181036020830152613dc68189613791565b90508181036040830152613dda8188613791565b9050613de960608301876138b4565b613df66080830186613cdb565b613e0360a08301856139b5565b81810360c0830152613e158184613d45565b905098975050505050505050565b5f805f805f805f60e0888a031215613e3e57613e3d61369e565b5b5f613e4b8a828b0161382f565b9750506020613e5c8a828b0161382f565b9650506040613e6d8a828b01613862565b9550506060613e7e8a828b01613862565b9450506080613e8f8a828b01613c16565b93505060a0613ea08a828b01613976565b92505060c0613eb18a828b01613976565b91505092959891949750929550565b5f8060408385031215613ed657613ed561369e565b5b5f613ee38582860161382f565b9250506020613ef48582860161382f565b9150509250929050565b5f805f805f805f805f6101208a8c031215613f1c57613f1b61369e565b5b5f613f298c828d0161382f565b9950506020613f3a8c828d0161382f565b9850506040613f4b8c828d01613862565b9750506060613f5c8c828d01613862565b9650506080613f6d8c828d01613862565b95505060a0613f7e8c828d01613976565b94505060c0613f8f8c828d01613c16565b93505060e0613fa08c828d01613976565b925050610100613fb28c828d01613976565b9150509295985092959850929598565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061400657607f821691505b60208210810361401957614018613fc2565b5b50919050565b7f417574686f72697a6174696f6e20697320616c72656164792075736564206f725f8201527f2063616e63656c65640000000000000000000000000000000000000000000000602082015250565b5f614079602983613763565b91506140848261401f565b604082019050919050565b5f6020820190508181035f8301526140a68161406d565b9050919050565b5f6060820190506140c05f8301866139b5565b6140cd6020830185613cdb565b6140da60408301846139b5565b949350505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614116601183613763565b9150614121826140e2565b602082019050919050565b5f6020820190508181035f8301526141438161410a565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61418961418461417f8461414a565b614166565b614153565b9050919050565b6141998161416f565b82525050565b5f6020820190506141b25f830184614190565b92915050565b7f4549503731323a20556e696e697469616c697a656400000000000000000000005f82015250565b5f6141ec601583613763565b91506141f7826141b8565b602082019050919050565b5f6020820190508181035f830152614219816141e0565b9050919050565b7f5065726d697420657870697265640000000000000000000000000000000000005f82015250565b5f614254600e83613763565b915061425f82614220565b602082019050919050565b5f6020820190508181035f83015261428181614248565b9050919050565b5f60c08201905061429b5f8301896139b5565b6142a86020830188613cdb565b6142b56040830187613cdb565b6142c260608301866138b4565b6142cf60808301856138b4565b6142dc60a08301846138b4565b979650505050505050565b7f496e76616c6964207065726d69740000000000000000000000000000000000005f82015250565b5f61431b600e83613763565b9150614326826142e7565b602082019050919050565b5f6020820190508181035f8301526143488161430f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61438682613843565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143b8576143b761434f565b5b600182019050919050565b5f60e0820190506143d65f83018a6139b5565b6143e36020830189613cdb565b6143f06040830188613cdb565b6143fd60608301876138b4565b61440a60808301866138b4565b61441760a08301856138b4565b61442460c08301846139b5565b98975050505050505050565b7f43616c6c6572206d7573742062652074686520706179656500000000000000005f82015250565b5f614464601883613763565b915061446f82614430565b602082019050919050565b5f6020820190508181035f83015261449181614458565b9050919050565b5f6060820190506144ab5f830186613cdb565b6144b860208301856138b4565b6144c560408301846138b4565b949350505050565b5f6020820190506144e05f830184613cdb565b92915050565b5f815190506144f481613960565b92915050565b5f6020828403121561450f5761450e61369e565b5b5f61451c848285016144e6565b91505092915050565b7f417574686f72697a6174696f6e206e6f74207965742076616c696400000000005f82015250565b5f614559601b83613763565b915061456482614525565b602082019050919050565b5f6020820190508181035f8301526145868161454d565b9050919050565b7f417574686f72697a6174696f6e206578706972656400000000000000000000005f82015250565b5f6145c1601583613763565b91506145cc8261458d565b602082019050919050565b5f6020820190508181035f8301526145ee816145b5565b9050919050565b7f496e76616c696420617574686f72697a6174696f6e00000000000000000000005f82015250565b5f614629601583613763565b9150614634826145f5565b602082019050919050565b5f6020820190508181035f8301526146568161461d565b9050919050565b5f6040820190506146705f830185613cdb565b61467d60208301846139b5565b9392505050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f6146b8601383613763565b91506146c382614684565b602082019050919050565b5f6020820190508181035f8301526146e5816146ac565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f614720601483613763565b915061472b826146ec565b602082019050919050565b5f6020820190508181035f83015261474d81614714565b9050919050565b5f6080820190506147675f8301876139b5565b6147746020830186613a27565b61478160408301856139b5565b61478e60608301846139b5565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f45434453413a20696e76616c6964207369676e617475726500000000000000005f82015250565b5f6147f8601883613763565b9150614803826147c4565b602082019050919050565b5f6020820190508181035f830152614825816147ec565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e677468005f82015250565b5f614860601f83613763565b915061486b8261482c565b602082019050919050565b5f6020820190508181035f83015261488d81614854565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c5f8201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148ee602283613763565b91506148f982614894565b604082019050919050565b5f6020820190508181035f83015261491b816148e2565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261497e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614943565b6149888683614943565b95508019841693508086168417925050509392505050565b5f6149ba6149b56149b084613843565b614166565b613843565b9050919050565b5f819050919050565b6149d3836149a0565b6149e76149df826149c1565b84845461494f565b825550505050565b5f90565b6149fb6149ef565b614a068184846149ca565b505050565b5b81811015614a2957614a1e5f826149f3565b600181019050614a0c565b5050565b601f821115614a6e57614a3f81614922565b614a4884614934565b81016020851015614a57578190505b614a6b614a6385614934565b830182614a0b565b50505b505050565b5f82821c905092915050565b5f614a8e5f1984600802614a73565b1980831691505092915050565b5f614aa68383614a7f565b9150826002028217905092915050565b614abf82613759565b67ffffffffffffffff811115614ad857614ad7613a82565b5b614ae28254613fef565b614aed828285614a2d565b5f60209050601f831160018114614b1e575f8415614b0c578287015190505b614b168582614a9b565b865550614b7d565b601f198416614b2c86614922565b5f5b82811015614b5357848901518255600182019150602085019450602081019050614b2e565b86831015614b705784890151614b6c601f891682614a7f565b8355505b6001600288020188555050505b505050505050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f614bb9601083613763565b9150614bc482614b85565b602082019050919050565b5f6020820190508181035f830152614be681614bad565b9050919050565b5f614bf782613843565b9150614c0283613843565b9250828201905080821115614c1a57614c1961434f565b5b92915050565b5f81519050919050565b5f81905092915050565b5f614c3e82614c20565b614c488185614c2a565b9350614c58818560208601613773565b80840191505092915050565b5f614c6f8284614c34565b915081905092915050565b5f60a082019050614c8d5f8301886139b5565b614c9a60208301876139b5565b614ca760408301866139b5565b614cb460608301856138b4565b614cc16080830184613cdb565b969550505050505056fea26469706673582212208eb4d507532951a42c068af1d18e5f29bb12f152f3fd4aa7a69da316854228f564736f6c634300081a0033