Loading
[ { "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": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "devWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "marketingWalletUpdated", "type": "event" }, { "inputs": [], "name": "DJTTradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isExcludedmaxTX", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": [], "name": "antiDrainer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "", "type": "address" } ], "name": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyDevFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "devWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "enableTradingWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFrommaxTX", "outputs": [], "stateMutability": "nonpayable", "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": "isExcludedFromFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "limitsInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellDevFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_antiDrainer", "type": "address" } ], "name": "setAntiDrainer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "wallets", "type": "address[]" }, { "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "setBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTokensAtAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForDev", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForMarketing", "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": "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": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "updateBuyFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newMarketingWallet", "type": "address" } ], "name": "updateMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxTxnAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "updateSellFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "updateSwapEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "updateSwapTokensAtAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "updatedevWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526001600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff0219169083151502179055505f600e60026101000a81548160ff02191690831515021790555034801561005d575f80fd5b506040518060400160405280600a81526020017f5472756d7020436f696e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f444a54000000000000000000000000000000000000000000000000000000000081525081600390816100d99190610ddd565b5080600490816100e99190610ddd565b5050506101086100fd61069860201b60201c565b61069f60201b60201c565b60014614806101175750600546145b1561017557737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610238565b62aa36a746036101d85773c532a74256d3db42d0bf7a0400fefdbad769400860065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610237565b612105460361023657734752ba5dbc23f44d87826276bf6fd6b1c372ad2460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c69190610f0a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103709190610f0a565b6040518363ffffffff1660e01b815260040161038d929190610f44565b6020604051808303815f875af11580156103a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cd9190610f0a565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061043e60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161076260201b60201c565b61047060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161076260201b60201c565b6104a260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161084260201b60201c565b5f600f90505f600a90505f602390505f600f90505f6b033b2e3c9fd0803ce800000090506a108b2a2c28029094000000600b819055506a108b2a2c28029094000000600d81905550619c406005826104fa9190610f98565b6105049190611006565b600c8190555084601081905550836011819055506011546010546105289190611036565b600f81905550826013819055508160148190555060145460135461054c9190611036565b60128190555073255d7d3df3fc41fea95852e53debc13f6103da5560095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073255d7d3df3fc41fea95852e53debc13f6103da55600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061061861060b6108e060201b60201c565b600161090860201b60201c565b61062930600161090860201b60201c565b61063c61dead600161090860201b60201c565b61065a61064d6108e060201b60201c565b600161076260201b60201c565b61066b30600161076260201b60201c565b61067e61dead600161076260201b60201c565b61068e3382610a3660201b60201c565b50505050506111a4565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61077061069860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166107946108e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e1906110c3565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61091661069860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661093a6108e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610987906110c3565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610a2a91906110fb565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b9061115e565b60405180910390fd5b610ab55f8383610b9960201b60201c565b8060025f828254610ac69190611036565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b189190611036565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b7c919061118b565b60405180910390a3610b955f8383610b9e60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c1e57607f821691505b602082108103610c3157610c30610bda565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610c937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610c58565b610c9d8683610c58565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610ce1610cdc610cd784610cb5565b610cbe565b610cb5565b9050919050565b5f819050919050565b610cfa83610cc7565b610d0e610d0682610ce8565b848454610c64565b825550505050565b5f90565b610d22610d16565b610d2d818484610cf1565b505050565b5b81811015610d5057610d455f82610d1a565b600181019050610d33565b5050565b601f821115610d9557610d6681610c37565b610d6f84610c49565b81016020851015610d7e578190505b610d92610d8a85610c49565b830182610d32565b50505b505050565b5f82821c905092915050565b5f610db55f1984600802610d9a565b1980831691505092915050565b5f610dcd8383610da6565b9150826002028217905092915050565b610de682610ba3565b67ffffffffffffffff811115610dff57610dfe610bad565b5b610e098254610c07565b610e14828285610d54565b5f60209050601f831160018114610e45575f8415610e33578287015190505b610e3d8582610dc2565b865550610ea4565b601f198416610e5386610c37565b5f5b82811015610e7a57848901518255600182019150602085019450602081019050610e55565b86831015610e975784890151610e93601f891682610da6565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ed982610eb0565b9050919050565b610ee981610ecf565b8114610ef3575f80fd5b50565b5f81519050610f0481610ee0565b92915050565b5f60208284031215610f1f57610f1e610eac565b5b5f610f2c84828501610ef6565b91505092915050565b610f3e81610ecf565b82525050565b5f604082019050610f575f830185610f35565b610f646020830184610f35565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610fa282610cb5565b9150610fad83610cb5565b9250828202610fbb81610cb5565b91508282048414831517610fd257610fd1610f6b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61101082610cb5565b915061101b83610cb5565b92508261102b5761102a610fd9565b5b828204905092915050565b5f61104082610cb5565b915061104b83610cb5565b925082820190508082111561106357611062610f6b565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6110ad602083611069565b91506110b882611079565b602082019050919050565b5f6020820190508181035f8301526110da816110a1565b9050919050565b5f8115159050919050565b6110f5816110e1565b82525050565b5f60208201905061110e5f8301846110ec565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611148601f83611069565b915061115382611114565b602082019050919050565b5f6020820190508181035f8301526111758161113c565b9050919050565b61118581610cb5565b82525050565b5f60208201905061119e5f83018461117c565b92915050565b61546d806111b15f395ff3fe608060405260043610610302575f3560e01c80638da5cb5b1161018f578063aacebbe3116100db578063d85ba06311610094578063ebae7c1c1161006e578063ebae7c1c14610b73578063f2fde38b14610b9d578063f8b45b0514610bc5578063fc17044114610bef57610309565b8063d85ba06314610ae3578063dd62ed3e14610b0d578063e2f4560514610b4957610309565b8063aacebbe3146109cb578063b62496f5146109f3578063bae14e1d14610a2f578063c024666814610a57578063c18bc19514610a7f578063d257b34f14610aa757610309565b80639a7a23d611610148578063a0d82dc511610122578063a0d82dc514610901578063a457c2d71461092b578063a9059cbb14610967578063a90eab8c146109a357610309565b80639a7a23d6146108855780639c3b4fdc146108ad5780639fccce32146108d757610309565b80638da5cb5b1461078d5780638ea5220f146107b75780638f85a043146107e15780639213691314610809578063924de9b71461083357806395d89b411461085b57610309565b806349bd5a5e1161024e5780636ddd171311610207578063751039fc116101e1578063751039fc146106f957806375f0a874146107235780637bce5a041461074d5780638a8c523c1461077757610309565b80636ddd17131461067d57806370a08231146106a7578063715018a6146106e357610309565b806349bd5a5e146105735780634a62bb651461059d5780634fbee193146105c757806366ca9b8314610603578063695e85211461062b5780636a486a8e1461065357610309565b80631f3fed8f116102bb578063313ce56711610295578063313ce567146104b957806337c2810f146104e3578063395093511461050d5780633a6973c91461054957610309565b80631f3fed8f1461042b578063203e727e1461045557806323b872dd1461047d57610309565b806302dbd8f81461030d57806306fdde0314610335578063095ea7b31461035f5780631694505e1461039b57806318160ddd146103c55780631b1183e1146103ef57610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610333600480360381019061032e9190613d20565b610c17565b005b348015610340575f80fd5b50610349610d01565b6040516103569190613dce565b60405180910390f35b34801561036a575f80fd5b5061038560048036038101906103809190613e48565b610d91565b6040516103929190613ea0565b60405180910390f35b3480156103a6575f80fd5b506103af610dae565b6040516103bc9190613f14565b60405180910390f35b3480156103d0575f80fd5b506103d9610dd3565b6040516103e69190613f3c565b60405180910390f35b3480156103fa575f80fd5b5061041560048036038101906104109190613f55565b610ddc565b6040516104229190613ea0565b60405180910390f35b348015610436575f80fd5b5061043f610df9565b60405161044c9190613f3c565b60405180910390f35b348015610460575f80fd5b5061047b60048036038101906104769190613f80565b610dff565b005b348015610488575f80fd5b506104a3600480360381019061049e9190613fab565b610f0e565b6040516104b09190613ea0565b60405180910390f35b3480156104c4575f80fd5b506104cd611000565b6040516104da9190614016565b60405180910390f35b3480156104ee575f80fd5b506104f7611008565b604051610504919061403e565b60405180910390f35b348015610518575f80fd5b50610533600480360381019061052e9190613e48565b61102d565b6040516105409190613ea0565b60405180910390f35b348015610554575f80fd5b5061055d6110d4565b60405161056a9190613ea0565b60405180910390f35b34801561057e575f80fd5b506105876110e7565b604051610594919061403e565b60405180910390f35b3480156105a8575f80fd5b506105b161110c565b6040516105be9190613ea0565b60405180910390f35b3480156105d2575f80fd5b506105ed60048036038101906105e89190613f55565b61111e565b6040516105fa9190613ea0565b60405180910390f35b34801561060e575f80fd5b5061062960048036038101906106249190613d20565b611170565b005b348015610636575f80fd5b50610651600480360381019061064c9190614081565b61125a565b005b34801561065e575f80fd5b5061066761132e565b6040516106749190613f3c565b60405180910390f35b348015610688575f80fd5b50610691611334565b60405161069e9190613ea0565b60405180910390f35b3480156106b2575f80fd5b506106cd60048036038101906106c89190613f55565b611347565b6040516106da9190613f3c565b60405180910390f35b3480156106ee575f80fd5b506106f761138c565b005b348015610704575f80fd5b5061070d611413565b60405161071a9190613ea0565b60405180910390f35b34801561072e575f80fd5b506107376114b0565b604051610744919061403e565b60405180910390f35b348015610758575f80fd5b506107616114d5565b60405161076e9190613f3c565b60405180910390f35b348015610782575f80fd5b5061078b6114db565b005b348015610798575f80fd5b506107a161158f565b6040516107ae919061403e565b60405180910390f35b3480156107c2575f80fd5b506107cb6115b7565b6040516107d8919061403e565b60405180910390f35b3480156107ec575f80fd5b5061080760048036038101906108029190614120565b6115dc565b005b348015610814575f80fd5b5061081d6116f3565b60405161082a9190613f3c565b60405180910390f35b34801561083e575f80fd5b506108596004803603810190610854919061417d565b6116f9565b005b348015610866575f80fd5b5061086f611792565b60405161087c9190613dce565b60405180910390f35b348015610890575f80fd5b506108ab60048036038101906108a69190614081565b611822565b005b3480156108b8575f80fd5b506108c161193b565b6040516108ce9190613f3c565b60405180910390f35b3480156108e2575f80fd5b506108eb611941565b6040516108f89190613f3c565b60405180910390f35b34801561090c575f80fd5b50610915611947565b6040516109229190613f3c565b60405180910390f35b348015610936575f80fd5b50610951600480360381019061094c9190613e48565b61194d565b60405161095e9190613ea0565b60405180910390f35b348015610972575f80fd5b5061098d60048036038101906109889190613e48565b611a33565b60405161099a9190613ea0565b60405180910390f35b3480156109ae575f80fd5b506109c960048036038101906109c49190614205565b611a50565b005b3480156109d6575f80fd5b506109f160048036038101906109ec9190613f55565b611cd3565b005b3480156109fe575f80fd5b50610a196004803603810190610a149190613f55565b611e0d565b604051610a269190613ea0565b60405180910390f35b348015610a3a575f80fd5b50610a556004803603810190610a509190613f55565b611e2a565b005b348015610a62575f80fd5b50610a7d6004803603810190610a789190614081565b611f57565b005b348015610a8a575f80fd5b50610aa56004803603810190610aa09190613f80565b612079565b005b348015610ab2575f80fd5b50610acd6004803603810190610ac89190613f80565b612188565b604051610ada9190613ea0565b60405180910390f35b348015610aee575f80fd5b50610af76122dc565b604051610b049190613f3c565b60405180910390f35b348015610b18575f80fd5b50610b336004803603810190610b2e9190614255565b6122e2565b604051610b409190613f3c565b60405180910390f35b348015610b54575f80fd5b50610b5d612364565b604051610b6a9190613f3c565b60405180910390f35b348015610b7e575f80fd5b50610b8761236a565b604051610b949190613f3c565b60405180910390f35b348015610ba8575f80fd5b50610bc36004803603810190610bbe9190613f55565b612370565b005b348015610bd0575f80fd5b50610bd9612466565b604051610be69190613f3c565b60405180910390f35b348015610bfa575f80fd5b50610c156004803603810190610c109190613f55565b61246c565b005b610c1f6125a6565b73ffffffffffffffffffffffffffffffffffffffff16610c3d61158f565b73ffffffffffffffffffffffffffffffffffffffff1614610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a906142dd565b60405180910390fd5b8160138190555080601481905550601454601354610cb19190614328565b60128190555060326012541115610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906143a5565b60405180910390fd5b5050565b606060038054610d10906143f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3c906143f0565b8015610d875780601f10610d5e57610100808354040283529160200191610d87565b820191905f5260205f20905b815481529060010190602001808311610d6a57829003601f168201915b5050505050905090565b5f610da4610d9d6125a6565b84846125ad565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b6019602052805f5260405f205f915054906101000a900460ff1681565b60155481565b610e076125a6565b73ffffffffffffffffffffffffffffffffffffffff16610e2561158f565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e72906142dd565b60405180910390fd5b670de0b6b3a76400006103e86001610e91610dd3565b610e9b9190614420565b610ea5919061448e565b610eaf919061448e565b811015610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890614508565b60405180910390fd5b670de0b6b3a764000081610f059190614420565b600b8190555050565b5f610f1a848484612770565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f616125a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790614596565b60405180910390fd5b610ff485610fec6125a6565b8584036125ad565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6110ca6110396125a6565b848460015f6110466125a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110c59190614328565b6125ad565b6001905092915050565b600e60019054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6111786125a6565b73ffffffffffffffffffffffffffffffffffffffff1661119661158f565b73ffffffffffffffffffffffffffffffffffffffff16146111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e3906142dd565b60405180910390fd5b816010819055508060118190555060115460105461120a9190614328565b600f819055506032600f541115611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d906143a5565b60405180910390fd5b5050565b6112626125a6565b73ffffffffffffffffffffffffffffffffffffffff1661128061158f565b73ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd906142dd565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125481565b600e60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113946125a6565b73ffffffffffffffffffffffffffffffffffffffff166113b261158f565b73ffffffffffffffffffffffffffffffffffffffff1614611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff906142dd565b60405180910390fd5b6114115f6134b6565b565b5f61141c6125a6565b73ffffffffffffffffffffffffffffffffffffffff1661143a61158f565b73ffffffffffffffffffffffffffffffffffffffff1614611490576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611487906142dd565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6114e36125a6565b73ffffffffffffffffffffffffffffffffffffffff1661150161158f565b73ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e906142dd565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115e46125a6565b73ffffffffffffffffffffffffffffffffffffffff1661160261158f565b73ffffffffffffffffffffffffffffffffffffffff1614611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906142dd565b60405180910390fd5b5f5b838390508110156116ed578160175f86868581811061167c5761167b6145b4565b5b90506020020160208101906116919190613f55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061165a565b50505050565b60135481565b6117016125a6565b73ffffffffffffffffffffffffffffffffffffffff1661171f61158f565b73ffffffffffffffffffffffffffffffffffffffff1614611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c906142dd565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b6060600480546117a1906143f0565b80601f01602080910402602001604051908101604052809291908181526020018280546117cd906143f0565b80156118185780601f106117ef57610100808354040283529160200191611818565b820191905f5260205f20905b8154815290600101906020018083116117fb57829003601f168201915b5050505050905090565b61182a6125a6565b73ffffffffffffffffffffffffffffffffffffffff1661184861158f565b73ffffffffffffffffffffffffffffffffffffffff161461189e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611895906142dd565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361192d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192490614651565b60405180910390fd5b6119378282613579565b5050565b60115481565b60165481565b60145481565b5f8060015f61195a6125a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b906146df565b60405180910390fd5b611a28611a1f6125a6565b858584036125ad565b600191505092915050565b5f611a46611a3f6125a6565b8484612770565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611b0295949392919061470c565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611b8c9392919061475d565b6040516020818303038152906040528051906020012090505f8282604051602001611bb8929190614806565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611bf3949392919061483c565b6020604051602081039080840390855afa158015611c13573d5f803e3d5ffd5b505050602060405103519050611c2761158f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b906148c9565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b611cdb6125a6565b73ffffffffffffffffffffffffffffffffffffffff16611cf961158f565b73ffffffffffffffffffffffffffffffffffffffff1614611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d46906142dd565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b611e326125a6565b73ffffffffffffffffffffffffffffffffffffffff16611e5061158f565b73ffffffffffffffffffffffffffffffffffffffff1614611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d906142dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b90614931565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f5f6125a6565b73ffffffffffffffffffffffffffffffffffffffff16611f7d61158f565b73ffffffffffffffffffffffffffffffffffffffff1614611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca906142dd565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161206d9190613ea0565b60405180910390a25050565b6120816125a6565b73ffffffffffffffffffffffffffffffffffffffff1661209f61158f565b73ffffffffffffffffffffffffffffffffffffffff16146120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec906142dd565b60405180910390fd5b670de0b6b3a76400006103e8600561210b610dd3565b6121159190614420565b61211f919061448e565b612129919061448e565b81101561216b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612162906149bf565b60405180910390fd5b670de0b6b3a76400008161217f9190614420565b600d8190555050565b5f6121916125a6565b73ffffffffffffffffffffffffffffffffffffffff166121af61158f565b73ffffffffffffffffffffffffffffffffffffffff1614612205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fc906142dd565b60405180910390fd5b620186a06001612213610dd3565b61221d9190614420565b612227919061448e565b821015612269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226090614a4d565b60405180910390fd5b6103e86005612276610dd3565b6122809190614420565b61228a919061448e565b8211156122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c390614adb565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600c5481565b600b5481565b6123786125a6565b73ffffffffffffffffffffffffffffffffffffffff1661239661158f565b73ffffffffffffffffffffffffffffffffffffffff16146123ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e3906142dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245190614b69565b60405180910390fd5b612463816134b6565b50565b600d5481565b6124746125a6565b73ffffffffffffffffffffffffffffffffffffffff1661249261158f565b73ffffffffffffffffffffffffffffffffffffffff16146124e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124df906142dd565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614bf7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268090614c85565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127639190613f3c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d590614d13565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361284c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284390614da1565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cd90614e09565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295790614e71565b60405180910390fd5b5f81036129775761297283835f613617565b6134b1565b600e5f9054906101000a900460ff1615612e5b5761299361158f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0157506129d161158f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a3957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a73575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a8c5750600860149054906101000a900460ff16155b15612e5a57600e60019054906101000a900460ff16612b805760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b40575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7690614ed9565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c1d575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cc457600b54811115612c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5e90614f67565b60405180910390fd5b600d54612c7383611347565b82612c7e9190614328565b1115612cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb690614fcf565b60405180910390fd5b612e59565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d61575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612db057600b54811115612dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da29061505d565b60405180910390fd5b612e58565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e5757600d54612e0a83611347565b82612e159190614328565b1115612e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4d90614fcf565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612f4d575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612f0d919061403e565b602060405180830381865afa158015612f28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f4c919061508f565b5b15613062575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b8152600401612fde969594939291906150ba565b6020604051808303815f875af1158015612ffa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301e919061508f565b905080613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790615163565b60405180910390fd5b505b5f61306c30611347565b90505f600c5482101590508080156130905750600e60029054906101000a900460ff165b80156130a95750600860149054906101000a900460ff16155b80156130fb5750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561314e575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156131a1575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131e4576001600860146101000a81548160ff0219169083151502179055506131c961388c565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613293575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561329c575f90505b5f81156134a157601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156132fa57505f601254115b1561339257613327606461331960125488613a6690919063ffffffff16565b613a7b90919063ffffffff16565b90506012546014548261333a9190614420565b613344919061448e565b60165f8282546133549190614328565b925050819055506012546013548261336c9190614420565b613376919061448e565b60155f8282546133869190614328565b9250508190555061347e565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156133e957505f600f54115b1561347d576134166064613408600f5488613a6690919063ffffffff16565b613a7b90919063ffffffff16565b9050600f54601154826134299190614420565b613433919061448e565b60165f8282546134439190614328565b92505081905550600f546010548261345b9190614420565b613465919061448e565b60155f8282546134759190614328565b925050819055505b5b5f81111561349257613491873083613617565b5b808561349e9190615181565b94505b6134ac878787613617565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367c90614d13565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ea90614da1565b60405180910390fd5b6136fe838383613a90565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377890615224565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461380f9190614328565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138739190613f3c565b60405180910390a3613886848484613a95565b50505050565b5f61389630611347565b90505f6016546015546138a99190614328565b90505f808314806138b957505f82145b156138c657505050613a64565b6014600c546138d59190614420565b8311156138ee576014600c546138eb9190614420565b92505b5f4790506138fb84613a9a565b5f61390f8247613cd090919063ffffffff16565b90505f6139398561392b60165485613a6690919063ffffffff16565b613a7b90919063ffffffff16565b90505f6015819055505f601681905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161398e9061526f565b5f6040518083038185875af1925050503d805f81146139c8576040519150601f19603f3d011682016040523d82523d5f602084013e6139cd565b606091505b50508094505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a189061526f565b5f6040518083038185875af1925050503d805f8114613a52576040519150601f19603f3d011682016040523d82523d5f602084013e613a57565b606091505b5050809450505050505050505b565b5f8183613a739190614420565b905092915050565b5f8183613a88919061448e565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613ab657613ab5615283565b5b604051908082528060200260200182016040528015613ae45781602001602082028036833780820191505090505b50905030815f81518110613afb57613afa6145b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bc391906152c4565b81600181518110613bd757613bd66145b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c3d3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125ad565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613c9f9594939291906153df565b5f604051808303815f87803b158015613cb6575f80fd5b505af1158015613cc8573d5f803e3d5ffd5b505050505050565b5f8183613cdd9190615181565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b613cff81613ced565b8114613d09575f80fd5b50565b5f81359050613d1a81613cf6565b92915050565b5f8060408385031215613d3657613d35613ce5565b5b5f613d4385828601613d0c565b9250506020613d5485828601613d0c565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613da082613d5e565b613daa8185613d68565b9350613dba818560208601613d78565b613dc381613d86565b840191505092915050565b5f6020820190508181035f830152613de68184613d96565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613e1782613dee565b9050919050565b613e2781613e0d565b8114613e31575f80fd5b50565b5f81359050613e4281613e1e565b92915050565b5f8060408385031215613e5e57613e5d613ce5565b5b5f613e6b85828601613e34565b9250506020613e7c85828601613d0c565b9150509250929050565b5f8115159050919050565b613e9a81613e86565b82525050565b5f602082019050613eb35f830184613e91565b92915050565b5f819050919050565b5f613edc613ed7613ed284613dee565b613eb9565b613dee565b9050919050565b5f613eed82613ec2565b9050919050565b5f613efe82613ee3565b9050919050565b613f0e81613ef4565b82525050565b5f602082019050613f275f830184613f05565b92915050565b613f3681613ced565b82525050565b5f602082019050613f4f5f830184613f2d565b92915050565b5f60208284031215613f6a57613f69613ce5565b5b5f613f7784828501613e34565b91505092915050565b5f60208284031215613f9557613f94613ce5565b5b5f613fa284828501613d0c565b91505092915050565b5f805f60608486031215613fc257613fc1613ce5565b5b5f613fcf86828701613e34565b9350506020613fe086828701613e34565b9250506040613ff186828701613d0c565b9150509250925092565b5f60ff82169050919050565b61401081613ffb565b82525050565b5f6020820190506140295f830184614007565b92915050565b61403881613e0d565b82525050565b5f6020820190506140515f83018461402f565b92915050565b61406081613e86565b811461406a575f80fd5b50565b5f8135905061407b81614057565b92915050565b5f806040838503121561409757614096613ce5565b5b5f6140a485828601613e34565b92505060206140b58582860161406d565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126140e0576140df6140bf565b5b8235905067ffffffffffffffff8111156140fd576140fc6140c3565b5b602083019150836020820283011115614119576141186140c7565b5b9250929050565b5f805f6040848603121561413757614136613ce5565b5b5f84013567ffffffffffffffff81111561415457614153613ce9565b5b614160868287016140cb565b935093505060206141738682870161406d565b9150509250925092565b5f6020828403121561419257614191613ce5565b5b5f61419f8482850161406d565b91505092915050565b6141b181613ffb565b81146141bb575f80fd5b50565b5f813590506141cc816141a8565b92915050565b5f819050919050565b6141e4816141d2565b81146141ee575f80fd5b50565b5f813590506141ff816141db565b92915050565b5f805f6060848603121561421c5761421b613ce5565b5b5f614229868287016141be565b935050602061423a868287016141f1565b925050604061424b868287016141f1565b9150509250925092565b5f806040838503121561426b5761426a613ce5565b5b5f61427885828601613e34565b925050602061428985828601613e34565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6142c7602083613d68565b91506142d282614293565b602082019050919050565b5f6020820190508181035f8301526142f4816142bb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61433282613ced565b915061433d83613ced565b9250828201905080821115614355576143546142fb565b5b92915050565b7f4d757374206b656570206665657320617420353025206f72206c6573730000005f82015250565b5f61438f601d83613d68565b915061439a8261435b565b602082019050919050565b5f6020820190508181035f8301526143bc81614383565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061440757607f821691505b60208210810361441a576144196143c3565b5b50919050565b5f61442a82613ced565b915061443583613ced565b925082820261444381613ced565b9150828204841483151761445a576144596142fb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61449882613ced565b91506144a383613ced565b9250826144b3576144b2614461565b5b828204905092915050565b7f43616e6e6f7420736574206d61785458206c6f776572207468616e20302e31255f82015250565b5f6144f2602083613d68565b91506144fd826144be565b602082019050919050565b5f6020820190508181035f83015261451f816144e6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614580602883613d68565b915061458b82614526565b604082019050919050565b5f6020820190508181035f8301526145ad81614574565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61463b603983613d68565b9150614646826145e1565b604082019050919050565b5f6020820190508181035f8301526146688161462f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6146c9602583613d68565b91506146d48261466f565b604082019050919050565b5f6020820190508181035f8301526146f6816146bd565b9050919050565b614706816141d2565b82525050565b5f60a08201905061471f5f8301886146fd565b61472c60208301876146fd565b61473960408301866146fd565b6147466060830185613f2d565b614753608083018461402f565b9695505050505050565b5f6060820190506147705f8301866146fd565b61477d60208301856146fd565b61478a6040830184613f2d565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6147d0600283614792565b91506147db8261479c565b600282019050919050565b5f819050919050565b6148006147fb826141d2565b6147e6565b82525050565b5f614810826147c4565b915061481c82856147ef565b60208201915061482c82846147ef565b6020820191508190509392505050565b5f60808201905061484f5f8301876146fd565b61485c6020830186614007565b61486960408301856146fd565b61487660608301846146fd565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6148b3601183613d68565b91506148be8261487f565b602082019050919050565b5f6020820190508181035f8301526148e0816148a7565b9050919050565b7f496e76616c696420616e746920647261696e65720000000000000000000000005f82015250565b5f61491b601483613d68565b9150614926826148e7565b602082019050919050565b5f6020820190508181035f8301526149488161490f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6149a9602483613d68565b91506149b48261494f565b604082019050919050565b5f6020820190508181035f8301526149d68161499d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614a37603583613d68565b9150614a42826149dd565b604082019050919050565b5f6020820190508181035f830152614a6481614a2b565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614ac5603483613d68565b9150614ad082614a6b565b604082019050919050565b5f6020820190508181035f830152614af281614ab9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614b53602683613d68565b9150614b5e82614af9565b604082019050919050565b5f6020820190508181035f830152614b8081614b47565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614be1602483613d68565b9150614bec82614b87565b604082019050919050565b5f6020820190508181035f830152614c0e81614bd5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614c6f602283613d68565b9150614c7a82614c15565b604082019050919050565b5f6020820190508181035f830152614c9c81614c63565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614cfd602583613d68565b9150614d0882614ca3565b604082019050919050565b5f6020820190508181035f830152614d2a81614cf1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614d8b602383613d68565b9150614d9682614d31565b604082019050919050565b5f6020820190508181035f830152614db881614d7f565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f614df3601183613d68565b9150614dfe82614dbf565b602082019050919050565b5f6020820190508181035f830152614e2081614de7565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f614e5b600f83613d68565b9150614e6682614e27565b602082019050919050565b5f6020820190508181035f830152614e8881614e4f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614ec3601683613d68565b9150614ece82614e8f565b602082019050919050565b5f6020820190508181035f830152614ef081614eb7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854582e0000000000000000000000000000000000000000000000000000602082015250565b5f614f51602683613d68565b9150614f5c82614ef7565b604082019050919050565b5f6020820190508181035f830152614f7e81614f45565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614fb9601383613d68565b9150614fc482614f85565b602082019050919050565b5f6020820190508181035f830152614fe681614fad565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854582e00000000000000000000000000000000000000000000000000602082015250565b5f615047602783613d68565b915061505282614fed565b604082019050919050565b5f6020820190508181035f8301526150748161503b565b9050919050565b5f8151905061508981614057565b92915050565b5f602082840312156150a4576150a3613ce5565b5b5f6150b18482850161507b565b91505092915050565b5f60c0820190506150cd5f83018961402f565b6150da602083018861402f565b6150e7604083018761402f565b6150f46060830186613f2d565b6151016080830185613f2d565b61510e60a0830184613f2d565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f61514d601483613d68565b915061515882615119565b602082019050919050565b5f6020820190508181035f83015261517a81615141565b9050919050565b5f61518b82613ced565b915061519683613ced565b92508282039050818111156151ae576151ad6142fb565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61520e602683613d68565b9150615219826151b4565b604082019050919050565b5f6020820190508181035f83015261523b81615202565b9050919050565b5f81905092915050565b50565b5f61525a5f83615242565b91506152658261524c565b5f82019050919050565b5f6152798261524f565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506152be81613e1e565b92915050565b5f602082840312156152d9576152d8613ce5565b5b5f6152e6848285016152b0565b91505092915050565b5f819050919050565b5f61531261530d615308846152ef565b613eb9565b613ced565b9050919050565b615322816152f8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61535a81613e0d565b82525050565b5f61536b8383615351565b60208301905092915050565b5f602082019050919050565b5f61538d82615328565b6153978185615332565b93506153a283615342565b805f5b838110156153d25781516153b98882615360565b97506153c483615377565b9250506001810190506153a5565b5085935050505092915050565b5f60a0820190506153f25f830188613f2d565b6153ff6020830187615319565b81810360408301526154118186615383565b9050615420606083018561402f565b61542d6080830184613f2d565b969550505050505056fea26469706673582212201acce74ab734bd1e4ed4c1253ef86fad862ae6377c471749e9fee02a7237c2bf64736f6c634300081a0033