[ { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "initialSupply", "type": "uint256" }, { "internalType": "contract IUniswapV2Router02", "name": "_router", "type": "address" }, { "internalType": "uint256", "name": "_buyFees", "type": "uint256" }, { "internalType": "uint256", "name": "_sellFees", "type": "uint256" }, { "internalType": "uint256", "name": "_feesToLiquidity", "type": "uint256" }, { "internalType": "address", "name": "_developmentWallet", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "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": false, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": false, "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" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "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": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "bulkExcludeFromFees", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "developmentWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feesToDevelopment", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feesToLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_buyFee", "type": "uint256" } ], "name": "setBuyFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newWallet", "type": "address" } ], "name": "setDevelopmentWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newFeesToLiquidity", "type": "uint256" } ], "name": "setFeeSplit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_sellFee", "type": "uint256" } ], "name": "setSellFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setSwapTokensAtAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setTaxEnabled", "outputs": [], "stateMutability": "nonpayable", "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": "taxEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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" }, { "stateMutability": "payable", "type": "receive" } ]
6101806040526009805460ff60a01b1916600160a01b1790553480156200002557600080fd5b5060405162003c6538038062003c65833981016040819052620000489162000f61565b6040805180820190915260018152603160f81b602082015288908190818a8d6001600160a01b0381166200009757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000a28162000490565b506004620000b18382620010b7565b506005620000c08282620010b7565b50620000d291508390506006620004cc565b61012052620000e3816007620004cc565b61014052815160208084019190912060e052815190820120610100524660a0526200017160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250670de0b6b3a7640000821115620001c95760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a5908199959481cdc1b1a5d607a1b60448201526064016200008e565b666a94d74f4300008411158015620001e85750666a94d74f4300008311155b620002245760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642066656560a81b60448201526064016200008e565b62000230898762000505565b6103e86200023d60035490565b62000249919062001199565b600a55600980546001600160a01b0319166001600160a01b0387169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc9190620011bc565b6001600160a01b031663c9c6539630876001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003409190620011bc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620011bc565b6001600160a01b0316610160526009805460ff60a01b1916600160a01b179055600b849055600c839055600d829055620003f782670de0b6b3a7640000620011e3565b600e556001600160a01b038116156200042b57600f80546001600160a01b0319166001600160a01b03831617905562000447565b600f80546001600160a01b0319166001600160a01b038b161790555b61016051620004589060016200053f565b600954620004749030906001600160a01b0316600019620005a3565b62000481306001620005b7565b5050505050505050506200133b565b6000546001600160a01b03168015620004b057620004b0816000620005b7565b620004bd826001620005b7565b620004c88262000614565b5050565b6000602083511015620004ec57620004e48362000664565b9050620004ff565b81620004f98482620010b7565b5060ff90505b92915050565b6001600160a01b038216620005315760405163ec442f0560e01b8152600060048201526024016200008e565b620004c860008383620006a7565b6001600160a01b038216600081815260116020908152604091829020805460ff19168515159081179091558251938452908301527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91015b60405180910390a15050565b620005b2838383600162000867565b505050565b6001600160a01b038216600081815260106020908152604091829020805460ff19168515159081179091558251938452908301527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910162000597565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080829050601f8151111562000692578260405163305a27a960e01b81526004016200008e9190620011f9565b80516200069f826200122e565b179392505050565b600954600090600160a01b900460ff168015620006ce5750600954600160a81b900460ff16155b80156200071857506001600160a01b03841660009081526010602052604090205460ff16806200071657506001600160a01b03831660009081526010602052604090205460ff165b155b90508015620007de576001600160a01b03831660009081526011602052604081205460ff16156200077057670de0b6b3a7640000600c54846200075c919062001253565b62000768919062001199565b9050620007ba565b6001600160a01b03851660009081526011602052604090205460ff1615620007ba57670de0b6b3a7640000600b5484620007ab919062001253565b620007b7919062001199565b90505b8015620007dc57620007cd8184620011e3565b9250620007dc85308362000942565b505b8080156200080557506001600160a01b03841660009081526011602052604090205460ff16155b8015620008235750600a543060009081526001602052604090205410155b1562000854576009805460ff60a81b1916600160a81b1790556200084662000a75565b6009805460ff60a81b191690555b6200086184848462000942565b50505050565b6001600160a01b038416620008935760405163e602df0560e01b8152600060048201526024016200008e565b6001600160a01b038316620008bf57604051634a1406b160e11b8152600060048201526024016200008e565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156200086157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516200093491815260200190565b60405180910390a350505050565b6001600160a01b038316620009715780600360008282546200096591906200126d565b90915550620009e59050565b6001600160a01b03831660009081526001602052604090205481811015620009c65760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200008e565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b03821662000a035760038054829003905562000a22565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a6891815260200190565b60405180910390a3505050565b306000908152600160205260408120549081810362000a92575050565b600a805462000aa19162001253565b82111562000abb57600a805462000ab89162001253565b91505b6000671bc16d674ec80000600d548462000ad6919062001253565b62000ae2919062001199565b9050600062000af28285620011e3565b90504762000b008262000c4a565b6000600e546002600d5462000b16919062001199565b62000b2291906200126d565b62000b2e8347620011e3565b62000b4290670de0b6b3a764000062001253565b62000b4e919062001199565b90506000671bc16d674ec80000600d548362000b6b919062001253565b62000b77919062001199565b90504781111562000b855750475b60008511801562000b965750600081115b1562000bea5762000ba8858262000db3565b60408051858152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600f546040516001600160a01b03909116904790600081818185875af1925050503d806000811462000c39576040519150601f19603f3d011682016040523d82523d6000602084013e62000c3e565b606091505b50505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062000c825762000c8262001283565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562000cdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d029190620011bc565b8160018151811062000d185762000d1862001283565b6001600160a01b03928316602091820292909201015260095462000d409130911684620005a3565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479062000d7b90859060009086903090429060040162001299565b600060405180830381600087803b15801562000d9657600080fd5b505af115801562000dab573d6000803e3d6000fd5b505050505050565b60095462000dcd9030906001600160a01b031684620005a3565b60095460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801562000e3b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000e6291906200130c565b5050505050565b6001600160a01b038116811462000e7f57600080fd5b50565b805162000e8f8162000e69565b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000ec757818101518382015260200162000ead565b50506000910152565b600082601f83011262000ee257600080fd5b81516001600160401b038082111562000eff5762000eff62000e94565b604051601f8301601f19908116603f0116810190828211818310171562000f2a5762000f2a62000e94565b8160405283815286602085880101111562000f4457600080fd5b62000f5784602083016020890162000eaa565b9695505050505050565b60008060008060008060008060006101208a8c03121562000f8157600080fd5b895162000f8e8162000e69565b60208b01519099506001600160401b038082111562000fac57600080fd5b62000fba8d838e0162000ed0565b995060408c015191508082111562000fd157600080fd5b5062000fe08c828d0162000ed0565b97505060608a0151955060808a015162000ffa8162000e69565b8095505060a08a0151935060c08a0151925060e08a01519150620010226101008b0162000e82565b90509295985092959850929598565b600181811c908216806200104657607f821691505b6020821081036200106757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005b257600081815260208120601f850160051c81016020861015620010965750805b601f850160051c820191505b8181101562000dab57828155600101620010a2565b81516001600160401b03811115620010d357620010d362000e94565b620010eb81620010e4845462001031565b846200106d565b602080601f8311600181146200112357600084156200110a5750858301515b600019600386901b1c1916600185901b17855562000dab565b600085815260208120601f198616915b82811015620011545788860151825594840194600190910190840162001133565b5085821015620011735787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600082620011b757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620011cf57600080fd5b8151620011dc8162000e69565b9392505050565b81810381811115620004ff57620004ff62001183565b60208152600082518060208401526200121a81604085016020870162000eaa565b601f01601f19169190910160400192915050565b80516020808301519190811015620010675760001960209190910360031b1b16919050565b8082028115828204841417620004ff57620004ff62001183565b80820180821115620004ff57620004ff62001183565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620012eb5784516001600160a01b031683529383019391830191600101620012c4565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156200132257600080fd5b8351925060208401519150604084015190509250925092565b60805160a05160c05160e051610100516101205161014051610160516128c4620013a160003960006103cb015260006114490152600061141c015260006113860152600061135e015260006112b9015260006112e30152600061130d01526128c46000f3fe60806040526004361061026e5760003560e01c806395927c2511610153578063c04a5414116100cb578063dcf7aef31161007f578063e2f4560511610064578063e2f456051461077c578063ed97085f14610792578063f2fde38b146107a857600080fd5b8063dcf7aef314610709578063dd62ed3e1461072957600080fd5b8063cd962a06116100b0578063cd962a06146106b3578063d505accf146106d3578063d85ba063146106f357600080fd5b8063c04a541414610666578063c6af580b1461069357600080fd5b8063a9059cbb11610122578063b62496f511610107578063b62496f5146105fb578063bc063e1a1461062b578063c02466681461064657600080fd5b8063a9059cbb146105bb578063afa4f3b2146105db57600080fd5b806395927c251461055057806395d89b41146105705780639a7a23d6146105855780639b635fdc146105a557600080fd5b80634fbee193116101e657806372ac2486116101b557806384b0196e1161019a57806384b0196e146104cb578063870bd30b146104f35780638da5cb5b1461052557600080fd5b806372ac24861461048b5780637ecebe00146104ab57600080fd5b80634fbee193146103ed5780636a486a8e1461041d57806370a0823114610433578063715018a61461047657600080fd5b806318160ddd1161023d578063313ce56711610222578063313ce567146103885780633644e515146103a457806349bd5a5e146103b957600080fd5b806318160ddd1461034957806323b872dd1461036857600080fd5b806306fdde031461027a578063095ea7b3146102a5578063155ca7c1146102d55780631694505e146102f757600080fd5b3661027557005b600080fd5b34801561028657600080fd5b5061028f6107c8565b60405161029c91906122f1565b60405180910390f35b3480156102b157600080fd5b506102c56102c036600461232d565b61085a565b604051901515815260200161029c565b3480156102e157600080fd5b506102f56102f036600461236e565b610874565b005b34801561030357600080fd5b506009546103249073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029c565b34801561035557600080fd5b506003545b60405190815260200161029c565b34801561037457600080fd5b506102c56103833660046123f2565b6108cf565b34801561039457600080fd5b506040516012815260200161029c565b3480156103b057600080fd5b5061035a6108f3565b3480156103c557600080fd5b506103247f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f957600080fd5b506102c5610408366004612433565b60106020526000908152604090205460ff1681565b34801561042957600080fd5b5061035a600c5481565b34801561043f57600080fd5b5061035a61044e366004612433565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b34801561048257600080fd5b506102f5610902565b34801561049757600080fd5b506102f56104a6366004612433565b610916565b3480156104b757600080fd5b5061035a6104c6366004612433565b610a05565b3480156104d757600080fd5b506104e0610a30565b60405161029c9796959493929190612450565b3480156104ff57600080fd5b506009546102c59074010000000000000000000000000000000000000000900460ff1681565b34801561053157600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610324565b34801561055c57600080fd5b506102f561056b36600461250f565b610a92565b34801561057c57600080fd5b5061028f610b10565b34801561059157600080fd5b506102f56105a0366004612528565b610b1f565b3480156105b157600080fd5b5061035a600e5481565b3480156105c757600080fd5b506102c56105d636600461232d565b610b35565b3480156105e757600080fd5b506102f56105f636600461250f565b610b43565b34801561060757600080fd5b506102c5610616366004612433565b60116020526000908152604090205460ff1681565b34801561063757600080fd5b5061035a666a94d74f43000081565b34801561065257600080fd5b506102f5610661366004612528565b610cad565b34801561067257600080fd5b50600f546103249073ffffffffffffffffffffffffffffffffffffffff1681565b34801561069f57600080fd5b506102f56106ae36600461255d565b610cbf565b3480156106bf57600080fd5b506102f56106ce36600461250f565b610d11565b3480156106df57600080fd5b506102f56106ee366004612578565b610da8565b3480156106ff57600080fd5b5061035a600b5481565b34801561071557600080fd5b506102f561072436600461250f565b610f55565b34801561073557600080fd5b5061035a6107443660046125ef565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b34801561078857600080fd5b5061035a600a5481565b34801561079e57600080fd5b5061035a600d5481565b3480156107b457600080fd5b506102f56107c3366004612433565b610fd3565b6060600480546107d790612628565b80601f016020809104026020016040519081016040528092919081815260200182805461080390612628565b80156108505780601f1061082557610100808354040283529160200191610850565b820191906000526020600020905b81548152906001019060200180831161083357829003601f168201915b5050505050905090565b600033610868818585611037565b60019150505b92915050565b61087c611049565b60005b828110156108c9576108b784848381811061089c5761089c61267b565b90506020020160208101906108b19190612433565b8361109c565b806108c1816126d9565b91505061087f565b50505050565b6000336108dd85828561112b565b6108e88585856111f4565b506001949350505050565b60006108fd61129f565b905090565b61090a611049565b61091460006113d7565b565b600f5473ffffffffffffffffffffffffffffffffffffffff16331480610953575060005473ffffffffffffffffffffffffffffffffffffffff1633145b6109be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205461086e565b600060608060008060006060610a44611415565b610a4c611442565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610a9a611049565b666a94d74f430000811115610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d757374206b6565702066656573206174203325206f72206c6573730000000060448201526064016109b5565b600c55565b6060600580546107d790612628565b610b27611049565b610b31828261146f565b5050565b6000336108688185856111f4565b610b4b611049565b6000610b5660035490565b9050620186a0610b67826001612711565b610b719190612728565b821015610c00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e000000000000000000000060648201526084016109b5565b6103e8610c0e826005612711565b610c189190612728565b821115610ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e352520746f74616c20737570706c792e00000000000000000000000060648201526084016109b5565b50600a55565b610cb5611049565b610b31828261109c565b610cc7611049565b6009805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610d19611049565b670de0b6b3a7640000811115610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c6964206665652073706c697400000000000000000000000000000060448201526064016109b5565b600d819055610da281670de0b6b3a7640000612763565b600e5550565b83421115610de5576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024016109b5565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e3f8c73ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610ea7826114f6565b90506000610eb78287878761153e565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b1660248201526044016109b5565b610f498a8a8a611037565b50505050505050505050565b610f5d611049565b666a94d74f430000811115610fce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d757374206b6565702066656573206174203325206f72206c6573730000000060448201526064016109b5565b600b55565b610fdb611049565b73ffffffffffffffffffffffffffffffffffffffff811661102b576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016109b5565b611034816113d7565b50565b611044838383600161156c565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610914576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016109b5565b73ffffffffffffffffffffffffffffffffffffffff821660008181526010602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108c957818110156111e5576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016109b5565b6108c98484848403600061156c565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016109b5565b73ffffffffffffffffffffffffffffffffffffffff8216611294576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016109b5565b6110448383836116b4565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561130557507f000000000000000000000000000000000000000000000000000000000000000046145b1561132f57507f000000000000000000000000000000000000000000000000000000000000000090565b6108fd604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60005473ffffffffffffffffffffffffffffffffffffffff1680156114015761140181600061109c565b61140c82600161109c565b610b31826118ff565b60606108fd7f00000000000000000000000000000000000000000000000000000000000000006006611974565b60606108fd7f00000000000000000000000000000000000000000000000000000000000000006007611974565b73ffffffffffffffffffffffffffffffffffffffff821660008181526011602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab910161111f565b600061086e61150361129f565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060008061155088888888611a1f565b9250925092506115608282611b19565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166115bc576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016109b5565b73ffffffffffffffffffffffffffffffffffffffff831661160c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016109b5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260026020908152604080832093871683529290522082905580156108c9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516116a691815260200190565b60405180910390a350505050565b60095460009074010000000000000000000000000000000000000000900460ff1680156116fd57506009547501000000000000000000000000000000000000000000900460ff16155b801561175f575073ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090205460ff168061175d575073ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff165b155b9050801561182e5773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604081205460ff16156117bd57670de0b6b3a7640000600c54846117ac9190612711565b6117b69190612728565b905061180f565b73ffffffffffffffffffffffffffffffffffffffff851660009081526011602052604090205460ff161561180f57670de0b6b3a7640000600b54846118029190612711565b61180c9190612728565b90505b801561182c5761181f8184612763565b925061182c853083611c1d565b505b808015611861575073ffffffffffffffffffffffffffffffffffffffff841660009081526011602052604090205460ff16155b801561187e5750600a543060009081526001602052604090205410155b156118f457600980547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556118cb611dc8565b600980547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b6108c9848484611c1d565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060ff831461198e5761198783611f76565b905061086e565b81805461199a90612628565b80601f01602080910402602001604051908101604052809291908181526020018280546119c690612628565b8015611a135780601f106119e857610100808354040283529160200191611a13565b820191906000526020600020905b8154815290600101906020018083116119f657829003601f168201915b5050505050905061086e565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611a5a5750600091506003905082611b0f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611aae573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b0557506000925060019150829050611b0f565b9250600091508190505b9450945094915050565b6000826003811115611b2d57611b2d612776565b03611b36575050565b6001826003811115611b4a57611b4a612776565b03611b81576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611b9557611b95612776565b03611bcf576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016109b5565b6003826003811115611be357611be3612776565b03610b31576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016109b5565b73ffffffffffffffffffffffffffffffffffffffff8316611c55578060036000828254611c4a91906127a5565b90915550611d079050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205481811015611cdb576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016109b5565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216611d3057600380548290039055611d5c565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dbb91815260200190565b60405180910390a3505050565b3060009081526001602052604081205490818103611de4575050565b600a8054611df191612711565b821115611e0857600a8054611e0591612711565b91505b6000671bc16d674ec80000600d5484611e219190612711565b611e2b9190612728565b90506000611e398285612763565b905047611e4582611fb5565b6000600e546002600d54611e599190612728565b611e6391906127a5565b611e6d8347612763565b611e7f90670de0b6b3a7640000612711565b611e899190612728565b90506000671bc16d674ec80000600d5483611ea49190612711565b611eae9190612728565b905047811115611ebb5750475b600085118015611ecb5750600081115b15611f1c57611eda8582612168565b60408051858152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600f5460405173ffffffffffffffffffffffffffffffffffffffff909116904790600081818185875af1925050503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f49565b60606000611f838361224c565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fea57611fea61267b565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600954604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208d91906127b8565b816001815181106120a0576120a061267b565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526009546120d39130911684611037565b6009546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906121329085906000908690309042906004016127d5565b600060405180830381600087803b15801561214c57600080fd5b505af1158015612160573d6000803e3d6000fd5b505050505050565b60095461218d90309073ffffffffffffffffffffffffffffffffffffffff1684611037565b6009546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820181905260248201859052600060448301819052606483015260848201524260a482015273ffffffffffffffffffffffffffffffffffffffff9091169063f305d71990839060c40160606040518083038185885af1158015612220573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122459190612860565b5050505050565b600060ff8216601f81111561086e576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815180845260005b818110156122b357602081850181015186830182015201612297565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000612304602083018461228d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461103457600080fd5b6000806040838503121561234057600080fd5b823561234b8161230b565b946020939093013593505050565b8035801515811461236957600080fd5b919050565b60008060006040848603121561238357600080fd5b833567ffffffffffffffff8082111561239b57600080fd5b818601915086601f8301126123af57600080fd5b8135818111156123be57600080fd5b8760208260051b85010111156123d357600080fd5b6020928301955093506123e99186019050612359565b90509250925092565b60008060006060848603121561240757600080fd5b83356124128161230b565b925060208401356124228161230b565b929592945050506040919091013590565b60006020828403121561244557600080fd5b81356123048161230b565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261248c60e084018a61228d565b838103604085015261249e818a61228d565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156124fd578351835292840192918401916001016124e1565b50909c9b505050505050505050505050565b60006020828403121561252157600080fd5b5035919050565b6000806040838503121561253b57600080fd5b82356125468161230b565b915061255460208401612359565b90509250929050565b60006020828403121561256f57600080fd5b61230482612359565b600080600080600080600060e0888a03121561259357600080fd5b873561259e8161230b565b965060208801356125ae8161230b565b95506040880135945060608801359350608088013560ff811681146125d257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561260257600080fd5b823561260d8161230b565b9150602083013561261d8161230b565b809150509250929050565b600181811c9082168061263c57607f821691505b602082108103612675577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361270a5761270a6126aa565b5060010190565b808202811582820484141761086e5761086e6126aa565b60008261275e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561086e5761086e6126aa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8082018082111561086e5761086e6126aa565b6000602082840312156127ca57600080fd5b81516123048161230b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561283257845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612800565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008060006060848603121561287557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c4b4539f1988a7bb86e9321ae7f3baa556beb78fee8722766d49ade03f9feb4664736f6c634300081400330000000000000000000000006f55d057f06edda53d5e1c52775e75b79c628b100000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000014bddab3e51a57cff87a500000000000000000000000000000008c1a3cf8f83074169fe5d7ad50b978e1cd6b37c7000000000000000000000000000000000000000000000000006a94d74f430000000000000000000000000000000000000000000000000000006a94d74f430000000000000000000000000000000000000000000000000000058d15e1762800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4348594e415452554d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064348592d4e410000000000000000000000000000000000000000000000000000