[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "pair", "type": "address" } ], "name": "InvalidPair", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "AMMPair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isPair", "type": "bool" } ], "name": "AMMPairsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "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": "routerV2", "type": "address" } ], "name": "RouterV2Updated", "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "AMMPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_router", "type": "address" } ], "name": "afterConstructor", "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": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pairV2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "routerV2", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "isPair", "type": "bool" } ], "name": "setAMMPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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" } ]
608060405234801561000f575f80fd5b50336040518060400160405280600a815260200169466c616d65646164647960b01b81525060405180604001604052806005815260200164444144445960d81b81525081600390816100619190610395565b50600461006e8282610395565b5050506001600160a01b03811661009f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100a881610111565b5073382120678832a6758459e102ac512ad5ffa157926100ee81600a6100cf60128261054a565b6100df906509184e72a00061055f565b6100e99190610576565b61012d565b61010b73382120678832a6758459e102ac512ad5ffa15792610111565b506105a8565b600680546001600160a01b031916905561012a81610165565b50565b6001600160a01b0382166101565760405163ec442f0560e01b81525f6004820152602401610096565b6101615f83836101b6565b5050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6101c18383836101d8565b6101d38383836001600160e01b038416565b505050565b6001600160a01b038316610202578060025f8282546101f79190610595565b909155506102729050565b6001600160a01b0383165f90815260208190526040902054818110156102545760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610096565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661028e576002805482900390556102ac565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516102f191815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061032657607f821691505b60208210810361034457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101d357805f5260205f20601f840160051c8101602085101561036f5750805b601f840160051c820191505b8181101561038e575f815560010161037b565b5050505050565b81516001600160401b038111156103ae576103ae6102fe565b6103c2816103bc8454610312565b8461034a565b602080601f8311600181146103f5575f84156103de5750858301515b5f19600386901b1c1916600185901b17855561044c565b5f85815260208120601f198616915b8281101561042357888601518255948401946001909101908401610404565b508582101561044057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156104a257815f190482111561048857610488610454565b8085161561049557918102915b93841c939080029061046d565b509250929050565b5f826104b857506001610544565b816104c457505f610544565b81600181146104da57600281146104e457610500565b6001915050610544565b60ff8411156104f5576104f5610454565b50506001821b610544565b5060208310610133831016604e8410600b8410161715610523575081810a610544565b61052d8383610468565b805f190482111561054057610540610454565b0290505b92915050565b5f61055860ff8416836104aa565b9392505050565b808202811582820484141761054457610544610454565b5f8261059057634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561054457610544610454565b610de4806105b55f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c8063715018a6116100b45780638fffabed116100795780638fffabed1461028f57806395d89b41146102a2578063a9059cbb146102aa578063dd62ed3e146102bd578063e30c3978146102f5578063f2fde38b14610306575f80fd5b8063715018a614610239578063768565571461024157806379ba50971461026357806379cc67901461026b5780638da5cb5b1461027e575f80fd5b80632d99d32e116100fa5780632d99d32e146101b1578063313ce567146101c457806342966c68146101d3578063502f7446146101e657806370a0823114610211575f80fd5b806306fdde0314610136578063095ea7b31461015457806318160ddd1461017757806318533a0d1461018957806323b872dd1461019e575b5f80fd5b61013e610319565b60405161014b9190610beb565b60405180910390f35b610167610162366004610c34565b6103a9565b604051901515815260200161014b565b6002545b60405190815260200161014b565b61019c610197366004610c5e565b6103c2565b005b6101676101ac366004610c80565b610497565b61019c6101bf366004610cbe565b6104ba565b6040516012815260200161014b565b61019c6101e1366004610cf9565b610506565b6007546101f9906001600160a01b031681565b6040516001600160a01b03909116815260200161014b565b61017b61021f366004610c5e565b6001600160a01b03165f9081526020819052604090205490565b61019c610513565b61016761024f366004610c5e565b60096020525f908152604090205460ff1681565b61019c610526565b61019c610279366004610c34565b610567565b6005546001600160a01b03166101f9565b6008546101f9906001600160a01b031681565b61013e61057c565b6101676102b8366004610c34565b61058b565b61017b6102cb366004610d10565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6006546001600160a01b03166101f9565b61019c610314366004610c5e565b610598565b60606003805461032890610d3c565b80601f016020809104026020016040519081016040528092919081815260200182805461035490610d3c565b801561039f5780601f106103765761010080835404028352916020019161039f565b820191905f5260205f20905b81548152906001019060200180831161038257829003601f168201915b5050505050905090565b5f336103b6818585610609565b60019150505b92915050565b600654600160a81b900460ff16806103e45750600654600160a01b900460ff16155b61044c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600654600160a81b900460ff16158015610476576006805461ffff60a01b191661010160a01b1790555b61047f8261061b565b8015610493576006805460ff60a81b191690555b5050565b5f336104a48582856107e7565b6104af858585610862565b506001949350505050565b6104c26108bf565b6008546001600160a01b03908116908316036104fc57604051639d34366d60e01b81526001600160a01b0383166004820152602401610443565b61049382826108ec565b610510338261094a565b50565b61051b6108bf565b6105245f61097e565b565b60065433906001600160a01b0316811461055e5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610443565b6105108161097e565b6105728233836107e7565b610493828261094a565b60606004805461032890610d3c565b5f336103b6818585610862565b6105a06108bf565b600680546001600160a01b0383166001600160a01b031990911681179091556105d16005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6106168383836001610997565b505050565b600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610672573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106969190610d74565b6001600160a01b031663c9c653963060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107199190610d74565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610763573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107879190610d74565b600880546001600160a01b0319166001600160a01b039290921691821790556107b19060016108ec565b6040516001600160a01b038216907fbc052db65df144ad4f71f02da93cae3d4401104c30ac374d7cc10d87ee07b602905f90a250565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461085c578181101561084e57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610443565b61085c84848484035f610997565b50505050565b6001600160a01b03831661088b57604051634b637e8f60e11b81525f6004820152602401610443565b6001600160a01b0382166108b45760405163ec442f0560e01b81525f6004820152602401610443565b610616838383610a69565b6005546001600160a01b031633146105245760405163118cdaa760e01b8152336004820152602401610443565b6001600160a01b0382165f81815260096020908152604091829020805460ff191685151590811790915591519182527f911aa18ddbbbc33c9b4c704a71bdaa0984b0aa2e82726a7f51e64bad0b0a8455910160405180910390a25050565b6001600160a01b03821661097357604051634b637e8f60e11b81525f6004820152602401610443565b610493825f83610a69565b600680546001600160a01b031916905561051081610a74565b6001600160a01b0384166109c05760405163e602df0560e01b81525f6004820152602401610443565b6001600160a01b0383166109e957604051634a1406b160e11b81525f6004820152602401610443565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561085c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a5b91815260200190565b60405180910390a350505050565b610616838383610ac5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316610aef578060025f828254610ae49190610d8f565b90915550610b5f9050565b6001600160a01b0383165f9081526020819052604090205481811015610b415760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610443565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610b7b57600280548290039055610b99565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bde91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610510575f80fd5b5f8060408385031215610c45575f80fd5b8235610c5081610c20565b946020939093013593505050565b5f60208284031215610c6e575f80fd5b8135610c7981610c20565b9392505050565b5f805f60608486031215610c92575f80fd5b8335610c9d81610c20565b92506020840135610cad81610c20565b929592945050506040919091013590565b5f8060408385031215610ccf575f80fd5b8235610cda81610c20565b915060208301358015158114610cee575f80fd5b809150509250929050565b5f60208284031215610d09575f80fd5b5035919050565b5f8060408385031215610d21575f80fd5b8235610d2c81610c20565b91506020830135610cee81610c20565b600181811c90821680610d5057607f821691505b602082108103610d6e57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610d84575f80fd5b8151610c7981610c20565b808201808211156103bc57634e487b7160e01b5f52601160045260245ffdfea26469706673582212209967ca25422f35a7ce6ea7c51c4b001e14248e6560e77f337bbf1673da23cd6764736f6c63430008190033