[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "holder", "type": "address" }, { "indexed": false, "internalType": "string", "name": "actionType", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "ethAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethBalance", "type": "uint256" } ], "name": "HolderBuySell", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "iterations", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "claims", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lastProcessedIndex", "type": "uint256" }, { "indexed": true, "internalType": "bool", "name": "automatic", "type": "bool" }, { "indexed": true, "internalType": "address", "name": "processor", "type": "address" } ], "name": "ProcessedRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "EthAmount", "type": "uint256" } ], "name": "SendRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiqudity", "type": "uint256" } ], "name": "SwapAndLiquify", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "SwapAndLiquifyEnabledUpdated", "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "_maxWalletAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "holders", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "ethSaleValues", "type": "uint256[]" } ], "name": "airDrops", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deadWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "distribution", "outputs": [ { "internalType": "uint256", "name": "development", "type": "uint256" }, { "internalType": "uint256", "name": "rewards", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "ethHolderBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ethPriceToSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "bool", "name": "isExcludeFromFee", "type": "bool" } ], "name": "excludeIncludeFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "excludeIncludeFromRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getBuySellHistory", "outputs": [ { "components": [ { "internalType": "string", "name": "actionType", "type": "string" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct DogCat.BuySellHistory[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "getEthValueFromTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokenAmountByEthPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "isExcludedFromRewards", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manualSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "openTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeEthFromContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardsTracker", "outputs": [ { "internalType": "contract RewardsTracker", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "development", "type": "uint256" }, { "internalType": "uint256", "name": "rewards", "type": "uint256" } ], "name": "setDistribution", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethPriceToSwap_", "type": "uint256" } ], "name": "setEthPriceToSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxWalletAmount", "type": "uint256" } ], "name": "setMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardsContractAddress", "type": "address" } ], "name": "setRewardsTracker", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "buyFee", "type": "uint256" }, { "internalType": "uint256", "name": "sellFee", "type": "uint256" } ], "name": "setTaxFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapAndLiquifyEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxFees", "outputs": [ { "internalType": "uint256", "name": "buyFee", "type": "uint256" }, { "internalType": "uint256", "name": "sellFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uniswapV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "holders", "type": "address[]" }, { "internalType": "uint256[]", "name": "ethAmounts", "type": "uint256[]" } ], "name": "updateHolderBalances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600681526020017f446f674361740000000000000000000000000000000000000000000000000000815250600890816200011d9190620008d6565b506040518060400160405280600381526020017f444154000000000000000000000000000000000000000000000000000000000081525060099081620001649190620008d6565b506009600a5f6101000a81548160ff021916908360ff160217905550600a5f9054906101000a900460ff16600a6200019d919062000b43565b6305f5e100620001ae919062000b93565b600b556001600c60016101000a81548160ff02191690831515021790555067016345785d8a0000600d55600a5f9054906101000a900460ff16600a620001f5919062000b43565b624c4b4062000205919062000b93565b600e55735a91241792d8d33cc85acf53e1804dedb8d3c64b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620002ac9062000664565b604051809103905ff080158015620002c6573d5f803e3d5ffd5b5060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280606481526020015f81525060155f820151815f01556020820151816001015550503480156200033e575f80fd5b50600b5460035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f620003986200063d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f73bc64ee64de97dcee0b5fc483d7bd00bf2781e99d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f620004656200063d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550604051806040016040528060148152602001606281525060125f820151815f0155602082015181600101559050503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200062f919062000bee565b60405180910390a362000c09565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a968062006bd283390190565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620006ee57607f821691505b602082108103620007045762000703620006a9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200072b565b6200077486836200072b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007be620007b8620007b2846200078c565b62000795565b6200078c565b9050919050565b5f819050919050565b620007d9836200079e565b620007f1620007e882620007c5565b84845462000737565b825550505050565b5f90565b62000807620007f9565b62000814818484620007ce565b505050565b5b818110156200083b576200082f5f82620007fd565b6001810190506200081a565b5050565b601f8211156200088a5762000854816200070a565b6200085f846200071c565b810160208510156200086f578190505b620008876200087e856200071c565b83018262000819565b50505b505050565b5f82821c905092915050565b5f620008ac5f19846008026200088f565b1980831691505092915050565b5f620008c683836200089b565b9150826002028217905092915050565b620008e18262000672565b67ffffffffffffffff811115620008fd57620008fc6200067c565b5b620009098254620006d6565b620009168282856200083f565b5f60209050601f8311600181146200094c575f841562000937578287015190505b620009438582620008b9565b865550620009b2565b601f1984166200095c866200070a565b5f5b8281101562000985578489015182556001820191506020850194506020810190506200095e565b86831015620009a55784890151620009a1601f8916826200089b565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a445780860481111562000a1c5762000a1b620009ba565b5b600185161562000a2c5780820291505b808102905062000a3c85620009e7565b9450620009fc565b94509492505050565b5f8262000a5e576001905062000b30565b8162000a6d575f905062000b30565b816001811462000a86576002811462000a915762000ac7565b600191505062000b30565b60ff84111562000aa65762000aa5620009ba565b5b8360020a91508482111562000ac05762000abf620009ba565b5b5062000b30565b5060208310610133831016604e8410600b841016171562000b015782820a90508381111562000afb5762000afa620009ba565b5b62000b30565b62000b108484846001620009f3565b9250905081840481111562000b2a5762000b29620009ba565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000b4f826200078c565b915062000b5c8362000b37565b925062000b8b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a4d565b905092915050565b5f62000b9f826200078c565b915062000bac836200078c565b925082820262000bbc816200078c565b9150828204841483151762000bd65762000bd5620009ba565b5b5092915050565b62000be8816200078c565b82525050565b5f60208201905062000c035f83018462000bdd565b92915050565b615fbb8062000c175f395ff3fe608060405260043610610249575f3560e01c80635342acb4116101385780638da5cb5b116100b5578063b2abbbc411610079578063b2abbbc414610892578063ba385abb146108ba578063c9567bf9146108e2578063dd62ed3e146108f8578063f18dba2614610934578063f2fde38b1461095c57610250565b80638da5cb5b1461079c57806395d89b41146107c657806397995706146107f0578063a457c2d71461081a578063a9059cbb1461085657610250565b806370a08231116100fc57806370a08231146106d0578063715018a61461070c57806371cd56af1461072257806381230a831461074a57806385141a771461077257610250565b80635342acb4146105eb57806354a5df1f1461062757806359a05f89146106515780635ee58efc1461067b5780636c0a24eb146106a657610250565b806327a14fc2116101c6578063441d801f1161018a578063441d801f1461051d57806349bd5a5e146105455780634a74bb021461056f5780634fda2e121461059957806351bc3c85146105d557610250565b806327a14fc21461043d578063280d382114610465578063313ce5671461047b578063345487d0146104a557806339509351146104e157610250565b806311f0b5161161020d57806311f0b5161461034957806314f944bd146103715780631694505e146103ad57806318160ddd146103d757806323b872dd1461040157610250565b806304dccacb1461025457806306fdde031461027c578063095ea7b3146102a65780630ddc0976146102e25780630e8322731461030d57610250565b3661025057005b5f80fd5b34801561025f575f80fd5b5061027a600480360381019061027591906146af565b610984565b005b348015610287575f80fd5b50610290610b53565b60405161029d91906147b7565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190614864565b610be3565b6040516102d991906148bc565b60405180910390f35b3480156102ed575f80fd5b506102f6610bf9565b6040516103049291906148e4565b60405180910390f35b348015610318575f80fd5b50610333600480360381019061032e919061490b565b610c0a565b60405161034091906148bc565b60405180910390f35b348015610354575f80fd5b5061036f600480360381019061036a9190614936565b610c5c565b005b34801561037c575f80fd5b50610397600480360381019061039291906149e6565b61107c565b6040516103a49190614a11565b60405180910390f35b3480156103b8575f80fd5b506103c16112b4565b6040516103ce9190614a85565b60405180910390f35b3480156103e2575f80fd5b506103eb6112d9565b6040516103f89190614a11565b60405180910390f35b34801561040c575f80fd5b5061042760048036038101906104229190614a9e565b6112e2565b60405161043491906148bc565b60405180910390f35b348015610448575f80fd5b50610463600480360381019061045e91906149e6565b6113c5565b005b348015610470575f80fd5b5061047961146b565b005b348015610486575f80fd5b5061048f61154a565b60405161049c9190614b09565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c6919061490b565b61155f565b6040516104d89190614a11565b60405180910390f35b3480156104ec575f80fd5b5061050760048036038101906105029190614864565b611600565b60405161051491906148bc565b60405180910390f35b348015610528575f80fd5b50610543600480360381019061053e9190614b4c565b6116a0565b005b348015610550575f80fd5b5061055961173d565b6040516105669190614bb8565b60405180910390f35b34801561057a575f80fd5b50610583611762565b60405161059091906148bc565b60405180910390f35b3480156105a4575f80fd5b506105bf60048036038101906105ba919061490b565b611775565b6040516105cc9190614d1d565b60405180910390f35b3480156105e0575f80fd5b506105e96118a7565b005b3480156105f6575f80fd5b50610611600480360381019061060c919061490b565b6118e4565b60405161061e91906148bc565b60405180910390f35b348015610632575f80fd5b5061063b611936565b6040516106489190614a11565b60405180910390f35b34801561065c575f80fd5b5061066561193c565b6040516106729190614d6e565b60405180910390f35b348015610686575f80fd5b5061068f611961565b60405161069d9291906148e4565b60405180910390f35b3480156106b1575f80fd5b506106ba611972565b6040516106c79190614a11565b60405180910390f35b3480156106db575f80fd5b506106f660048036038101906106f1919061490b565b611978565b6040516107039190614a11565b60405180910390f35b348015610717575f80fd5b506107206119be565b005b34801561072d575f80fd5b5061074860048036038101906107439190614b4c565b611b05565b005b348015610755575f80fd5b50610770600480360381019061076b9190614d87565b611ba2565b005b34801561077d575f80fd5b50610786611cce565b6040516107939190614bb8565b60405180910390f35b3480156107a7575f80fd5b506107b0611cf3565b6040516107bd9190614bb8565b60405180910390f35b3480156107d1575f80fd5b506107da611d1a565b6040516107e791906147b7565b60405180910390f35b3480156107fb575f80fd5b50610804611daa565b6040516108119190614a11565b60405180910390f35b348015610825575f80fd5b50610840600480360381019061083b9190614864565b611fe3565b60405161084d91906148bc565b60405180910390f35b348015610861575f80fd5b5061087c60048036038101906108779190614864565b6120ba565b60405161088991906148bc565b60405180910390f35b34801561089d575f80fd5b506108b860048036038101906108b391906149e6565b6120d0565b005b3480156108c5575f80fd5b506108e060048036038101906108db919061490b565b612167565b005b3480156108ed575f80fd5b506108f6612237565b005b348015610903575f80fd5b5061091e60048036038101906109199190614dc5565b6126ed565b60405161092b9190614a11565b60405180910390f35b34801561093f575f80fd5b5061095a60048036038101906109559190614d87565b61276f565b005b348015610967575f80fd5b50610982600480360381019061097d919061490b565b612813565b005b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0890614e4d565b60405180910390fd5b818190508484905014610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5090614eb5565b60405180910390fd5b5f5b84849050811015610b4c575f838383818110610a7a57610a79614ed3565b5b9050602002013590505f868684818110610a9757610a96614ed3565b5b9050602002016020810190610aac919061490b565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82882846040518363ffffffff1660e01b8152600401610b0a929190614f00565b5f604051808303815f87803b158015610b21575f80fd5b505af1158015610b33573d5f803e3d5ffd5b5050505050508080610b4490614f54565b915050610a5b565b5050505050565b606060088054610b6290614fc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8e90614fc8565b8015610bd95780601f10610bb057610100808354040283529160200191610bd9565b820191905f5260205f20905b815481529060010190602001808311610bbc57829003601f168201915b5050505050905090565b5f610bef3384846129c9565b6001905092915050565b6012805f0154908060010154905082565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090614e4d565b60405180910390fd5b8383905086869050148015610d0357508181905086869050145b610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990614eb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890615042565b60405180910390fd5b5f3090505f5b87879050811015611072575f888883818110610df657610df5614ed3565b5b9050602002016020810190610e0b919061490b565b90505f878784818110610e2157610e20614ed3565b5b905060200201359050610e7a8160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b8c90919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610f0b8160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd590919063ffffffff16565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82883888887818110610f9d57610f9c614ed3565b5b905060200201356040518363ffffffff1660e01b8152600401610fc1929190614f00565b5f604051808303815f87803b158015610fd8575f80fd5b505af1158015610fea573d5f803e3d5ffd5b50505050610ff88483612c32565b8173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110559190614a11565b60405180910390a35050808061106a90614f54565b915050610dd7565b5050505050505050565b5f80600267ffffffffffffffff81111561109957611098615060565b5b6040519080825280602002602001820160405280156110c75781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611134573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115891906150a1565b815f8151811061116b5761116a614ed3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106111ba576111b9614ed3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484836040518363ffffffff1660e01b8152600401611250929190615183565b5f60405180830381865afa15801561126a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061129291906152d0565b5f815181106112a4576112a3614ed3565b5b6020026020010151915050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600b54905090565b5f6112ee848484612e25565b6113ba84336113b5856040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525060045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613e5d9092919063ffffffff16565b6129c9565b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990614e4d565b60405180910390fd5b633b9aca00816114629190615317565b600e8190555050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90614e4d565b60405180910390fd5b5f479050611504611cf3565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611546573d5f803e3d5ffd5b5050565b5f600a5f9054906101000a900460ff16905090565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b81526004016115ba9190614bb8565b602060405180830381865afa1580156115d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f99190615358565b9050919050565b5f61169633846116918560045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd590919063ffffffff16565b6129c9565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490614e4d565b60405180910390fd5b611738838383613ebf565b505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60019054906101000a900460ff1681565b606060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b8282101561189c578382905f5260205f2090600202016040518060400160405290815f8201805461180390614fc8565b80601f016020809104026020016040519081016040528092919081815260200182805461182f90614fc8565b801561187a5780601f106118515761010080835404028352916020019161187a565b820191905f5260205f20905b81548152906001019060200180831161185d57829003601f168201915b50505050508152602001600182015481525050815260200190600101906117d3565b505050509050919050565b5f6118b130611978565b90505f8111156118e157600c5f9054906101000a900460ff166118e0576118d781613f65565b6118df61419b565b5b5b50565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6015805f0154908060010154905082565b600e5481565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4290614e4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8990614e4d565b60405180910390fd5b611b9d8383836142a0565b505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690614e4d565b60405180910390fd5b6014821115611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a906153cd565b60405180910390fd5b6014811115611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae90615435565b60405180910390fd5b8160125f0181905550806012600101819055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054611d2990614fc8565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5590614fc8565b8015611da05780601f10611d7757610100808354040283529160200191611da0565b820191905f5260205f20905b815481529060010190602001808311611d8357829003601f168201915b5050505050905090565b5f80600267ffffffffffffffff811115611dc757611dc6615060565b5b604051908082528060200260200182016040528015611df55781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8691906150a1565b815f81518110611e9957611e98614ed3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611ee857611ee7614ed3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401611f80929190615183565b5f60405180830381865afa158015611f9a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611fc291906152d0565b600181518110611fd557611fd4614ed3565b5b602002602001015191505090565b5f6120b033846120ab856040518060400160405280600181526020017f320000000000000000000000000000000000000000000000000000000000000081525060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613e5d9092919063ffffffff16565b6129c9565b6001905092915050565b5f6120c6338484612e25565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215490614e4d565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614e4d565b60405180910390fd5b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90614e4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234a9061549d565b60405180910390fd5b6123813060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b546129c9565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240f91906150a1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612495573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b991906150a1565b6040518363ffffffff1660e01b81526004016124d69291906154bb565b6020604051808303815f875af11580156124f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251691906150a1565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061259d30611978565b5f806125a7611cf3565b426040518863ffffffff1660e01b81526004016125c99695949392919061551b565b60606040518083038185885af11580156125e5573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061260a919061557a565b50505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016126aa929190614f00565b6020604051808303815f875af11580156126c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126ea91906155de565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390614e4d565b60405180910390fd5b8160155f0181905550806015600101819055505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289790614e4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290590615679565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2e906156e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c90615749565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b7f9190614a11565b60405180910390a3505050565b5f612bcd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e5d565b905092915050565b5f808284612be39190615767565b905083811015612c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f906157e4565b60405180910390fd5b8091505092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633974d3b1836040518263ffffffff1660e01b8152600401612c8c9190614bb8565b5f604051808303815f87803b158015612ca3575f80fd5b505af1925050508015612cb4575060015b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633974d3b1826040518263ffffffff1660e01b8152600401612d0f9190614bb8565b5f604051808303815f87803b158015612d26575f80fd5b505af1925050508015612d37575060015b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c33fb8776040518163ffffffff1660e01b81526004016060604051808303815f875af1925050508015612dc257506040513d601f19601f82011682018060405250810190612dbf919061557a565b60015b15612e21573273ffffffffffffffffffffffffffffffffffffffff16600115157fd401621dbefa4e4b58dfded2f6ce557f2bf581dde5dca5670c9993d2fb1bee0d858585604051612e1593929190615802565b60405180910390a35050505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90615881565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef8906158e9565b60405180910390fd5b5f8111612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a90615951565b60405180910390fd5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612fe2575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130215750612ff1611cf3565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156130605750613030611cf3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90505f61307e8361307086611978565b612bd590919063ffffffff16565b90505f613089611cf3565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156130f757506130c7611cf3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015613150575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561318857503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156131c057503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613c265760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036134eb57821561326557600e54821115613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b906159b9565b60405180910390fd5b5b82613270575f61329b565b61329a606461328c60125f01548761434690919063ffffffff16565b6143bd90919063ffffffff16565b5b90505f6132a78561107c565b90505f6133558260115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc8a6040518263ffffffff1660e01b81526004016133089190614bb8565b602060405180830381865afa158015613323573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133479190615358565b612bd590919063ffffffff16565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82888836040518363ffffffff1660e01b81526004016133b3929190614f00565b5f604051808303815f87803b1580156133ca575f80fd5b505af11580156133dc573d5f803e3d5ffd5b5050505060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180604001604052806040518060400160405280600381526020017f4255590000000000000000000000000000000000000000000000000000000000815250815260200184815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0190816134a09190615b6b565b506020820151816001015550507f47744cc547f0cc32a68348ccb6e26f815f647757d949205cd3da16ed48446c038783836040516134e093929190615c84565b60405180910390a150505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015613594575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b1561383557826135a4575f6135d0565b6135cf60646135c16012600101548761434690919063ffffffff16565b6143bd90919063ffffffff16565b5b90505f6135dc8561107c565b90505f8160115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc8a6040518263ffffffff1660e01b815260040161363a9190614bb8565b602060405180830381865afa158015613655573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136799190615358565b6136839190615cd5565b90505f808213156136945781613696565b5f5b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d8288a836040518363ffffffff1660e01b81526004016136f4929190614f00565b5f604051808303815f87803b15801561370b575f80fd5b505af115801561371d573d5f803e3d5ffd5b5050505060075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180604001604052806040518060400160405280600481526020017f53454c4c00000000000000000000000000000000000000000000000000000000815250815260200185815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0190816137e19190615b6b565b506020820151816001015550507f47744cc547f0cc32a68348ccb6e26f815f647757d949205cd3da16ed48446c0389848360405161382193929190615d5f565b60405180910390a1613831614406565b5050505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156138df575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613c1b575f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc886040518263ffffffff1660e01b815260040161393f9190614bb8565b602060405180830381865afa15801561395a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061397e9190615358565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d828885f6040518363ffffffff1660e01b81526004016139dc929190615da7565b5f604051808303815f87803b1580156139f3575f80fd5b505af1158015613a05573d5f803e3d5ffd5b50505050613a1287614475565b15613b8f575f613ac38260115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc8a6040518263ffffffff1660e01b8152600401613a769190614bb8565b602060405180830381865afa158015613a91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ab59190615358565b612bd590919063ffffffff16565b905060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82888836040518363ffffffff1660e01b8152600401613b21929190614f00565b5f604051808303815f87803b158015613b38575f80fd5b505af1158015613b4a573d5f803e3d5ffd5b505050507f47744cc547f0cc32a68348ccb6e26f815f647757d949205cd3da16ed48446c03878383604051613b8193929190615c84565b60405180910390a150613c19565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82887836040518363ffffffff1660e01b8152600401613beb929190614f00565b5f604051808303815f87803b158015613c02575f80fd5b505af1158015613c14573d5f803e3d5ffd5b505050505b505b613c258686612c32565b5b5f613c3a8286612b8c90919063ffffffff16565b9050613c8c8560035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b8c90919063ffffffff16565b60035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613d1d8160035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd590919063ffffffff16565b60035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613dae8260035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd590919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613e4c9190614a11565b60405180910390a350505050505050565b5f838311158290613ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e9b91906147b7565b60405180910390fd5b505f8385613eb29190615dce565b9050809150509392505050565b5f5b83839050811015613f5f575f848483818110613ee057613edf614ed3565b5b9050602002016020810190613ef5919061490b565b90508260055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550508080613f5790614f54565b915050613ec1565b50505050565b5f600267ffffffffffffffff811115613f8157613f80615060565b5b604051908082528060200260200182016040528015613faf5781602001602082028036833780820191505090505b50905030815f81518110613fc657613fc5614ed3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561406a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061408e91906150a1565b816001815181106140a2576140a1614ed3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141083060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129c9565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161416a959493929190615e01565b5f604051808303815f87803b158015614181575f80fd5b505af1158015614193573d5f803e3d5ffd5b505050505050565b6001600c5f6101000a81548160ff0219169083151502179055505f4790505f6141e460646141d660155f01548561434690919063ffffffff16565b6143bd90919063ffffffff16565b90505f61421260646142046015600101548661434690919063ffffffff16565b6143bd90919063ffffffff16565b9050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015614278573d5f803e3d5ffd5b50614282816144bc565b5050505f600c5f6101000a81548160ff021916908315150217905550565b5f5b83839050811015614340575f8484838181106142c1576142c0614ed3565b5b90506020020160208101906142d6919061490b565b90508260065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050808061433890614f54565b9150506142a2565b50505050565b5f808303614356575f90506143b7565b5f82846143639190615317565b90508284826143729190615e86565b146143b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143a990615f26565b60405180910390fd5b809150505b92915050565b5f6143fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614587565b905092915050565b5f61441030611978565b90505f811115614472575f614423611daa565b90508082101580156144415750600c5f9054906101000a900460ff16155b80156144595750600c60019054906101000a900460ff165b156144705761446781613f65565b61446f61419b565b5b505b50565b5f805f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4705f1b9050833f91508082141580156144b357505f801b8214155b92505050919050565b5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161450290615f71565b5f6040518083038185875af1925050503d805f811461453c576040519150601f19603f3d011682016040523d82523d5f602084013e614541565b606091505b505090508015614583577f8d506e73abc3fae6fd0fd6faac7b7ff03e47622fa1e4fa03fc1e8f9801769afa8260405161457a9190614a11565b60405180910390a15b5050565b5f80831182906145cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145c491906147b7565b60405180910390fd5b505f83856145db9190615e86565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261461a576146196145f9565b5b8235905067ffffffffffffffff811115614637576146366145fd565b5b60208301915083602082028301111561465357614652614601565b5b9250929050565b5f8083601f84011261466f5761466e6145f9565b5b8235905067ffffffffffffffff81111561468c5761468b6145fd565b5b6020830191508360208202830111156146a8576146a7614601565b5b9250929050565b5f805f80604085870312156146c7576146c66145f1565b5b5f85013567ffffffffffffffff8111156146e4576146e36145f5565b5b6146f087828801614605565b9450945050602085013567ffffffffffffffff811115614713576147126145f5565b5b61471f8782880161465a565b925092505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614764578082015181840152602081019050614749565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6147898261472d565b6147938185614737565b93506147a3818560208601614747565b6147ac8161476f565b840191505092915050565b5f6020820190508181035f8301526147cf818461477f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614800826147d7565b9050919050565b614810816147f6565b811461481a575f80fd5b50565b5f8135905061482b81614807565b92915050565b5f819050919050565b61484381614831565b811461484d575f80fd5b50565b5f8135905061485e8161483a565b92915050565b5f806040838503121561487a576148796145f1565b5b5f6148878582860161481d565b925050602061489885828601614850565b9150509250929050565b5f8115159050919050565b6148b6816148a2565b82525050565b5f6020820190506148cf5f8301846148ad565b92915050565b6148de81614831565b82525050565b5f6040820190506148f75f8301856148d5565b61490460208301846148d5565b9392505050565b5f602082840312156149205761491f6145f1565b5b5f61492d8482850161481d565b91505092915050565b5f805f805f80606087890312156149505761494f6145f1565b5b5f87013567ffffffffffffffff81111561496d5761496c6145f5565b5b61497989828a01614605565b9650965050602087013567ffffffffffffffff81111561499c5761499b6145f5565b5b6149a889828a0161465a565b9450945050604087013567ffffffffffffffff8111156149cb576149ca6145f5565b5b6149d789828a0161465a565b92509250509295509295509295565b5f602082840312156149fb576149fa6145f1565b5b5f614a0884828501614850565b91505092915050565b5f602082019050614a245f8301846148d5565b92915050565b5f819050919050565b5f614a4d614a48614a43846147d7565b614a2a565b6147d7565b9050919050565b5f614a5e82614a33565b9050919050565b5f614a6f82614a54565b9050919050565b614a7f81614a65565b82525050565b5f602082019050614a985f830184614a76565b92915050565b5f805f60608486031215614ab557614ab46145f1565b5b5f614ac28682870161481d565b9350506020614ad38682870161481d565b9250506040614ae486828701614850565b9150509250925092565b5f60ff82169050919050565b614b0381614aee565b82525050565b5f602082019050614b1c5f830184614afa565b92915050565b614b2b816148a2565b8114614b35575f80fd5b50565b5f81359050614b4681614b22565b92915050565b5f805f60408486031215614b6357614b626145f1565b5b5f84013567ffffffffffffffff811115614b8057614b7f6145f5565b5b614b8c86828701614605565b93509350506020614b9f86828701614b38565b9150509250925092565b614bb2816147f6565b82525050565b5f602082019050614bcb5f830184614ba9565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f614c148261472d565b614c1e8185614bfa565b9350614c2e818560208601614747565b614c378161476f565b840191505092915050565b614c4b81614831565b82525050565b5f604083015f8301518482035f860152614c6b8282614c0a565b9150506020830151614c806020860182614c42565b508091505092915050565b5f614c968383614c51565b905092915050565b5f602082019050919050565b5f614cb482614bd1565b614cbe8185614bdb565b935083602082028501614cd085614beb565b805f5b85811015614d0b5784840389528151614cec8582614c8b565b9450614cf783614c9e565b925060208a01995050600181019050614cd3565b50829750879550505050505092915050565b5f6020820190508181035f830152614d358184614caa565b905092915050565b5f614d4782614a33565b9050919050565b5f614d5882614d3d565b9050919050565b614d6881614d4e565b82525050565b5f602082019050614d815f830184614d5f565b92915050565b5f8060408385031215614d9d57614d9c6145f1565b5b5f614daa85828601614850565b9250506020614dbb85828601614850565b9150509250929050565b5f8060408385031215614ddb57614dda6145f1565b5b5f614de88582860161481d565b9250506020614df98582860161481d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614e37602083614737565b9150614e4282614e03565b602082019050919050565b5f6020820190508181035f830152614e6481614e2b565b9050919050565b7f686f6c6465727320616e6420616d6f756e747320646f6e2774206d61746368005f82015250565b5f614e9f601f83614737565b9150614eaa82614e6b565b602082019050919050565b5f6020820190508181035f830152614ecc81614e93565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050614f135f830185614ba9565b614f2060208301846148d5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f5e82614831565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f9057614f8f614f27565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614fdf57607f821691505b602082108103614ff257614ff1614f9b565b5b50919050565b7f31330000000000000000000000000000000000000000000000000000000000005f82015250565b5f61502c600283614737565b915061503782614ff8565b602082019050919050565b5f6020820190508181035f83015261505981615020565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061509b81614807565b92915050565b5f602082840312156150b6576150b56145f1565b5b5f6150c38482850161508d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6150fe816147f6565b82525050565b5f61510f83836150f5565b60208301905092915050565b5f602082019050919050565b5f615131826150cc565b61513b81856150d6565b9350615146836150e6565b805f5b8381101561517657815161515d8882615104565b97506151688361511b565b925050600181019050615149565b5085935050505092915050565b5f6040820190506151965f8301856148d5565b81810360208301526151a88184615127565b90509392505050565b6151ba8261476f565b810181811067ffffffffffffffff821117156151d9576151d8615060565b5b80604052505050565b5f6151eb6145e8565b90506151f782826151b1565b919050565b5f67ffffffffffffffff82111561521657615215615060565b5b602082029050602081019050919050565b5f815190506152358161483a565b92915050565b5f61524d615248846151fc565b6151e2565b905080838252602082019050602084028301858111156152705761526f614601565b5b835b8181101561529957806152858882615227565b845260208401935050602081019050615272565b5050509392505050565b5f82601f8301126152b7576152b66145f9565b5b81516152c784826020860161523b565b91505092915050565b5f602082840312156152e5576152e46145f1565b5b5f82015167ffffffffffffffff811115615302576153016145f5565b5b61530e848285016152a3565b91505092915050565b5f61532182614831565b915061532c83614831565b925082820261533a81614831565b9150828204841483151761535157615350614f27565b5b5092915050565b5f6020828403121561536d5761536c6145f1565b5b5f61537a84828501615227565b91505092915050565b7f33000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6153b7600183614737565b91506153c282615383565b602082019050919050565b5f6020820190508181035f8301526153e4816153ab565b9050919050565b7f34000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61541f600183614737565b915061542a826153eb565b602082019050919050565b5f6020820190508181035f83015261544c81615413565b9050919050565b7f31340000000000000000000000000000000000000000000000000000000000005f82015250565b5f615487600283614737565b915061549282615453565b602082019050919050565b5f6020820190508181035f8301526154b48161547b565b9050919050565b5f6040820190506154ce5f830185614ba9565b6154db6020830184614ba9565b9392505050565b5f819050919050565b5f6155056155006154fb846154e2565b614a2a565b614831565b9050919050565b615515816154eb565b82525050565b5f60c08201905061552e5f830189614ba9565b61553b60208301886148d5565b615548604083018761550c565b615555606083018661550c565b6155626080830185614ba9565b61556f60a08301846148d5565b979650505050505050565b5f805f60608486031215615591576155906145f1565b5b5f61559e86828701615227565b93505060206155af86828701615227565b92505060406155c086828701615227565b9150509250925092565b5f815190506155d881614b22565b92915050565b5f602082840312156155f3576155f26145f1565b5b5f615600848285016155ca565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615663602683614737565b915061566e82615609565b604082019050919050565b5f6020820190508181035f83015261569081615657565b9050919050565b7f35000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6156cb600183614737565b91506156d682615697565b602082019050919050565b5f6020820190508181035f8301526156f8816156bf565b9050919050565b7f36000000000000000000000000000000000000000000000000000000000000005f82015250565b5f615733600183614737565b915061573e826156ff565b602082019050919050565b5f6020820190508181035f83015261576081615727565b9050919050565b5f61577182614831565b915061577c83614831565b925082820190508082111561579457615793614f27565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6157ce601b83614737565b91506157d98261579a565b602082019050919050565b5f6020820190508181035f8301526157fb816157c2565b9050919050565b5f6060820190506158155f8301866148d5565b61582260208301856148d5565b61582f60408301846148d5565b949350505050565b7f37000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61586b600183614737565b915061587682615837565b602082019050919050565b5f6020820190508181035f8301526158988161585f565b9050919050565b7f38000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6158d3600183614737565b91506158de8261589f565b602082019050919050565b5f6020820190508181035f830152615900816158c7565b9050919050565b7f39000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61593b600183614737565b915061594682615907565b602082019050919050565b5f6020820190508181035f8301526159688161592f565b9050919050565b7f31300000000000000000000000000000000000000000000000000000000000005f82015250565b5f6159a3600283614737565b91506159ae8261596f565b602082019050919050565b5f6020820190508181035f8301526159d081615997565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302615a337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826159f8565b615a3d86836159f8565b95508019841693508086168417925050509392505050565b5f615a6f615a6a615a6584614831565b614a2a565b614831565b9050919050565b5f819050919050565b615a8883615a55565b615a9c615a9482615a76565b848454615a04565b825550505050565b5f90565b615ab0615aa4565b615abb818484615a7f565b505050565b5b81811015615ade57615ad35f82615aa8565b600181019050615ac1565b5050565b601f821115615b2357615af4816159d7565b615afd846159e9565b81016020851015615b0c578190505b615b20615b18856159e9565b830182615ac0565b50505b505050565b5f82821c905092915050565b5f615b435f1984600802615b28565b1980831691505092915050565b5f615b5b8383615b34565b9150826002028217905092915050565b615b748261472d565b67ffffffffffffffff811115615b8d57615b8c615060565b5b615b978254614fc8565b615ba2828285615ae2565b5f60209050601f831160018114615bd3575f8415615bc1578287015190505b615bcb8582615b50565b865550615c32565b601f198416615be1866159d7565b5f5b82811015615c0857848901518255600182019150602085019450602081019050615be3565b86831015615c255784890151615c21601f891682615b34565b8355505b6001600288020188555050505b505050505050565b7f42555900000000000000000000000000000000000000000000000000000000005f82015250565b5f615c6e600383614737565b9150615c7982615c3a565b602082019050919050565b5f608082019050615c975f830186614ba9565b8181036020830152615ca881615c62565b9050615cb760408301856148d5565b615cc460608301846148d5565b949350505050565b5f819050919050565b5f615cdf82615ccc565b9150615cea83615ccc565b925082820390508181125f8412168282135f851215161715615d0f57615d0e614f27565b5b92915050565b7f53454c4c000000000000000000000000000000000000000000000000000000005f82015250565b5f615d49600483614737565b9150615d5482615d15565b602082019050919050565b5f608082019050615d725f830186614ba9565b8181036020830152615d8381615d3d565b9050615d9260408301856148d5565b615d9f60608301846148d5565b949350505050565b5f604082019050615dba5f830185614ba9565b615dc7602083018461550c565b9392505050565b5f615dd882614831565b9150615de383614831565b9250828203905081811115615dfb57615dfa614f27565b5b92915050565b5f60a082019050615e145f8301886148d5565b615e21602083018761550c565b8181036040830152615e338186615127565b9050615e426060830185614ba9565b615e4f60808301846148d5565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615e9082614831565b9150615e9b83614831565b925082615eab57615eaa615e59565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615f10602183614737565b9150615f1b82615eb6565b604082019050919050565b5f6020820190508181035f830152615f3d81615f04565b9050919050565b5f81905092915050565b50565b5f615f5c5f83615f44565b9150615f6782615f4e565b5f82019050919050565b5f615f7b82615f51565b915081905091905056fea26469706673582212207bb4b3bee3f52c35ebbf3a0981b1f017594f6f5a1340a1df8f2e41165bced57264736f6c63430008140033608060405234801561000f575f80fd5b50610a798061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063663037ac11610059578063663037ac146100e7578063949d225d14610117578063c2bc2efc14610135578063cd413329146101655761007b565b806329092d0e1461007f5780633825d8281461009b578063564c8d11146100b7575b5f80fd5b6100996004803603810190610094919061080e565b610195565b005b6100b560048036038101906100b0919061086c565b61043c565b005b6100d160048036038101906100cc919061080e565b610621565b6040516100de91906108c2565b60405180910390f35b61010160048036038101906100fc91906108db565b6106e2565b60405161010e9190610915565b60405180910390f35b61011f610727565b60405161012c919061093d565b60405180910390f35b61014f600480360381019061014a919061080e565b610734565b60405161015c919061093d565b60405180910390f35b61017f600480360381019061017a919061080e565b61077c565b60405161018c9190610970565b60405180910390f35b5f6003015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610439575f6003015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690555f6001015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555f806002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60015f8001805490506102cd91906109b6565b90505f805f0182815481106102e5576102e46109e9565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050825f6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055805f800184815481106103ab576103aa6109e9565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f800180548061040357610402610a16565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b5f6003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156104d657805f6001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061061d565b60015f6003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550805f6001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8001805490505f6002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f800182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b5f806003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661069a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506106dd565b5f6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b5f805f0182815481106106f8576106f76109e9565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f805f0180549050905090565b5f806001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107a783610621565b14159050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107dd826107b4565b9050919050565b6107ed816107d3565b81146107f7575f80fd5b50565b5f81359050610808816107e4565b92915050565b5f60208284031215610823576108226107b0565b5b5f610830848285016107fa565b91505092915050565b5f819050919050565b61084b81610839565b8114610855575f80fd5b50565b5f8135905061086681610842565b92915050565b5f8060408385031215610882576108816107b0565b5b5f61088f858286016107fa565b92505060206108a085828601610858565b9150509250929050565b5f819050919050565b6108bc816108aa565b82525050565b5f6020820190506108d55f8301846108b3565b92915050565b5f602082840312156108f0576108ef6107b0565b5b5f6108fd84828501610858565b91505092915050565b61090f816107d3565b82525050565b5f6020820190506109285f830184610906565b92915050565b61093781610839565b82525050565b5f6020820190506109505f83018461092e565b92915050565b5f8115159050919050565b61096a81610956565b82525050565b5f6020820190506109835f830184610961565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6109c082610839565b91506109cb83610839565b92508282039050818111156109e3576109e2610989565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220b015f0b0d052b2a266a48a0eb239838dcd605253b696c5b60686a63457e7283364736f6c63430008140033