[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_wrappingContract", "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": "ReentrancyGuardReentrantCall", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ERC20Transfer", "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": "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": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "accountNFTBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "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": [ { "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": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "enoughTokenBalance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "listAvailableIds", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "nftExists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "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": [], "name": "royaltyReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "string", "name": "_baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_royaltyAmount", "type": "uint256" } ], "name": "setRoyaltyAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyReceiver", "type": "address" } ], "name": "setRoyaltyReceiver", "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": "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": [], "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "unwrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "unwrapSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "bool", "name": "isWhitelisted", "type": "bool" } ], "name": "whitelistAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "wrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "wrapSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "wrappedNFTSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wrappingContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60e06040525f601260146101000a81548160ff0219169083151502179055503480156200002a575f80fd5b5060405162005b7f38038062005b7f833981810160405281019062000050919062000365565b6040518060400160405280600781526020017f554e4e414d4544000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f554e4e414d4544000000000000000000000000000000000000000000000000008152506012610bb88486805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200012a576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055508560049081620001dc91906200060e565b508460059081620001ee91906200060e565b508360ff1660808160ff16815250508260c081815250508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550608051600a6200025691906200087b565b83620002639190620008cb565b60a0818152505050505050505060405180606001604052806036815260200162005b4960369139601090816200029a91906200060e565b507332bd2811fb91bc46756232a0b8c6b2902d7d876360125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101f4601181905550505062000915565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200032f8262000304565b9050919050565b620003418162000323565b81146200034c575f80fd5b50565b5f815190506200035f8162000336565b92915050565b5f80604083850312156200037e576200037d62000300565b5b5f6200038d858286016200034f565b9250506020620003a0858286016200034f565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200042657607f821691505b6020821081036200043c576200043b620003e1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000463565b620004ac868362000463565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004f6620004f0620004ea84620004c4565b620004cd565b620004c4565b9050919050565b5f819050919050565b6200051183620004d6565b620005296200052082620004fd565b8484546200046f565b825550505050565b5f90565b6200053f62000531565b6200054c81848462000506565b505050565b5b818110156200057357620005675f8262000535565b60018101905062000552565b5050565b601f821115620005c2576200058c8162000442565b620005978462000454565b81016020851015620005a7578190505b620005bf620005b68562000454565b83018262000551565b50505b505050565b5f82821c905092915050565b5f620005e45f1984600802620005c7565b1980831691505092915050565b5f620005fe8383620005d3565b9150826002028217905092915050565b6200061982620003aa565b67ffffffffffffffff811115620006355762000634620003b4565b5b6200064182546200040e565b6200064e82828562000577565b5f60209050601f83116001811462000684575f84156200066f578287015190505b6200067b8582620005f1565b865550620006ea565b601f198416620006948662000442565b5f5b82811015620006bd5784890151825560018201915060208501945060208101905062000696565b86831015620006dd5784890151620006d9601f891682620005d3565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200077c57808604811115620007545762000753620006f2565b5b6001851615620007645780820291505b808102905062000774856200071f565b945062000734565b94509492505050565b5f8262000796576001905062000868565b81620007a5575f905062000868565b8160018114620007be5760028114620007c957620007ff565b600191505062000868565b60ff841115620007de57620007dd620006f2565b5b8360020a915084821115620007f857620007f7620006f2565b5b5062000868565b5060208310610133831016604e8410600b8410161715620008395782820a905083811115620008335762000832620006f2565b5b62000868565b6200084884848460016200072b565b92509050818404811115620008625762000861620006f2565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200088782620004c4565b915062000894836200086f565b9250620008c37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000785565b905092915050565b5f620008d782620004c4565b9150620008e483620004c4565b9250828202620008f481620004c4565b915082820484148315176200090e576200090d620006f2565b5b5092915050565b60805160a05160c0516151fb6200094e5f395f8181610b29015261166501525f610e4101525f81816111b401526128f401526151fb5ff3fe608060405234801561000f575f80fd5b5060043610610293575f3560e01c806386ca161811610165578063b9a45aac116100cc578063dd62ed3e11610085578063dd62ed3e1461084a578063de0e9a3e1461087a578063e985e9c514610896578063ea598cb0146108c6578063ef1f3ebb146108e2578063f2fde38b1461091257610293565b8063b9a45aac14610764578063c87b56dd14610780578063ca5994db146107b0578063cb6205e4146107cc578063d528d118146107fc578063d547cfb71461082c57610293565b80639b19251a1161011e5780639b19251a146106905780639fbc8713146106c0578063a22cb465146106de578063a9059cbb146106fa578063b0faefdd1461072a578063b88d4fde1461074857610293565b806386ca1618146105f45780638a8c523c146106125780638da5cb5b1461061c5780638dc251e31461063a57806395d89b4114610656578063971516571461067457610293565b80632b968958116102095780636352211e116101c25780636352211e1461050a57806366e3e5e41461053a57806370a082311461056a5780637c6e551d1461059a57806381456f48146105b8578063850c23dc146105d657610293565b80632b96895814610472578063313ce5671461047c57806342842e0e1461049a5780634f07de09146104b657806353d6fd59146104d257806355f804b3146104ee57610293565b8063150b7a021161025b578063150b7a021461036357806318160ddd146103935780631ae24366146103b1578063201f3517146103e157806323b872dd146104115780632a55205a1461044157610293565b806301ffc9a71461029757806304bdc76b146102c757806306fdde03146102e5578063081812fc14610303578063095ea7b314610333575b5f80fd5b6102b160048036038101906102ac9190613ca9565b61092e565b6040516102be9190613cee565b60405180910390f35b6102cf610a5e565b6040516102dc9190613d1f565b60405180910390f35b6102ed610a6a565b6040516102fa9190613dc2565b60405180910390f35b61031d60048036038101906103189190613e0c565b610af6565b60405161032a9190613e76565b60405180910390f35b61034d60048036038101906103489190613eb9565b610b26565b60405161035a9190613cee565b60405180910390f35b61037d60048036038101906103789190613f58565b610e2b565b60405161038a9190613feb565b60405180910390f35b61039b610e3f565b6040516103a89190613d1f565b60405180910390f35b6103cb60048036038101906103c69190613eb9565b610e63565b6040516103d89190613cee565b60405180910390f35b6103fb60048036038101906103f69190614004565b610e78565b6040516104089190613d1f565b60405180910390f35b61042b6004803603810190610426919061402f565b610ec1565b6040516104389190613cee565b60405180910390f35b61045b6004803603810190610456919061407f565b611049565b6040516104699291906140bd565b60405180910390f35b61047a611093565b005b6104846111b2565b60405161049191906140ff565b60405180910390f35b6104b460048036038101906104af919061402f565b6111d6565b005b6104d060048036038101906104cb9190613e0c565b611306565b005b6104ec60048036038101906104e79190614142565b611394565b005b610508600480360381019061050391906142a8565b611470565b005b610524600480360381019061051f9190613e0c565b611507565b6040516105319190613e76565b60405180910390f35b610554600480360381019061054f9190614004565b6115a5565b6040516105619190613d1f565b60405180910390f35b610584600480360381019061057f9190614004565b611648565b6040516105919190613d1f565b60405180910390f35b6105a261165d565b6040516105af9190613d1f565b60405180910390f35b6105c0611663565b6040516105cd9190613d1f565b60405180910390f35b6105de611687565b6040516105eb9190613d1f565b60405180910390f35b6105fc61168d565b60405161060991906143a6565b60405180910390f35b61061a6116e3565b005b6106246117d4565b6040516106319190613e76565b60405180910390f35b610654600480360381019061064f9190614004565b6117f7565b005b61065e6118be565b60405161066b9190613dc2565b60405180910390f35b61068e60048036038101906106899190614486565b61194a565b005b6106aa60048036038101906106a59190614004565b61199f565b6040516106b79190613cee565b60405180910390f35b6106c86119bc565b6040516106d59190613e76565b60405180910390f35b6106f860048036038101906106f39190614142565b6119e1565b005b610714600480360381019061070f9190613eb9565b611ad9565b6040516107219190613cee565b60405180910390f35b610732611aed565b60405161073f9190613e76565b60405180910390f35b610762600480360381019061075d9190613f58565b611b12565b005b61077e60048036038101906107799190614142565b611c48565b005b61079a60048036038101906107959190613e0c565b611d24565b6040516107a79190613dc2565b60405180910390f35b6107ca60048036038101906107c59190614486565b611d58565b005b6107e660048036038101906107e19190613e0c565b611dad565b6040516107f39190613cee565b60405180910390f35b61081660048036038101906108119190613e0c565b611e15565b6040516108239190613d1f565b60405180910390f35b610834611e35565b6040516108419190613dc2565b60405180910390f35b610864600480360381019061085f91906144cd565b611ec1565b6040516108719190613d1f565b60405180910390f35b610894600480360381019061088f9190613e0c565b611ee1565b005b6108b060048036038101906108ab91906144cd565b611efd565b6040516108bd9190613cee565b60405180910390f35b6108e060048036038101906108db9190613e0c565b611f27565b005b6108fc60048036038101906108f79190614004565b611f43565b6040516109099190613d1f565b60405180910390f35b61092c60048036038101906109279190614004565b611f8c565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109f857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a475750632a55205a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a575750610a5682612111565b5b9050919050565b5f600f80549050905090565b60048054610a7790614538565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa390614538565b8015610aee5780601f10610ac557610100808354040283529160200191610aee565b820191905f5260205f20905b815481529060010190602001808311610ad157829003601f168201915b505050505081565b6008602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7f00000000000000000000000000000000000000000000000000000000000000008211158015610b5657505f82115b15610d3e575f600a5f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610c4d575060095f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610c84576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360085f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610d309190613d1f565b60405180910390a350610e21565b8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e189190613d1f565b60405180910390a35b6001905092915050565b5f63150b7a0260e01b905095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f81610e6e846115a5565b1015905092915050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490509050919050565b5f8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f78906145b2565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611031578281610fb491906145fd565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61103c85858561217a565b5060019150509392505050565b5f8060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127106011548561107e9190614630565b611088919061469e565b915091509250929050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611117576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111e2338484846124f9565b5f8273ffffffffffffffffffffffffffffffffffffffff163b141580156112ca575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161126893929190614701565b6020604051808303815f875af1158015611284573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a8919061475d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611301576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461138a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060118190555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611418576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601090816115039190614925565b5050565b5f600a5f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115a0576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f6115ae6128f1565b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506115f99190614630565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461164191906145fd565b9050919050565b6006602052805f5260405f205f915090505481565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035481565b6060600f8054806020026020016040519081016040528092919081815260200182805480156116d957602002820191905f5260205f20905b8154815260200190600101908083116116c5575b5050505050905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611767576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601260149054906101000a900460ff16156117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae90614a3e565b60405180910390fd5b6001601260146101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461187b576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600580546118cb90614538565b80601f01602080910402602001604051908101604052809291908181526020018280546118f790614538565b80156119425780601f1061191957610100808354040283529160200191611942565b820191905f5260205f20905b81548152906001019060200180831161192557829003601f168201915b505050505081565b611952612924565b5f5b81518110156119935761198082828151811061197357611972614a5c565b5b602002602001015161296a565b808061198b90614a89565b915050611954565b5061199c612c64565b50565b600e602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611acd9190613cee565b60405180910390a35050565b5f611ae533848461217a565b905092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b1e338686866124f9565b5f8473ffffffffffffffffffffffffffffffffffffffff163b14158015611c0a575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611ba8959493929190614afc565b6020604051808303815f875af1158015611bc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be8919061475d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611c41576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ccc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606010611d3183612c6d565b604051602001611d42929190614c4c565b6040516020818303038152906040529050919050565b611d60612924565b5f5b8151811015611da157611d8e828281518110611d8157611d80614a5c565b5b6020026020010151612d37565b8080611d9990614a89565b915050611d62565b50611daa612c64565b50565b5f8073ffffffffffffffffffffffffffffffffffffffff16600a5f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600f8181548110611e24575f80fd5b905f5260205f20015f915090505481565b60108054611e4290614538565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6e90614538565b8015611eb95780601f10611e9057610100808354040283529160200191611eb9565b820191905f5260205f20905b815481529060010190602001808311611e9c57829003601f168201915b505050505081565b6007602052815f5260405f20602052805f5260405f205f91509150505481565b611ee9612924565b611ef281612d37565b611efa612c64565b50565b6009602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b611f2f612924565b611f388161296a565b611f40612c64565b50565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490509050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612010576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612075576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f612186848484612f66565b61218f84613116565b156121e0578161219e856115a5565b10156121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d690614cc4565b60405180910390fd5b5b5f6121e96128f1565b90505f60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122b991906145fd565b925050819055508460065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555061231387613120565b158061235e57505f600b5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050115b156123ee575f8360065f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123ad919061469e565b84846123b9919061469e565b6123c391906145fd565b90505f5b818110156123eb576123d889613182565b80806123e390614a89565b9150506123c7565b50505b6123f786613120565b612486575f8382612408919061469e565b8460065f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612451919061469e565b61245b91906145fd565b90505f5b8181101561248357612470886133ed565b808061247b90614a89565b91505061245f565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516124e39190613d1f565b60405180910390a3600193505050509392505050565b600a5f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e90614d2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc90614d94565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806126c0575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612726575060085f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b612765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275c90614dfc565b60405180910390fd5b61276d6128f1565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127b891906145fd565b925050819055506127c76128f1565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555061281a83826135a6565b6128248282613900565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e0314876128d66128f1565b6040516128e39190613d1f565b60405180910390a350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a61291f9190614f49565b905090565b600260015403612960576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ff90614fdd565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401612a7d9190613d1f565b602060405180830381865afa158015612a98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612abc919061500f565b73ffffffffffffffffffffffffffffffffffffffff1614612b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0990615084565b60405180910390fd5b612b1a6128f1565b6001612b269190614630565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b7191906150a2565b92505081905550600160035f828254612b8a91906150a2565b92505081905550612b9b3383613900565b8073ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b8152600401612bd8939291906150d5565b5f604051808303815f87803b158015612bef575f80fd5b505af1158015612c01573d5f803e3d5ffd5b50505050813373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60018081905550565b60605f6001612c7b84613aed565b0190505f8167ffffffffffffffff811115612c9957612c98614184565b5b6040519080825280601f01601f191660200182016040528015612ccb5781602001600182028036833780820191505090505b5090505f82602001820190505b600115612d2c578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612d2157612d20614671565b5b0494505f8503612cd8575b819350505050919050565b3373ffffffffffffffffffffffffffffffffffffffff16612d5782611507565b73ffffffffffffffffffffffffffffffffffffffff1614612dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da490615084565b60405180910390fd5b612db56128f1565b6001612dc19190614630565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e0c91906145fd565b92505081905550600160035f828254612e2591906145fd565b92505081905550612e3633826135a6565b600d5f8281526020019081526020015f205f9055600a5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b8152600401612edb939291906150d5565b5f604051808303815f87803b158015612ef2575f80fd5b505af1158015612f04573d5f803e3d5ffd5b50505050805f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450565b612f71838383613c3e565b5f601260149054906101000a900460ff1680612fd757505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061302c57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061307d575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806130ce575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b905080613110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131079061517a565b60405180910390fd5b50505050565b5f813b9050919050565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061317b575061317a82613116565b5b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036131e7576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905061327291906145fd565b8154811061328357613282614a5c565b5b905f5260205f2001549050600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806132db576132da615198565b5b600190038181905f5260205f20015f90559055600d5f8281526020019081526020015f205f9055600a5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560085f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600f81908060018154018082558091505060019003905f5260205f20015f9091909190915055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613452576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600f6001600f8054905061346791906145fd565b8154811061347857613477614a5c565b5b905f5260205f2001549050600f80548061349557613494615198565b5b600190038181905f5260205f20015f905590555f73ffffffffffffffffffffffffffffffffffffffff16600a5f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461353d576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6135478282613900565b808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f6135b083613116565b1561372d57600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905061363f91906145fd565b815481106136505761364f614a5c565b5b905f5260205f200154905080600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600d5f8581526020019081526020015f2054815481106136bc576136bb614a5c565b5b905f5260205f200181905550600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061371557613714615198565b5b600190038181905f5260205f20015f905590556138a1565b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506137b791906145fd565b815481106137c8576137c7614a5c565b5b905f5260205f200154905080600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600d5f8581526020019081526020015f20548154811061383457613833614a5c565b5b905f5260205f200181905550600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061388d5761388c615198565b5b600190038181905f5260205f20015f905590555b600d5f8381526020019081526020015f2054600d5f8381526020019081526020015f208190555060085f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505050565b81600a5f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061395882613116565b15613a2557600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050613a0b91906145fd565b600d5f8381526020019081526020015f2081905550613ae9565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050613ad391906145fd565b600d5f8381526020019081526020015f20819055505b5050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613b49577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613b3f57613b3e614671565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613b86576d04ee2d6d415b85acef81000000008381613b7c57613b7b614671565b5b0492506020810190505b662386f26fc100008310613bb557662386f26fc100008381613bab57613baa614671565b5b0492506010810190505b6305f5e1008310613bde576305f5e1008381613bd457613bd3614671565b5b0492506008810190505b6127108310613c03576127108381613bf957613bf8614671565b5b0492506004810190505b60648310613c265760648381613c1c57613c1b614671565b5b0492506002810190505b600a8310613c35576001810190505b80915050919050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613c8881613c54565b8114613c92575f80fd5b50565b5f81359050613ca381613c7f565b92915050565b5f60208284031215613cbe57613cbd613c4c565b5b5f613ccb84828501613c95565b91505092915050565b5f8115159050919050565b613ce881613cd4565b82525050565b5f602082019050613d015f830184613cdf565b92915050565b5f819050919050565b613d1981613d07565b82525050565b5f602082019050613d325f830184613d10565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613d6f578082015181840152602081019050613d54565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613d9482613d38565b613d9e8185613d42565b9350613dae818560208601613d52565b613db781613d7a565b840191505092915050565b5f6020820190508181035f830152613dda8184613d8a565b905092915050565b613deb81613d07565b8114613df5575f80fd5b50565b5f81359050613e0681613de2565b92915050565b5f60208284031215613e2157613e20613c4c565b5b5f613e2e84828501613df8565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613e6082613e37565b9050919050565b613e7081613e56565b82525050565b5f602082019050613e895f830184613e67565b92915050565b613e9881613e56565b8114613ea2575f80fd5b50565b5f81359050613eb381613e8f565b92915050565b5f8060408385031215613ecf57613ece613c4c565b5b5f613edc85828601613ea5565b9250506020613eed85828601613df8565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613f1857613f17613ef7565b5b8235905067ffffffffffffffff811115613f3557613f34613efb565b5b602083019150836001820283011115613f5157613f50613eff565b5b9250929050565b5f805f805f60808688031215613f7157613f70613c4c565b5b5f613f7e88828901613ea5565b9550506020613f8f88828901613ea5565b9450506040613fa088828901613df8565b935050606086013567ffffffffffffffff811115613fc157613fc0613c50565b5b613fcd88828901613f03565b92509250509295509295909350565b613fe581613c54565b82525050565b5f602082019050613ffe5f830184613fdc565b92915050565b5f6020828403121561401957614018613c4c565b5b5f61402684828501613ea5565b91505092915050565b5f805f6060848603121561404657614045613c4c565b5b5f61405386828701613ea5565b935050602061406486828701613ea5565b925050604061407586828701613df8565b9150509250925092565b5f806040838503121561409557614094613c4c565b5b5f6140a285828601613df8565b92505060206140b385828601613df8565b9150509250929050565b5f6040820190506140d05f830185613e67565b6140dd6020830184613d10565b9392505050565b5f60ff82169050919050565b6140f9816140e4565b82525050565b5f6020820190506141125f8301846140f0565b92915050565b61412181613cd4565b811461412b575f80fd5b50565b5f8135905061413c81614118565b92915050565b5f806040838503121561415857614157613c4c565b5b5f61416585828601613ea5565b92505060206141768582860161412e565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6141ba82613d7a565b810181811067ffffffffffffffff821117156141d9576141d8614184565b5b80604052505050565b5f6141eb613c43565b90506141f782826141b1565b919050565b5f67ffffffffffffffff82111561421657614215614184565b5b61421f82613d7a565b9050602081019050919050565b828183375f83830152505050565b5f61424c614247846141fc565b6141e2565b90508281526020810184848401111561426857614267614180565b5b61427384828561422c565b509392505050565b5f82601f83011261428f5761428e613ef7565b5b813561429f84826020860161423a565b91505092915050565b5f602082840312156142bd576142bc613c4c565b5b5f82013567ffffffffffffffff8111156142da576142d9613c50565b5b6142e68482850161427b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61432181613d07565b82525050565b5f6143328383614318565b60208301905092915050565b5f602082019050919050565b5f614354826142ef565b61435e81856142f9565b935061436983614309565b805f5b838110156143995781516143808882614327565b975061438b8361433e565b92505060018101905061436c565b5085935050505092915050565b5f6020820190508181035f8301526143be818461434a565b905092915050565b5f67ffffffffffffffff8211156143e0576143df614184565b5b602082029050602081019050919050565b5f6144036143fe846143c6565b6141e2565b9050808382526020820190506020840283018581111561442657614425613eff565b5b835b8181101561444f578061443b8882613df8565b845260208401935050602081019050614428565b5050509392505050565b5f82601f83011261446d5761446c613ef7565b5b813561447d8482602086016143f1565b91505092915050565b5f6020828403121561449b5761449a613c4c565b5b5f82013567ffffffffffffffff8111156144b8576144b7613c50565b5b6144c484828501614459565b91505092915050565b5f80604083850312156144e3576144e2613c4c565b5b5f6144f085828601613ea5565b925050602061450185828601613ea5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061454f57607f821691505b6020821081036145625761456161450b565b5b50919050565b7f4e6f7420656e6f75676820616c6c6f77616e63652e00000000000000000000005f82015250565b5f61459c601583613d42565b91506145a782614568565b602082019050919050565b5f6020820190508181035f8301526145c981614590565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61460782613d07565b915061461283613d07565b925082820390508181111561462a576146296145d0565b5b92915050565b5f61463a82613d07565b915061464583613d07565b925082820261465381613d07565b9150828204841483151761466a576146696145d0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6146a882613d07565b91506146b383613d07565b9250826146c3576146c2614671565b5b828204905092915050565b5f82825260208201905092915050565b50565b5f6146ec5f836146ce565b91506146f7826146de565b5f82019050919050565b5f6080820190506147145f830186613e67565b6147216020830185613e67565b61472e6040830184613d10565b818103606083015261473f816146e1565b9050949350505050565b5f8151905061475781613c7f565b92915050565b5f6020828403121561477257614771613c4c565b5b5f61477f84828501614749565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026147e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826147a9565b6147ee86836147a9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61482961482461481f84613d07565b614806565b613d07565b9050919050565b5f819050919050565b6148428361480f565b61485661484e82614830565b8484546147b5565b825550505050565b5f90565b61486a61485e565b614875818484614839565b505050565b5b818110156148985761488d5f82614862565b60018101905061487b565b5050565b601f8211156148dd576148ae81614788565b6148b78461479a565b810160208510156148c6578190505b6148da6148d28561479a565b83018261487a565b50505b505050565b5f82821c905092915050565b5f6148fd5f19846008026148e2565b1980831691505092915050565b5f61491583836148ee565b9150826002028217905092915050565b61492e82613d38565b67ffffffffffffffff81111561494757614946614184565b5b6149518254614538565b61495c82828561489c565b5f60209050601f83116001811461498d575f841561497b578287015190505b614985858261490a565b8655506149ec565b601f19841661499b86614788565b5f5b828110156149c25784890151825560018201915060208501945060208101905061499d565b868310156149df57848901516149db601f8916826148ee565b8355505b6001600288020188555050505b505050505050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f614a28601a83613d42565b9150614a33826149f4565b602082019050919050565b5f6020820190508181035f830152614a5581614a1c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614a9382613d07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ac557614ac46145d0565b5b600182019050919050565b5f614adb83856146ce565b9350614ae883858461422c565b614af183613d7a565b840190509392505050565b5f608082019050614b0f5f830188613e67565b614b1c6020830187613e67565b614b296040830186613d10565b8181036060830152614b3c818486614ad0565b90509695505050505050565b5f81905092915050565b5f8154614b5e81614538565b614b688186614b48565b9450600182165f8114614b825760018114614b9757614bc9565b60ff1983168652811515820286019350614bc9565b614ba085614788565b5f5b83811015614bc157815481890152600182019150602081019050614ba2565b838801955050505b50505092915050565b5f614bdc82613d38565b614be68185614b48565b9350614bf6818560208601613d52565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f614c36600583614b48565b9150614c4182614c02565b600582019050919050565b5f614c578285614b52565b9150614c638284614bd2565b9150614c6e82614c2a565b91508190509392505050565b7f4e6f7420656e6f75676820746f6b656e2062616c616e63652e000000000000005f82015250565b5f614cae601983613d42565b9150614cb982614c7a565b602082019050919050565b5f6020820190508181035f830152614cdb81614ca2565b9050919050565b7f4e6f74206f776e6572206f66204e46542e0000000000000000000000000000005f82015250565b5f614d16601183613d42565b9150614d2182614ce2565b602082019050919050565b5f6020820190508181035f830152614d4381614d0a565b9050919050565b7f43616e6e6f742073656e6420746f206e756c6c20616464726573732e000000005f82015250565b5f614d7e601c83613d42565b9150614d8982614d4a565b602082019050919050565b5f6020820190508181035f830152614dab81614d72565b9050919050565b7f4f70657261746f72206973206e6f7420617070726f7665642e000000000000005f82015250565b5f614de6601983613d42565b9150614df182614db2565b602082019050919050565b5f6020820190508181035f830152614e1381614dda565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115614e6f57808604811115614e4b57614e4a6145d0565b5b6001851615614e5a5780820291505b8081029050614e6885614e1a565b9450614e2f565b94509492505050565b5f82614e875760019050614f42565b81614e94575f9050614f42565b8160018114614eaa5760028114614eb457614ee3565b6001915050614f42565b60ff841115614ec657614ec56145d0565b5b8360020a915084821115614edd57614edc6145d0565b5b50614f42565b5060208310610133831016604e8410600b8410161715614f185782820a905083811115614f1357614f126145d0565b5b614f42565b614f258484846001614e26565b92509050818404811115614f3c57614f3b6145d0565b5b81810290505b9392505050565b5f614f5382613d07565b9150614f5e836140e4565b9250614f8b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614e78565b905092915050565b7f43616e6e6f742077726170206578697374696e6720746f6b656e2e00000000005f82015250565b5f614fc7601b83613d42565b9150614fd282614f93565b602082019050919050565b5f6020820190508181035f830152614ff481614fbb565b9050919050565b5f8151905061500981613e8f565b92915050565b5f6020828403121561502457615023613c4c565b5b5f61503184828501614ffb565b91505092915050565b7f596f7520646f206e6f74206f776e207468617420746f6b656e2e0000000000005f82015250565b5f61506e601a83613d42565b91506150798261503a565b602082019050919050565b5f6020820190508181035f83015261509b81615062565b9050919050565b5f6150ac82613d07565b91506150b783613d07565b92508282019050808211156150cf576150ce6145d0565b5b92915050565b5f6060820190506150e85f830186613e67565b6150f56020830185613e67565b6151026040830184613d10565b949350505050565b7f54726164696e67206973206e6f7420656e61626c6564206f72206164647265735f8201527f73206e6f742077686974656c6973746564000000000000000000000000000000602082015250565b5f615164603183613d42565b915061516f8261510a565b604082019050919050565b5f6020820190508181035f83015261519181615158565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220c2c8973d3db56524f9c59fe6eb862b5d313478709520cf6f266d9a1384283fcf64736f6c63430008140033697066733a2f2f516d636f74754a585a354e576e754863626946736e7765585864554d633277665465735238566f33374171624c762f00000000000000000000000032bd2811fb91bc46756232a0b8c6b2902d7d87630000000000000000000000006bdad2a83a8e70f459786a96a0a9159574685c0e