[ { "inputs": [ { "internalType": "address", "name": "airdrop", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AllowanceOverflow", "type": "error" }, { "inputs": [], "name": "AllowanceUnderflow", "type": "error" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ExcessiveBps", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidPermit", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "PermitExpired", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "Unauthorized", "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": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint128", "name": "buyBPS", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "sellBPS", "type": "uint128" } ], "name": "FeesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "pool", "type": "address" } ], "name": "PoolAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "pool", "type": "address" } ], "name": "PoolRemoved", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "result", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pool", "type": "address" } ], "name": "addPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "result", "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": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fees", "outputs": [ { "internalType": "uint128", "name": "buyBPS", "type": "uint128" }, { "internalType": "uint128", "name": "sellBPS", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "pools", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pool", "type": "address" } ], "name": "removePool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "rewardWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardWalletBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint128", "name": "buyBPS", "type": "uint128" }, { "internalType": "uint128", "name": "sellBPS", "type": "uint128" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRewardWallet", "type": "address" } ], "name": "updateRewardWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60c060405261012c608081905260a05271012c0000000000000000000000000000012c60005534801561003157600080fd5b50604051611a0f380380611a0f83398101604081905261005091610241565b61005933610179565b308160405161006790610234565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801561009a573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b0392909216919091179055600060646100d66b033b2e3c9fd0803ce8000000600a610287565b6100e091906102a4565b90506100ec82826101b5565b61010b33610106836b033b2e3c9fd0803ce80000006102c6565b6101b5565b7343000000000000000000000000000000000000026001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561015a57600080fd5b505af115801561016e573d6000803e3d6000fd5b5050505050506102d9565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6805345cdf77eb68f44c54818101818110156101d95763e5cfe9576000526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52816000526020600c208181540181555080602052600c5160601c60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6106048061140b83390190565b60006020828403121561025357600080fd5b81516001600160a01b038116811461026a57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761029e5761029e610271565b92915050565b6000826102c157634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561029e5761029e610271565b611123806102e86000396000f3fe6080604052600436106101b75760003560e01c806395d89b41116100ec578063d914cd4b1161008a578063f2fde38b11610064578063f2fde38b14610503578063f620c31714610516578063fb75b2c714610548578063fee81cf41461056857600080fd5b8063d914cd4b1461049a578063dd62ed3e146104ba578063f04e283e146104f057600080fd5b8063a9059cbb116100c6578063a9059cbb14610425578063a95d6b1c14610445578063cc600f911461045a578063d505accf1461047a57600080fd5b806395d89b411461037c5780639af1d35a146103aa578063a4063dbc146103f557600080fd5b80633644e5151161015957806370a082311161013357806370a08231146102e1578063715018a6146103145780637ecebe001461031c5780638da5cb5b1461034f57600080fd5b80633644e515146102a45780633b7d0946146102b957806354d1f13d146102d957600080fd5b806323b872dd1161019557806323b872dd1461023e578063256929621461025e578063313ce5671461026857806332760c7a1461028457600080fd5b806306fdde03146101bc578063095ea7b3146101e757806318160ddd14610217575b600080fd5b3480156101c857600080fd5b506101d161059b565b6040516101de9190610e9f565b60405180910390f35b3480156101f357600080fd5b50610207610202366004610f0a565b6105bf565b60405190151581526020016101de565b34801561022357600080fd5b506805345cdf77eb68f44c545b6040519081526020016101de565b34801561024a57600080fd5b50610207610259366004610f34565b610613565b610266610690565b005b34801561027457600080fd5b50604051601281526020016101de565b34801561029057600080fd5b5061026661029f366004610f87565b6106e0565b3480156102b057600080fd5b50610230610792565b3480156102c557600080fd5b506102666102d4366004610fba565b61080f565b61026661086f565b3480156102ed57600080fd5b506102306102fc366004610fba565b6387a211a2600c908152600091909152602090205490565b6102666108ab565b34801561032857600080fd5b50610230610337366004610fba565b6338377508600c908152600091909152602090205490565b34801561035b57600080fd5b50638b78c6d819545b6040516001600160a01b0390911681526020016101de565b34801561038857600080fd5b50604080518082019091526005815264109510549160da1b60208201526101d1565b3480156103b657600080fd5b506000546103d5906001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016101de565b34801561040157600080fd5b50610207610410366004610fba565b60016020526000908152604090205460ff1681565b34801561043157600080fd5b50610207610440366004610f0a565b6108bf565b34801561045157600080fd5b506102666108f4565b34801561046657600080fd5b50610266610475366004610fba565b610983565b34801561048657600080fd5b50610266610495366004610fd5565b610a1d565b3480156104a657600080fd5b506102666104b5366004610fba565b610ba6565b3480156104c657600080fd5b506102306104d5366004611048565b602052637f5e9f20600c908152600091909152603490205490565b6102666104fe366004610fba565b610c03565b610266610511366004610fba565b610c40565b34801561052257600080fd5b506002546387a211a2600c9081526001600160a01b039091166000526020902054610230565b34801561055457600080fd5b50600254610364906001600160a01b031681565b34801561057457600080fd5b50610230610583366004610fba565b63389a75e1600c908152600091909152602090205490565b60408051808201909152600a815269424c415354415244494f60b01b602082015290565b600082602052637f5e9f20600c5233600052816034600c205581600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a35060015b92915050565b60008360601b33602052637f5e9f208117600c52506034600c2080546001810115610654578084111561064e576313be252b6000526004601cfd5b83810382555b50506000610663858585610c67565b905061066f8582610ce5565b610683858561067e8487611088565b610d37565b60019150505b9392505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6106e8610db2565b6101f46001600160801b038316118061070b57506101f46001600160801b038216115b1561072957604051634e30d5cd60e11b815260040160405180910390fd5b6040805180820182526001600160801b038481168083529084166020928301819052600160801b810282176000558351918252918101919091527fc13fa50fe44e9c6a234aac774658bcb509d76e8542204dc852531b17f21c174e910160405180910390a15050565b60008061079d61059b565b8051906020012090506040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81528160208201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015260a081209250505090565b610817610db2565b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f91015b60405180910390a150565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6108b3610db2565b6108bd6000610dcd565b565b6000806108cd338585610c67565b90506108d93382610ce5565b6108ec846108e78386611088565b610e0b565b949350505050565b6002604360981b0163662aa11d3061090f638b78c6d8195490565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610980919061109b565b50565b6002546001600160a01b03163314806109b35750638b78c6d819546001600160a01b0316336001600160a01b0316145b6109fb5760405162461bcd60e51b8152602060048201526015602482015274212620a9aa20a92224a79d102327a92124a22222a760591b604482015260640160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a2761059b565b80519060200120905084421115610a4657631a15a3cc6000526004601cfd5b6040518860601b60601c98508760601b60601c975065383775081901600e52886000526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83528360208401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528a60208401528960408401528860608401528060808401528760a084015260c08320604e526042602c206000528660ff1660205285604052846060526020806080600060015afa8b3d5114610b525763ddafbaef6000526004601cfd5b0190556303faf4f960a51b88176040526034602c2087905587897f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250506000606052505050505050565b610bae610db2565b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea69101610864565b610c0b610db2565b63389a75e1600c52806000526020600c208054421115610c3357636f5e88186000526004601cfd5b6000905561098081610dcd565b610c48610db2565b8060601b610c5e57637448fbae6000526004601cfd5b61098081610dcd565b6001600160a01b03831660009081526001602052604081205460ff1615610ca657600054610c9f9083906001600160801b0316610e86565b9050610689565b6001600160a01b03831660009081526001602052604090205460ff1615610689576000546108ec908390600160801b90046001600160801b0316610e86565b6002546387a211a2606084901b17600c9081526020902080546001600160a01b039092169180841115610d205763f4d678b86000526004601cfd5b83900390556000526020600c208054909101905550565b8260601b6387a211a28117600c526020600c20805480841115610d625763f4d678b86000526004601cfd5b83810382555050826000526020600c208281540181555081602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350505050565b638b78c6d8195433146108bd576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60006387a211a2600c52336000526020600c20805480841115610e365763f4d678b86000526004601cfd5b83810382555050826000526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6000612710610e9583856110b4565b61068991906110cb565b60006020808352835180602085015260005b81811015610ecd57858101830151858201604001528201610eb1565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610f0557600080fd5b919050565b60008060408385031215610f1d57600080fd5b610f2683610eee565b946020939093013593505050565b600080600060608486031215610f4957600080fd5b610f5284610eee565b9250610f6060208501610eee565b9150604084013590509250925092565b80356001600160801b0381168114610f0557600080fd5b60008060408385031215610f9a57600080fd5b610fa383610f70565b9150610fb160208401610f70565b90509250929050565b600060208284031215610fcc57600080fd5b61068982610eee565b600080600080600080600060e0888a031215610ff057600080fd5b610ff988610eee565b965061100760208901610eee565b95506040880135945060608801359350608088013560ff8116811461102b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561105b57600080fd5b61106483610eee565b9150610fb160208401610eee565b634e487b7160e01b600052601160045260246000fd5b8181038181111561060d5761060d611072565b6000602082840312156110ad57600080fd5b5051919050565b808202811582820484141761060d5761060d611072565b6000826110e857634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122092803a2428c23d7a69a0663e1636daf0b4b98338db76d3e78ec23d471aa109f464736f6c634300081900336080604052348015600f57600080fd5b50604051610604380380610604833981016040819052602c9160a9565b6033816058565b50600080546001600160a01b0319166001600160a01b039290921691909117905560de565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a35b50565b6001600160a01b0381168114609257600080fd5b6000806040838503121560bb57600080fd5b825160c4816095565b602084015190925060d3816095565b809150509250929050565b610517806100ed6000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610102578063a30da73f1461011b578063f04e283e1461013b578063f2fde38b1461014e578063fee81cf41461016157600080fd5b80631f2a47371461009657806325692962146100d35780633ccfd60b146100dd57806354d1f13d146100f2578063715018a6146100fa575b600080fd5b3480156100a257600080fd5b506000546100b6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6101a2565b005b3480156100e957600080fd5b506100db6101f2565b6100db6102f6565b6100db610332565b34801561010e57600080fd5b50638b78c6d819546100b6565b34801561012757600080fd5b506100db610136366004610482565b610346565b6100db610149366004610482565b6103b0565b6100db61015c366004610482565b6103ed565b34801561016d57600080fd5b5061019461017c366004610482565b63389a75e1600c908152600091909152602090205490565b6040519081526020016100ca565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6101fa610414565b6000546001600160a01b031663a9059cbb610218638b78c6d8195490565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028491906104a6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156102cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f391906104bf565b50565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61033a610414565b610344600061042f565b565b61034e610414565b60005460405163cc600f9160e01b81526001600160a01b0383811660048301529091169063cc600f9190602401600060405180830381600087803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b5050505050565b6103b8610414565b63389a75e1600c52806000526020600c2080544211156103e057636f5e88186000526004601cfd5b600090556102f38161042f565b6103f5610414565b8060601b61040b57637448fbae6000526004601cfd5b6102f38161042f565b638b78c6d819543314610344576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b6001600160a01b03811681146102f357600080fd5b60006020828403121561049457600080fd5b813561049f8161046d565b9392505050565b6000602082840312156104b857600080fd5b5051919050565b6000602082840312156104d157600080fd5b8151801515811461049f57600080fdfea264697066735822122011f9e402df90270c37daec04c7b3debf858ed87490f188732bd6b05c925ac71b64736f6c63430008190033000000000000000000000000c405ac3912f273873e9f7833a924f81d167b6d81