[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_baseTokenUri", "type": "string" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, { "internalType": "uint256", "name": "_mintThreshold", "type": "uint256" }, { "internalType": "address", "name": "_creator", "type": "address" }, { "internalType": "address", "name": "_bulletConfigAddress", "type": "address" }, { "internalType": "address", "name": "_mintManagerAddress", "type": "address" }, { "internalType": "address", "name": "_swapManagerAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyExists", "type": "error" }, { "inputs": [], "name": "InvalidOwner", "type": "error" }, { "inputs": [], "name": "InvalidRecipient", "type": "error" }, { "inputs": [], "name": "InvalidSender", "type": "error" }, { "inputs": [], "name": "NotFound", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnsafeRecipient", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "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": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ERC721Approval", "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": "id", "type": "uint256" } ], "name": "NFTTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amountOrId", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "availableIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bulletConfigAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_reservedQuantity", "type": "uint256" }, { "internalType": "uint256", "name": "_payoutPercentage", "type": "uint256" } ], "name": "configure", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" } ], "name": "contractNFTBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" } ], "name": "contractTokenBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintManagerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "revokeOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltyAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "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": "id", "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": "address", "name": "_creator", "type": "address" } ], "name": "setCreator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bool", "name": "state", "type": "bool" } ], "name": "setWhitelist", "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": "swapManagerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAvailableIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "totalNFTsOwned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalNativeSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "units", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60e06040523480156200001157600080fd5b5060405162005945380380620059458339818101604052810190620000379190620005c2565b888887868881600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000a4576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000811162000186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017d9062000785565b60405180910390fd5b8460019081620001979190620009e8565b508360029081620001a99190620009e8565b508260c0818152505080600f81905550601260ff1660808160ff1681525050608051600a620001d9919062000c5f565b6003819055506003548184620001f0919062000cb0565b620001fc919062000cb0565b60a08181525050505050505060648610156200024f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002469062000d4b565b60405180910390fd5b82601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550662386f26fc100008562000368919062000cb0565b60168190555086601090816200037f9190620009e8565b5050505050505050505062000d6d565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003f882620003ad565b810181811067ffffffffffffffff821117156200041a5762000419620003be565b5b80604052505050565b60006200042f6200038f565b90506200043d8282620003ed565b919050565b600067ffffffffffffffff82111562000460576200045f620003be565b5b6200046b82620003ad565b9050602081019050919050565b60005b83811015620004985780820151818401526020810190506200047b565b60008484015250505050565b6000620004bb620004b58462000442565b62000423565b905082815260208101848484011115620004da57620004d9620003a8565b5b620004e784828562000478565b509392505050565b600082601f830112620005075762000506620003a3565b5b815162000519848260208601620004a4565b91505092915050565b6000819050919050565b620005378162000522565b81146200054357600080fd5b50565b60008151905062000557816200052c565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200058a826200055d565b9050919050565b6200059c816200057d565b8114620005a857600080fd5b50565b600081519050620005bc8162000591565b92915050565b60008060008060008060008060006101208a8c031215620005e857620005e762000399565b5b60008a015167ffffffffffffffff8111156200060957620006086200039e565b5b620006178c828d01620004ef565b99505060208a015167ffffffffffffffff8111156200063b576200063a6200039e565b5b620006498c828d01620004ef565b98505060408a015167ffffffffffffffff8111156200066d576200066c6200039e565b5b6200067b8c828d01620004ef565b97505060606200068e8c828d0162000546565b9650506080620006a18c828d0162000546565b95505060a0620006b48c828d01620005ab565b94505060c0620006c78c828d01620005ab565b93505060e0620006da8c828d01620005ab565b925050610100620006ee8c828d01620005ab565b9150509295985092959850929598565b600082825260208201905092915050565b7f4d696e74207468726573686f6c64206d7573742062652067726561746572207460008201527f68616e20302e0000000000000000000000000000000000000000000000000000602082015250565b60006200076d602683620006fe565b91506200077a826200070f565b604082019050919050565b60006020820190508181036000830152620007a0816200075e565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007fa57607f821691505b60208210810362000810576200080f620007b2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200087a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200083b565b6200088686836200083b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008c9620008c3620008bd8462000522565b6200089e565b62000522565b9050919050565b6000819050919050565b620008e583620008a8565b620008fd620008f482620008d0565b84845462000848565b825550505050565b600090565b6200091462000905565b62000921818484620008da565b505050565b5b8181101562000949576200093d6000826200090a565b60018101905062000927565b5050565b601f8211156200099857620009628162000816565b6200096d846200082b565b810160208510156200097d578190505b620009956200098c856200082b565b83018262000926565b50505b505050565b600082821c905092915050565b6000620009bd600019846008026200099d565b1980831691505092915050565b6000620009d88383620009aa565b9150826002028217905092915050565b620009f382620007a7565b67ffffffffffffffff81111562000a0f5762000a0e620003be565b5b62000a1b8254620007e1565b62000a288282856200094d565b600060209050601f83116001811462000a60576000841562000a4b578287015190505b62000a578582620009ca565b86555062000ac7565b601f19841662000a708662000816565b60005b8281101562000a9a5784890151825560018201915060208501945060208101905062000a73565b8683101562000aba578489015162000ab6601f891682620009aa565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b5d5780860481111562000b355762000b3462000acf565b5b600185161562000b455780820291505b808102905062000b558562000afe565b945062000b15565b94509492505050565b60008262000b78576001905062000c4b565b8162000b88576000905062000c4b565b816001811462000ba1576002811462000bac5762000be2565b600191505062000c4b565b60ff84111562000bc15762000bc062000acf565b5b8360020a91508482111562000bdb5762000bda62000acf565b5b5062000c4b565b5060208310610133831016604e8410600b841016171562000c1c5782820a90508381111562000c165762000c1562000acf565b5b62000c4b565b62000c2b848484600162000b0b565b9250905081840481111562000c455762000c4462000acf565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c6c8262000522565b915062000c798362000c52565b925062000ca87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b66565b905092915050565b600062000cbd8262000522565b915062000cca8362000522565b925082820262000cda8162000522565b9150828204841483151762000cf45762000cf362000acf565b5b5092915050565b7f4d696e696d756d207175616e74697479206f66203130302e0000000000000000600082015250565b600062000d33601883620006fe565b915062000d408262000cfb565b602082019050919050565b6000602082019050818103600083015262000d668162000d24565b9050919050565b60805160a05160c051614b9a62000dab6000396000818161137a0152818161197801526130f401526000610eaa015260006111ce0152614b9a6000f3fe6080604052600436106102515760003560e01c80637c6e551d11610139578063b88d4fde116100b6578063d547cfb71161007a578063d547cfb71461090c578063d9adc19114610937578063dd62ed3e14610974578063e985e9c5146109b1578063ef1f3ebb146109ee578063f2fde38b14610a2b57610251565b8063b88d4fde14610813578063c808ce6a1461083c578063c87b56dd14610867578063cfdfb129146108a4578063d528d118146108cf57610251565b80639b19251a116100fd5780639b19251a146107295780639c8dead214610766578063a0712d6814610791578063a22cb465146107ad578063a9059cbb146107d657610251565b80637c6e551d1461065257806381456f481461067d5780638da5cb5b146106a857806395d89b41146106d3578063976a8435146106fe57610251565b80632b968958116101d257806342909ff91161019657806342909ff91461051c5780634f02c4201461054757806353d6fd59146105725780636352211e1461059b57806366e3e5e4146105d857806370a082311461061557610251565b80632b9689581461045f578063313ce567146104765780633e32747a146104a15780633f516018146104ca57806342842e0e146104f357610251565b8063081812fc11610219578063081812fc1461033f578063095ea7b31461037c57806318160ddd146103b957806323b872dd146103e45780632a55205a1461042157610251565b806301ffc9a71461025657806302d05d3f146102935780630445b667146102be57806304bdc76b146102e957806306fdde0314610314575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190613cf0565b610a54565b60405161028a9190613d38565b60405180910390f35b34801561029f57600080fd5b506102a8610ab5565b6040516102b59190613d94565b60405180910390f35b3480156102ca57600080fd5b506102d3610adb565b6040516102e09190613dc8565b60405180910390f35b3480156102f557600080fd5b506102fe610ae1565b60405161030b9190613dc8565b60405180910390f35b34801561032057600080fd5b50610329610aee565b6040516103369190613e73565b60405180910390f35b34801561034b57600080fd5b5061036660048036038101906103619190613ec1565b610b7c565b6040516103739190613d94565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190613f1a565b610baf565b6040516103b09190613d38565b60405180910390f35b3480156103c557600080fd5b506103ce610ea8565b6040516103db9190613dc8565b60405180910390f35b3480156103f057600080fd5b5061040b60048036038101906104069190613f5a565b610ecc565b6040516104189190613d38565b60405180910390f35b34801561042d57600080fd5b5061044860048036038101906104439190613fad565b61105d565b604051610456929190613fed565b60405180910390f35b34801561046b57600080fd5b506104746110a9565b005b34801561048257600080fd5b5061048b6111cc565b6040516104989190614032565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c39190613fad565b6111f0565b005b3480156104d657600080fd5b506104f160048036038101906104ec919061404d565b611536565b005b3480156104ff57600080fd5b5061051a60048036038101906105159190613f5a565b6115ff565b005b34801561052857600080fd5b50610531611733565b60405161053e9190613d94565b60405180910390f35b34801561055357600080fd5b5061055c611759565b6040516105699190613dc8565b60405180910390f35b34801561057e57600080fd5b50610599600480360381019061059491906140a6565b61175f565b005b3480156105a757600080fd5b506105c260048036038101906105bd9190613ec1565b61183f565b6040516105cf9190613d94565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa919061404d565b6118e2565b60405161060c9190613dc8565b60405180910390f35b34801561062157600080fd5b5061063c6004803603810190610637919061404d565b611958565b6040516106499190613dc8565b60405180910390f35b34801561065e57600080fd5b50610667611970565b6040516106749190613dc8565b60405180910390f35b34801561068957600080fd5b50610692611976565b60405161069f9190613dc8565b60405180910390f35b3480156106b457600080fd5b506106bd61199a565b6040516106ca9190613d94565b60405180910390f35b3480156106df57600080fd5b506106e86119be565b6040516106f59190613e73565b60405180910390f35b34801561070a57600080fd5b50610713611a4c565b6040516107209190613dc8565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b919061404d565b611a52565b60405161075d9190613d38565b60405180910390f35b34801561077257600080fd5b5061077b611a72565b6040516107889190613dc8565b60405180910390f35b6107ab60048036038101906107a69190613ec1565b611a78565b005b3480156107b957600080fd5b506107d460048036038101906107cf91906140a6565b611b31565b005b3480156107e257600080fd5b506107fd60048036038101906107f89190613f1a565b611c2e565b60405161080a9190613d38565b60405180910390f35b34801561081f57600080fd5b5061083a6004803603810190610835919061414b565b611c43565b005b34801561084857600080fd5b50610851611d7d565b60405161085e9190613d94565b60405180910390f35b34801561087357600080fd5b5061088e60048036038101906108899190613ec1565b611da3565b60405161089b9190613e73565b60405180910390f35b3480156108b057600080fd5b506108b9611dd7565b6040516108c69190613d94565b60405180910390f35b3480156108db57600080fd5b506108f660048036038101906108f19190613ec1565b611dfd565b6040516109039190613dc8565b60405180910390f35b34801561091857600080fd5b50610921611e21565b60405161092e9190613e73565b60405180910390f35b34801561094357600080fd5b5061095e6004803603810190610959919061404d565b611eaf565b60405161096b9190613dc8565b60405180910390f35b34801561098057600080fd5b5061099b600480360381019061099691906141d3565b611efb565b6040516109a89190613dc8565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d391906141d3565b611f20565b6040516109e59190613d38565b60405180910390f35b3480156109fa57600080fd5b50610a156004803603810190610a10919061404d565b611f4f565b604051610a229190613dc8565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d919061404d565b611f9b565b005b6000632a55205a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610aae5750610aad82612123565b5b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6000600e80549050905090565b60018054610afb90614242565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2790614242565b8015610b745780601f10610b4957610100808354040283529160200191610b74565b820191906000526020600020905b815481529060010190602001808311610b5757829003601f168201915b505050505081565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006004548211158015610bc35750600082115b15610db75760006009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610cc35750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610cfa576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836007600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610da99190613dc8565b60405180910390a350610e9e565b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e959190613dc8565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f88906142bf565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611045578281610fc4919061430e565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61105085858561218d565b5060019150509392505050565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612710601254856110949190614342565b61109e91906143b3565b915091509250929050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461112e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611275576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082116112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90614430565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663789898296040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561132257600080fd5b505af1158015611336573d6000803e3d6000fd5b50505050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f0c1cfc7f000000000000000000000000000000000000000000000000000000000000000083856040518463ffffffff1660e01b81526004016113b993929190614450565b600060405180830381600087803b1580156113d357600080fd5b505af11580156113e7573d6000803e3d6000fd5b50505050611417601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836124d7565b600354600f54601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba65a095306040518263ffffffff1660e01b81526004016114789190613d94565b602060405180830381865afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b9919061449c565b6114c39190614342565b6114cd9190614342565b60056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61160b338484846125db565b60008273ffffffffffffffffffffffffffffffffffffffff163b141580156116f7575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161169293929190614500565b6020604051808303816000875af11580156116b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d5919061455f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b1561172e576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118dd576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600354600f546118f384611f4f565b6118fd9190614342565b6119079190614342565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611951919061430e565b9050919050565b60056020528060005260406000206000915090505481565b60125481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600280546119cb90614242565b80601f01602080910402602001604051908101604052809291908181526020018280546119f790614242565b8015611a445780601f10611a1957610100808354040283529160200191611a44565b820191906000526020600020905b815481529060010190602001808311611a2757829003601f168201915b505050505081565b60035481565b600d6020528060005260406000206000915054906101000a900460ff1681565b600f5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcafa62b343384600354600f5487611aca9190614342565b611ad49190614342565b6040518563ffffffff1660e01b8152600401611af29392919061458c565b6000604051808303818588803b158015611b0b57600080fd5b505af1158015611b1f573d6000803e3d6000fd5b5050505050611b2e33826124d7565b50565b80600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c229190613d38565b60405180910390a35050565b6000611c3b33848461218d565b905092915050565b611c4f338686866125db565b60008473ffffffffffffffffffffffffffffffffffffffff163b14158015611d3f575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611cda9594939291906145ff565b6020604051808303816000875af1158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d919061455f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611d76576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606010611db0836129e7565b604051602001611dc1929190614721565b6040516020818303038152906040529050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e8181548110611e0d57600080fd5b906000526020600020016000915090505481565b60108054611e2e90614242565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5a90614242565b8015611ea75780601f10611e7c57610100808354040283529160200191611ea7565b820191906000526020600020905b815481529060010190602001808311611e8a57829003601f168201915b505050505081565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6006602052816000526040600020602052806000526040600020600091509150505481565b60086020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612020576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612086576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fedb78d306040518263ffffffff1660e01b81526004016121ea9190613d94565b602060405180830381865afa158015612207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222b919061475a565b1561242b5761223a8484612ab5565b80156122945750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561241557601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed34045b846040518263ffffffff1660e01b81526004016122f49190613d94565b600060405180830381600087803b15801561230e57600080fd5b505af1158015612322573d6000803e3d6000fd5b50505050600061233183612bfe565b905061234985858386612344919061430e565b612cb0565b50600081111561240f57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663107e9cf1826040518263ffffffff1660e01b81526004016123ae9190613dc8565b600060405180830381600087803b1580156123c857600080fd5b505af11580156123dc573d6000803e3d6000fd5b5050505061240d85601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612cb0565b505b50612422565b612420848484612cb0565b505b600190506124d0565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036124955761248b848484612cb0565b50600190506124d0565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c7906147f9565b60405180910390fd5b9392505050565b600354600f54826124e89190614342565b6124f29190614342565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125409190614819565b9250508190555060005b818110156125d65761255b8361306c565b8273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516125bb9190613dc8565b60405180910390a380806125ce9061484d565b91505061254a565b505050565b6009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461267c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612673906148e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e29061494d565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127ab5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061281457506007600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b612853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284a906149b9565b60405180910390fd5b600f546003546128639190614342565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128b1919061430e565b92505081905550600f5460035402600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061291583826132bf565b61291f8282613643565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167ffd19e66d1a4315847e95661bab80aff36f6801c5b2eeeca82491034bd7660abe60405160405180910390a48173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516129d99190613dc8565b60405180910390a350505050565b6060600060016129f684613845565b01905060008167ffffffffffffffff811115612a1557612a146149d9565b5b6040519080825280601f01601f191660200182016040528015612a475781602001600182028036833780820191505090505b509050600082602001820190505b600115612aaa578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612a9e57612a9d614384565b5b04945060008503612a55575b819350505050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637949a403836040518263ffffffff1660e01b8152600401612b129190613d94565b602060405180830381865afa158015612b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b53919061475a565b80612bf65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637949a403846040518263ffffffff1660e01b8152600401612bb49190613d94565b602060405180830381865afa158015612bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf5919061475a565b5b905092915050565b6000612710601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a4781746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c94919061449c565b83612c9f9190614342565b612ca991906143b3565b9050919050565b6000612cbb84613998565b15612d0c5781612cca856118e2565b1015612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0290614a54565b60405180910390fd5b5b600060035490506000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612dea919061430e565b9250508190555084600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612e47876139a3565b1580612e9557506000600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050115b15612f43576000600f5484612eaa9190614342565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ef491906143b3565b600f5485612f029190614342565b84612f0d91906143b3565b612f17919061430e565b905060005b81811015612f4057612f2d89613a09565b8080612f389061484d565b915050612f1c565b50505b612f4c866139a3565b612ff9576000600f5484612f609190614342565b82612f6b91906143b3565b600f5485612f799190614342565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fc391906143b3565b612fcd919061430e565b905060005b81811015612ff657612fe38861306c565b8080612fee9061484d565b915050612fd2565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516130569190613dc8565b60405180910390a3600193505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036130d2576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600e8054905003613161576004600081548092919060010191905055507f00000000000000000000000000000000000000000000000000000000000000006004541115613157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314e90614ae6565b60405180910390fd5b60045490506131bc565b600e6001600e80549050613175919061430e565b8154811061318657613185614b06565b5b90600052602060002001549050600e8054806131a5576131a4614b35565b5b600190038181906000526020600020016000905590555b600073ffffffffffffffffffffffffffffffffffffffff166009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613255576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61325f8282613643565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167ffd19e66d1a4315847e95661bab80aff36f6801c5b2eeeca82491034bd7660abe60405160405180910390a45050565b60006132ca83613998565b1561345857600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061335d919061430e565b8154811061336e5761336d614b06565b5b9060005260206000200154905080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c600085815260200190815260200160002054815481106133e0576133df614b06565b5b9060005260206000200181905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061343d5761343c614b35565b5b600190038181906000526020600020016000905590556135dd565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506134e6919061430e565b815481106134f7576134f6614b06565b5b9060005260206000200154905080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c6000858152602001908152602001600020548154811061356957613568614b06565b5b9060005260206000200181905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806135c6576135c5614b35565b5b600190038181906000526020600020016000905590555b600c600083815260200190815260200160002054600c6000838152602001908152602001600020819055506007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505050565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061369e82613998565b1561377457600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050613758919061430e565b600c600083815260200190815260200160002081905550613841565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050613829919061430e565b600c6000838152602001908152602001600020819055505b5050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106138a3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161389957613898614384565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106138e0576d04ee2d6d415b85acef810000000083816138d6576138d5614384565b5b0492506020810190505b662386f26fc10000831061390f57662386f26fc10000838161390557613904614384565b5b0492506010810190505b6305f5e1008310613938576305f5e100838161392e5761392d614384565b5b0492506008810190505b612710831061395d57612710838161395357613952614384565b5b0492506004810190505b60648310613980576064838161397657613975614384565b5b0492506002810190505b600a831061398f576001810190505b80915050919050565b6000813b9050919050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a025750613a0182613998565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a6f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050613aff919061430e565b81548110613b1057613b0f614b06565b5b90600052602060002001549050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480613b6c57613b6b614b35565b5b60019003818190600052602060002001600090559055600c6000828152602001908152602001600020600090556009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600e81908060018154018082558091505060019003906000526020600020016000909190919091505580600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ffd19e66d1a4315847e95661bab80aff36f6801c5b2eeeca82491034bd7660abe60405160405180910390a45050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613ccd81613c98565b8114613cd857600080fd5b50565b600081359050613cea81613cc4565b92915050565b600060208284031215613d0657613d05613c8e565b5b6000613d1484828501613cdb565b91505092915050565b60008115159050919050565b613d3281613d1d565b82525050565b6000602082019050613d4d6000830184613d29565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d7e82613d53565b9050919050565b613d8e81613d73565b82525050565b6000602082019050613da96000830184613d85565b92915050565b6000819050919050565b613dc281613daf565b82525050565b6000602082019050613ddd6000830184613db9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e1d578082015181840152602081019050613e02565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e4582613de3565b613e4f8185613dee565b9350613e5f818560208601613dff565b613e6881613e29565b840191505092915050565b60006020820190508181036000830152613e8d8184613e3a565b905092915050565b613e9e81613daf565b8114613ea957600080fd5b50565b600081359050613ebb81613e95565b92915050565b600060208284031215613ed757613ed6613c8e565b5b6000613ee584828501613eac565b91505092915050565b613ef781613d73565b8114613f0257600080fd5b50565b600081359050613f1481613eee565b92915050565b60008060408385031215613f3157613f30613c8e565b5b6000613f3f85828601613f05565b9250506020613f5085828601613eac565b9150509250929050565b600080600060608486031215613f7357613f72613c8e565b5b6000613f8186828701613f05565b9350506020613f9286828701613f05565b9250506040613fa386828701613eac565b9150509250925092565b60008060408385031215613fc457613fc3613c8e565b5b6000613fd285828601613eac565b9250506020613fe385828601613eac565b9150509250929050565b60006040820190506140026000830185613d85565b61400f6020830184613db9565b9392505050565b600060ff82169050919050565b61402c81614016565b82525050565b60006020820190506140476000830184614023565b92915050565b60006020828403121561406357614062613c8e565b5b600061407184828501613f05565b91505092915050565b61408381613d1d565b811461408e57600080fd5b50565b6000813590506140a08161407a565b92915050565b600080604083850312156140bd576140bc613c8e565b5b60006140cb85828601613f05565b92505060206140dc85828601614091565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261410b5761410a6140e6565b5b8235905067ffffffffffffffff811115614128576141276140eb565b5b602083019150836001820283011115614144576141436140f0565b5b9250929050565b60008060008060006080868803121561416757614166613c8e565b5b600061417588828901613f05565b955050602061418688828901613f05565b945050604061419788828901613eac565b935050606086013567ffffffffffffffff8111156141b8576141b7613c93565b5b6141c4888289016140f5565b92509250509295509295909350565b600080604083850312156141ea576141e9613c8e565b5b60006141f885828601613f05565b925050602061420985828601613f05565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061425a57607f821691505b60208210810361426d5761426c614213565b5b50919050565b7f4e6f7420656e6f75676820616c6c6f77616e63652e0000000000000000000000600082015250565b60006142a9601583613dee565b91506142b482614273565b602082019050919050565b600060208201905081810360008301526142d88161429c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061431982613daf565b915061432483613daf565b925082820390508181111561433c5761433b6142df565b5b92915050565b600061434d82613daf565b915061435883613daf565b925082820261436681613daf565b9150828204841483151761437d5761437c6142df565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143be82613daf565b91506143c983613daf565b9250826143d9576143d8614384565b5b828204905092915050565b7f4d757374207072652d6d696e74206174206c6561737420312e00000000000000600082015250565b600061441a601983613dee565b9150614425826143e4565b602082019050919050565b600060208201905081810360008301526144498161440d565b9050919050565b60006060820190506144656000830186613db9565b6144726020830185613db9565b61447f6040830184613db9565b949350505050565b60008151905061449681613e95565b92915050565b6000602082840312156144b2576144b1613c8e565b5b60006144c084828501614487565b91505092915050565b600082825260208201905092915050565b50565b60006144ea6000836144c9565b91506144f5826144da565b600082019050919050565b60006080820190506145156000830186613d85565b6145226020830185613d85565b61452f6040830184613db9565b8181036060830152614540816144dd565b9050949350505050565b60008151905061455981613cc4565b92915050565b60006020828403121561457557614574613c8e565b5b60006145838482850161454a565b91505092915050565b60006060820190506145a16000830186613d85565b6145ae6020830185613db9565b6145bb6040830184613db9565b949350505050565b82818337600083830152505050565b60006145de83856144c9565b93506145eb8385846145c3565b6145f483613e29565b840190509392505050565b60006080820190506146146000830188613d85565b6146216020830187613d85565b61462e6040830186613db9565b81810360608301526146418184866145d2565b90509695505050505050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461467a81614242565b614684818661464d565b9450600182166000811461469f57600181146146b4576146e7565b60ff19831686528115158202860193506146e7565b6146bd85614658565b60005b838110156146df578154818901526001820191506020810190506146c0565b838801955050505b50505092915050565b60006146fb82613de3565b614705818561464d565b9350614715818560208601613dff565b80840191505092915050565b600061472d828561466d565b915061473982846146f0565b91508190509392505050565b6000815190506147548161407a565b92915050565b6000602082840312156147705761476f613c8e565b5b600061477e84828501614745565b91505092915050565b7f5472616e73666572732064697361626c656420756e74696c206166746572206d60008201527f696e742e00000000000000000000000000000000000000000000000000000000602082015250565b60006147e3602483613dee565b91506147ee82614787565b604082019050919050565b60006020820190508181036000830152614812816147d6565b9050919050565b600061482482613daf565b915061482f83613daf565b9250828201905080821115614847576148466142df565b5b92915050565b600061485882613daf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361488a576148896142df565b5b600182019050919050565b7f53656e646572206973206e6f74206f776e6572206f66204e46542e0000000000600082015250565b60006148cb601b83613dee565b91506148d682614895565b602082019050919050565b600060208201905081810360008301526148fa816148be565b9050919050565b7f43616e6e6f742073656e6420746f206e756c6c20616464726573732e00000000600082015250565b6000614937601c83613dee565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f4f70657261746f72206973206e6f7420617070726f7665642e00000000000000600082015250565b60006149a3601983613dee565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e6f7420656e6f75676820746f6b656e2062616c616e63652e00000000000000600082015250565b6000614a3e601983613dee565b9150614a4982614a08565b602082019050919050565b60006020820190508181036000830152614a6d81614a31565b9050919050565b7f43616e6e6f74206d696e74206d6f7265207468616e20676976656e207375707060008201527f6c792e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614ad0602383613dee565b9150614adb82614a74565b604082019050919050565b60006020820190508181036000830152614aff81614ac3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220a5300d0c6a3d433577cd9a1e604ec17f45aa5131454c554ec0b0540998f6d8e164736f6c634300081100330000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006400000000000000000000000088896886f994def40213ea82af840c32b8b1942c000000000000000000000000f4a5e3c1987290ddfaac90fb21005ab94ddfc637000000000000000000000000ade84e55f88b02a5c47cec364d077b93cfa28e96000000000000000000000000734853f6d5dc62d7c61675a5e6eb3549616701dc000000000000000000000000000000000000000000000000000000000000001641204c6f7665204c657474657220746f204c696e65730000000000000000000000000000000000000000000000000000000000000000000000000000000000054c494e45530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f62616679626569617372356a6c6575617a7971656f65717572346f357a716e63617a6d79373533343668736577377870336d6561637373347767752f0000000000000000000000000000000000000000000000000000000000