[ { "inputs": [ { "internalType": "address", "name": "_dev", "type": "address" } ], "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": "uint256", "name": "amount", "type": "uint256" } ], "name": "BuyBackTriggered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "sniper", "type": "address" } ], "name": "CaughtEarlyBuyer", "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": [], "name": "Launched", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_address", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "MaxTransactionExclusion", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "OwnerForcedSwapBack", "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": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Received", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RemovedLimits", "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": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "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": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferForeignToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedMaxBuyAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedMaxSellAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "UpdatedMaxWalletAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "UpdatedOperationsAddress", "type": "event" }, { "inputs": [], "name": "_deadblocks", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isExcludedMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair_", "type": "address" } ], "name": "addPair", "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": "", "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": "blockForPenaltyEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "botsCaught", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "boughtEarly", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "receiver", "type": "address[]" }, { "internalType": "uint256", "name": "amountInWei", "type": "uint256" } ], "name": "buyBack", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "buyBurnFee", "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": "buyLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyOperationsFee", "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": "clearStuckTokens", "outputs": [], "stateMutability": "nonpayable", "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": "dexRouter", "outputs": [ { "internalType": "contract IDexRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableTransferDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "earlyBuyPenaltyInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "excludeFromMax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresses", "type": "address[]" }, { "internalType": "uint256", "name": "_out", "type": "uint256" } ], "name": "execute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "forceSwapBack", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "golive", "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": [], "name": "limitsInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "bool", "name": "flag", "type": "bool" } ], "name": "manageEarly", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxBuy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSell", "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": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "receivedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "returnToStandardTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellBurnFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellDevFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellOperationsFee", "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": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAMM", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_devAddress", "type": "address" } ], "name": "setDevAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operationsAddress", "type": "address" } ], "name": "setOpsAddress", "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": "tokensForBurn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForDev", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForOperations", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActiveBlock", "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": [], "name": "transferDelayEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "transferForeignToken", "outputs": [ { "internalType": "bool", "name": "_sent", "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": [ { "internalType": "uint256", "name": "_operationsFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_DevFee", "type": "uint256" }, { "internalType": "uint256", "name": "_burnFee", "type": "uint256" } ], "name": "updateBuyFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxBuy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxSell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_operationsFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_DevFee", "type": "uint256" }, { "internalType": "uint256", "name": "_burnFee", "type": "uint256" } ], "name": "updateSellFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "updateSwapTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawStuckETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405260006011556015805463ffffffff191663010000011790553480156200002957600080fd5b5060405162004353380380620043538339810160408190526200004c9162000602565b806040518060400160405280600c81526020016b29b4b3b6b0902a32b739b7b960a11b815250604051806040016040528060058152602001645349474d4160d81b8152508160049081620000a19190620006d9565b506005620000b08282620006d9565b5050600780546001600160a01b0319166001600160a01b03841617905550620000e0620000da3390565b620002cf565b50600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600060248190553391906200011d600990565b6200012a90600a620008b8565b6200013a906301406f40620008c9565b905060646200014b826001620008c9565b620001579190620008eb565b600955606462000169826001620008c9565b620001759190620008eb565b600a55606462000187826001620008c9565b620001939190620008eb565b600b55612710620001a6826005620008c9565b620001b29190620008eb565b600e556000601781905560188190556019819055601a81905580620001d881806200090e565b620001e491906200090e565b620001f091906200090e565b6016556000601c819055601d819055601e819055601f819055806200021681806200090e565b6200022291906200090e565b6200022e91906200090e565b601b556200023e83600162000321565b6200024b30600162000321565b6200025a61dead600162000321565b6200026783600162000384565b6200027430600162000384565b6200028361dead600162000384565b600f80546001600160a01b0385166001600160a01b03199182168117909255601080549091169091179055620002ba8382620003ed565b620002c583620004d6565b5050505062000929565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260276020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6200038e62000555565b6001600160a01b038216600081815260256020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004495760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600360008282546200045d91906200090e565b90915550506001600160a01b038216600090815260208190526040812080548392906200048c9084906200090e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620004e062000555565b6001600160a01b038116620005475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000440565b6200055281620002cf565b50565b3362000560620005ba565b6001600160a01b031614620005b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000440565b565b600080620005c7620005cd565b92915050565b6006546000906001600160a01b031615620005f257506006546001600160a01b031690565b506007546001600160a01b031690565b6000602082840312156200061557600080fd5b81516001600160a01b03811681146200062d57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200065f57607f821691505b6020821081036200068057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006d457600081815260208120601f850160051c81016020861015620006af5750805b601f850160051c820191505b81811015620006d057828155600101620006bb565b5050505b505050565b81516001600160401b03811115620006f557620006f562000634565b6200070d816200070684546200064a565b8462000686565b602080601f8311600181146200074557600084156200072c5750858301515b600019600386901b1c1916600185901b178555620006d0565b600085815260208120601f198616915b82811015620007765788860151825594840194600190910190840162000755565b5085821015620007955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007fc578160001904821115620007e057620007e0620007a5565b80851615620007ee57918102915b93841c9390800290620007c0565b509250929050565b6000826200081557506001620005c7565b816200082457506000620005c7565b81600181146200083d5760028114620008485762000868565b6001915050620005c7565b60ff8411156200085c576200085c620007a5565b50506001821b620005c7565b5060208310610133831016604e8410600b84101617156200088d575081810a620005c7565b620008998383620007bb565b8060001904821115620008b057620008b0620007a5565b029392505050565b60006200062d60ff84168362000804565b6000816000190483118215151615620008e657620008e6620007a5565b500290565b6000826200090957634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009245762000924620007a5565b500190565b613a1a80620009396000396000f3fe6080604052600436106104095760003560e01c80638366e79a11610213578063c024666811610123578063e7ad9fcd116100ab578063f2fde38b1161007a578063f2fde38b14610bae578063f5648a4f14610bce578063f637434214610be3578063f8b45b0514610bf9578063fb002c9714610c0f57600080fd5b8063e7ad9fcd14610b4d578063e884f26014610b6d578063ee40166e14610b82578063f11a24d314610b9857600080fd5b8063d0d41fe1116100f2578063d0d41fe114610aa5578063d85ba06314610ac5578063dd62ed3e14610adb578063e2f4560514610b21578063e71dc3f514610b3757600080fd5b8063c024666814610a24578063c2b7bbb614610a44578063c74e099614610a64578063c876d0b914610a8457600080fd5b8063a457c2d7116101a6578063adb873bd11610175578063adb873bd14610989578063b62496f51461099f578063b8eb3546146109cf578063b94279ea146109e5578063bbc0c74214610a0557600080fd5b8063a457c2d714610913578063a62068ce14610933578063a9059cbb14610949578063a9d3cd8a1461096957600080fd5b806395d89b41116101e257806395d89b41146108bc5780639c3b4fdc146108d15780639fccce32146108e7578063a0d82dc5146108fd57600080fd5b80638366e79a1461082e57806385ecfd281461084e5780638da5cb5b1461087e5780639164f9db1461089c57600080fd5b806339509351116103195780635a139dd4116102a1578063707789c511610270578063707789c5146107ae57806370a08231146107ce57806370db69d6146107ee578063715018a614610804578063751039fc1461081957600080fd5b80635a139dd41461074c5780636a486a8e146107625780636b0a894c146107785780636ddd17131461078e57600080fd5b80634a62bb65116102e85780634a62bb65146106d05780634f77f6c0146106ea57806351f205e414610700578063588813041461071557806358a6d5311461073557600080fd5b8063395093511461065a578063452ed4f11461067a57806346cafe521461069a57806346f1f5de146106b057600080fd5b80631c499ab01161039c578063249ec2bb1161036b578063249ec2bb146105c957806326ededb8146105e95780632e509103146106095780632e6ed7ef1461061e578063313ce5671461063e57600080fd5b80631c499ab01461055e5780631d7778561461057e5780631e146da81461059457806323b872dd146105a957600080fd5b80630f054c06116103d85780630f054c06146104ec57806310d5de531461050357806318160ddd146105335780631a8145bb1461054857600080fd5b806306fdde03146104155780630758d92414610440578063095ea7b3146104785780630cb1d0ee146104a857600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5061042a610c25565b6040516104379190613407565b60405180910390f35b34801561044c57600080fd5b50600c54610460906001600160a01b031681565b6040516001600160a01b039091168152602001610437565b34801561048457600080fd5b50610498610493366004613481565b610cb7565b6040519015158152602001610437565b3480156104b457600080fd5b506104de6104c33660046134ad565b6001600160a01b031660009081526026602052604090205490565b604051908152602001610437565b3480156104f857600080fd5b50610501610ccd565b005b34801561050f57600080fd5b5061049861051e3660046134ad565b60276020526000908152604090205460ff1681565b34801561053f57600080fd5b506003546104de565b34801561055457600080fd5b506104de60215481565b34801561056a57600080fd5b506105016105793660046134d1565b610dfc565b34801561058a57600080fd5b506104de60235481565b3480156105a057600080fd5b50610501610ee2565b3480156105b557600080fd5b506104986105c43660046134ea565b610f93565b3480156105d557600080fd5b506105016105e4366004613539565b611056565b3480156105f557600080fd5b50610501610604366004613572565b6110fc565b34801561061557600080fd5b50610501611194565b34801561062a57600080fd5b506105016106393660046135ed565b61125a565b34801561064a57600080fd5b5060405160098152602001610437565b34801561066657600080fd5b50610498610675366004613481565b6112bb565b34801561068657600080fd5b50600d54610460906001600160a01b031681565b3480156106a657600080fd5b506104de60245481565b3480156106bc57600080fd5b506105016106cb3660046134d1565b6112f7565b3480156106dc57600080fd5b506015546104989060ff1681565b3480156106f657600080fd5b506104de601c5481565b34801561070c57600080fd5b50610501611420565b34801561072157600080fd5b506105016107303660046134d1565b611507565b34801561074157600080fd5b506012544310610498565b34801561075857600080fd5b506104de60175481565b34801561076e57600080fd5b506104de601b5481565b34801561078457600080fd5b506104de60145481565b34801561079a57600080fd5b506015546104989062010000900460ff1681565b3480156107ba57600080fd5b506105016107c93660046134ad565b6115e3565b3480156107da57600080fd5b506104de6107e93660046134ad565b611672565b3480156107fa57600080fd5b506104de60095481565b34801561081057600080fd5b5061050161168d565b34801561082557600080fd5b5061050161169f565b34801561083a57600080fd5b5061049861084936600461361f565b6116df565b34801561085a57600080fd5b506104986108693660046134ad565b60136020526000908152604090205460ff1681565b34801561088a57600080fd5b506006546001600160a01b0316610460565b3480156108a857600080fd5b506105016108b73660046134d1565b6118c5565b3480156108c857600080fd5b5061042a6119a2565b3480156108dd57600080fd5b506104de60195481565b3480156108f357600080fd5b506104de60225481565b34801561090957600080fd5b506104de601e5481565b34801561091f57600080fd5b5061049861092e366004613481565b6119b1565b34801561093f57600080fd5b506104de60125481565b34801561095557600080fd5b50610498610964366004613481565b611a4a565b34801561097557600080fd5b50610501610984366004613539565b611a6d565b34801561099557600080fd5b506104de601f5481565b3480156109ab57600080fd5b506104986109ba3660046134ad565b60286020526000908152604090205460ff1681565b3480156109db57600080fd5b506104de600a5481565b3480156109f157600080fd5b50610501610a00366004613539565b611b19565b348015610a1157600080fd5b5060155461049890610100900460ff1681565b348015610a3057600080fd5b50610501610a3f366004613539565b611b4c565b348015610a5057600080fd5b50610501610a5f3660046134ad565b611bb3565b348015610a7057600080fd5b50610501610a7f366004613663565b611bdd565b348015610a9057600080fd5b50601554610498906301000000900460ff1681565b348015610ab157600080fd5b50610501610ac03660046134ad565b611da8565b348015610ad157600080fd5b506104de60165481565b348015610ae757600080fd5b506104de610af636600461361f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b2d57600080fd5b506104de600e5481565b348015610b4357600080fd5b506104de601a5481565b348015610b5957600080fd5b50610501610b683660046135ed565b611e28565b348015610b7957600080fd5b50610501611eb9565b348015610b8e57600080fd5b506104de60115481565b348015610ba457600080fd5b506104de60185481565b348015610bba57600080fd5b50610501610bc93660046134ad565b611ed0565b348015610bda57600080fd5b50610501611f49565b348015610bef57600080fd5b506104de601d5481565b348015610c0557600080fd5b506104de600b5481565b348015610c1b57600080fd5b506104de60205481565b606060048054610c349061372e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c609061372e565b8015610cad5780601f10610c8257610100808354040283529160200191610cad565b820191906000526020600020905b815481529060010190602001808311610c9057829003601f168201915b5050505050905090565b6000610cc4338484611f93565b50600192915050565b610cd56120b8565b6040516370a0823160e01b815230600482018190529060009082906370a0823190602401602060405180830381865afa158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a9190613768565b905060008111610d865760405162461bcd60e51b81526020600482015260126024820152712737903a37b5b2b739903a379031b632b0b960711b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df79190613781565b505050565b610e046120b8565b633b9aca006103e8610e1560035490565b610e209060036137b4565b610e2a91906137d3565b610e3491906137d3565b811015610e985760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610d7d565b610ea681633b9aca006137b4565b600b8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b610eea6120b8565b601554610100900460ff1615610f425760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610d7d565b6015805462ffffff191662010100179055436011819055602454610f65916137f5565b6012556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a1565b6001600160a01b0383166000908152600260205260408120439055610fb9848484612117565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561103e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d7d565b61104b8533858403611f93565b506001949350505050565b61105e6120b8565b806110d157600d546001600160a01b03908116908316036110d15760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610d7d565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6111046120b8565b60005b8281101561118e578383828181106111215761112161380d565b905060200201602081019061113691906134ad565b600d546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a38061118681613823565b915050611107565b50505050565b61119c6120b8565b6014601c8190556000601d819055601e819055601f8190559081906111c29082906137f5565b6111cc91906137f5565b6111d691906137f5565b601b819055601410156111fb5760405162461bcd60e51b8152600401610d7d9061383c565b6019601781905560006018819055808255601a81905590819061121f9082906137f5565b61122991906137f5565b61123391906137f5565b6016819055601410156112585760405162461bcd60e51b8152600401610d7d9061383c565b565b6112626120b8565b601784905560188390556019829055601a819055808261128285876137f5565b61128c91906137f5565b61129691906137f5565b60168190556014101561118e5760405162461bcd60e51b8152600401610d7d9061383c565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cc49185906112f29086906137f5565b611f93565b6112ff6120b8565b620186a061130c60035490565b6113179060016137b4565b61132191906137d3565b81101561138e5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610d7d565b6103e861139a60035490565b6113a59060016137b4565b6113af91906137d3565b81111561141b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610d7d565b600e55565b6114286120b8565b600e5461143430611672565b10156114aa576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610d7d565b600d805460ff60a01b1916600160a01b1790556114c5612c29565b600d805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b61150f6120b8565b633b9aca006103e861152060035490565b61152b9060026137b4565b61153591906137d3565b61153f91906137d3565b8110156115a05760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610d7d565b6115ae81633b9aca006137b4565b60098190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610ed7565b6115eb6120b8565b6001600160a01b0381166116505760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610d7d565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6116956120b8565b6112586000612e49565b6116a76120b8565b6015805463ff000000191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b60006116e96120b8565b6001600160a01b03831661173f5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610d7d565b306001600160a01b038416036117975760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610d7d565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156117de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118029190613768565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118799190613781565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6118cd6120b8565b633b9aca006103e86118de60035490565b6118e99060026137b4565b6118f391906137d3565b6118fd91906137d3565b81101561195f5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610d7d565b61196d81633b9aca006137b4565b600a8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610ed7565b606060058054610c349061372e565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611a335760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d7d565b611a403385858403611f93565b5060019392505050565b336000908152600260205260408120439055610cc4611a663390565b8484612117565b611a756120b8565b600d546001600160a01b0390811690831603611ad35760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610d7d565b611add8282612e9b565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b611b216120b8565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b611b546120b8565b6001600160a01b038216600081815260256020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611bbb6120b8565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b611be56120b8565b670de0b6b3a7640000811015611d9a576040805160028082526060820183526000926020830190803683375050600c54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c839190613873565b81600081518110611c9657611c9661380d565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611cca57611cca61380d565b6001600160a01b039283166020918202929092010152600c54845191169063b6f9de95908490600090859088908390611d0557611d0561380d565b6020026020010151426040518663ffffffff1660e01b8152600401611d2d94939291906138d4565b6000604051808303818588803b158015611d4657600080fd5b505af1158015611d5a573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611d9091815260200190565b60405180910390a1505b611da48183612ec9565b5050565b611db06120b8565b6001600160a01b038116611e065760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610d7d565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b611e306120b8565b601c849055601d839055601e829055601f8190558082611e5085876137f5565b611e5a91906137f5565b611e6491906137f5565b601b8190556019101561118e5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610d7d565b611ec16120b8565b6015805463ff00000019169055565b611ed86120b8565b6001600160a01b038116611f3d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d7d565b611f4681612e49565b50565b611f516120b8565b604051600090339047908381818185875af1925050503d806000811461118e576040519150601f19603f3d011682016040523d82523d6000602084013e61118e565b6001600160a01b038316611ff55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d7d565b6001600160a01b0382166120565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d7d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b336120c1612f86565b6001600160a01b0316146112585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d7d565b6001600160a01b03831661213d5760405162461bcd60e51b8152600401610d7d90613909565b6001600160a01b0382166121635760405162461bcd60e51b8152600401610d7d9061394e565b600081116121b35760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610d7d565b601554610100900460ff16612246576001600160a01b03831660009081526025602052604090205460ff168061220157506001600160a01b03821660009081526025602052604090205460ff165b6122465760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610d7d565b60125415612319576001600160a01b03831660009081526013602052604090205460ff16158061228357506006546001600160a01b038381169116145b8061229857506001600160a01b03821661dead145b6123195760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610d7d565b6015546301000000900460ff16801561235257506001600160a01b038316600090815260266020526040902054671bc16d674ec8000011155b1561240a576006546001600160a01b038381169116148015906123835750600d546001600160a01b03848116911614155b1561240a57612393600343613991565b6001600160a01b0384166000908152600260205260409020541061240a5760405162461bcd60e51b815260206004820152602860248201527f5472616e736665722044656c617920656e61626c65642e20547279206167616960448201526737103630ba32b91760c11b6064820152608401610d7d565b60155460ff16156126f2576006546001600160a01b0384811691161480159061244157506006546001600160a01b03838116911614155b801561245557506001600160a01b03821615155b801561246c57506001600160a01b03821661dead14155b801561249157506001600160a01b03831660009081526025602052604090205460ff16155b80156124b657506001600160a01b03821660009081526025602052604090205460ff16155b156126f2576001600160a01b03831660009081526028602052604090205460ff1680156124fc57506001600160a01b03821660009081526027602052604090205460ff16155b156125c8576009548111156125645760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610d7d565b600b5461257083611672565b61257a90836137f5565b11156125c35760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610d7d565b6126f2565b6001600160a01b03821660009081526028602052604090205460ff16801561260957506001600160a01b03831660009081526027602052604090205460ff16155b1561267357600a548111156125c35760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610d7d565b6001600160a01b03821660009081526027602052604090205460ff166126f257600b5461269f83611672565b6126a990836137f5565b11156126f25760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610d7d565b60006126fd30611672565b600e549091508110801590819061271c575060155462010000900460ff165b80156127325750600d54600160a01b900460ff16155b801561275757506001600160a01b03851660009081526028602052604090205460ff16155b801561277c57506001600160a01b03851660009081526025602052604090205460ff16155b80156127a157506001600160a01b03841660009081526025602052604090205460ff16155b156127cf57600d805460ff60a01b1916600160a01b1790556127c1612c29565b600d805460ff60a01b191690555b6001600160a01b03851660009081526025602052604090205460019060ff168061281157506001600160a01b03851660009081526025602052604090205460ff165b1561281a575060005b60008115612c15576012544310801561284b57506001600160a01b03871660009081526028602052604090205460ff165b801561287057506001600160a01b03861660009081526028602052604090205460ff16155b801561287e57506000601654115b156129fe576001600160a01b03861660009081526013602052604090205460ff1661291e576001600160a01b0386166000908152601360205260408120805460ff1916600190811790915560148054919290916128dc9084906137f5565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b606461292b8660636137b4565b61293591906137d3565b90506016546018548261294891906137b4565b61295291906137d3565b6021600082825461296391906137f5565b909155505060165460175461297890836137b4565b61298291906137d3565b6020600082825461299391906137f5565b90915550506016546019546129a890836137b4565b6129b291906137d3565b602260008282546129c391906137f5565b9091555050601654601a546129d890836137b4565b6129e291906137d3565b602360008282546129f391906137f5565b90915550612bf79050565b6001600160a01b03861660009081526028602052604090205460ff168015612a2857506000601b54115b15612aea576064601b5486612a3d91906137b4565b612a4791906137d3565b9050601b54601d5482612a5a91906137b4565b612a6491906137d3565b60216000828254612a7591906137f5565b9091555050601b54601c54612a8a90836137b4565b612a9491906137d3565b60206000828254612aa591906137f5565b9091555050601b54601e54612aba90836137b4565b612ac491906137d3565b60226000828254612ad591906137f5565b9091555050601b54601f546129d890836137b4565b6001600160a01b03871660009081526028602052604090205460ff168015612b1457506000601654115b15612bf757606460165486612b2991906137b4565b612b3391906137d3565b905060165460185482612b4691906137b4565b612b5091906137d3565b60216000828254612b6191906137f5565b9091555050601654601754612b7690836137b4565b612b8091906137d3565b60206000828254612b9191906137f5565b9091555050601654601954612ba690836137b4565b612bb091906137d3565b60226000828254612bc191906137f5565b9091555050601654601a54612bd690836137b4565b612be091906137d3565b60236000828254612bf191906137f5565b90915550505b8015612c0857612c08873083612f97565b612c128186613991565b94505b612c20878787612f97565b50505050505050565b6000602354118015612c455750602354612c4230611672565b10155b15612c5657612c56306023546130ec565b60006023819055612c6630611672565b90506000602254602054602154612c7d91906137f5565b612c8791906137f5565b9050811580612c94575080155b15612c9d575050565b600e54612cab9060146137b4565b821115612cc357600e54612cc09060146137b4565b91505b60008060028360215486612cd791906137b4565b612ce191906137d3565b612ceb91906137d3565b9050612cff612cfa8286613991565b613216565b60215447908190600090612d15906002906137d3565b612d1f9087613991565b602054612d2c90856137b4565b612d3691906137d3565b905060006002602154612d4991906137d3565b612d539088613991565b602254612d6090866137b4565b612d6a91906137d3565b9050612d7681836137f5565b612d809084613991565b600060218190556020819055602281905560238190556010546040519295506001600160a01b031691839181818185875af1925050503d8060008114612de2576040519150601f19603f3d011682016040523d82523d6000602084013e612de7565b606091505b5050600f546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612e37576040519150601f19603f3d011682016040523d82523d6000602084013e612e3c565b606091505b5050505050505050505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152602860205260409020805460ff1916821515179055611add8282613370565b60005b8151811015610df7578260266000848481518110612eec57612eec61380d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550818181518110612f2a57612f2a61380d565b60200260200101516001600160a01b03167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587484604051612f6c91815260200190565b60405180910390a280612f7e81613823565b915050612ecc565b600080612f916133d3565b92915050565b6001600160a01b038316612fbd5760405162461bcd60e51b8152600401610d7d90613909565b6001600160a01b038216612fe35760405162461bcd60e51b8152600401610d7d9061394e565b6001600160a01b0383166000908152602081905260409020548181101561305b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d7d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906130929084906137f5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130de91815260200190565b60405180910390a350505050565b6001600160a01b03821661314c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d7d565b6001600160a01b038216600090815260208190526040902054818110156131c05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d7d565b6001600160a01b0383166000818152602081815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016120ab565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061324b5761324b61380d565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c89190613873565b816001815181106132db576132db61380d565b6001600160a01b039283166020918202929092010152600c546133019130911684611f93565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061333a9085906000908690309042906004016139a8565b600060405180830381600087803b15801561335457600080fd5b505af1158015613368573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260276020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6006546000906001600160a01b0316156133f757506006546001600160a01b031690565b506007546001600160a01b031690565b600060208083528351808285015260005b8181101561343457858101830151858201604001528201613418565b81811115613446576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611f4657600080fd5b803561347c8161345c565b919050565b6000806040838503121561349457600080fd5b823561349f8161345c565b946020939093013593505050565b6000602082840312156134bf57600080fd5b81356134ca8161345c565b9392505050565b6000602082840312156134e357600080fd5b5035919050565b6000806000606084860312156134ff57600080fd5b833561350a8161345c565b9250602084013561351a8161345c565b929592945050506040919091013590565b8015158114611f4657600080fd5b6000806040838503121561354c57600080fd5b82356135578161345c565b915060208301356135678161352b565b809150509250929050565b60008060006040848603121561358757600080fd5b833567ffffffffffffffff8082111561359f57600080fd5b818601915086601f8301126135b357600080fd5b8135818111156135c257600080fd5b8760208260051b85010111156135d757600080fd5b6020928301989097509590910135949350505050565b6000806000806080858703121561360357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561363257600080fd5b823561363d8161345c565b915060208301356135678161345c565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561367657600080fd5b823567ffffffffffffffff8082111561368e57600080fd5b818501915085601f8301126136a257600080fd5b81356020828211156136b6576136b661364d565b8160051b604051601f19603f830116810181811086821117156136db576136db61364d565b6040529283528183019350848101820192898411156136f957600080fd5b948201945b8386101561371e5761370f86613471565b855294820194938201936136fe565b9997909101359750505050505050565b600181811c9082168061374257607f821691505b60208210810361376257634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561377a57600080fd5b5051919050565b60006020828403121561379357600080fd5b81516134ca8161352b565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156137ce576137ce61379e565b500290565b6000826137f057634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156138085761380861379e565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016138355761383561379e565b5060010190565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b60006020828403121561388557600080fd5b81516134ca8161345c565b600081518084526020808501945080840160005b838110156138c95781516001600160a01b0316875295820195908201906001016138a4565b509495945050505050565b8481526080602082015260006138ed6080830186613890565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156139a3576139a361379e565b500390565b85815284602082015260a0604082015260006139c760a0830186613890565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122047ac9c1dbc0322a79ad409a9a62a8301913b0699ff0a4f0b4f3a2c4b652aa79b64736f6c634300080f0033000000000000000000000000fa363ee19a6945c790b2e096257e7ad6f4fefe66