[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EMISSION_CONTRACT", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "HATCH_CONTRACT", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_NFT_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_PURCHASABLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "eggzDataByTokenID", "outputs": [ { "internalType": "uint256", "name": "kg", "type": "uint256" }, { "internalType": "uint256", "name": "emits", "type": "uint256" }, { "internalType": "uint256", "name": "lastClaimedTS", "type": "uint256" }, { "internalType": "uint256", "name": "upgradeNoEarlierThan", "type": "uint256" }, { "internalType": "uint256", "name": "fertiliseNoEarlierThan", "type": "uint256" }, { "internalType": "uint256", "name": "fertility", "type": "uint256" }, { "internalType": "bool", "name": "hatched", "type": "bool" }, { "internalType": "string", "name": "name", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "emits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "fertiliseEggz", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "getEggzData", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "getFertilityData", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "getTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "getUnclaimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "isHatched", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountToMint", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauseSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" }, { "internalType": "string", "name": "_newName", "type": "string" } ], "name": "renameEggz", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "saleStarted", "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": "uint256", "name": "_tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "_emissionTokenID", "type": "uint256" } ], "name": "setEmissionToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" }, { "internalType": "bool", "name": "_hatched", "type": "bool" } ], "name": "setHatched", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "subscribeBurnNOOP", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_jlp", "type": "address" }, { "internalType": "address", "name": "_egg", "type": "address" }, { "internalType": "address", "name": "_fert", "type": "address" }, { "internalType": "address", "name": "_eggburn", "type": "address" }, { "internalType": "address", "name": "_fertburn", "type": "address" } ], "name": "updateAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseURI", "type": "string" } ], "name": "updateBaseUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newPrice", "type": "uint256" } ], "name": "updateMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "update_timeStamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenID", "type": "uint256" } ], "name": "upgradeEggz", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ]
6080604052678ac7230489e80000600c556000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061e665600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737761e2338b35bceb6bda6ce477ef012bde7ae611600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739c846d808a41328a209e235b5e3c4e626dab169e601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507381adaa2b115c4921f3cc412a05f9caa521b4e1ac601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b343cf4b6eba89f51bbdbf8aca97cd2c90ad2e1e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260146101000a81548160ff0219169083151502179055506040518060400160405280601c81526020017f68747470733a2f2f6170692e6567677a2e6368692e6b6e2f6170692f0000000081525060139080519060200190620002519291906200049e565b503480156200025f57600080fd5b506040518060400160405280600481526020017f4567677a000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4547475a000000000000000000000000000000000000000000000000000000008152508160009080519060200190620002e49291906200049e565b508060019080519060200190620002fd9291906200049e565b5050506001600a819055506200031d6000801b336200032360201b60201c565b620005b3565b6200033582826200033960201b60201c565b5050565b6200034b82826200042b60201b60201c565b62000427576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003cc6200049660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b828054620004ac906200057d565b90600052602060002090601f016020900481019282620004d057600085556200051c565b82601f10620004eb57805160ff19168380011785556200051c565b828001600101855582156200051c579182015b828111156200051b578251825591602001919060010190620004fe565b5b5090506200052b91906200052f565b5090565b5b808211156200054a57600081600090555060010162000530565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200059657607f821691505b60208210811415620005ad57620005ac6200054e565b5b50919050565b615e1f80620005c36000396000f3fe6080604052600436106102ad5760003560e01c80635c474f9e11610175578063a22cb465116100dc578063b88d4fde11610095578063ced3e3f11161006f578063ced3e3f114610ad0578063d547741f14610b0d578063dbe7d68314610b36578063e985e9c514610b61576102ad565b8063b88d4fde14610a2d578063c25fef0d14610a56578063c87b56dd14610a93576102ad565b8063a22cb4651461092c578063a27c644714610955578063aa8f5db214610999578063b5077f44146109c2578063b6424d1e146109ed578063b66a0e5d14610a16576102ad565b8063790d1d451161012e578063790d1d451461081757806391d148541461084057806395d89b411461087d578063a04cb223146108a8578063a0712d68146108e5578063a217fddf14610901576102ad565b80635c474f9e146106db5780635efc81bd146107065780636352211e1461073157806368884db01461076e5780636c0360eb146107af57806370a08231146107da576102ad565b80632f745c591161021957806341240e57116101d257806341240e57146105f557806342842e0e1461061e5780634b65872d146106475780634bae407b146106705780634f6ccce71461068757806355367ba9146106c4576102ad565b80632f745c59146104f65780633221c5671461053357806336568abe1461055c57806339f7e37f146105855780633bb3a24d146105ae5780633ccfd60b146105eb576102ad565b8063119e43981161026b578063119e4398146103e85780631270b21a1461041357806318160ddd1461043c57806323b872dd14610467578063248a9ca3146104905780632f2ff15d146104cd576102ad565b8062728e46146102b257806301ffc9a7146102db57806303d785861461031857806306fdde0314610357578063081812fc14610382578063095ea7b3146103bf575b600080fd5b3480156102be57600080fd5b506102d960048036038101906102d4919061410d565b610b9e565b005b3480156102e757600080fd5b5061030260048036038101906102fd9190614192565b610bf4565b60405161030f91906141da565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a919061410d565b610c06565b60405161034e93929190614204565b60405180910390f35b34801561036357600080fd5b5061036c610c6a565b60405161037991906142d4565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a4919061410d565b610cfc565b6040516103b69190614337565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e1919061437e565b610d42565b005b3480156103f457600080fd5b506103fd610e5a565b60405161040a91906143be565b60405180910390f35b34801561041f57600080fd5b5061043a6004803603810190610435919061450e565b610e5f565b005b34801561044857600080fd5b50610451610ee9565b60405161045e91906143be565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061456a565b610ef6565b005b34801561049c57600080fd5b506104b760048036038101906104b291906145f3565b610f56565b6040516104c4919061462f565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef919061464a565b610f76565b005b34801561050257600080fd5b5061051d6004803603810190610518919061437e565b610f97565b60405161052a91906143be565b60405180910390f35b34801561053f57600080fd5b5061055a6004803603810190610555919061410d565b61103c565b005b34801561056857600080fd5b50610583600480360381019061057e919061464a565b6111aa565b005b34801561059157600080fd5b506105ac60048036038101906105a7919061468a565b61122d565b005b3480156105ba57600080fd5b506105d560048036038101906105d0919061410d565b611293565b6040516105e291906142d4565b60405180910390f35b6105f36112a5565b005b34801561060157600080fd5b5061061c600480360381019061061791906146ff565b611331565b005b34801561062a57600080fd5b506106456004803603810190610640919061456a565b6113e0565b005b34801561065357600080fd5b5061066e6004803603810190610669919061473f565b611400565b005b34801561067c57600080fd5b506106856114e7565b005b34801561069357600080fd5b506106ae60048036038101906106a9919061410d565b61164b565b6040516106bb91906143be565b60405180910390f35b3480156106d057600080fd5b506106d96116bc565b005b3480156106e757600080fd5b506106f0611725565b6040516106fd91906141da565b60405180910390f35b34801561071257600080fd5b5061071b611738565b604051610728919061462f565b60405180910390f35b34801561073d57600080fd5b506107586004803603810190610753919061410d565b61175c565b6040516107659190614337565b60405180910390f35b34801561077a57600080fd5b506107956004803603810190610790919061410d565b61180e565b6040516107a695949392919061477f565b60405180910390f35b3480156107bb57600080fd5b506107c4611928565b6040516107d191906142d4565b60405180910390f35b3480156107e657600080fd5b5061080160048036038101906107fc91906147d9565b6119ba565b60405161080e91906143be565b60405180910390f35b34801561082357600080fd5b5061083e60048036038101906108399190614806565b611a72565b005b34801561084c57600080fd5b506108676004803603810190610862919061464a565b611c0a565b60405161087491906141da565b60405180910390f35b34801561088957600080fd5b50610892611c75565b60405161089f91906142d4565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca919061410d565b611d07565b6040516108dc91906143be565b60405180910390f35b6108ff60048036038101906108fa919061410d565b611d27565b005b34801561090d57600080fd5b506109166120b0565b604051610923919061462f565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e9190614881565b6120b7565b005b34801561096157600080fd5b5061097c6004803603810190610977919061410d565b6120cd565b6040516109909897969594939291906148c1565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb919061410d565b6121aa565b005b3480156109ce57600080fd5b506109d7612231565b6040516109e491906143be565b60405180910390f35b3480156109f957600080fd5b50610a146004803603810190610a0f919061410d565b612237565b005b348015610a2257600080fd5b50610a2b6123a5565b005b348015610a3957600080fd5b50610a546004803603810190610a4f91906149e7565b61240e565b005b348015610a6257600080fd5b50610a7d6004803603810190610a78919061410d565b612470565b604051610a8a91906143be565b60405180910390f35b348015610a9f57600080fd5b50610aba6004803603810190610ab5919061410d565b6124dd565b604051610ac791906142d4565b60405180910390f35b348015610adc57600080fd5b50610af76004803603810190610af2919061410d565b612545565b604051610b0491906141da565b60405180910390f35b348015610b1957600080fd5b50610b346004803603810190610b2f919061464a565b612572565b005b348015610b4257600080fd5b50610b4b612593565b604051610b58919061462f565b60405180910390f35b348015610b6d57600080fd5b50610b886004803603810190610b839190614a6a565b6125b7565b604051610b9591906141da565b60405180910390f35b610bab6000801b33611c0a565b610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190614af6565b60405180910390fd5b80600c8190555050565b6000610bff8261264b565b9050919050565b6000806000601460008581526020019081526020016000206005015460146000868152602001908152602001600020600401546014600087815260200190815260200160002060060160009054906101000a900460ff169250925092509193909250565b606060008054610c7990614b45565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca590614b45565b8015610cf25780601f10610cc757610100808354040283529160200191610cf2565b820191906000526020600020905b815481529060010190602001808311610cd557829003601f168201915b5050505050905090565b6000610d07826126c5565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d4d8261175c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590614be9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ddd612710565b73ffffffffffffffffffffffffffffffffffffffff161480610e0c5750610e0b81610e06612710565b6125b7565b5b610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290614c7b565b60405180910390fd5b610e558383612718565b505050565b600381565b610e6933836127d1565b610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90614ce7565b60405180910390fd5b610eba6801158e460913d00000612866565b80601460008481526020019081526020016000206007019080519060200190610ee4929190614020565b505050565b6000600880549050905090565b610f07610f01612710565b826127d1565b610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d90614d79565b60405180910390fd5b610f518383836129a8565b505050565b6000600b6000838152602001908152602001600020600101549050919050565b610f7f82610f56565b610f8881612c0f565b610f928383612c23565b505050565b6000610fa2836119ba565b8210610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda90614e0b565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61104633826127d1565b611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90614ce7565b60405180910390fd5b601460008281526020019081526020016000206003015442116110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490614e77565b60405180910390fd5b611130670de0b6b3a7640000601460008481526020019081526020016000206000015460146000858152602001908152602001600020600001546111219190614ec6565b61112b9190614ec6565b612866565b60016014600083815260200190815260200160002060000160008282546111579190614f20565b92505081905550610e1060146000838152602001908152602001600020600001546111829190614ec6565b4261118d9190614f20565b601460008381526020019081526020016000206003018190555050565b6111b2612710565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690614fe8565b60405180910390fd5b6112298282612d04565b5050565b61123a6000801b33611c0a565b611279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127090614af6565b60405180910390fd5b806013908051906020019061128f929190614020565b5050565b606061129e826124dd565b9050919050565b6112b26000801b33611c0a565b6112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890614af6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505061132f57600080fd5b565b61135b7f15682a5b328315088aab535e02d99965a08218c3e97a023f3fd3c4f24431bc1733611c0a565b8061136f575061136e6000801b33611c0a565b5b6113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a590615054565b60405180910390fd5b806014600084815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505050565b6113fb8383836040518060200160405280600081525061240e565b505050565b61140a33836127d1565b611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144090614ce7565b60405180910390fd5b6000811180156114595750600681105b611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f906150c0565b60405180910390fd5b60006014600084815260200190815260200160002060010154146114c8576114c7678ac7230489e80000612866565b5b8060146000848152602001908152602001600020600101819055505050565b6114f46000801b33611c0a565b611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90614af6565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663507e78886040518163ffffffff1660e01b815260040161158c9061512c565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663507e78886040518163ffffffff1660e01b81526004016116179061512c565b600060405180830381600087803b15801561163157600080fd5b505af1158015611645573d6000803e3d6000fd5b50505050565b6000611655610ee9565b8210611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906151be565b60405180910390fd5b600882815481106116aa576116a96151de565b5b90600052602060002001549050919050565b6116c96000801b33611c0a565b611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90614af6565b60405180910390fd5b6000601260146101000a81548160ff021916908315150217905550565b601260149054906101000a900460ff1681565b7f15682a5b328315088aab535e02d99965a08218c3e97a023f3fd3c4f24431bc1781565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90615259565b60405180910390fd5b80915050919050565b600080600060606000601460008781526020019081526020016000206000015460146000888152602001908152602001600020600101546014600089815260200190815260200160002060020154601460008a8152602001908152602001600020600701601460008b81526020019081526020016000206003015481805461189590614b45565b80601f01602080910402602001604051908101604052809291908181526020018280546118c190614b45565b801561190e5780601f106118e35761010080835404028352916020019161190e565b820191906000526020600020905b8154815290600101906020018083116118f157829003601f168201915b505050505091509450945094509450945091939590929450565b60606013805461193790614b45565b80601f016020809104026020016040519081016040528092919081815260200182805461196390614b45565b80156119b05780601f10611985576101008083540402835291602001916119b0565b820191906000526020600020905b81548152906001019060200180831161199357829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22906152eb565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a7f6000801b33611c0a565b611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590614af6565b60405180910390fd5b84600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054611c8490614b45565b80601f0160208091040260200160405190810160405280929190818152602001828054611cb090614b45565b8015611cfd5780601f10611cd257610100808354040283529160200191611cfd565b820191906000526020600020905b815481529060010190602001808311611ce057829003601f168201915b5050505050905090565b600060146000838152602001908152602001600020600101549050919050565b60011515601260149054906101000a900460ff16151514611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7490615357565b60405180910390fd5b6101f4611d88610ee9565b10611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf906153c3565b60405180910390fd5b60008111611e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e029061542f565b60405180910390fd5b6003811115611e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e469061549b565b60405180910390fd5b6101f481611e5b610ee9565b611e659190614f20565b1115611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d90615507565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600c54611f169190614ec6565b6040518463ffffffff1660e01b8152600401611f3493929190615527565b602060405180830381600087803b158015611f4e57600080fd5b505af1158015611f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f869190615573565b5060005b818110156120ac576000611f9c610ee9565b9050611fa83382612de6565b600160146000838152602001908152602001600020600001819055506000601460008381526020019081526020016000206001018190555042601460008381526020019081526020016000206002018190555060006014600083815260200190815260200160002060060160006101000a81548160ff0219169083151502179055506001601460008381526020019081526020016000206005018190555061204f81612e04565b60405160200161205f9190615628565b604051602081830303815290604052601460008381526020019081526020016000206007019080519060200190612097929190614020565b505080806120a49061564a565b915050611f8a565b5050565b6000801b81565b6120c96120c2612710565b8383612f65565b5050565b60146020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff169080600701805461212790614b45565b80601f016020809104026020016040519081016040528092919081815260200182805461215390614b45565b80156121a05780601f10612175576101008083540402835291602001916121a0565b820191906000526020600020905b81548152906001019060200180831161218357829003601f168201915b5050505050905088565b6121d47f1d1df2904f5ec9f76e2a7fb7e964428040d1ce76032a3c45241f137198f0239e33611c0a565b612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a906156df565b60405180910390fd5b42601460008381526020019081526020016000206002018190555050565b6101f481565b61224133826127d1565b612280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227790614ce7565b60405180910390fd5b601460008281526020019081526020016000206004015442116122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf90614e77565b60405180910390fd5b61232b670de0b6b3a76400006014600084815260200190815260200160002060050154601460008581526020019081526020016000206005015461231c9190614ec6565b6123269190614ec6565b6130d2565b60016014600083815260200190815260200160002060050160008282546123529190614f20565b92505081905550610e10601460008381526020019081526020016000206005015461237d9190614ec6565b426123889190614f20565b601460008381526020019081526020016000206004018190555050565b6123b26000801b33611c0a565b6123f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e890614af6565b60405180910390fd5b6001601260146101000a81548160ff021916908315150217905550565b61241f612419612710565b836127d1565b61245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590614d79565b60405180910390fd5b61246a84848484613214565b50505050565b600062015180670de0b6b3a764000060146000858152602001908152602001600020600001546124a09190614ec6565b6014600085815260200190815260200160002060020154426124c291906156ff565b6124cc9190614ec6565b6124d69190615762565b9050919050565b60606124e8826126c5565b60006124f2613270565b90506000815111612512576040518060200160405280600081525061253d565b8061251c84612e04565b60405160200161252d929190615793565b6040516020818303038152906040525b915050919050565b60006014600083815260200190815260200160002060060160009054906101000a900460ff169050919050565b61257b82610f56565b61258481612c0f565b61258e8383612d04565b505050565b7f1d1df2904f5ec9f76e2a7fb7e964428040d1ce76032a3c45241f137198f0239e81565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806126be57506126bd82613302565b5b9050919050565b6126ce8161337c565b61270d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270490615259565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661278b8361175c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806127dd8361175c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061281f575061281e81856125b7565b5b8061285d57508373ffffffffffffffffffffffffffffffffffffffff1661284584610cfc565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016128c593929190615527565b602060405180830381600087803b1580156128df57600080fd5b505af11580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129179190615573565b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307ab7b6f826040518263ffffffff1660e01b81526004016129739190615803565b600060405180830381600087803b15801561298d57600080fd5b505af11580156129a1573d6000803e3d6000fd5b5050505050565b8273ffffffffffffffffffffffffffffffffffffffff166129c88261175c565b73ffffffffffffffffffffffffffffffffffffffff1614612a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a15906158b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8590615948565b60405180910390fd5b612a998383836133e8565b612aa4600082612718565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612af491906156ff565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b4b9190614f20565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c0a8383836134fc565b505050565b612c2081612c1b612710565b613501565b50565b612c2d8282611c0a565b612d00576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612ca5612710565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612d0e8282611c0a565b15612de2576000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612d87612710565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b612e0082826040518060200160405280600081525061359e565b5050565b60606000821415612e4c576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f60565b600082905060005b60008214612e7e578080612e679061564a565b915050600a82612e779190615762565b9150612e54565b60008167ffffffffffffffff811115612e9a57612e996143e3565b5b6040519080825280601f01601f191660200182016040528015612ecc5781602001600182028036833780820191505090505b5090505b60008514612f5957600182612ee591906156ff565b9150600a85612ef49190615968565b6030612f009190614f20565b60f81b818381518110612f1657612f156151de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612f529190615762565b9450612ed0565b8093505050505b919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcb906159e5565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516130c591906141da565b60405180910390a3505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161313193929190615527565b602060405180830381600087803b15801561314b57600080fd5b505af115801561315f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131839190615573565b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632917eb39826040518263ffffffff1660e01b81526004016131df9190615803565b600060405180830381600087803b1580156131f957600080fd5b505af115801561320d573d6000803e3d6000fd5b5050505050565b61321f8484846129a8565b61322b848484846135f9565b61326a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326190615a77565b60405180910390fd5b50505050565b60606013805461327f90614b45565b80601f01602080910402602001604051908101604052809291908181526020018280546132ab90614b45565b80156132f85780601f106132cd576101008083540402835291602001916132f8565b820191906000526020600020905b8154815290600101906020018083116132db57829003601f168201915b5050505050905090565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613375575061337482613790565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6133f3838383613872565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134365761343181613877565b613475565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146134745761347383826138c0565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134b8576134b381613a2d565b6134f7565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146134f6576134f58282613afe565b5b5b505050565b505050565b61350b8282611c0a565b61359a576135308173ffffffffffffffffffffffffffffffffffffffff166014613b7d565b61353e8360001c6020613b7d565b60405160200161354f929190615b2f565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359191906142d4565b60405180910390fd5b5050565b6135a88383613db9565b6135b560008484846135f9565b6135f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135eb90615a77565b60405180910390fd5b505050565b600061361a8473ffffffffffffffffffffffffffffffffffffffff16613f93565b15613783578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613643612710565b8786866040518563ffffffff1660e01b81526004016136659493929190615bbe565b602060405180830381600087803b15801561367f57600080fd5b505af19250505080156136b057506040513d601f19601f820116820180604052508101906136ad9190615c1f565b60015b613733573d80600081146136e0576040519150601f19603f3d011682016040523d82523d6000602084013e6136e5565b606091505b5060008151141561372b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372290615a77565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613788565b600190505b949350505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061385b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061386b575061386a82613fb6565b5b9050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138cd846119ba565b6138d791906156ff565b90506000600760008481526020019081526020016000205490508181146139bc576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613a4191906156ff565b9050600060096000848152602001908152602001600020549050600060088381548110613a7157613a706151de565b5b906000526020600020015490508060088381548110613a9357613a926151de565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613ae257613ae1615c4c565b5b6001900381819060005260206000200160009055905550505050565b6000613b09836119ba565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b606060006002836002613b909190614ec6565b613b9a9190614f20565b67ffffffffffffffff811115613bb357613bb26143e3565b5b6040519080825280601f01601f191660200182016040528015613be55781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613c1d57613c1c6151de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613c8157613c806151de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002613cc19190614ec6565b613ccb9190614f20565b90505b6001811115613d6b577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110613d0d57613d0c6151de565b5b1a60f81b828281518110613d2457613d236151de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080613d6490615c7b565b9050613cce565b5060008414613daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613da690615cf1565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e2090615d5d565b60405180910390fd5b613e328161337c565b15613e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e6990615dc9565b60405180910390fd5b613e7e600083836133e8565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ece9190614f20565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613f8f600083836134fc565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b82805461402c90614b45565b90600052602060002090601f01602090048101928261404e5760008555614095565b82601f1061406757805160ff1916838001178555614095565b82800160010185558215614095579182015b82811115614094578251825591602001919060010190614079565b5b5090506140a291906140a6565b5090565b5b808211156140bf5760008160009055506001016140a7565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6140ea816140d7565b81146140f557600080fd5b50565b600081359050614107816140e1565b92915050565b600060208284031215614123576141226140cd565b5b6000614131848285016140f8565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61416f8161413a565b811461417a57600080fd5b50565b60008135905061418c81614166565b92915050565b6000602082840312156141a8576141a76140cd565b5b60006141b68482850161417d565b91505092915050565b60008115159050919050565b6141d4816141bf565b82525050565b60006020820190506141ef60008301846141cb565b92915050565b6141fe816140d7565b82525050565b600060608201905061421960008301866141f5565b61422660208301856141f5565b61423360408301846141cb565b949350505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561427557808201518184015260208101905061425a565b83811115614284576000848401525b50505050565b6000601f19601f8301169050919050565b60006142a68261423b565b6142b08185614246565b93506142c0818560208601614257565b6142c98161428a565b840191505092915050565b600060208201905081810360008301526142ee818461429b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614321826142f6565b9050919050565b61433181614316565b82525050565b600060208201905061434c6000830184614328565b92915050565b61435b81614316565b811461436657600080fd5b50565b60008135905061437881614352565b92915050565b60008060408385031215614395576143946140cd565b5b60006143a385828601614369565b92505060206143b4858286016140f8565b9150509250929050565b60006020820190506143d360008301846141f5565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61441b8261428a565b810181811067ffffffffffffffff8211171561443a576144396143e3565b5b80604052505050565b600061444d6140c3565b90506144598282614412565b919050565b600067ffffffffffffffff821115614479576144786143e3565b5b6144828261428a565b9050602081019050919050565b82818337600083830152505050565b60006144b16144ac8461445e565b614443565b9050828152602081018484840111156144cd576144cc6143de565b5b6144d884828561448f565b509392505050565b600082601f8301126144f5576144f46143d9565b5b813561450584826020860161449e565b91505092915050565b60008060408385031215614525576145246140cd565b5b6000614533858286016140f8565b925050602083013567ffffffffffffffff811115614554576145536140d2565b5b614560858286016144e0565b9150509250929050565b600080600060608486031215614583576145826140cd565b5b600061459186828701614369565b93505060206145a286828701614369565b92505060406145b3868287016140f8565b9150509250925092565b6000819050919050565b6145d0816145bd565b81146145db57600080fd5b50565b6000813590506145ed816145c7565b92915050565b600060208284031215614609576146086140cd565b5b6000614617848285016145de565b91505092915050565b614629816145bd565b82525050565b60006020820190506146446000830184614620565b92915050565b60008060408385031215614661576146606140cd565b5b600061466f858286016145de565b925050602061468085828601614369565b9150509250929050565b6000602082840312156146a05761469f6140cd565b5b600082013567ffffffffffffffff8111156146be576146bd6140d2565b5b6146ca848285016144e0565b91505092915050565b6146dc816141bf565b81146146e757600080fd5b50565b6000813590506146f9816146d3565b92915050565b60008060408385031215614716576147156140cd565b5b6000614724858286016140f8565b9250506020614735858286016146ea565b9150509250929050565b60008060408385031215614756576147556140cd565b5b6000614764858286016140f8565b9250506020614775858286016140f8565b9150509250929050565b600060a08201905061479460008301886141f5565b6147a160208301876141f5565b6147ae60408301866141f5565b81810360608301526147c0818561429b565b90506147cf60808301846141f5565b9695505050505050565b6000602082840312156147ef576147ee6140cd565b5b60006147fd84828501614369565b91505092915050565b600080600080600060a08688031215614822576148216140cd565b5b600061483088828901614369565b955050602061484188828901614369565b945050604061485288828901614369565b935050606061486388828901614369565b925050608061487488828901614369565b9150509295509295909350565b60008060408385031215614898576148976140cd565b5b60006148a685828601614369565b92505060206148b7858286016146ea565b9150509250929050565b6000610100820190506148d7600083018b6141f5565b6148e4602083018a6141f5565b6148f160408301896141f5565b6148fe60608301886141f5565b61490b60808301876141f5565b61491860a08301866141f5565b61492560c08301856141cb565b81810360e0830152614937818461429b565b90509998505050505050505050565b600067ffffffffffffffff821115614961576149606143e3565b5b61496a8261428a565b9050602081019050919050565b600061498a61498584614946565b614443565b9050828152602081018484840111156149a6576149a56143de565b5b6149b184828561448f565b509392505050565b600082601f8301126149ce576149cd6143d9565b5b81356149de848260208601614977565b91505092915050565b60008060008060808587031215614a0157614a006140cd565b5b6000614a0f87828801614369565b9450506020614a2087828801614369565b9350506040614a31878288016140f8565b925050606085013567ffffffffffffffff811115614a5257614a516140d2565b5b614a5e878288016149b9565b91505092959194509250565b60008060408385031215614a8157614a806140cd565b5b6000614a8f85828601614369565b9250506020614aa085828601614369565b9150509250929050565b7f2141444d494e0000000000000000000000000000000000000000000000000000600082015250565b6000614ae0600683614246565b9150614aeb82614aaa565b602082019050919050565b60006020820190508181036000830152614b0f81614ad3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614b5d57607f821691505b60208210811415614b7157614b70614b16565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bd3602183614246565b9150614bde82614b77565b604082019050919050565b60006020820190508181036000830152614c0281614bc6565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000614c65603e83614246565b9150614c7082614c09565b604082019050919050565b60006020820190508181036000830152614c9481614c58565b9050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000614cd1600683614246565b9150614cdc82614c9b565b602082019050919050565b60006020820190508181036000830152614d0081614cc4565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000614d63602e83614246565b9150614d6e82614d07565b604082019050919050565b60006020820190508181036000830152614d9281614d56565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614df5602b83614246565b9150614e0082614d99565b604082019050919050565b60006020820190508181036000830152614e2481614de8565b9050919050565b7f546f6f20536f6f6e210000000000000000000000000000000000000000000000600082015250565b6000614e61600983614246565b9150614e6c82614e2b565b602082019050919050565b60006020820190508181036000830152614e9081614e54565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ed1826140d7565b9150614edc836140d7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f1557614f14614e97565b5b828202905092915050565b6000614f2b826140d7565b9150614f36836140d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f6b57614f6a614e97565b5b828201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614fd2602f83614246565b9150614fdd82614f76565b604082019050919050565b6000602082019050818103600083015261500181614fc5565b9050919050565b7f215045524d495454454400000000000000000000000000000000000000000000600082015250565b600061503e600a83614246565b915061504982615008565b602082019050919050565b6000602082019050818103600083015261506d81615031565b9050919050565b7f496e76616c696420546f6b656e49440000000000000000000000000000000000600082015250565b60006150aa600f83614246565b91506150b582615074565b602082019050919050565b600060208201905081810360008301526150d98161509d565b9050919050565b7f4547475a00000000000000000000000000000000000000000000000000000000600082015250565b6000615116600483614246565b9150615121826150e0565b602082019050919050565b6000602082019050818103600083015261514581615109565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006151a8602c83614246565b91506151b38261514c565b604082019050919050565b600060208201905081810360008301526151d78161519b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000615243601883614246565b915061524e8261520d565b602082019050919050565b6000602082019050818103600083015261527281615236565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006152d5602983614246565b91506152e082615279565b604082019050919050565b60006020820190508181036000830152615304816152c8565b9050919050565b7f4e6f742053746172746564000000000000000000000000000000000000000000600082015250565b6000615341600b83614246565b915061534c8261530b565b602082019050919050565b6000602082019050818103600083015261537081615334565b9050919050565b7f4d494e544544204f555400000000000000000000000000000000000000000000600082015250565b60006153ad600a83614246565b91506153b882615377565b602082019050919050565b600060208201905081810360008301526153dc816153a0565b9050919050565b7f4e6f7420456e6f75676800000000000000000000000000000000000000000000600082015250565b6000615419600a83614246565b9150615424826153e3565b602082019050919050565b600060208201905081810360008301526154488161540c565b9050919050565b7f546f6f204d616e79000000000000000000000000000000000000000000000000600082015250565b6000615485600883614246565b91506154908261544f565b602082019050919050565b600060208201905081810360008301526154b481615478565b9050919050565b7f45786365656473204d41585f4e46545f535550504c592e000000000000000000600082015250565b60006154f1601783614246565b91506154fc826154bb565b602082019050919050565b60006020820190508181036000830152615520816154e4565b9050919050565b600060608201905061553c6000830186614328565b6155496020830185614328565b61555660408301846141f5565b949350505050565b60008151905061556d816146d3565b92915050565b600060208284031215615589576155886140cd565b5b60006155978482850161555e565b91505092915050565b600081905092915050565b7f4547475a20230000000000000000000000000000000000000000000000000000600082015250565b60006155e16006836155a0565b91506155ec826155ab565b600682019050919050565b60006156028261423b565b61560c81856155a0565b935061561c818560208601614257565b80840191505092915050565b6000615633826155d4565b915061563f82846155f7565b915081905092915050565b6000615655826140d7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561568857615687614e97565b5b600182019050919050565b7f21454d495353494f4e5f434f4e54524143540000000000000000000000000000600082015250565b60006156c9601283614246565b91506156d482615693565b602082019050919050565b600060208201905081810360008301526156f8816156bc565b9050919050565b600061570a826140d7565b9150615715836140d7565b92508282101561572857615727614e97565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061576d826140d7565b9150615778836140d7565b92508261578857615787615733565b5b828204905092915050565b600061579f82856155f7565b91506157ab82846155f7565b91508190509392505050565b7f47726962626c79204c6f76657320746865204275726e00000000000000000000600082015250565b60006157ed601683614246565b91506157f8826157b7565b602082019050919050565b6000606082019050818103600083015261581c81615109565b905061582b60208301846141f5565b818103604083015261583c816157e0565b905092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006158a0602583614246565b91506158ab82615844565b604082019050919050565b600060208201905081810360008301526158cf81615893565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615932602483614246565b915061593d826158d6565b604082019050919050565b6000602082019050818103600083015261596181615925565b9050919050565b6000615973826140d7565b915061597e836140d7565b92508261598e5761598d615733565b5b828206905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006159cf601983614246565b91506159da82615999565b602082019050919050565b600060208201905081810360008301526159fe816159c2565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615a61603283614246565b9150615a6c82615a05565b604082019050919050565b60006020820190508181036000830152615a9081615a54565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000615acd6017836155a0565b9150615ad882615a97565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000615b196011836155a0565b9150615b2482615ae3565b601182019050919050565b6000615b3a82615ac0565b9150615b4682856155f7565b9150615b5182615b0c565b9150615b5d82846155f7565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000615b9082615b69565b615b9a8185615b74565b9350615baa818560208601614257565b615bb38161428a565b840191505092915050565b6000608082019050615bd36000830187614328565b615be06020830186614328565b615bed60408301856141f5565b8181036060830152615bff8184615b85565b905095945050505050565b600081519050615c1981614166565b92915050565b600060208284031215615c3557615c346140cd565b5b6000615c4384828501615c0a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000615c86826140d7565b91506000821415615c9a57615c99614e97565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615cdb602083614246565b9150615ce682615ca5565b602082019050919050565b60006020820190508181036000830152615d0a81615cce565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615d47602083614246565b9150615d5282615d11565b602082019050919050565b60006020820190508181036000830152615d7681615d3a565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615db3601c83614246565b9150615dbe82615d7d565b602082019050919050565b60006020820190508181036000830152615de281615da6565b905091905056fea2646970667358221220be7e69bbcb0406d97f2a6806380bac76aeea369bf61316ebafeb66a5c1c5784864736f6c63430008090033