Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 48 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 20858928 | 502 days ago | IN | 0 ETH | 0.00020601 | ||||
| Transfer | 20858844 | 502 days ago | IN | 0 ETH | 0.00025024 | ||||
| Transfer | 20858762 | 502 days ago | IN | 0 ETH | 0.00025574 | ||||
| Transfer | 20858734 | 502 days ago | IN | 0 ETH | 0.00024979 | ||||
| Transfer | 20856855 | 502 days ago | IN | 0 ETH | 0.00028015 | ||||
| Transfer | 20856420 | 502 days ago | IN | 0 ETH | 0.00025496 | ||||
| Withdraw Tokens | 20856406 | 502 days ago | IN | 0 ETH | 0.00042788 | ||||
| Transfer | 20856391 | 502 days ago | IN | 0 ETH | 0.00025567 | ||||
| Approve | 20856375 | 502 days ago | IN | 0 ETH | 0.00035199 | ||||
| Approve | 20830982 | 506 days ago | IN | 0 ETH | 0.00065481 | ||||
| Approve | 20514133 | 550 days ago | IN | 0 ETH | 0.00021866 | ||||
| Approve | 20407843 | 565 days ago | IN | 0 ETH | 0.00008158 | ||||
| Approve | 20262064 | 585 days ago | IN | 0 ETH | 0.00016146 | ||||
| Approve | 20204013 | 593 days ago | IN | 0 ETH | 0.0001398 | ||||
| Approve | 20157499 | 600 days ago | IN | 0 ETH | 0.00008504 | ||||
| Approve | 20155320 | 600 days ago | IN | 0 ETH | 0.00021713 | ||||
| Transfer | 20147413 | 601 days ago | IN | 0 ETH | 0.00013884 | ||||
| Transfer | 20147397 | 601 days ago | IN | 0 ETH | 0.00013491 | ||||
| Approve | 20147234 | 601 days ago | IN | 0 ETH | 0.00014636 | ||||
| Approve | 20142434 | 602 days ago | IN | 0 ETH | 0.00028599 | ||||
| Approve | 20142424 | 602 days ago | IN | 0 ETH | 0.00023889 | ||||
| Approve | 20142405 | 602 days ago | IN | 0 ETH | 0.000272 | ||||
| Approve | 20137149 | 602 days ago | IN | 0 ETH | 0.00012979 | ||||
| Approve | 20137116 | 602 days ago | IN | 0 ETH | 0.00013292 | ||||
| Approve | 20130882 | 603 days ago | IN | 0 ETH | 0.00015361 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LuckyMeme
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {IERC20} from "./IERC20.sol";
import {IERC20Errors} from "./draft-IERC6093.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the sender.
*/
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
contract LuckyMeme is Ownable, IERC20, IERC20Errors {
mapping(address account => uint256) internal _balances;
mapping(address account => mapping(address spender => uint256)) internal _allowances;
uint256 private immutable _decimals;
uint256 public immutable _maxTransaction; // max of 1% of the total supply per transaction
uint256 public immutable _distributeThreshold;
uint256 public constant _tax = 4; // 0.4% fee (_tax / _taxDenominator = 4/1000 = 0.004 = 0.4%)
uint256 private constant _taxDenominator = 1000;
uint256 public _distributeCounter = 0;
uint256 private _totalSupply;
bool public _trading = false;
bool public _presale = true; // presale tax and everything related
bool public _hardTax = false; // first month tax
bool public _zeroTax = true;
string private constant _name = "LuckyMeme";
string private constant _symbol = "LME";
address payable immutable lmeAddress = payable(address(this));
address payable public _annualprizeWallet = payable(0x58c88BC76769B9380F65FA9F8A01dd9F8af81022);
address payable public _monthlyprizeWallet = payable(0x10Eea63dAEDaa2d81e9c29641eF6dCE005164dc1);
address payable public _weeklyprizeWallet = payable(0xb120D280270870E7EF43101250b1b7d5A9F0D8e0);
/**
* @dev Sets the values for {name} and {symbol}.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor() {
_decimals = decimals();
_maxTransaction = 10000000 * 10**_decimals;
_distributeThreshold = 100000 * 10**_decimals;
// Total supply is fixed and equal to the initial supply.
uint256 _initialSupply = 1000000000 * 10**_decimals;
_mint(_msgSender(), _initialSupply);
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address user = _msgSender();
_zeroTax = true;
_transfer(user, to, value);
_zeroTax = false;
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address user, address spender) public view virtual returns (uint256) {
return _allowances[user][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address user = _msgSender();
_approve(user, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_zeroTax = false;
_spendAllowance(from, spender, value);
_transfer(from, to, value);
// Trigger for distributing fees between project addresses.
uint256 tokenBalance = balanceOf(lmeAddress);
if (tokenBalance > _distributeThreshold) {
if (_trading) {
_distributeFee();
}
}
return true;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
require((_trading) || ((from==lmeAddress) && (_presale)) || (to == owner()) || (from == owner()), "Cannot transact now");
// Penalty imposed on holders who attempt to transact a larger amount than allowed, penalty=1 means there is no
// penalty (fee=0.4%). When the limit is exceeded, the holder suffers a penalty=10 (fee=4%).
uint256 penalty;
// Situation in which the transaction limit has been exceeded.
if (value > _maxTransaction) {
penalty = 10;
}
// Transaction within the limit.
else {
penalty = 1;
}
_transferSubroutine(from, to, value, penalty);
}
/**
* @dev Subroutine of the fucntion `_transfer`.
*/
function _transferSubroutine(address from, address to, uint256 value, uint256 penalty) internal {
// If it is not one of the project addresses, penalty or fees are applied.
if (from != owner() && from != _annualprizeWallet && from != _monthlyprizeWallet && from != _weeklyprizeWallet && from != lmeAddress) {
if (to != owner() && to != _annualprizeWallet && to != _monthlyprizeWallet && to != _weeklyprizeWallet && to != lmeAddress) {
uint256 taxedValue; // value after fees
taxedValue = _applyFee(from, value, penalty);
_update(from, to, taxedValue);
}
// Transaction to a project address. In this case, no penalties and no fees apply.
else {
_update(from, to, value);
}
}
// Transaction from a project address. In this case, no penalties and no fees apply.
else {
_update(from, to, value);
}
}
/**
* @dev The contract retains a portion of the 'from' transaction amount (`value`) as a fee (`tax`).
*/
function _applyFee(address from, uint256 value, uint256 penalty) internal virtual returns(uint256) {
uint256 tax;
// Type of tax.
if ((_zeroTax)||(_presale)) {
tax = 0;
}
else if (_hardTax) {
tax = 10 * penalty * (_tax * value) / _taxDenominator;
}
else {
tax = penalty * (_tax * value) / _taxDenominator;
}
// Value of the transaction after tax.
uint256 taxedValue;
taxedValue = value - tax;
// Sender token balance.
uint256 fromBalance = _balances[from];
if (fromBalance < tax) {
revert ERC20InsufficientBalance(from, fromBalance, tax);
}
unchecked {
// Overflow not possible: tax < value <= fromBalance.
_balances[from] = fromBalance - tax;
}
unchecked {
// Overflow not possible: balance + tax is at most totalSupply, which we know fits into a uint256.
_balances[lmeAddress] += tax;
}
if (tax > 0) {
emit Transfer(from, lmeAddress, tax);
}
return taxedValue;
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply = value;
}
else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
// The project does not have burns, but someone might want to send their tokens to the null address anyway.
// In this case the total supply is reduced.
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
}
else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Distributes the fees between the parties: annual prize wallet, monthly prize wallet, weekly prize wallet
* and project. This function is called every time the contract's token balance exceeds 100,000 LME. With each
* call, the proportional part is sent to only one of the wallets. Once it reaches 100,000 LME again, the
* proportional transfer is made to the next wallet, and so on.
*/
function _distributeFee() internal virtual returns(bool) {
uint256 _prizesWalletPercentage = 275; // 0.11% is equivalent to 27.5% of 0.4%
uint256 _projectWalletPercentage = 175; // 0.07% is equivalent to 17.5% of 0.4%
uint256 value = balanceOf(lmeAddress);
uint256 proportionalValue;
address from = lmeAddress;
address payable to;
if (_distributeCounter == 0) {
proportionalValue = (value * _prizesWalletPercentage) / _taxDenominator;
to = _annualprizeWallet;
}
else if (_distributeCounter == 1) {
proportionalValue = (value * _prizesWalletPercentage) / _taxDenominator;
to = _monthlyprizeWallet;
}
else if (_distributeCounter == 2) {
proportionalValue = (value * _prizesWalletPercentage) / _taxDenominator;
to = _weeklyprizeWallet;
}
else {
proportionalValue = (value * _projectWalletPercentage) / _taxDenominator;
to = payable(owner());
}
// Update counter.
_distributeCounter += 1;
if (_distributeCounter >= 4) {
_distributeCounter = 0;
}
// Transfer tokens to chosen wallet.
_transfer(from, to, proportionalValue);
return true;
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address user, address spender, uint256 value, bool) internal virtual override {
* super._approve(user, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address user, address spender, uint256 value) internal virtual {
if (user == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[user][spender] = value;
emit Approval(user, spender, value);
}
/**
* @dev Updates `user` s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address user, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(user, spender);
if (currentAllowance != type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(user, spender, currentAllowance - value);
}
}
}
/**
* @dev Changes the address of a prize wallet. If any prize wallet is compromised, this function must
* be called to update its address.
*/
function changePrizeWallet(uint256 i, address prizeWallet) public virtual onlyOwner {
if (i == 0) {
_annualprizeWallet = payable(prizeWallet);
}
else if (i == 1) {
_monthlyprizeWallet = payable(prizeWallet);
}
else if (i == 2) {
_weeklyprizeWallet = payable(prizeWallet);
}
}
/**
* @dev Changes the variable `_trading` state to true, and from then on the token can be traded freely. Note
* that after this there is no turning back, this variable will always be true.
*/
function openTrading() public virtual onlyOwner {
_trading = true;
}
/**
* @dev Changes _hardTax to false. There is no turning back after that.
*/
function hardTaxOver() public virtual onlyOwner {
_hardTax = false;
}
/**
* @dev Forces the tax to be zero if needed.
*/
function zeroTax() public virtual onlyOwner {
if (_zeroTax) {
_zeroTax = false;
}
else {
_zeroTax = true;
}
}
/**
* @dev Send ethers to the project's wallet. We don't expect to use this function, but it can be useful.
*/
function withdraw(uint256 ethAmount) external onlyOwner {
payable(owner()).transfer(ethAmount);
}
/**
* @dev Receive function.
*/
receive() external payable virtual {
address user = msg.sender;
uint256 ethAmount = msg.value;
if ((_presale) && (user!=owner())) {
_swapETHforToken(user, ethAmount);
}
}
/***** From now on everything is about the presale. *****/
uint256 public totalPurchases = 0;
uint256 public presalePrice = 2000000000000 wei; // price of 1 LME in wei (1 LME = 0.000002 ETH)
bool internal locked; // lock state when executing
modifier noReentrancy() {
require(!locked, "No reentrancy allowed");
locked = true;
_;
locked = false;
}
// When the user send ETH to this contract, it needs to allow the user to be the spender of the transfer.
// This allowance can't be done with the `approve` function since the sender is never the spender. Only
// for the presale we will allow this behavior.
function _presaleApprove(address user, uint256 value) private returns (bool) {
if ((_presale) || (user==owner())) {
_approve(lmeAddress, user, value);
}
return true;
}
// User is giving ETH to receive tokens
function _swapETHforToken(address user, uint256 ethAmount) private noReentrancy {
require(_presale, "Presale is over");
// Verify min and max limits.
require(ethAmount >= 5000000000000000 wei, "ETH amount must be greater than 0.005 ETH");
require(ethAmount <= 1000000000000000000 wei, "ETH amount must be less than 1 ETH");
// Calculates the amount of tokens the user will receive.
uint256 tokenAmount = (ethAmount / presalePrice) * 10**_decimals;
// Verify if the amount of token in the contract is enough to continue the transaction.
require(balanceOf(lmeAddress) >= tokenAmount, "Insufficient token balance to complete the transaction");
payable(owner()).transfer(ethAmount);
// Transfer tokens to the user.
bool status;
require(_presaleApprove(user, tokenAmount), "Allowance not approved");
status = transferFrom(lmeAddress, user, tokenAmount);
// Updates.
if (status) {
totalPurchases += tokenAmount;
}
// Just to make sure there are no loose ends.
_presaleApprove(user, 0);
}
// Activate this function to finish the presale. There is no turning back after that.
function presaleOver() public onlyOwner {
_presale = false;
_hardTax = true;
}
// Send the LME tokens to the project's wallet.
function withdrawTokens(uint256 tokenAmount) external onlyOwner {
bool status;
require(_presaleApprove(owner(), tokenAmount), "Allowance not approved");
status = transferFrom(lmeAddress, owner(), tokenAmount);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.18;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.18;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"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":"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":"OwnershipTransferred","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":"_annualprizeWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_distributeCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_distributeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hardTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_monthlyprizeWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_weeklyprizeWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_zeroTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","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":"i","type":"uint256"},{"internalType":"address","name":"prizeWallet","type":"address"}],"name":"changePrizeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hardTaxOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"presalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPurchases","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6101006040525f6003555f60055f6101000a81548160ff0219169083151502179055506001600560016101000a81548160ff0219169083151502179055505f600560026101000a81548160ff0219169083151502179055506001600560036101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1660e09073ffffffffffffffffffffffffffffffffffffffff168152507358c88bc76769b9380f65fa9f8a01dd9f8af81022600560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310eea63daedaa2d81e9c29641ef6dce005164dc160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b120d280270870e7ef43101250b1b7d5a9f0d8e060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6008556501d1a94a2000600955348015620001bc575f80fd5b50620001dd620001d16200029460201b60201c565b6200029b60201b60201c565b620001ed6200035c60201b60201c565b60ff1660808181525050608051600a62000208919062000788565b62989680620002189190620007d8565b60a08181525050608051600a62000230919062000788565b620186a0620002409190620007d8565b60c081815250505f608051600a62000259919062000788565b633b9aca006200026a9190620007d8565b90506200028d620002806200029460201b60201c565b826200036460201b60201c565b50620008e7565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003d7575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620003ce919062000865565b60405180910390fd5b620003ea5f8383620003ee60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200042f578060048190555062000502565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620004bc578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004b39392919062000891565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200054b578060045f828254039250508190555062000596565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005f59190620008cc565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200068c5780860481111562000664576200066362000602565b5b6001851615620006745780820291505b808102905062000684856200062f565b945062000644565b94509492505050565b5f82620006a6576001905062000778565b81620006b5575f905062000778565b8160018114620006ce5760028114620006d9576200070f565b600191505062000778565b60ff841115620006ee57620006ed62000602565b5b8360020a91508482111562000708576200070762000602565b5b5062000778565b5060208310610133831016604e8410600b8410161715620007495782820a90508381111562000743576200074262000602565b5b62000778565b6200075884848460016200063b565b9250905081840481111562000772576200077162000602565b5b81810290505b9392505050565b5f819050919050565b5f62000794826200077f565b9150620007a1836200077f565b9250620007d07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000695565b905092915050565b5f620007e4826200077f565b9150620007f1836200077f565b925082820262000801816200077f565b915082820484148315176200081b576200081a62000602565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200084d8262000822565b9050919050565b6200085f8162000841565b82525050565b5f6020820190506200087a5f83018462000854565b92915050565b6200088b816200077f565b82525050565b5f606082019050620008a65f83018662000854565b620008b5602083018562000880565b620008c4604083018462000880565b949350505050565b5f602082019050620008e15f83018462000880565b92915050565b60805160a05160c05160e051612bf0620009765f395f818161094701528181610a4601528181610b9201528181610cee0152818161120101528181611588015281816117020152818161172c01528181611b3701528181611cd701528181611efc0152611f6a01525f8181610bba0152610d6201525f8181610fc401526116aa01525f6108fc0152612bf05ff3fe6080604052600436106101e5575f3560e01c806370a0823111610101578063da7003d411610094578063e2a71ef811610063578063e2a71ef8146106df578063e5f8091d14610709578063e751d50814610733578063f2fde38b1461075d57610253565b8063da7003d414610639578063dcab42b614610663578063dd62ed3e1461068d578063e0dca26e146106c957610253565b806395d89b41116100d057806395d89b4114610593578063a4e67f18146105bd578063a9059cbb146105e7578063c9567bf91461062357610253565b806370a0823114610501578063715018a61461053d57806376faf2ab146105535780638da5cb5b1461056957610253565b80632893266f116101795780634738a883116101485780634738a8831461046f5780634fd23e91146104855780635962a941146104af57806364ef317f146104d957610253565b80632893266f146103cb5780632e1a7d4d146103f5578063313ce5671461041d578063315a095d1461044757610253565b8063095ea7b3116101b5578063095ea7b3146102ff57806318160ddd1461033b57806323b872dd1461036557806326064376146103a157610253565b80620e7fa814610257578063026240ce14610281578063061dfbc9146102ab57806306fdde03146102d557610253565b36610253575f3390505f349050600560019054906101000a900460ff1680156102415750610211610785565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156102515761025082826107ac565b5b005b5f80fd5b348015610262575f80fd5b5061026b610ab7565b604051610278919061221e565b60405180910390f35b34801561028c575f80fd5b50610295610abd565b6040516102a2919061221e565b60405180910390f35b3480156102b6575f80fd5b506102bf610ac3565b6040516102cc9190612276565b60405180910390f35b3480156102e0575f80fd5b506102e9610ae8565b6040516102f69190612319565b60405180910390f35b34801561030a575f80fd5b50610325600480360381019061032091906123a2565b610b25565b60405161033291906123fa565b60405180910390f35b348015610346575f80fd5b5061034f610b47565b60405161035c919061221e565b60405180910390f35b348015610370575f80fd5b5061038b60048036038101906103869190612413565b610b50565b60405161039891906123fa565b60405180910390f35b3480156103ac575f80fd5b506103b5610c0c565b6040516103c291906123fa565b60405180910390f35b3480156103d6575f80fd5b506103df610c1f565b6040516103ec91906123fa565b60405180910390f35b348015610400575f80fd5b5061041b60048036038101906104169190612463565b610c32565b005b348015610428575f80fd5b50610431610c88565b60405161043e91906124a9565b60405180910390f35b348015610452575f80fd5b5061046d60048036038101906104689190612463565b610c90565b005b34801561047a575f80fd5b50610483610d21565b005b348015610490575f80fd5b50610499610d60565b6040516104a6919061221e565b60405180910390f35b3480156104ba575f80fd5b506104c3610d84565b6040516104d0919061221e565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa91906124c2565b610d8a565b005b34801561050c575f80fd5b5061052760048036038101906105229190612500565b610e7b565b604051610534919061221e565b60405180910390f35b348015610548575f80fd5b50610551610ec1565b005b34801561055e575f80fd5b50610567610ed4565b005b348015610574575f80fd5b5061057d610785565b60405161058a919061253a565b60405180910390f35b34801561059e575f80fd5b506105a7610ef8565b6040516105b49190612319565b60405180910390f35b3480156105c8575f80fd5b506105d1610f35565b6040516105de91906123fa565b60405180910390f35b3480156105f2575f80fd5b5061060d600480360381019061060891906123a2565b610f47565b60405161061a91906123fa565b60405180910390f35b34801561062e575f80fd5b50610637610f9e565b005b348015610644575f80fd5b5061064d610fc2565b60405161065a919061221e565b60405180910390f35b34801561066e575f80fd5b50610677610fe6565b6040516106849190612276565b60405180910390f35b348015610698575f80fd5b506106b360048036038101906106ae9190612553565b61100b565b6040516106c0919061221e565b60405180910390f35b3480156106d4575f80fd5b506106dd61108d565b005b3480156106ea575f80fd5b506106f36110e7565b60405161070091906123fa565b60405180910390f35b348015610714575f80fd5b5061071d6110fa565b60405161072a9190612276565b60405180910390f35b34801561073e575f80fd5b50610747611120565b604051610754919061221e565b60405180910390f35b348015610768575f80fd5b50610783600480360381019061077e9190612500565b611125565b005b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5f9054906101000a900460ff16156107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f2906125db565b60405180910390fd5b6001600a5f6101000a81548160ff021916908315150217905550600560019054906101000a900460ff16610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90612643565b60405180910390fd5b6611c37937e080008110156108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a5906126d1565b60405180910390fd5b670de0b6b3a76400008111156108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f09061275f565b60405180910390fd5b5f7f0000000000000000000000000000000000000000000000000000000000000000600a61092791906128d9565b600954836109359190612950565b61093f9190612980565b90508061096b7f0000000000000000000000000000000000000000000000000000000000000000610e7b565b10156109ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a390612a31565b60405180910390fd5b6109b4610785565b73ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156109f6573d5f803e3d5ffd5b505f610a0284836111a9565b610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890612a99565b60405180910390fd5b610a6c7f00000000000000000000000000000000000000000000000000000000000000008584610b50565b90508015610a8d578160085f828254610a859190612ab7565b925050819055505b610a97845f6111a9565b5050505f600a5f6101000a81548160ff0219169083151502179055505050565b60095481565b60035481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600981526020017f4c75636b794d656d650000000000000000000000000000000000000000000000815250905090565b5f80610b2f611232565b9050610b3c818585611239565b600191505092915050565b5f600454905090565b5f80610b5a611232565b90505f600560036101000a81548160ff021916908315150217905550610b81858285611400565b610b8c858585611491565b5f610bb67f0000000000000000000000000000000000000000000000000000000000000000610e7b565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610bff5760055f9054906101000a900460ff1615610bfe57610bfc6116f0565b505b5b6001925050509392505050565b600560039054906101000a900460ff1681565b600560029054906101000a900460ff1681565b610c3a6118a3565b610c42610785565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610c84573d5f803e3d5ffd5b5050565b5f6012905090565b610c986118a3565b5f610caa610ca4610785565b836111a9565b610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090612a99565b60405180910390fd5b610d1b7f0000000000000000000000000000000000000000000000000000000000000000610d15610785565b84610b50565b90505050565b610d296118a3565b5f600560016101000a81548160ff0219169083151502179055506001600560026101000a81548160ff021916908315150217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085481565b610d926118a3565b5f8203610ddf5780600560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e77565b60018203610e2c578060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e76565b60028203610e75578060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ec96118a3565b610ed25f61192a565b565b610edc6118a3565b5f600560026101000a81548160ff021916908315150217905550565b60606040518060400160405280600381526020017f4c4d450000000000000000000000000000000000000000000000000000000000815250905090565b60055f9054906101000a900460ff1681565b5f80610f51611232565b90506001600560036101000a81548160ff021916908315150217905550610f79818585611491565b5f600560036101000a81548160ff021916908315150217905550600191505092915050565b610fa66118a3565b600160055f6101000a81548160ff021916908315150217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110956118a3565b600560039054906101000a900460ff16156110c9575f600560036101000a81548160ff0219169083151502179055506110e5565b6001600560036101000a81548160ff0219169083151502179055505b565b600560019054906101000a900460ff1681565b600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600481565b61112d6118a3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361119d575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611194919061253a565b60405180910390fd5b6111a68161192a565b50565b5f600560019054906101000a900460ff16806111f757506111c8610785565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611228576112277f00000000000000000000000000000000000000000000000000000000000000008484611239565b5b6001905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a9575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016112a0919061253a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611319575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611310919061253a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113f3919061221e565b60405180910390a3505050565b5f61140b848461100b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461148b578181101561147d578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161147493929190612aea565b60405180910390fd5b61148a8484848403611239565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611501575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114f8919061253a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611571575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611568919061253a565b60405180910390fd5b60055f9054906101000a900460ff16806115ee57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115ed5750600560019054906101000a900460ff165b5b8061162b57506115fc610785565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806116685750611639610785565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90612b69565b60405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000008211156116d957600a90506116de565b600190505b6116ea848484846119eb565b50505050565b5f8061011390505f60af90505f6117267f0000000000000000000000000000000000000000000000000000000000000000610e7b565b90505f807f000000000000000000000000000000000000000000000000000000000000000090505f806003540361179c576103e886856117669190612980565b6117709190612950565b9250600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611860565b6001600354036117ea576103e886856117b59190612980565b6117bf9190612950565b925060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061185f565b600260035403611838576103e886856118039190612980565b61180d9190612950565b925060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061185e565b6103e885856118479190612980565b6118519190612950565b925061185b610785565b90505b5b5b600160035f8282546118729190612ab7565b9250508190555060046003541061188b575f6003819055505b611896828285611491565b6001965050505050505090565b6118ab611232565b73ffffffffffffffffffffffffffffffffffffffff166118c9610785565b73ffffffffffffffffffffffffffffffffffffffff1614611928576118ec611232565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161191f919061253a565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6119f3610785565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a7c5750600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad5575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b2e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d5b57611b93610785565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c1c5750600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c75575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cce575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d2657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d4a575f611d37858484611d6d565b9050611d44858583611ffb565b50611d56565b611d55848484611ffb565b5b611d67565b611d66848484611ffb565b5b50505050565b5f80600560039054906101000a900460ff1680611d965750600560019054906101000a900460ff165b15611da3575f9050611e19565b600560029054906101000a900460ff1615611df0576103e8846004611dc89190612980565b84600a611dd59190612980565b611ddf9190612980565b611de99190612950565b9050611e18565b6103e8846004611e009190612980565b84611e0b9190612980565b611e159190612950565b90505b5b5f8185611e269190612b87565b90505f60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611eb2578681846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611ea993929190612aea565b60405180910390fd5b82810360015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260015f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f831115611fee577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fe5919061221e565b60405180910390a35b8193505050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361203a578060048190555061210a565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120c4578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016120bb93929190612aea565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612151578060045f828254039250508190555061219c565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f9919061221e565b60405180910390a3505050565b5f819050919050565b61221881612206565b82525050565b5f6020820190506122315f83018461220f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61226082612237565b9050919050565b61227081612256565b82525050565b5f6020820190506122895f830184612267565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122c65780820151818401526020810190506122ab565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122eb8261228f565b6122f58185612299565b93506123058185602086016122a9565b61230e816122d1565b840191505092915050565b5f6020820190508181035f83015261233181846122e1565b905092915050565b5f80fd5b5f61234782612237565b9050919050565b6123578161233d565b8114612361575f80fd5b50565b5f813590506123728161234e565b92915050565b61238181612206565b811461238b575f80fd5b50565b5f8135905061239c81612378565b92915050565b5f80604083850312156123b8576123b7612339565b5b5f6123c585828601612364565b92505060206123d68582860161238e565b9150509250929050565b5f8115159050919050565b6123f4816123e0565b82525050565b5f60208201905061240d5f8301846123eb565b92915050565b5f805f6060848603121561242a57612429612339565b5b5f61243786828701612364565b935050602061244886828701612364565b92505060406124598682870161238e565b9150509250925092565b5f6020828403121561247857612477612339565b5b5f6124858482850161238e565b91505092915050565b5f60ff82169050919050565b6124a38161248e565b82525050565b5f6020820190506124bc5f83018461249a565b92915050565b5f80604083850312156124d8576124d7612339565b5b5f6124e58582860161238e565b92505060206124f685828601612364565b9150509250929050565b5f6020828403121561251557612514612339565b5b5f61252284828501612364565b91505092915050565b6125348161233d565b82525050565b5f60208201905061254d5f83018461252b565b92915050565b5f806040838503121561256957612568612339565b5b5f61257685828601612364565b925050602061258785828601612364565b9150509250929050565b7f4e6f207265656e7472616e637920616c6c6f77656400000000000000000000005f82015250565b5f6125c5601583612299565b91506125d082612591565b602082019050919050565b5f6020820190508181035f8301526125f2816125b9565b9050919050565b7f50726573616c65206973206f76657200000000000000000000000000000000005f82015250565b5f61262d600f83612299565b9150612638826125f9565b602082019050919050565b5f6020820190508181035f83015261265a81612621565b9050919050565b7f45544820616d6f756e74206d7573742062652067726561746572207468616e205f8201527f302e303035204554480000000000000000000000000000000000000000000000602082015250565b5f6126bb602983612299565b91506126c682612661565b604082019050919050565b5f6020820190508181035f8301526126e8816126af565b9050919050565b7f45544820616d6f756e74206d757374206265206c657373207468616e203120455f8201527f5448000000000000000000000000000000000000000000000000000000000000602082015250565b5f612749602283612299565b9150612754826126ef565b604082019050919050565b5f6020820190508181035f8301526127768161273d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127ff578086048111156127db576127da61277d565b5b60018516156127ea5780820291505b80810290506127f8856127aa565b94506127bf565b94509492505050565b5f8261281757600190506128d2565b81612824575f90506128d2565b816001811461283a576002811461284457612873565b60019150506128d2565b60ff8411156128565761285561277d565b5b8360020a91508482111561286d5761286c61277d565b5b506128d2565b5060208310610133831016604e8410600b84101617156128a85782820a9050838111156128a3576128a261277d565b5b6128d2565b6128b584848460016127b6565b925090508184048111156128cc576128cb61277d565b5b81810290505b9392505050565b5f6128e382612206565b91506128ee83612206565b925061291b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612808565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61295a82612206565b915061296583612206565b92508261297557612974612923565b5b828204905092915050565b5f61298a82612206565b915061299583612206565b92508282026129a381612206565b915082820484148315176129ba576129b961277d565b5b5092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520746f20636f5f8201527f6d706c65746520746865207472616e73616374696f6e00000000000000000000602082015250565b5f612a1b603683612299565b9150612a26826129c1565b604082019050919050565b5f6020820190508181035f830152612a4881612a0f565b9050919050565b7f416c6c6f77616e6365206e6f7420617070726f766564000000000000000000005f82015250565b5f612a83601683612299565b9150612a8e82612a4f565b602082019050919050565b5f6020820190508181035f830152612ab081612a77565b9050919050565b5f612ac182612206565b9150612acc83612206565b9250828201905080821115612ae457612ae361277d565b5b92915050565b5f606082019050612afd5f83018661252b565b612b0a602083018561220f565b612b17604083018461220f565b949350505050565b7f43616e6e6f74207472616e73616374206e6f77000000000000000000000000005f82015250565b5f612b53601383612299565b9150612b5e82612b1f565b602082019050919050565b5f6020820190508181035f830152612b8081612b47565b9050919050565b5f612b9182612206565b9150612b9c83612206565b9250828203905081811115612bb457612bb361277d565b5b9291505056fea26469706673582212206f95a702394648d5cf1bc89e3b57f6d0f2e8688d24910d32d492682d619f665d64736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101e5575f3560e01c806370a0823111610101578063da7003d411610094578063e2a71ef811610063578063e2a71ef8146106df578063e5f8091d14610709578063e751d50814610733578063f2fde38b1461075d57610253565b8063da7003d414610639578063dcab42b614610663578063dd62ed3e1461068d578063e0dca26e146106c957610253565b806395d89b41116100d057806395d89b4114610593578063a4e67f18146105bd578063a9059cbb146105e7578063c9567bf91461062357610253565b806370a0823114610501578063715018a61461053d57806376faf2ab146105535780638da5cb5b1461056957610253565b80632893266f116101795780634738a883116101485780634738a8831461046f5780634fd23e91146104855780635962a941146104af57806364ef317f146104d957610253565b80632893266f146103cb5780632e1a7d4d146103f5578063313ce5671461041d578063315a095d1461044757610253565b8063095ea7b3116101b5578063095ea7b3146102ff57806318160ddd1461033b57806323b872dd1461036557806326064376146103a157610253565b80620e7fa814610257578063026240ce14610281578063061dfbc9146102ab57806306fdde03146102d557610253565b36610253575f3390505f349050600560019054906101000a900460ff1680156102415750610211610785565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156102515761025082826107ac565b5b005b5f80fd5b348015610262575f80fd5b5061026b610ab7565b604051610278919061221e565b60405180910390f35b34801561028c575f80fd5b50610295610abd565b6040516102a2919061221e565b60405180910390f35b3480156102b6575f80fd5b506102bf610ac3565b6040516102cc9190612276565b60405180910390f35b3480156102e0575f80fd5b506102e9610ae8565b6040516102f69190612319565b60405180910390f35b34801561030a575f80fd5b50610325600480360381019061032091906123a2565b610b25565b60405161033291906123fa565b60405180910390f35b348015610346575f80fd5b5061034f610b47565b60405161035c919061221e565b60405180910390f35b348015610370575f80fd5b5061038b60048036038101906103869190612413565b610b50565b60405161039891906123fa565b60405180910390f35b3480156103ac575f80fd5b506103b5610c0c565b6040516103c291906123fa565b60405180910390f35b3480156103d6575f80fd5b506103df610c1f565b6040516103ec91906123fa565b60405180910390f35b348015610400575f80fd5b5061041b60048036038101906104169190612463565b610c32565b005b348015610428575f80fd5b50610431610c88565b60405161043e91906124a9565b60405180910390f35b348015610452575f80fd5b5061046d60048036038101906104689190612463565b610c90565b005b34801561047a575f80fd5b50610483610d21565b005b348015610490575f80fd5b50610499610d60565b6040516104a6919061221e565b60405180910390f35b3480156104ba575f80fd5b506104c3610d84565b6040516104d0919061221e565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa91906124c2565b610d8a565b005b34801561050c575f80fd5b5061052760048036038101906105229190612500565b610e7b565b604051610534919061221e565b60405180910390f35b348015610548575f80fd5b50610551610ec1565b005b34801561055e575f80fd5b50610567610ed4565b005b348015610574575f80fd5b5061057d610785565b60405161058a919061253a565b60405180910390f35b34801561059e575f80fd5b506105a7610ef8565b6040516105b49190612319565b60405180910390f35b3480156105c8575f80fd5b506105d1610f35565b6040516105de91906123fa565b60405180910390f35b3480156105f2575f80fd5b5061060d600480360381019061060891906123a2565b610f47565b60405161061a91906123fa565b60405180910390f35b34801561062e575f80fd5b50610637610f9e565b005b348015610644575f80fd5b5061064d610fc2565b60405161065a919061221e565b60405180910390f35b34801561066e575f80fd5b50610677610fe6565b6040516106849190612276565b60405180910390f35b348015610698575f80fd5b506106b360048036038101906106ae9190612553565b61100b565b6040516106c0919061221e565b60405180910390f35b3480156106d4575f80fd5b506106dd61108d565b005b3480156106ea575f80fd5b506106f36110e7565b60405161070091906123fa565b60405180910390f35b348015610714575f80fd5b5061071d6110fa565b60405161072a9190612276565b60405180910390f35b34801561073e575f80fd5b50610747611120565b604051610754919061221e565b60405180910390f35b348015610768575f80fd5b50610783600480360381019061077e9190612500565b611125565b005b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5f9054906101000a900460ff16156107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f2906125db565b60405180910390fd5b6001600a5f6101000a81548160ff021916908315150217905550600560019054906101000a900460ff16610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90612643565b60405180910390fd5b6611c37937e080008110156108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a5906126d1565b60405180910390fd5b670de0b6b3a76400008111156108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f09061275f565b60405180910390fd5b5f7f0000000000000000000000000000000000000000000000000000000000000012600a61092791906128d9565b600954836109359190612950565b61093f9190612980565b90508061096b7f0000000000000000000000004a8826988296843b2132cd4efb21294b01553987610e7b565b10156109ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a390612a31565b60405180910390fd5b6109b4610785565b73ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156109f6573d5f803e3d5ffd5b505f610a0284836111a9565b610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890612a99565b60405180910390fd5b610a6c7f0000000000000000000000004a8826988296843b2132cd4efb21294b015539878584610b50565b90508015610a8d578160085f828254610a859190612ab7565b925050819055505b610a97845f6111a9565b5050505f600a5f6101000a81548160ff0219169083151502179055505050565b60095481565b60035481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600981526020017f4c75636b794d656d650000000000000000000000000000000000000000000000815250905090565b5f80610b2f611232565b9050610b3c818585611239565b600191505092915050565b5f600454905090565b5f80610b5a611232565b90505f600560036101000a81548160ff021916908315150217905550610b81858285611400565b610b8c858585611491565b5f610bb67f0000000000000000000000004a8826988296843b2132cd4efb21294b01553987610e7b565b90507f00000000000000000000000000000000000000000000152d02c7e14af6800000811115610bff5760055f9054906101000a900460ff1615610bfe57610bfc6116f0565b505b5b6001925050509392505050565b600560039054906101000a900460ff1681565b600560029054906101000a900460ff1681565b610c3a6118a3565b610c42610785565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610c84573d5f803e3d5ffd5b5050565b5f6012905090565b610c986118a3565b5f610caa610ca4610785565b836111a9565b610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090612a99565b60405180910390fd5b610d1b7f0000000000000000000000004a8826988296843b2132cd4efb21294b01553987610d15610785565b84610b50565b90505050565b610d296118a3565b5f600560016101000a81548160ff0219169083151502179055506001600560026101000a81548160ff021916908315150217905550565b7f00000000000000000000000000000000000000000000152d02c7e14af680000081565b60085481565b610d926118a3565b5f8203610ddf5780600560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e77565b60018203610e2c578060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e76565b60028203610e75578060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ec96118a3565b610ed25f61192a565b565b610edc6118a3565b5f600560026101000a81548160ff021916908315150217905550565b60606040518060400160405280600381526020017f4c4d450000000000000000000000000000000000000000000000000000000000815250905090565b60055f9054906101000a900460ff1681565b5f80610f51611232565b90506001600560036101000a81548160ff021916908315150217905550610f79818585611491565b5f600560036101000a81548160ff021916908315150217905550600191505092915050565b610fa66118a3565b600160055f6101000a81548160ff021916908315150217905550565b7f000000000000000000000000000000000000000000084595161401484a00000081565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110956118a3565b600560039054906101000a900460ff16156110c9575f600560036101000a81548160ff0219169083151502179055506110e5565b6001600560036101000a81548160ff0219169083151502179055505b565b600560019054906101000a900460ff1681565b600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600481565b61112d6118a3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361119d575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611194919061253a565b60405180910390fd5b6111a68161192a565b50565b5f600560019054906101000a900460ff16806111f757506111c8610785565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611228576112277f0000000000000000000000004a8826988296843b2132cd4efb21294b015539878484611239565b5b6001905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a9575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016112a0919061253a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611319575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611310919061253a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113f3919061221e565b60405180910390a3505050565b5f61140b848461100b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461148b578181101561147d578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161147493929190612aea565b60405180910390fd5b61148a8484848403611239565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611501575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114f8919061253a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611571575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611568919061253a565b60405180910390fd5b60055f9054906101000a900460ff16806115ee57507f0000000000000000000000004a8826988296843b2132cd4efb21294b0155398773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115ed5750600560019054906101000a900460ff165b5b8061162b57506115fc610785565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806116685750611639610785565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90612b69565b60405180910390fd5b5f7f000000000000000000000000000000000000000000084595161401484a0000008211156116d957600a90506116de565b600190505b6116ea848484846119eb565b50505050565b5f8061011390505f60af90505f6117267f0000000000000000000000004a8826988296843b2132cd4efb21294b01553987610e7b565b90505f807f0000000000000000000000004a8826988296843b2132cd4efb21294b0155398790505f806003540361179c576103e886856117669190612980565b6117709190612950565b9250600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611860565b6001600354036117ea576103e886856117b59190612980565b6117bf9190612950565b925060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061185f565b600260035403611838576103e886856118039190612980565b61180d9190612950565b925060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061185e565b6103e885856118479190612980565b6118519190612950565b925061185b610785565b90505b5b5b600160035f8282546118729190612ab7565b9250508190555060046003541061188b575f6003819055505b611896828285611491565b6001965050505050505090565b6118ab611232565b73ffffffffffffffffffffffffffffffffffffffff166118c9610785565b73ffffffffffffffffffffffffffffffffffffffff1614611928576118ec611232565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161191f919061253a565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6119f3610785565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a7c5750600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ad5575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b2e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8657507f0000000000000000000000004a8826988296843b2132cd4efb21294b0155398773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d5b57611b93610785565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c1c5750600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c75575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cce575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d2657507f0000000000000000000000004a8826988296843b2132cd4efb21294b0155398773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d4a575f611d37858484611d6d565b9050611d44858583611ffb565b50611d56565b611d55848484611ffb565b5b611d67565b611d66848484611ffb565b5b50505050565b5f80600560039054906101000a900460ff1680611d965750600560019054906101000a900460ff165b15611da3575f9050611e19565b600560029054906101000a900460ff1615611df0576103e8846004611dc89190612980565b84600a611dd59190612980565b611ddf9190612980565b611de99190612950565b9050611e18565b6103e8846004611e009190612980565b84611e0b9190612980565b611e159190612950565b90505b5b5f8185611e269190612b87565b90505f60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611eb2578681846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611ea993929190612aea565b60405180910390fd5b82810360015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260015f7f0000000000000000000000004a8826988296843b2132cd4efb21294b0155398773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f831115611fee577f0000000000000000000000004a8826988296843b2132cd4efb21294b0155398773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fe5919061221e565b60405180910390a35b8193505050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361203a578060048190555061210a565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120c4578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016120bb93929190612aea565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612151578060045f828254039250508190555061219c565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f9919061221e565b60405180910390a3505050565b5f819050919050565b61221881612206565b82525050565b5f6020820190506122315f83018461220f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61226082612237565b9050919050565b61227081612256565b82525050565b5f6020820190506122895f830184612267565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122c65780820151818401526020810190506122ab565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122eb8261228f565b6122f58185612299565b93506123058185602086016122a9565b61230e816122d1565b840191505092915050565b5f6020820190508181035f83015261233181846122e1565b905092915050565b5f80fd5b5f61234782612237565b9050919050565b6123578161233d565b8114612361575f80fd5b50565b5f813590506123728161234e565b92915050565b61238181612206565b811461238b575f80fd5b50565b5f8135905061239c81612378565b92915050565b5f80604083850312156123b8576123b7612339565b5b5f6123c585828601612364565b92505060206123d68582860161238e565b9150509250929050565b5f8115159050919050565b6123f4816123e0565b82525050565b5f60208201905061240d5f8301846123eb565b92915050565b5f805f6060848603121561242a57612429612339565b5b5f61243786828701612364565b935050602061244886828701612364565b92505060406124598682870161238e565b9150509250925092565b5f6020828403121561247857612477612339565b5b5f6124858482850161238e565b91505092915050565b5f60ff82169050919050565b6124a38161248e565b82525050565b5f6020820190506124bc5f83018461249a565b92915050565b5f80604083850312156124d8576124d7612339565b5b5f6124e58582860161238e565b92505060206124f685828601612364565b9150509250929050565b5f6020828403121561251557612514612339565b5b5f61252284828501612364565b91505092915050565b6125348161233d565b82525050565b5f60208201905061254d5f83018461252b565b92915050565b5f806040838503121561256957612568612339565b5b5f61257685828601612364565b925050602061258785828601612364565b9150509250929050565b7f4e6f207265656e7472616e637920616c6c6f77656400000000000000000000005f82015250565b5f6125c5601583612299565b91506125d082612591565b602082019050919050565b5f6020820190508181035f8301526125f2816125b9565b9050919050565b7f50726573616c65206973206f76657200000000000000000000000000000000005f82015250565b5f61262d600f83612299565b9150612638826125f9565b602082019050919050565b5f6020820190508181035f83015261265a81612621565b9050919050565b7f45544820616d6f756e74206d7573742062652067726561746572207468616e205f8201527f302e303035204554480000000000000000000000000000000000000000000000602082015250565b5f6126bb602983612299565b91506126c682612661565b604082019050919050565b5f6020820190508181035f8301526126e8816126af565b9050919050565b7f45544820616d6f756e74206d757374206265206c657373207468616e203120455f8201527f5448000000000000000000000000000000000000000000000000000000000000602082015250565b5f612749602283612299565b9150612754826126ef565b604082019050919050565b5f6020820190508181035f8301526127768161273d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127ff578086048111156127db576127da61277d565b5b60018516156127ea5780820291505b80810290506127f8856127aa565b94506127bf565b94509492505050565b5f8261281757600190506128d2565b81612824575f90506128d2565b816001811461283a576002811461284457612873565b60019150506128d2565b60ff8411156128565761285561277d565b5b8360020a91508482111561286d5761286c61277d565b5b506128d2565b5060208310610133831016604e8410600b84101617156128a85782820a9050838111156128a3576128a261277d565b5b6128d2565b6128b584848460016127b6565b925090508184048111156128cc576128cb61277d565b5b81810290505b9392505050565b5f6128e382612206565b91506128ee83612206565b925061291b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612808565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61295a82612206565b915061296583612206565b92508261297557612974612923565b5b828204905092915050565b5f61298a82612206565b915061299583612206565b92508282026129a381612206565b915082820484148315176129ba576129b961277d565b5b5092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520746f20636f5f8201527f6d706c65746520746865207472616e73616374696f6e00000000000000000000602082015250565b5f612a1b603683612299565b9150612a26826129c1565b604082019050919050565b5f6020820190508181035f830152612a4881612a0f565b9050919050565b7f416c6c6f77616e6365206e6f7420617070726f766564000000000000000000005f82015250565b5f612a83601683612299565b9150612a8e82612a4f565b602082019050919050565b5f6020820190508181035f830152612ab081612a77565b9050919050565b5f612ac182612206565b9150612acc83612206565b9250828201905080821115612ae457612ae361277d565b5b92915050565b5f606082019050612afd5f83018661252b565b612b0a602083018561220f565b612b17604083018461220f565b949350505050565b7f43616e6e6f74207472616e73616374206e6f77000000000000000000000000005f82015250565b5f612b53601383612299565b9150612b5e82612b1f565b602082019050919050565b5f6020820190508181035f830152612b8081612b47565b9050919050565b5f612b9182612206565b9150612b9c83612206565b9250828203905081811115612bb457612bb361277d565b5b9291505056fea26469706673582212206f95a702394648d5cf1bc89e3b57f6d0f2e8688d24910d32d492682d619f665d64736f6c63430008180033
Loading...
Loading
Loading...
Loading
OVERVIEW
In the ever-changing landscape of meme coins, a unique project arises, consolidating investments to ride trends effortlessly, while incentivizing trading for enhanced rewards and offering accessible prizes.Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.