[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_initBaseURI", "type": "string" }, { "internalType": "address", "name": "_forwarder", "type": "address" }, { "internalType": "address", "name": "_rewardsToken", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "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": "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256[12]", "name": "PlayerStats", "type": "uint256[12]" } ], "name": "UpdateMetadata", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "AddressToRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "AddressToTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "TokenIdToStats", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WHITELISTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "cycle", "type": "uint256" } ], "name": "getRewards", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[12]", "name": "_playerStatistics", "type": "uint256[12]" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseExtension", "type": "string" } ], "name": "setBaseExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "cycle", "type": "uint256" }, { "internalType": "address[]", "name": "_addresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" } ], "name": "setRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" } ], "name": "setRewardsToken", "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": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawRewardsToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60a06040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600e908051906020019062000051929190620005be565b506000600f60006101000a81548160ff0219169083151502179055503480156200007a57600080fd5b50604051620069ab380380620069ab8339818101604052810190620000a0919062000870565b8484838073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050508160009080519060200190620000f0929190620005be565b50806001908051906020019062000109929190620005be565b5050506200012c62000120620001f660201b60201c565b6200021260201b60201c565b6001600c819055506200014583620002d860201b60201c565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001c77f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a620001bb620001f660201b60201c565b6200030460201b60201c565b620001eb6000801b620001df620001f660201b60201c565b6200030460201b60201c565b505050505062000a3d565b60006200020d6200031a60201b620020411760201c565b905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002e86200036460201b60201c565b80600d908051906020019062000300929190620005be565b5050565b620003168282620003f560201b60201c565b5050565b60006200032d33620004e760201b60201c565b156200034357601436033560601c905062000360565b620003586200052160201b620020731760201c565b905062000361565b5b90565b62000374620001f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200039a6200052960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003ea90620009b6565b60405180910390fd5b565b6200040782826200055360201b60201c565b620004e3576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000488620001f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600060805173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054620005cc9062000a07565b90600052602060002090601f016020900481019282620005f057600085556200063c565b82601f106200060b57805160ff19168380011785556200063c565b828001600101855582156200063c579182015b828111156200063b5782518255916020019190600101906200061e565b5b5090506200064b91906200064f565b5090565b5b808211156200066a57600081600090555060010162000650565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620006d7826200068c565b810181811067ffffffffffffffff82111715620006f957620006f86200069d565b5b80604052505050565b60006200070e6200066e565b90506200071c8282620006cc565b919050565b600067ffffffffffffffff8211156200073f576200073e6200069d565b5b6200074a826200068c565b9050602081019050919050565b60005b83811015620007775780820151818401526020810190506200075a565b8381111562000787576000848401525b50505050565b6000620007a46200079e8462000721565b62000702565b905082815260208101848484011115620007c357620007c262000687565b5b620007d084828562000757565b509392505050565b600082601f830112620007f057620007ef62000682565b5b8151620008028482602086016200078d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000838826200080b565b9050919050565b6200084a816200082b565b81146200085657600080fd5b50565b6000815190506200086a816200083f565b92915050565b600080600080600060a086880312156200088f576200088e62000678565b5b600086015167ffffffffffffffff811115620008b057620008af6200067d565b5b620008be88828901620007d8565b955050602086015167ffffffffffffffff811115620008e257620008e16200067d565b5b620008f088828901620007d8565b945050604086015167ffffffffffffffff8111156200091457620009136200067d565b5b6200092288828901620007d8565b9350506060620009358882890162000859565b9250506080620009488882890162000859565b9150509295509295909350565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200099e60208362000955565b9150620009ab8262000966565b602082019050919050565b60006020820190508181036000830152620009d1816200098f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a2057607f821691505b6020821081141562000a375762000a36620009d8565b5b50919050565b608051615f5262000a59600039600061105d0152615f526000f3fe6080604052600436106102555760003560e01c80636c0360eb11610139578063ae28dc50116100b6578063c87b56dd1161007a578063c87b56dd146108f1578063d547741f1461092e578063da3ef23f14610957578063de320cc114610980578063e985e9c5146109a9578063f2fde38b146109e65761025c565b8063ae28dc5014610834578063b82d41141461084b578063b88d4fde14610874578063c0d8012c1461089d578063c6682862146108c65761025c565b806391d14854116100fd57806391d148541461074f57806395d89b411461078c578063a217fddf146107b7578063a22cb465146107e2578063acb7d3b61461080b5761025c565b80636c0360eb1461066857806370a0823114610693578063715018a6146106d05780637588854c146106e75780638da5cb5b146107245761025c565b80632f745c59116101d257806355f804b31161019657806355f804b314610532578063570618e11461055b578063572b6c05146105865780635c975abb146105c35780636352211e146105ee57806363bd12461461062b5761025c565b80632f745c591461044f57806336568abe1461048c5780633ccfd60b146104b557806342842e0e146104cc5780634f6ccce7146104f55761025c565b806318160ddd1161021957806318160ddd1461035857806321fab0701461038357806323b872dd146103c0578063248a9ca3146103e95780632f2ff15d146104265761025c565b806301ffc9a71461026157806302329a291461029e57806306fdde03146102c7578063081812fc146102f2578063095ea7b31461032f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b5061028860048036038101906102839190613c23565b610a0f565b6040516102959190613c6b565b60405180910390f35b3480156102aa57600080fd5b506102c560048036038101906102c09190613cb2565b610a21565b005b3480156102d357600080fd5b506102dc610a46565b6040516102e99190613d78565b60405180910390f35b3480156102fe57600080fd5b5061031960048036038101906103149190613dd0565b610ad8565b6040516103269190613e3e565b60405180910390f35b34801561033b57600080fd5b5061035660048036038101906103519190613e85565b610b1e565b005b34801561036457600080fd5b5061036d610c36565b60405161037a9190613ed4565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190613eef565b610c43565b6040516103b79190613ed4565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190613f1c565b610c5b565b005b3480156103f557600080fd5b50610410600480360381019061040b9190613fa5565b610cbb565b60405161041d9190613fe1565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190613ffc565b610cdb565b005b34801561045b57600080fd5b5061047660048036038101906104719190613e85565b610cfc565b6040516104839190613ed4565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190613ffc565b610da1565b005b3480156104c157600080fd5b506104ca610e24565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190613f1c565b610f82565b005b34801561050157600080fd5b5061051c60048036038101906105179190613dd0565b610fa2565b6040516105299190613ed4565b60405180910390f35b34801561053e57600080fd5b5061055960048036038101906105549190614171565b611013565b005b34801561056757600080fd5b50610570611035565b60405161057d9190613fe1565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a89190613eef565b611059565b6040516105ba9190613c6b565b60405180910390f35b3480156105cf57600080fd5b506105d86110b1565b6040516105e59190613c6b565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613dd0565b6110c4565b6040516106229190613e3e565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613e85565b611176565b60405161065f9190613ed4565b60405180910390f35b34801561067457600080fd5b5061067d61119e565b60405161068a9190613d78565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b59190613eef565b61122c565b6040516106c79190613ed4565b60405180910390f35b3480156106dc57600080fd5b506106e56112e4565b005b3480156106f357600080fd5b5061070e600480360381019061070991906141ba565b6112f8565b60405161071b9190613ed4565b60405180910390f35b34801561073057600080fd5b50610739611320565b6040516107469190613e3e565b60405180910390f35b34801561075b57600080fd5b5061077660048036038101906107719190613ffc565b61134a565b6040516107839190613c6b565b60405180910390f35b34801561079857600080fd5b506107a16113b5565b6040516107ae9190613d78565b60405180910390f35b3480156107c357600080fd5b506107cc611447565b6040516107d99190613fe1565b60405180910390f35b3480156107ee57600080fd5b50610809600480360381019061080491906141fa565b61144e565b005b34801561081757600080fd5b50610832600480360381019061082d91906143c5565b611464565b005b34801561084057600080fd5b50610849611560565b005b34801561085757600080fd5b50610872600480360381019061086d9190614513565b61174d565b005b34801561088057600080fd5b5061089b60048036038101906108969190614571565b61194d565b005b3480156108a957600080fd5b506108c460048036038101906108bf9190613dd0565b6119af565b005b3480156108d257600080fd5b506108db611d62565b6040516108e89190613d78565b60405180910390f35b3480156108fd57600080fd5b5061091860048036038101906109139190613dd0565b611df0565b6040516109259190613d78565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190613ffc565b611e9a565b005b34801561096357600080fd5b5061097e60048036038101906109799190614171565b611ebb565b005b34801561098c57600080fd5b506109a760048036038101906109a29190613eef565b611edd565b005b3480156109b557600080fd5b506109d060048036038101906109cb91906145f4565b611f29565b6040516109dd9190613c6b565b60405180910390f35b3480156109f257600080fd5b50610a0d6004803603810190610a089190613eef565b611fbd565b005b6000610a1a8261207b565b9050919050565b610a296120f5565b80600f60006101000a81548160ff02191690831515021790555050565b606060008054610a5590614663565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8190614663565b8015610ace5780601f10610aa357610100808354040283529160200191610ace565b820191906000526020600020905b815481529060010190602001808311610ab157829003601f168201915b5050505050905090565b6000610ae382612173565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b29826110c4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9190614707565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610bb96121be565b73ffffffffffffffffffffffffffffffffffffffff161480610be85750610be781610be26121be565b611f29565b5b610c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1e90614799565b60405180910390fd5b610c3183836121cd565b505050565b6000600880549050905090565b60126020528060005260406000206000915090505481565b610c6c610c666121be565b82612286565b610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca29061482b565b60405180910390fd5b610cb683838361231b565b505050565b6000600a6000838152602001908152602001600020600101549050919050565b610ce482610cbb565b610ced81612582565b610cf78383612596565b505050565b6000610d078361122c565b8210610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f906148bd565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610da96121be565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d9061494f565b60405180910390fd5b610e208282612677565b5050565b610e2c6120f5565b6002600c541415610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906149bb565b60405180910390fd5b6002600c8190555060004790506000811415610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90614a27565b60405180910390fd5b6000610ecd611320565b73ffffffffffffffffffffffffffffffffffffffff1682604051610ef090614a78565b60006040518083038185875af1925050503d8060008114610f2d576040519150601f19603f3d011682016040523d82523d6000602084013e610f32565b606091505b5050905080610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90614ad9565b60405180910390fd5b50506001600c81905550565b610f9d8383836040518060200160405280600081525061194d565b505050565b6000610fac610c36565b8210610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490614b6b565b60405180910390fd5b6008828154811061100157611000614b8b565b5b90600052602060002001549050919050565b61101b6120f5565b80600d9080519060200190611031929190613ad4565b5050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600f60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490614c06565b60405180910390fd5b80915050919050565b6011602052816000526040600020816006811061119257600080fd5b01600091509150505481565b600d80546111ab90614663565b80601f01602080910402602001604051908101604052809291908181526020018280546111d790614663565b80156112245780601f106111f957610100808354040283529160200191611224565b820191906000526020600020905b81548152906001019060200180831161120757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129490614c98565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112ec6120f5565b6112f66000612759565b565b601060205281600052604060002081600c811061131457600080fd5b01600091509150505481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600180546113c490614663565b80601f01602080910402602001604051908101604052809291908181526020018280546113f090614663565b801561143d5780601f106114125761010080835404028352916020019161143d565b820191906000526020600020905b81548152906001019060200180831161142057829003601f168201915b5050505050905090565b6000801b81565b6114606114596121be565b838361281f565b5050565b61146c6120f5565b80518251146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790614d2a565b60405180910390fd5b60005b825181101561155a578181815181106114cf576114ce614b8b565b5b6020026020010151601160008584815181106114ee576114ed614b8b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020856006811061154257611541614b8b565b5b0181905550808061155290614d79565b9150506114b3565b50505050565b6115686120f5565b6002600c5414156115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a5906149bb565b60405180910390fd5b6002600c819055506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116139190613e3e565b602060405180830381865afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116549190614dd7565b9050600081141561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190614e76565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6116e0611320565b836040518363ffffffff1660e01b81526004016116fe929190614ef5565b6020604051808303816000875af115801561171d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117419190614f33565b50506001600c81905550565b60006117576121be565b90506001151561176882858561298c565b1515146117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a190614fd2565b60405180910390fd5b60006117b58261122c565b141561187f5760006117c5610c36565b9050600f60009054906101000a900460ff1615611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e9061503e565b60405180910390fd5b61182d82600183611828919061505e565b612a8e565b60018161183a919061505e565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050836010600083815260200190815260200160002090600c6118e5929190613b5a565b50808273ffffffffffffffffffffffffffffffffffffffff167f07fe1750b52755ec3fb09a34f85eb25fdd77c6f6d68197e268681786d35490126010600085815260200190815260200160002060405161193f91906151aa565b60405180910390a350505050565b61195e6119586121be565b83612286565b61199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119949061482b565b60405180910390fd5b6119a984848484612aac565b50505050565b6002600c5414156119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec906149bb565b60405180910390fd5b6002600c819055506000611a076121be565b90506000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360068110611a5c57611a5b614b8b565b5b015411611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9590615238565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906152ca565b60405180910390fd5b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208460068110611b7957611b78614b8b565b5b0154905080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bd99190613e3e565b602060405180830381865afa158015611bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1a9190614dd7565b1015611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c529061535c565b60405180910390fd5b6000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560068110611cae57611cad614b8b565b5b0181905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611d1092919061537c565b6020604051808303816000875af1158015611d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d539190614f33565b505050506001600c8190555050565b600e8054611d6f90614663565b80601f0160208091040260200160405190810160405280929190818152602001828054611d9b90614663565b8015611de85780601f10611dbd57610100808354040283529160200191611de8565b820191906000526020600020905b815481529060010190602001808311611dcb57829003601f168201915b505050505081565b6060611dfb82612b08565b611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190615417565b60405180910390fd5b6000611e44612b74565b90506000815111611e645760405180602001604052806000815250611e92565b80611e6e84612c06565b600e604051602001611e8293929190615507565b6040516020818303038152906040525b915050919050565b611ea382610cbb565b611eac81612582565b611eb68383612677565b505050565b611ec36120f5565b80600e9080519060200190611ed9929190613ad4565b5050565b611ee56120f5565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611fc56120f5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906155aa565b60405180910390fd5b61203e81612759565b50565b600061204c33611059565b1561206057601436033560601c905061206f565b612068612073565b9050612070565b5b90565b600033905090565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120ee57506120ed82612d67565b5b9050919050565b6120fd6121be565b73ffffffffffffffffffffffffffffffffffffffff1661211b611320565b73ffffffffffffffffffffffffffffffffffffffff1614612171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216890615616565b60405180910390fd5b565b61217c81612b08565b6121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614c06565b60405180910390fd5b50565b60006121c8612041565b905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612240836110c4565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612292836110c4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122d457506122d38185611f29565b5b8061231257508373ffffffffffffffffffffffffffffffffffffffff166122fa84610ad8565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661233b826110c4565b73ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612388906156a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f89061573a565b60405180910390fd5b61240c838383612de1565b6124176000826121cd565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612467919061575a565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124be919061505e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461257d838383612eab565b505050565b6125938161258e6121be565b612eb0565b50565b6125a0828261134a565b612673576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506126186121be565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612681828261134a565b15612755576000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506126fa6121be565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561288e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612885906157da565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161297f9190613c6b565b60405180910390a3505050565b60008084846040516020016129a292919061580b565b6040516020818303038152906040528051906020012090506000816040516020016129cd91906158a2565b60405160208183030381529060405280519060200120905060008060006020870151925060408701519150606087015160001a9050600060018583868660405160008152602001604052604051612a2794939291906158e4565b6020604051602081039080840390855afa158015612a49573d6000803e3d6000fd5b505050602060405103519050612a7f7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8261134a565b96505050505050509392505050565b612aa8828260405180602001604052806000815250612f4d565b5050565b612ab784848461231b565b612ac384848484612fa8565b612b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af99061599b565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6060600d8054612b8390614663565b80601f0160208091040260200160405190810160405280929190818152602001828054612baf90614663565b8015612bfc5780601f10612bd157610100808354040283529160200191612bfc565b820191906000526020600020905b815481529060010190602001808311612bdf57829003601f168201915b5050505050905090565b60606000821415612c4e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612d62565b600082905060005b60008214612c80578080612c6990614d79565b915050600a82612c7991906159ea565b9150612c56565b60008167ffffffffffffffff811115612c9c57612c9b614046565b5b6040519080825280601f01601f191660200182016040528015612cce5781602001600182028036833780820191505090505b5090505b60008514612d5b57600182612ce7919061575a565b9150600a85612cf69190615a1b565b6030612d02919061505e565b60f81b818381518110612d1857612d17614b8b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612d5491906159ea565b9450612cd2565b8093505050505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612dda5750612dd982613130565b5b9050919050565b612dec838383613212565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5290615abe565b60405180910390fd5b6000612e668361122c565b14612ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9d90615b50565b60405180910390fd5b505050565b505050565b612eba828261134a565b612f4957612edf8173ffffffffffffffffffffffffffffffffffffffff166014613326565b612eed8360001c6020613326565b604051602001612efe929190615c08565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f409190613d78565b60405180910390fd5b5050565b612f578383613562565b612f646000848484612fa8565b612fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9a9061599b565b60405180910390fd5b505050565b6000612fc98473ffffffffffffffffffffffffffffffffffffffff1661373c565b15613123578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ff26121be565b8786866040518563ffffffff1660e01b81526004016130149493929190615c97565b6020604051808303816000875af192505050801561305057506040513d601f19601f8201168201806040525081019061304d9190615cf8565b60015b6130d3573d8060008114613080576040519150601f19603f3d011682016040523d82523d6000602084013e613085565b606091505b506000815114156130cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c29061599b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613128565b600190505b949350505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806131fb57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061320b575061320a8261375f565b5b9050919050565b61321d8383836137c9565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132605761325b816137ce565b61329f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461329e5761329d8382613817565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132e2576132dd81613984565b613321565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146133205761331f8282613a55565b5b5b505050565b6060600060028360026133399190615d25565b613343919061505e565b67ffffffffffffffff81111561335c5761335b614046565b5b6040519080825280601f01601f19166020018201604052801561338e5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133c6576133c5614b8b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061342a57613429614b8b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261346a9190615d25565b613474919061505e565b90505b6001811115613514577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106134b6576134b5614b8b565b5b1a60f81b8282815181106134cd576134cc614b8b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061350d90615d7f565b9050613477565b5060008414613558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354f90615df5565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c990615e61565b60405180910390fd5b6135db81612b08565b1561361b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361290615ecd565b60405180910390fd5b61362760008383612de1565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613677919061505e565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461373860008383612eab565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138248461122c565b61382e919061575a565b9050600060076000848152602001908152602001600020549050818114613913576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613998919061575a565b90506000600960008481526020019081526020016000205490506000600883815481106139c8576139c7614b8b565b5b9060005260206000200154905080600883815481106139ea576139e9614b8b565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613a3957613a38615eed565b5b6001900381819060005260206000200160009055905550505050565b6000613a608361122c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054613ae090614663565b90600052602060002090601f016020900481019282613b025760008555613b49565b82601f10613b1b57805160ff1916838001178555613b49565b82800160010185558215613b49579182015b82811115613b48578251825591602001919060010190613b2d565b5b509050613b569190613b9a565b5090565b82600c8101928215613b89579160200282015b82811115613b88578235825591602001919060010190613b6d565b5b509050613b969190613b9a565b5090565b5b80821115613bb3576000816000905550600101613b9b565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613c0081613bcb565b8114613c0b57600080fd5b50565b600081359050613c1d81613bf7565b92915050565b600060208284031215613c3957613c38613bc1565b5b6000613c4784828501613c0e565b91505092915050565b60008115159050919050565b613c6581613c50565b82525050565b6000602082019050613c806000830184613c5c565b92915050565b613c8f81613c50565b8114613c9a57600080fd5b50565b600081359050613cac81613c86565b92915050565b600060208284031215613cc857613cc7613bc1565b5b6000613cd684828501613c9d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d19578082015181840152602081019050613cfe565b83811115613d28576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d4a82613cdf565b613d548185613cea565b9350613d64818560208601613cfb565b613d6d81613d2e565b840191505092915050565b60006020820190508181036000830152613d928184613d3f565b905092915050565b6000819050919050565b613dad81613d9a565b8114613db857600080fd5b50565b600081359050613dca81613da4565b92915050565b600060208284031215613de657613de5613bc1565b5b6000613df484828501613dbb565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e2882613dfd565b9050919050565b613e3881613e1d565b82525050565b6000602082019050613e536000830184613e2f565b92915050565b613e6281613e1d565b8114613e6d57600080fd5b50565b600081359050613e7f81613e59565b92915050565b60008060408385031215613e9c57613e9b613bc1565b5b6000613eaa85828601613e70565b9250506020613ebb85828601613dbb565b9150509250929050565b613ece81613d9a565b82525050565b6000602082019050613ee96000830184613ec5565b92915050565b600060208284031215613f0557613f04613bc1565b5b6000613f1384828501613e70565b91505092915050565b600080600060608486031215613f3557613f34613bc1565b5b6000613f4386828701613e70565b9350506020613f5486828701613e70565b9250506040613f6586828701613dbb565b9150509250925092565b6000819050919050565b613f8281613f6f565b8114613f8d57600080fd5b50565b600081359050613f9f81613f79565b92915050565b600060208284031215613fbb57613fba613bc1565b5b6000613fc984828501613f90565b91505092915050565b613fdb81613f6f565b82525050565b6000602082019050613ff66000830184613fd2565b92915050565b6000806040838503121561401357614012613bc1565b5b600061402185828601613f90565b925050602061403285828601613e70565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61407e82613d2e565b810181811067ffffffffffffffff8211171561409d5761409c614046565b5b80604052505050565b60006140b0613bb7565b90506140bc8282614075565b919050565b600067ffffffffffffffff8211156140dc576140db614046565b5b6140e582613d2e565b9050602081019050919050565b82818337600083830152505050565b600061411461410f846140c1565b6140a6565b9050828152602081018484840111156141305761412f614041565b5b61413b8482856140f2565b509392505050565b600082601f8301126141585761415761403c565b5b8135614168848260208601614101565b91505092915050565b60006020828403121561418757614186613bc1565b5b600082013567ffffffffffffffff8111156141a5576141a4613bc6565b5b6141b184828501614143565b91505092915050565b600080604083850312156141d1576141d0613bc1565b5b60006141df85828601613dbb565b92505060206141f085828601613dbb565b9150509250929050565b6000806040838503121561421157614210613bc1565b5b600061421f85828601613e70565b925050602061423085828601613c9d565b9150509250929050565b600067ffffffffffffffff82111561425557614254614046565b5b602082029050602081019050919050565b600080fd5b600061427e6142798461423a565b6140a6565b905080838252602082019050602084028301858111156142a1576142a0614266565b5b835b818110156142ca57806142b68882613e70565b8452602084019350506020810190506142a3565b5050509392505050565b600082601f8301126142e9576142e861403c565b5b81356142f984826020860161426b565b91505092915050565b600067ffffffffffffffff82111561431d5761431c614046565b5b602082029050602081019050919050565b600061434161433c84614302565b6140a6565b9050808382526020820190506020840283018581111561436457614363614266565b5b835b8181101561438d57806143798882613dbb565b845260208401935050602081019050614366565b5050509392505050565b600082601f8301126143ac576143ab61403c565b5b81356143bc84826020860161432e565b91505092915050565b6000806000606084860312156143de576143dd613bc1565b5b60006143ec86828701613dbb565b935050602084013567ffffffffffffffff81111561440d5761440c613bc6565b5b614419868287016142d4565b925050604084013567ffffffffffffffff81111561443a57614439613bc6565b5b61444686828701614397565b9150509250925092565b6000819050826020600c028201111561446c5761446b614266565b5b92915050565b600067ffffffffffffffff82111561448d5761448c614046565b5b61449682613d2e565b9050602081019050919050565b60006144b66144b184614472565b6140a6565b9050828152602081018484840111156144d2576144d1614041565b5b6144dd8482856140f2565b509392505050565b600082601f8301126144fa576144f961403c565b5b813561450a8482602086016144a3565b91505092915050565b6000806101a0838503121561452b5761452a613bc1565b5b600061453985828601614450565b92505061018083013567ffffffffffffffff81111561455b5761455a613bc6565b5b614567858286016144e5565b9150509250929050565b6000806000806080858703121561458b5761458a613bc1565b5b600061459987828801613e70565b94505060206145aa87828801613e70565b93505060406145bb87828801613dbb565b925050606085013567ffffffffffffffff8111156145dc576145db613bc6565b5b6145e8878288016144e5565b91505092959194509250565b6000806040838503121561460b5761460a613bc1565b5b600061461985828601613e70565b925050602061462a85828601613e70565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061467b57607f821691505b6020821081141561468f5761468e614634565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006146f1602183613cea565b91506146fc82614695565b604082019050919050565b60006020820190508181036000830152614720816146e4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000614783603e83613cea565b915061478e82614727565b604082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000614815602e83613cea565b9150614820826147b9565b604082019050919050565b6000602082019050818103600083015261484481614808565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006148a7602b83613cea565b91506148b28261484b565b604082019050919050565b600060208201905081810360008301526148d68161489a565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614939602f83613cea565b9150614944826148dd565b604082019050919050565b600060208201905081810360008301526149688161492c565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006149a5601f83613cea565b91506149b08261496f565b602082019050919050565b600060208201905081810360008301526149d481614998565b9050919050565b7f4146523732313a20636f6e74726163742062616c616e6365206973207a65726f600082015250565b6000614a11602083613cea565b9150614a1c826149db565b602082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b600081905092915050565b50565b6000614a62600083614a47565b9150614a6d82614a52565b600082019050919050565b6000614a8382614a55565b9150819050919050565b7f4146523732313a206661696c656420746f2073656e6420616d6f756e74000000600082015250565b6000614ac3601d83613cea565b9150614ace82614a8d565b602082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614b55602c83613cea565b9150614b6082614af9565b604082019050919050565b60006020820190508181036000830152614b8481614b48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614bf0601883613cea565b9150614bfb82614bba565b602082019050919050565b60006020820190508181036000830152614c1f81614be3565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614c82602983613cea565b9150614c8d82614c26565b604082019050919050565b60006020820190508181036000830152614cb181614c75565b9050919050565b7f426f746820617272617973206e65656420746f206265207468652073616d652060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000614d14602583613cea565b9150614d1f82614cb8565b604082019050919050565b60006020820190508181036000830152614d4381614d07565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d8482613d9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614db757614db6614d4a565b5b600182019050919050565b600081519050614dd181613da4565b92915050565b600060208284031215614ded57614dec613bc1565b5b6000614dfb84828501614dc2565b91505092915050565b7f4146523732313a20636f6e74726163742062616c616e6365206973207a65726f60008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e60602183613cea565b9150614e6b82614e04565b604082019050919050565b60006020820190508181036000830152614e8f81614e53565b9050919050565b6000819050919050565b6000614ebb614eb6614eb184613dfd565b614e96565b613dfd565b9050919050565b6000614ecd82614ea0565b9050919050565b6000614edf82614ec2565b9050919050565b614eef81614ed4565b82525050565b6000604082019050614f0a6000830185614ee6565b614f176020830184613ec5565b9392505050565b600081519050614f2d81613c86565b92915050565b600060208284031215614f4957614f48613bc1565b5b6000614f5784828501614f1e565b91505092915050565b7f5468657365207374617469737469637320646f206e6f74206d61746368206f7560008201527f72207369676e61747572652e0000000000000000000000000000000000000000602082015250565b6000614fbc602c83613cea565b9150614fc782614f60565b604082019050919050565b60006020820190508181036000830152614feb81614faf565b9050919050565b7f4146523732313a20636f6e7472616374206f6e20706175736500000000000000600082015250565b6000615028601983613cea565b915061503382614ff2565b602082019050919050565b600060208201905081810360008301526150578161501b565b9050919050565b600061506982613d9a565b915061507483613d9a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150a9576150a8614d4a565b5b828201905092915050565b6000600c9050919050565b600081905092915050565b6000819050919050565b6150dd81613d9a565b82525050565b60006150ef83836150d4565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000615125615120836150fb565b615108565b9050919050565b60006151388254615112565b9050919050565b6000600182019050919050565b615155816150b4565b61515f81846150bf565b925061516a826150ca565b8060005b838110156151a25761517f8261512c565b61518987826150e3565b96506151948361513f565b92505060018101905061516e565b505050505050565b6000610180820190506151c0600083018461514c565b92915050565b7f5468657265206973206e6f2072657761726420666f72207468697320746f6b6560008201527f6e20696420617420746869732074696d652e0000000000000000000000000000602082015250565b6000615222603283613cea565b915061522d826151c6565b604082019050919050565b6000602082019050818103600083015261525181615215565b9050919050565b7f596f75206d7573742068617665206120746f6b656e20746f20636c61696d207260008201527f6577617264732e00000000000000000000000000000000000000000000000000602082015250565b60006152b4602783613cea565b91506152bf82615258565b604082019050919050565b600060208201905081810360008301526152e3816152a7565b9050919050565b7f4e6f7420656e6f75676820746f6b656e7320746f20636c61696d207965742e2060008201527f506c656173652074727920616761696e206c617465722e000000000000000000602082015250565b6000615346603783613cea565b9150615351826152ea565b604082019050919050565b6000602082019050818103600083015261537581615339565b9050919050565b60006040820190506153916000830185613e2f565b61539e6020830184613ec5565b9392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000615401602f83613cea565b915061540c826153a5565b604082019050919050565b60006020820190508181036000830152615430816153f4565b9050919050565b600081905092915050565b600061544d82613cdf565b6154578185615437565b9350615467818560208601613cfb565b80840191505092915050565b60008190508160005260206000209050919050565b6000815461549581614663565b61549f8186615437565b945060018216600081146154ba57600181146154cb576154fe565b60ff198316865281860193506154fe565b6154d485615473565b60005b838110156154f6578154818901526001820191506020810190506154d7565b838801955050505b50505092915050565b60006155138286615442565b915061551f8285615442565b915061552b8284615488565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615594602683613cea565b915061559f82615538565b604082019050919050565b600060208201905081810360008301526155c381615587565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615600602083613cea565b915061560b826155ca565b602082019050919050565b6000602082019050818103600083015261562f816155f3565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000615692602583613cea565b915061569d82615636565b604082019050919050565b600060208201905081810360008301526156c181615685565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615724602483613cea565b915061572f826156c8565b604082019050919050565b6000602082019050818103600083015261575381615717565b9050919050565b600061576582613d9a565b915061577083613d9a565b92508282101561578357615782614d4a565b5b828203905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006157c4601983613cea565b91506157cf8261578e565b602082019050919050565b600060208201905081810360008301526157f3816157b7565b9050919050565b61580761018083836140f2565b5050565b60006101a0820190506158216000830185613e2f565b61582e60208301846157fa565b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b600061586b601c83615437565b915061587682615835565b601c82019050919050565b6000819050919050565b61589c61589782613f6f565b615881565b82525050565b60006158ad8261585e565b91506158b9828461588b565b60208201915081905092915050565b600060ff82169050919050565b6158de816158c8565b82525050565b60006080820190506158f96000830187613fd2565b61590660208301866158d5565b6159136040830185613fd2565b6159206060830184613fd2565b95945050505050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615985603283613cea565b915061599082615929565b604082019050919050565b600060208201905081810360008301526159b481615978565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006159f582613d9a565b9150615a0083613d9a565b925082615a1057615a0f6159bb565b5b828204905092915050565b6000615a2682613d9a565b9150615a3183613d9a565b925082615a4157615a406159bb565b5b828206905092915050565b7f5468697320746f6b656e2063616e6e6f74206265207472616e7366657272656460008201527f206f6e6365206d696e7465640000000000000000000000000000000000000000602082015250565b6000615aa8602c83613cea565b9150615ab382615a4c565b604082019050919050565b60006020820190508181036000830152615ad781615a9b565b9050919050565b7f596f752063616e206f6e6c79206f776e206f6e65206f6620746865736520746f60008201527f6b656e7300000000000000000000000000000000000000000000000000000000602082015250565b6000615b3a602483613cea565b9150615b4582615ade565b604082019050919050565b60006020820190508181036000830152615b6981615b2d565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000615ba6601783615437565b9150615bb182615b70565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000615bf2601183615437565b9150615bfd82615bbc565b601182019050919050565b6000615c1382615b99565b9150615c1f8285615442565b9150615c2a82615be5565b9150615c368284615442565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000615c6982615c42565b615c738185615c4d565b9350615c83818560208601613cfb565b615c8c81613d2e565b840191505092915050565b6000608082019050615cac6000830187613e2f565b615cb96020830186613e2f565b615cc66040830185613ec5565b8181036060830152615cd88184615c5e565b905095945050505050565b600081519050615cf281613bf7565b92915050565b600060208284031215615d0e57615d0d613bc1565b5b6000615d1c84828501615ce3565b91505092915050565b6000615d3082613d9a565b9150615d3b83613d9a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615d7457615d73614d4a565b5b828202905092915050565b6000615d8a82613d9a565b91506000821415615d9e57615d9d614d4a565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615ddf602083613cea565b9150615dea82615da9565b602082019050919050565b60006020820190508181036000830152615e0e81615dd2565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615e4b602083613cea565b9150615e5682615e15565b602082019050919050565b60006020820190508181036000830152615e7a81615e3e565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615eb7601c83613cea565b9150615ec282615e81565b602082019050919050565b60006020820190508181036000830152615ee681615eaa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220fcf190a7b782703f55f1d71dd4988d74fec1e5e580d7022613e5be48f5a593d064736f6c634300080b003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000006271ca63d30507f2dcbf99b52787032506d75bbf000000000000000000000000126de33ffdeed931c4c1e4f4670d2b02b31c808b0000000000000000000000000000000000000000000000000000000000000007544553544146520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075445535441465200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7777772e746573742e636f6d2f00000000000000000000000000000000000000