[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "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": "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" }, { "inputs": [], "name": "MAX_PURCHASABLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" } ], "name": "addToMonkeezList", "outputs": [], "stateMutability": "nonpayable", "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": "baseURIExtended", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "closeMonkeezList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "closeSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "extension", "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": "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": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "mintMonkeezList", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "monkeezListActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "monkeezListPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "onMonkeezList", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "openMonkeezList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "openSale", "outputs": [], "stateMutability": "nonpayable", "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": "address[]", "name": "addresses", "type": "address[]" } ], "name": "removeFromMonkeezList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "reserveTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": [], "name": "saleIsActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "_uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extension", "type": "string" } ], "name": "setExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newPrice", "type": "uint256" } ], "name": "setMonkeezListPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_payoutAddress", "type": "address" } ], "name": "setRoyaltyPayoutAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newPrice", "type": "uint256" } ], "name": "setTokenPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "_royalties", "type": "uint96" } ], "name": "setTokenRoyalties", "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": "tokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenRoyalties", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "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" } ]
6080604052670429d069189e0000600c556702c68af0bb140000600d556040518060600160405280602681526020016200616460269139600e90805190602001906200004d92919062000b0e565b5060405180602001604052806000815250600f90805190602001906200007592919062000b0e565b506000601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506101f4601060026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555073b090fc5d0c06804dfbf06efb59ce1f291f13162a601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200014157600080fd5b506040518060400160405280600781526020017f4d4f4e4b45455a000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f4d4f4e4b45455a000000000000000000000000000000000000000000000000008152508160029080519060200190620001c692919062000b0e565b508060039080519060200190620001df92919062000b0e565b50620001f06200029660201b60201c565b6000819055505050620002186200020c6200029b60201b60201c565b620002a360201b60201c565b600160098190555062000242620002346200036960201b60201c565b60016200039360201b60201c565b62000290601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060029054906101000a90046bffffffffffffffffffffffff16620003b960201b60201c565b62000f2a565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003b58282604051806020016040528060008152506200055d60201b60201c565b5050565b620003c96200057760201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156200042a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004219062000d0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200049d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004949062000d2e565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6200057283838360016200058160201b60201c565b505050565b6000612710905090565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620005ef576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156200062b576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200064060008683876200097d60201b60201c565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015620008185750620008178773ffffffffffffffffffffffffffffffffffffffff166200098360201b6200274d1760201c565b5b15620008eb575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200089660008884806001019550886200099660201b60201c565b620008cd576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156200081f578260005414620008e557600080fd5b62000958565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415620008ec575b81600081905550505062000976600086838762000b0860201b60201c565b5050505050565b50505050565b600080823b905060008111915050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620009c46200029b60201b60201c565b8786866040518563ffffffff1660e01b8152600401620009e8949392919062000cb8565b602060405180830381600087803b15801562000a0357600080fd5b505af192505050801562000a3757506040513d601f19601f8201168201806040525081019062000a34919062000bd5565b60015b62000ab5573d806000811462000a6a576040519150601f19603f3d011682016040523d82523d6000602084013e62000a6f565b606091505b5060008151141562000aad576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b82805462000b1c9062000e1d565b90600052602060002090601f01602090048101928262000b40576000855562000b8c565b82601f1062000b5b57805160ff191683800117855562000b8c565b8280016001018555821562000b8c579182015b8281111562000b8b57825182559160200191906001019062000b6e565b5b50905062000b9b919062000b9f565b5090565b5b8082111562000bba57600081600090555060010162000ba0565b5090565b60008151905062000bcf8162000f10565b92915050565b60006020828403121562000bee5762000bed62000e82565b5b600062000bfe8482850162000bbe565b91505092915050565b62000c128162000d7d565b82525050565b600062000c258262000d50565b62000c31818562000d5b565b935062000c4381856020860162000de7565b62000c4e8162000e87565b840191505092915050565b600062000c68602a8362000d6c565b915062000c758262000e98565b604082019050919050565b600062000c8f60198362000d6c565b915062000c9c8262000ee7565b602082019050919050565b62000cb28162000ddd565b82525050565b600060808201905062000ccf600083018762000c07565b62000cde602083018662000c07565b62000ced604083018562000ca7565b818103606083015262000d01818462000c18565b905095945050505050565b6000602082019050818103600083015262000d278162000c59565b9050919050565b6000602082019050818103600083015262000d498162000c80565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000d8a8262000dbd565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e0757808201518184015260208101905062000dea565b8381111562000e17576000848401525b50505050565b6000600282049050600182168062000e3657607f821691505b6020821081141562000e4d5762000e4c62000e53565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b62000f1b8162000d91565b811462000f2757600080fd5b50565b61522a8062000f3a6000396000f3fe6080604052600436106102675760003560e01c80636a61e5fc11610144578063a22cb465116100b6578063e4d3d4481161007a578063e4d3d448146108af578063e985e9c5146108da578063eb8d244414610917578063ee55efee14610942578063ef19233b14610959578063f2fde38b1461098457610267565b8063a22cb465146107cc578063b35c938e146107f5578063b88d4fde14610820578063bc6105b814610849578063c87b56dd1461087257610267565b80637ff9b596116101085780637ff9b596146106fc5780638d4a982f146107275780638da5cb5b1461073e57806395d89b4114610769578063a0712d6814610794578063a1d56486146107b057610267565b80636a61e5fc1461062d57806370a0823114610656578063715018a61461069357806378cf19e9146106aa5780637e2285aa146106d357610267565b80632d5537b0116101dd57806345aeefde116101a157806345aeefde1461050f578063543837081461053857806355f804b314610561578063592e63171461058a57806361f21de0146105b35780636352211e146105f057610267565b80632d5537b01461044e5780632dff84231461047957806332cb6b0c146104a45780633ccfd60b146104cf57806342842e0e146104e657610267565b80631672c6b81161022f5780631672c6b814610365578063167ff46f1461037c57806318160ddd146103935780631ebdcaae146103be57806323b872dd146103e75780632a55205a1461041057610267565b806301ffc9a71461026c57806306fdde03146102a9578063081812fc146102d4578063095ea7b314610311578063119e43981461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613fe5565b6109ad565b6040516102a091906145b7565b60405180910390f35b3480156102b557600080fd5b506102be6109bf565b6040516102cb91906145d2565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190614088565b610a51565b6040516103089190614527565b60405180910390f35b34801561031d57600080fd5b5061033860048036038101906103339190613f58565b610acd565b005b34801561034657600080fd5b5061034f610bd8565b60405161035c9190614834565b60405180910390f35b34801561037157600080fd5b5061037a610bdd565b005b34801561038857600080fd5b50610391610c76565b005b34801561039f57600080fd5b506103a8610d0f565b6040516103b59190614834565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e091906140f5565b610d26565b005b3480156103f357600080fd5b5061040e60048036038101906104099190613e42565b610e1c565b005b34801561041c57600080fd5b50610437600480360381019061043291906140b5565b610e2c565b60405161044592919061458e565b60405180910390f35b34801561045a57600080fd5b50610463611017565b60405161047091906145d2565b60405180910390f35b34801561048557600080fd5b5061048e6110a5565b60405161049b919061484f565b60405180910390f35b3480156104b057600080fd5b506104b96110c3565b6040516104c69190614834565b60405180910390f35b3480156104db57600080fd5b506104e46110c9565b005b3480156104f257600080fd5b5061050d60048036038101906105089190613e42565b6111ce565b005b34801561051b57600080fd5b5061053660048036038101906105319190613dd5565b6111ee565b005b34801561054457600080fd5b5061055f600480360381019061055a9190613f98565b6112f4565b005b34801561056d57600080fd5b506105886004803603810190610583919061403f565b6114ac565b005b34801561059657600080fd5b506105b160048036038101906105ac9190614088565b611542565b005b3480156105bf57600080fd5b506105da60048036038101906105d59190613dd5565b6115c8565b6040516105e791906145b7565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190614088565b61161e565b6040516106249190614527565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190614088565b611634565b005b34801561066257600080fd5b5061067d60048036038101906106789190613dd5565b6116ba565b60405161068a9190614834565b60405180910390f35b34801561069f57600080fd5b506106a861178a565b005b3480156106b657600080fd5b506106d160048036038101906106cc9190613f58565b611812565b005b3480156106df57600080fd5b506106fa60048036038101906106f5919061403f565b6118ff565b005b34801561070857600080fd5b50610711611995565b60405161071e9190614834565b60405180910390f35b34801561073357600080fd5b5061073c61199b565b005b34801561074a57600080fd5b50610753611a34565b6040516107609190614527565b60405180910390f35b34801561077557600080fd5b5061077e611a5e565b60405161078b91906145d2565b60405180910390f35b6107ae60048036038101906107a99190614088565b611af0565b005b6107ca60048036038101906107c59190614088565b611d3e565b005b3480156107d857600080fd5b506107f360048036038101906107ee9190613f18565b612018565b005b34801561080157600080fd5b5061080a612190565b60405161081791906145b7565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613e95565b6121a3565b005b34801561085557600080fd5b50610870600480360381019061086b9190613f98565b61221f565b005b34801561087e57600080fd5b5061089960048036038101906108949190614088565b6123d7565b6040516108a691906145d2565b60405180910390f35b3480156108bb57600080fd5b506108c4612481565b6040516108d191906145d2565b60405180910390f35b3480156108e657600080fd5b5061090160048036038101906108fc9190613e02565b61250f565b60405161090e91906145b7565b60405180910390f35b34801561092357600080fd5b5061092c6125a3565b60405161093991906145b7565b60405180910390f35b34801561094e57600080fd5b506109576125b6565b005b34801561096557600080fd5b5061096e61264f565b60405161097b9190614834565b60405180910390f35b34801561099057600080fd5b506109ab60048036038101906109a69190613dd5565b612655565b005b60006109b882612760565b9050919050565b6060600280546109ce90614b2c565b80601f01602080910402602001604051908101604052809291908181526020018280546109fa90614b2c565b8015610a475780601f10610a1c57610100808354040283529160200191610a47565b820191906000526020600020905b815481529060010190602001808311610a2a57829003601f168201915b5050505050905090565b6000610a5c826127da565b610a92576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ad88261161e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b40576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5f612828565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b915750610b8f81610b8a612828565b61250f565b155b15610bc8576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd3838383612830565b505050565b600a81565b610be5612828565b73ffffffffffffffffffffffffffffffffffffffff16610c03611a34565b73ffffffffffffffffffffffffffffffffffffffff1614610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c50906146d4565b60405180910390fd5b6000601060016101000a81548160ff021916908315150217905550565b610c7e612828565b73ffffffffffffffffffffffffffffffffffffffff16610c9c611a34565b73ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce9906146d4565b60405180910390fd5b6001601060006101000a81548160ff021916908315150217905550565b6000610d196128e2565b6001546000540303905090565b610d2e612828565b73ffffffffffffffffffffffffffffffffffffffff16610d4c611a34565b73ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d99906146d4565b60405180910390fd5b80601060026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550610e19601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060029054906101000a90046bffffffffffffffffffffffff166128e7565b50565b610e27838383612a7d565b505050565b6000806000600b60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161415610fc257600a6040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610fcc612f33565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610ff891906149d0565b611002919061499f565b90508160000151819350935050509250929050565b600f805461102490614b2c565b80601f016020809104026020016040519081016040528092919081815260200182805461105090614b2c565b801561109d5780601f106110725761010080835404028352916020019161109d565b820191906000526020600020905b81548152906001019060200180831161108057829003601f168201915b505050505081565b601060029054906101000a90046bffffffffffffffffffffffff1681565b610fa081565b6110d1612828565b73ffffffffffffffffffffffffffffffffffffffff166110ef611a34565b73ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906146d4565b60405180910390fd5b60004790506000811161118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490614814565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050506111cb57600080fd5b50565b6111e9838383604051806020016040528060008152506121a3565b505050565b6111f6612828565b73ffffffffffffffffffffffffffffffffffffffff16611214611a34565b73ffffffffffffffffffffffffffffffffffffffff161461126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611261906146d4565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f1601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060029054906101000a90046bffffffffffffffffffffffff166128e7565b50565b6112fc612828565b73ffffffffffffffffffffffffffffffffffffffff1661131a611a34565b73ffffffffffffffffffffffffffffffffffffffff1614611370576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611367906146d4565b60405180910390fd5b60005b828290508110156114a757600073ffffffffffffffffffffffffffffffffffffffff168383838181106113a9576113a8614c96565b5b90506020020160208101906113be9190613dd5565b73ffffffffffffffffffffffffffffffffffffffff161415611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c906146b4565b60405180910390fd5b60016012600085858581811061142e5761142d614c96565b5b90506020020160208101906114439190613dd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061149f90614b8f565b915050611373565b505050565b6114b4612828565b73ffffffffffffffffffffffffffffffffffffffff166114d2611a34565b73ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f906146d4565b60405180910390fd5b80600e908051906020019061153e929190613b3b565b5050565b61154a612828565b73ffffffffffffffffffffffffffffffffffffffff16611568611a34565b73ffffffffffffffffffffffffffffffffffffffff16146115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b5906146d4565b60405180910390fd5b80600d8190555050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061162982612f3d565b600001519050919050565b61163c612828565b73ffffffffffffffffffffffffffffffffffffffff1661165a611a34565b73ffffffffffffffffffffffffffffffffffffffff16146116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a7906146d4565b60405180910390fd5b80600c8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611722576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611792612828565b73ffffffffffffffffffffffffffffffffffffffff166117b0611a34565b73ffffffffffffffffffffffffffffffffffffffff1614611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd906146d4565b60405180910390fd5b61181060006131cc565b565b61181a612828565b73ffffffffffffffffffffffffffffffffffffffff16611838611a34565b73ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611885906146d4565b60405180910390fd5b6000811180156118b25750610fa06118a4610d0f565b826118af9190614949565b11155b6118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890614614565b60405180910390fd5b6118fb8282613292565b5050565b611907612828565b73ffffffffffffffffffffffffffffffffffffffff16611925611a34565b73ffffffffffffffffffffffffffffffffffffffff161461197b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611972906146d4565b60405180910390fd5b80600f9080519060200190611991929190613b3b565b5050565b600c5481565b6119a3612828565b73ffffffffffffffffffffffffffffffffffffffff166119c1611a34565b73ffffffffffffffffffffffffffffffffffffffff1614611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e906146d4565b60405180910390fd5b6001601060016101000a81548160ff021916908315150217905550565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611a6d90614b2c565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9990614b2c565b8015611ae65780601f10611abb57610100808354040283529160200191611ae6565b820191906000526020600020905b815481529060010190602001808311611ac957829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590614674565b60405180910390fd5b60026009541415611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b906147b4565b60405180910390fd5b6002600981905550601060009054906101000a900460ff16611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290614654565b60405180910390fd5b60008111611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3590614694565b60405180910390fd5b600a811115611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990614794565b60405180910390fd5b610fa081611c8e610d0f565b611c989190614949565b1115611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090614634565b60405180910390fd5b3481600c54611ce891906149d0565b1115611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d20906146f4565b60405180910390fd5b611d333382613292565b600160098190555050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da390614674565b60405180910390fd5b60026009541415611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de9906147b4565b60405180910390fd5b6002600981905550601060019054906101000a900460ff16611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e40906147f4565b60405180910390fd5b60008111611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390614694565b60405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f90614754565b60405180910390fd5b610fa081611f24610d0f565b611f2e9190614949565b1115611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6690614634565b60405180910390fd5b600a811115611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90614794565b60405180910390fd5b3481600d54611fc291906149d0565b1115612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa906146f4565b60405180910390fd5b61200d3382613292565b600160098190555050565b612020612828565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612085576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000612092612828565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661213f612828565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161218491906145b7565b60405180910390a35050565b601060019054906101000a900460ff1681565b6121ae848484612a7d565b6121cd8373ffffffffffffffffffffffffffffffffffffffff1661274d565b80156121e257506121e0848484846132b0565b155b15612219576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b612227612828565b73ffffffffffffffffffffffffffffffffffffffff16612245611a34565b73ffffffffffffffffffffffffffffffffffffffff161461229b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612292906146d4565b60405180910390fd5b60005b828290508110156123d257600073ffffffffffffffffffffffffffffffffffffffff168383838181106122d4576122d3614c96565b5b90506020020160208101906122e99190613dd5565b73ffffffffffffffffffffffffffffffffffffffff161415612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233790614714565b60405180910390fd5b60006012600085858581811061235957612358614c96565b5b905060200201602081019061236e9190613dd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806123ca90614b8f565b91505061229e565b505050565b60606123e2826127da565b612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241890614734565b60405180910390fd5b600061242b613410565b9050600081511161244b5760405180602001604052806000815250612479565b80612455846134a2565b600f604051602001612469939291906144f6565b6040516020818303038152906040525b915050919050565b600e805461248e90614b2c565b80601f01602080910402602001604051908101604052809291908181526020018280546124ba90614b2c565b80156125075780601f106124dc57610100808354040283529160200191612507565b820191906000526020600020905b8154815290600101906020018083116124ea57829003601f168201915b505050505081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b601060009054906101000a900460ff1681565b6125be612828565b73ffffffffffffffffffffffffffffffffffffffff166125dc611a34565b73ffffffffffffffffffffffffffffffffffffffff1614612632576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612629906146d4565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600d5481565b61265d612828565b73ffffffffffffffffffffffffffffffffffffffff1661267b611a34565b73ffffffffffffffffffffffffffffffffffffffff16146126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c8906146d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612738906145f4565b60405180910390fd5b61274a816131cc565b50565b600080823b905060008111915050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127d357506127d282613603565b5b9050919050565b6000816127e56128e2565b111580156127f4575060005482105b8015612821575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6128ef612f33565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111561294d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294490614774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b4906147d4565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612a8882612f3d565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612af3576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16612b14612828565b73ffffffffffffffffffffffffffffffffffffffff161480612b435750612b4285612b3d612828565b61250f565b5b80612b885750612b51612828565b73ffffffffffffffffffffffffffffffffffffffff16612b7084610a51565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612bc1576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c28576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c3585858560016136e5565b612c4160008487612830565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ec1576000548214612ec057878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f2c85858560016136eb565b5050505050565b6000612710905090565b612f45613bc1565b600082905080612f536128e2565b11158015612f62575060005481105b15613195576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161319357600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146130775780925050506131c7565b5b60011561319257818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461318d5780925050506131c7565b613078565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6132ac8282604051806020016040528060008152506136f1565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026132d6612828565b8786866040518563ffffffff1660e01b81526004016132f89493929190614542565b602060405180830381600087803b15801561331257600080fd5b505af192505050801561334357506040513d601f19601f820116820180604052508101906133409190614012565b60015b6133bd573d8060008114613373576040519150601f19603f3d011682016040523d82523d6000602084013e613378565b606091505b506000815114156133b5576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600e805461341f90614b2c565b80601f016020809104026020016040519081016040528092919081815260200182805461344b90614b2c565b80156134985780601f1061346d57610100808354040283529160200191613498565b820191906000526020600020905b81548152906001019060200180831161347b57829003601f168201915b5050505050905090565b606060008214156134ea576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506135fe565b600082905060005b6000821461351c57808061350590614b8f565b915050600a82613515919061499f565b91506134f2565b60008167ffffffffffffffff81111561353857613537614cc5565b5b6040519080825280601f01601f19166020018201604052801561356a5781602001600182028036833780820191505090505b5090505b600085146135f7576001826135839190614a2a565b9150600a856135929190614bd8565b603061359e9190614949565b60f81b8183815181106135b4576135b3614c96565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856135f0919061499f565b945061356e565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806136ce57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806136de57506136dd82613703565b5b9050919050565b50505050565b50505050565b6136fe838383600161376d565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156137da576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415613815576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61382260008683876136e5565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156139ec57506139eb8773ffffffffffffffffffffffffffffffffffffffff1661274d565b5b15613ab2575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613a6160008884806001019550886132b0565b613a97576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156139f2578260005414613aad57600080fd5b613b1e565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415613ab3575b816000819055505050613b3460008683876136eb565b5050505050565b828054613b4790614b2c565b90600052602060002090601f016020900481019282613b695760008555613bb0565b82601f10613b8257805160ff1916838001178555613bb0565b82800160010185558215613bb0579182015b82811115613baf578251825591602001919060010190613b94565b5b509050613bbd9190613c04565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613c1d576000816000905550600101613c05565b5090565b6000613c34613c2f8461488f565b61486a565b905082815260208101848484011115613c5057613c4f614d03565b5b613c5b848285614aea565b509392505050565b6000613c76613c71846148c0565b61486a565b905082815260208101848484011115613c9257613c91614d03565b5b613c9d848285614aea565b509392505050565b600081359050613cb481615181565b92915050565b60008083601f840112613cd057613ccf614cf9565b5b8235905067ffffffffffffffff811115613ced57613cec614cf4565b5b602083019150836020820283011115613d0957613d08614cfe565b5b9250929050565b600081359050613d1f81615198565b92915050565b600081359050613d34816151af565b92915050565b600081519050613d49816151af565b92915050565b600082601f830112613d6457613d63614cf9565b5b8135613d74848260208601613c21565b91505092915050565b600082601f830112613d9257613d91614cf9565b5b8135613da2848260208601613c63565b91505092915050565b600081359050613dba816151c6565b92915050565b600081359050613dcf816151dd565b92915050565b600060208284031215613deb57613dea614d0d565b5b6000613df984828501613ca5565b91505092915050565b60008060408385031215613e1957613e18614d0d565b5b6000613e2785828601613ca5565b9250506020613e3885828601613ca5565b9150509250929050565b600080600060608486031215613e5b57613e5a614d0d565b5b6000613e6986828701613ca5565b9350506020613e7a86828701613ca5565b9250506040613e8b86828701613dab565b9150509250925092565b60008060008060808587031215613eaf57613eae614d0d565b5b6000613ebd87828801613ca5565b9450506020613ece87828801613ca5565b9350506040613edf87828801613dab565b925050606085013567ffffffffffffffff811115613f0057613eff614d08565b5b613f0c87828801613d4f565b91505092959194509250565b60008060408385031215613f2f57613f2e614d0d565b5b6000613f3d85828601613ca5565b9250506020613f4e85828601613d10565b9150509250929050565b60008060408385031215613f6f57613f6e614d0d565b5b6000613f7d85828601613ca5565b9250506020613f8e85828601613dab565b9150509250929050565b60008060208385031215613faf57613fae614d0d565b5b600083013567ffffffffffffffff811115613fcd57613fcc614d08565b5b613fd985828601613cba565b92509250509250929050565b600060208284031215613ffb57613ffa614d0d565b5b600061400984828501613d25565b91505092915050565b60006020828403121561402857614027614d0d565b5b600061403684828501613d3a565b91505092915050565b60006020828403121561405557614054614d0d565b5b600082013567ffffffffffffffff81111561407357614072614d08565b5b61407f84828501613d7d565b91505092915050565b60006020828403121561409e5761409d614d0d565b5b60006140ac84828501613dab565b91505092915050565b600080604083850312156140cc576140cb614d0d565b5b60006140da85828601613dab565b92505060206140eb85828601613dab565b9150509250929050565b60006020828403121561410b5761410a614d0d565b5b600061411984828501613dc0565b91505092915050565b61412b81614a5e565b82525050565b61413a81614a70565b82525050565b600061414b82614906565b614155818561491c565b9350614165818560208601614af9565b61416e81614d12565b840191505092915050565b600061418482614911565b61418e818561492d565b935061419e818560208601614af9565b6141a781614d12565b840191505092915050565b60006141bd82614911565b6141c7818561493e565b93506141d7818560208601614af9565b80840191505092915050565b600081546141f081614b2c565b6141fa818661493e565b94506001821660008114614215576001811461422657614259565b60ff19831686528186019350614259565b61422f856148f1565b60005b8381101561425157815481890152600182019150602081019050614232565b838801955050505b50505092915050565b600061426f60268361492d565b915061427a82614d23565b604082019050919050565b600061429260208361492d565b915061429d82614d72565b602082019050919050565b60006142b560298361492d565b91506142c082614d9b565b604082019050919050565b60006142d8601b8361492d565b91506142e382614dea565b602082019050919050565b60006142fb60278361492d565b915061430682614e13565b604082019050919050565b600061431e60208361492d565b915061432982614e62565b602082019050919050565b600061434160238361492d565b915061434c82614e8b565b604082019050919050565b600061436460208361492d565b915061436f82614eda565b602082019050919050565b600061438760268361492d565b915061439282614f03565b604082019050919050565b60006143aa60268361492d565b91506143b582614f52565b604082019050919050565b60006143cd601d8361492d565b91506143d882614fa1565b602082019050919050565b60006143f060288361492d565b91506143fb82614fca565b604082019050919050565b6000614413602a8361492d565b915061441e82615019565b604082019050919050565b600061443660258361492d565b915061444182615068565b604082019050919050565b6000614459601f8361492d565b9150614464826150b7565b602082019050919050565b600061447c60198361492d565b9150614487826150e0565b602082019050919050565b600061449f60288361492d565b91506144aa82615109565b604082019050919050565b60006144c2601c8361492d565b91506144cd82615158565b602082019050919050565b6144e181614ac8565b82525050565b6144f081614ad2565b82525050565b600061450282866141b2565b915061450e82856141b2565b915061451a82846141e3565b9150819050949350505050565b600060208201905061453c6000830184614122565b92915050565b60006080820190506145576000830187614122565b6145646020830186614122565b61457160408301856144d8565b81810360608301526145838184614140565b905095945050505050565b60006040820190506145a36000830185614122565b6145b060208301846144d8565b9392505050565b60006020820190506145cc6000830184614131565b92915050565b600060208201905081810360008301526145ec8184614179565b905092915050565b6000602082019050818103600083015261460d81614262565b9050919050565b6000602082019050818103600083015261462d81614285565b9050919050565b6000602082019050818103600083015261464d816142a8565b9050919050565b6000602082019050818103600083015261466d816142cb565b9050919050565b6000602082019050818103600083015261468d816142ee565b9050919050565b600060208201905081810360008301526146ad81614311565b9050919050565b600060208201905081810360008301526146cd81614334565b9050919050565b600060208201905081810360008301526146ed81614357565b9050919050565b6000602082019050818103600083015261470d8161437a565b9050919050565b6000602082019050818103600083015261472d8161439d565b9050919050565b6000602082019050818103600083015261474d816143c0565b9050919050565b6000602082019050818103600083015261476d816143e3565b9050919050565b6000602082019050818103600083015261478d81614406565b9050919050565b600060208201905081810360008301526147ad81614429565b9050919050565b600060208201905081810360008301526147cd8161444c565b9050919050565b600060208201905081810360008301526147ed8161446f565b9050919050565b6000602082019050818103600083015261480d81614492565b9050919050565b6000602082019050818103600083015261482d816144b5565b9050919050565b600060208201905061484960008301846144d8565b92915050565b600060208201905061486460008301846144e7565b92915050565b6000614874614885565b90506148808282614b5e565b919050565b6000604051905090565b600067ffffffffffffffff8211156148aa576148a9614cc5565b5b6148b382614d12565b9050602081019050919050565b600067ffffffffffffffff8211156148db576148da614cc5565b5b6148e482614d12565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061495482614ac8565b915061495f83614ac8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561499457614993614c09565b5b828201905092915050565b60006149aa82614ac8565b91506149b583614ac8565b9250826149c5576149c4614c38565b5b828204905092915050565b60006149db82614ac8565b91506149e683614ac8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a1f57614a1e614c09565b5b828202905092915050565b6000614a3582614ac8565b9150614a4083614ac8565b925082821015614a5357614a52614c09565b5b828203905092915050565b6000614a6982614aa8565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006bffffffffffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614b17578082015181840152602081019050614afc565b83811115614b26576000848401525b50505050565b60006002820490506001821680614b4457607f821691505b60208210811415614b5857614b57614c67565b5b50919050565b614b6782614d12565b810181811067ffffffffffffffff82111715614b8657614b85614cc5565b5b80604052505050565b6000614b9a82614ac8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bcd57614bcc614c09565b5b600182019050919050565b6000614be382614ac8565b9150614bee83614ac8565b925082614bfe57614bfd614c38565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682072657365727665206c65667420666f72207465616d600082015250565b7f4d4f4e4b45455a3a20507572636861736520776f756c6420657863656564204d60008201527f41585f535550504c590000000000000000000000000000000000000000000000602082015250565b7f4d4f4e4b45455a3a2053616c65206973206e6f74206163746976650000000000600082015250565b7f4d4f4e4b45455a3a205468652063616c6c657220697320616e6f74686572206360008201527f6f6e747261637400000000000000000000000000000000000000000000000000602082015250565b7f4d4f4e4b45455a3a204d696e696d756d206d696e74206973203120746f6b656e600082015250565b7f4d4f4e4b45455a3a2043616e27742061646420746865206e756c6c206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d4f4e4b45455a3a204156415820616d6f756e74206973206e6f74207375666660008201527f696369656e740000000000000000000000000000000000000000000000000000602082015250565b7f4d4f4e4b45455a3a2043616e27742072656d6f766520746865206e756c6c206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4d4f4e4b45455a3a20546f6b656e20646f6573206e6f74206578697374000000600082015250565b7f4d4f4e4b45455a3a20596f7520617265206e6f74206f6e20746865204d6f6e6b60008201527f65657a204c697374000000000000000000000000000000000000000000000000602082015250565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b7f4d4f4e4b45455a3a2050757263686173652065786365656473206d617820616c60008201527f6c6f776564000000000000000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b7f4d4f4e4b45455a3a204d6f6e6b65657a204c697374206d696e74206973206e6f60008201527f7420616374697665000000000000000000000000000000000000000000000000602082015250565b7f4d4f4e4b45455a3a204e6f7468696e6720746f20776974686472617700000000600082015250565b61518a81614a5e565b811461519557600080fd5b50565b6151a181614a70565b81146151ac57600080fd5b50565b6151b881614a7c565b81146151c357600080fd5b50565b6151cf81614ac8565b81146151da57600080fd5b50565b6151e681614ad2565b81146151f157600080fd5b5056fea2646970667358221220f007176931fdbd682ef437bb2b4c8ce7149a9837231265300852eea80fb2446264736f6c6343000807003368747470733a2f2f6d6f6e6b65657a2d6170692e6865726f6b756170702e636f6d2f6170692f