ETH Price: $3,352.96 (-0.96%)
Gas: 4.09 Gwei

Token

GramSlams (GSlam)
 

Overview

Max Total Supply

1,000,000,000 GSlam

Holders

154

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
37,607.751595693181697809 GSlam

Value
$0.00
0x78af026fbe158e0518a580c08fb04f475a8df9f6
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GramSlams

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-20
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) 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 `amount` 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 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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);
}

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IUniswapV2Router {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @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 {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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 {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _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);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() external view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @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 value {ERC20} uses, unless this function is
     * 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 override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` 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 amount
    ) external virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * 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 `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) external virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) external virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }
}

contract GramSlams is ERC20, Ownable {

    // Address List

    address public _rewardWallet = 0xa6C537A2544685424924a9CA56175a2d363A3317;
    address public _marketingWallet = 0xc1392F86fF5d39D7A69Cdc583065F4836bED42a3;

    // Tax System

    uint256 public _feeBuyTotal = 3;

    uint256 public _feeBuyReward = 2;
    uint256 public _feeBuyMK = 1;


    uint256 public _feeSellTotal = 3;

    uint256 public _feeSellReward = 2;
    uint256 public _feeSellMK = 1;


    // Max LP Token

    uint256 public _maxTokens = 100 * 10 ** decimals();

    // Temp storage

    uint256 private _tempReward = 0;
    uint256 private _tempMK = 0;


    // Uniswap 

    IUniswapV2Router public   swapRouter;
    address public swapPair;

    enum Flag {
        None,
        Sell,
        Buy
    }

    constructor() ERC20("GramSlams", "GSlam") {
        uint256 startSupply = 1e9 * 10 ** decimals();
        _mint(msg.sender, (startSupply));

        IUniswapV2Router _uniswapRouter = IUniswapV2Router(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        swapPair = IUniswapV2Factory(_uniswapRouter.factory())
            .createPair(address(this), _uniswapRouter.WETH());

        swapRouter = _uniswapRouter;
        
        _approve(msg.sender, address(swapRouter), type(uint256).max);
        _approve(address(this), address(swapRouter), type(uint256).max);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        uint256 taxAmount = 0;
        Flag flag = Flag.None;

        if (to == swapPair) {
            taxAmount = amount * _feeSellTotal / 100;
            flag = Flag.Sell;
        } else if (from == swapPair) {
            taxAmount = amount * _feeBuyTotal / 100;
            flag = Flag.Buy;
        }

        super._transfer(from, to, amount - taxAmount);
        
        if (taxAmount > 0) {
            if(flag == Flag.Sell){
                _tempMK += taxAmount * _feeSellMK / _feeSellTotal;
                _tempReward += taxAmount * _feeSellReward / _feeSellTotal;
            }
            else{
                
                _tempMK += taxAmount * _feeBuyMK / _feeBuyTotal;
                _tempReward += taxAmount * _feeBuyReward / _feeBuyTotal;
            }
            super._transfer(from, address(this), taxAmount);
        }

        
    }

    // Private Functions

    function _swapAndLiquify() private {
        
        _swapTokensForEth(_tempReward / 2);
        uint256 balance = address(this).balance;
        
        _addLiquidity(
            _tempReward / 2,
            balance
        );

        super._transfer(address(this), _rewardWallet, _tempReward);
        super._transfer(address(this), _marketingWallet, _tempMK);
        
        
        _tempMK = 0;
        _tempReward = 0;
    }

    function _swapTokensForEth(uint256 tokenAmount) private  {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            (block.timestamp)
        );
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ethAmount
    ) private {
        swapRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    // Owner Functions

    function setRewardWallet(address newWallet) external onlyOwner {
        _rewardWallet = newWallet;
    }

    function setMarketingWallet(address newWallet) external onlyOwner {
        _marketingWallet = newWallet;
    }

    function setMinTokens(uint256 newValue) external onlyOwner {
        _maxTokens = newValue * 10 ** decimals();
    }

    function editBuyFees(
        uint256 __feeBuyReward,
        uint256 __feeBuyMK
        
    ) external onlyOwner {
        _feeBuyReward = __feeBuyReward;
        _feeBuyMK = __feeBuyMK;
        _feeBuyTotal = __feeBuyReward + __feeBuyMK;
    }

    function editSellFees(
        uint256 __feeSellReward,
        uint256 __feeSellMK
        
    ) external onlyOwner {
        _feeSellReward = __feeSellReward;
        _feeSellMK = __feeSellMK;
        _feeSellTotal = __feeSellReward + __feeSellMK;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_feeBuyMK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeBuyReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeBuyTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeSellMK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeSellReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeSellTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__feeBuyReward","type":"uint256"},{"internalType":"uint256","name":"__feeBuyMK","type":"uint256"}],"name":"editBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__feeSellReward","type":"uint256"},{"internalType":"uint256","name":"__feeSellMK","type":"uint256"}],"name":"editSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"nonpayable","type":"function"}]

6080604052600680546001600160a01b031990811673a6c537a2544685424924a9ca56175a2d363a3317179091556007805490911673c1392f86ff5d39d7a69cdc583065f4836bed42a317905560036008819055600260098190556001600a819055600b92909255600c55600d5562000076601290565b6200008390600a62000660565b6200009090606462000677565b600e555f600f555f601055348015620000a7575f80fd5b50604051806040016040528060098152602001684772616d536c616d7360b81b8152506040518060400160405280600581526020016447536c616d60d81b8152508160039081620000f9919062000731565b50600462000108828262000731565b505050620001256200011f6200031060201b60201c565b62000314565b5f620001346012600a62000660565b6200014490633b9aca0062000677565b905062000152338262000365565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cd9190620007f9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000219573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023f9190620007f9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200028a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b09190620007f9565b601280546001600160a01b039283166001600160a01b031991821617909155601180549284169290911682179055620002ed9033905f196200042a565b601154620003089030906001600160a01b03165f196200042a565b505062000837565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003c15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f828254620003d4919062000821565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383166200048e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620003b8565b6001600160a01b038216620004f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003b8565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005a557815f190482111562000589576200058962000551565b808516156200059757918102915b93841c93908002906200056a565b509250929050565b5f82620005bd575060016200065a565b81620005cb57505f6200065a565b8160018114620005e45760028114620005ef576200060f565b60019150506200065a565b60ff84111562000603576200060362000551565b50506001821b6200065a565b5060208310610133831016604e8410600b841016171562000634575081810a6200065a565b62000640838362000565565b805f190482111562000656576200065662000551565b0290505b92915050565b5f6200067060ff841683620005ad565b9392505050565b80820281158282048414176200065a576200065a62000551565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620006ba57607f821691505b602082108103620006d957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200072c575f81815260208120601f850160051c81016020861015620007075750805b601f850160051c820191505b81811015620007285782815560010162000713565b5050505b505050565b81516001600160401b038111156200074d576200074d62000691565b62000765816200075e8454620006a5565b84620006df565b602080601f8311600181146200079b575f8415620007835750858301515b5f19600386901b1c1916600185901b17855562000728565b5f85815260208120601f198616915b82811015620007cb57888601518255948401946001909101908401620007aa565b5085821015620007e957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200080a575f80fd5b81516001600160a01b038116811462000670575f80fd5b808201808211156200065a576200065a62000551565b610f8c80620008455f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c8063715018a6116100fe578063a457c2d71161009e578063c31c9c071161006e578063c31c9c07146103ae578063dd62ed3e146103c1578063ed41050c146103d4578063f2fde38b146103e7575f80fd5b8063a457c2d71461036c578063a4f4a7651461037f578063a9059cbb14610392578063bba8c23f146103a5575f80fd5b80638da5cb5b116100d95780638da5cb5b1461033757806395d89b4114610348578063962dfc7514610350578063a21028db14610363575f80fd5b8063715018a61461031357806379fa01191461031b57806388529bad1461032e575f80fd5b8063313ce5671161017457806351492be71161014457806351492be7146102bc5780635958621e146102c55780635d098b38146102d857806370a08231146102eb575f80fd5b8063313ce5671461028857806339509351146102975780634753fa35146102aa578063487c70fc146102b3575f80fd5b80630e7e573f116101af5780630e7e573f1461022d57806318160ddd1461024257806323b872dd1461024a57806326991cc81461025d575f80fd5b806306fdde03146101d5578063095ea7b3146101f357806309f30a0314610216575b5f80fd5b6101dd6103fa565b6040516101ea9190610c5d565b60405180910390f35b610206610201366004610cc3565b61048a565b60405190151581526020016101ea565b61021f600c5481565b6040519081526020016101ea565b61024061023b366004610ceb565b6104a3565b005b60025461021f565b610206610258366004610d02565b6104c7565b601254610270906001600160a01b031681565b6040516001600160a01b0390911681526020016101ea565b604051601281526020016101ea565b6102066102a5366004610cc3565b6104ea565b61021f60095481565b61021f600e5481565b61021f600a5481565b6102406102d3366004610d3b565b61050b565b6102406102e6366004610d3b565b610535565b61021f6102f9366004610d3b565b6001600160a01b03165f9081526020819052604090205490565b61024061055f565b610240610329366004610d5b565b610572565b61021f600b5481565b6005546001600160a01b0316610270565b6101dd610595565b600754610270906001600160a01b031681565b61021f60085481565b61020661037a366004610cc3565b6105a4565b600654610270906001600160a01b031681565b6102066103a0366004610cc3565b610623565b61021f600d5481565b601154610270906001600160a01b031681565b61021f6103cf366004610d7b565b610630565b6102406103e2366004610d5b565b61065a565b6102406103f5366004610d3b565b61067d565b60606003805461040990610dac565b80601f016020809104026020016040519081016040528092919081815260200182805461043590610dac565b80156104805780601f1061045757610100808354040283529160200191610480565b820191905f5260205f20905b81548152906001019060200180831161046357829003601f168201915b5050505050905090565b5f336104978185856106f6565b60019150505b92915050565b6104ab610819565b6104b76012600a610ed8565b6104c19082610ee6565b600e5550565b5f336104d4858285610873565b6104df8585856108eb565b506001949350505050565b5f336104978185856104fc8383610630565b6105069190610efd565b6106f6565b610513610819565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61053d610819565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b610567610819565b6105705f610a69565b565b61057a610819565b600c829055600d81905561058e8183610efd565b600b555050565b60606004805461040990610dac565b5f33816105b18286610630565b9050838110156106165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6104df82868684036106f6565b5f336104978185856108eb565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610662610819565b6009829055600a8190556106768183610efd565b6008555050565b610685610819565b6001600160a01b0381166106ea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b6106f381610a69565b50565b6001600160a01b0383166107585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166107b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146105705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b5f61087e8484610630565b90505f1981146108e557818110156108d85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b6108e584848484036106f6565b50505050565b6012545f9081906001600160a01b039081169085160361092a576064600b54846109159190610ee6565b61091f9190610f10565b915060019050610961565b6012546001600160a01b0390811690861603610961576064600854846109509190610ee6565b61095a9190610f10565b9150600290505b61097585856109708587610f2f565b610aba565b8115610a6257600181600281111561098f5761098f610f42565b036109f857600b54600d546109a49084610ee6565b6109ae9190610f10565b60105f8282546109be9190610efd565b9091555050600b54600c546109d39084610ee6565b6109dd9190610f10565b600f5f8282546109ed9190610efd565b90915550610a579050565b600854600a54610a089084610ee6565b610a129190610f10565b60105f828254610a229190610efd565b9091555050600854600954610a379084610ee6565b610a419190610f10565b600f5f828254610a519190610efd565b90915550505b610a62853084610aba565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316610b1e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610b805760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b0383165f9081526020819052604090205481811015610bf75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f6020808352835180828501525f5b81811015610c8857858101830151858201604001528201610c6c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610cbe575f80fd5b919050565b5f8060408385031215610cd4575f80fd5b610cdd83610ca8565b946020939093013593505050565b5f60208284031215610cfb575f80fd5b5035919050565b5f805f60608486031215610d14575f80fd5b610d1d84610ca8565b9250610d2b60208501610ca8565b9150604084013590509250925092565b5f60208284031215610d4b575f80fd5b610d5482610ca8565b9392505050565b5f8060408385031215610d6c575f80fd5b50508035926020909101359150565b5f8060408385031215610d8c575f80fd5b610d9583610ca8565b9150610da360208401610ca8565b90509250929050565b600181811c90821680610dc057607f821691505b602082108103610dde57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610e3257815f1904821115610e1857610e18610de4565b80851615610e2557918102915b93841c9390800290610dfd565b509250929050565b5f82610e485750600161049d565b81610e5457505f61049d565b8160018114610e6a5760028114610e7457610e90565b600191505061049d565b60ff841115610e8557610e85610de4565b50506001821b61049d565b5060208310610133831016604e8410600b8410161715610eb3575081810a61049d565b610ebd8383610df8565b805f1904821115610ed057610ed0610de4565b029392505050565b5f610d5460ff841683610e3a565b808202811582820484141761049d5761049d610de4565b8082018082111561049d5761049d610de4565b5f82610f2a57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561049d5761049d610de4565b634e487b7160e01b5f52602160045260245ffdfea26469706673582212209035165b6aa008d9d1ba64790e5311c3ea1134fd1ba90f88bfb93fbfc00c59c364736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101d1575f3560e01c8063715018a6116100fe578063a457c2d71161009e578063c31c9c071161006e578063c31c9c07146103ae578063dd62ed3e146103c1578063ed41050c146103d4578063f2fde38b146103e7575f80fd5b8063a457c2d71461036c578063a4f4a7651461037f578063a9059cbb14610392578063bba8c23f146103a5575f80fd5b80638da5cb5b116100d95780638da5cb5b1461033757806395d89b4114610348578063962dfc7514610350578063a21028db14610363575f80fd5b8063715018a61461031357806379fa01191461031b57806388529bad1461032e575f80fd5b8063313ce5671161017457806351492be71161014457806351492be7146102bc5780635958621e146102c55780635d098b38146102d857806370a08231146102eb575f80fd5b8063313ce5671461028857806339509351146102975780634753fa35146102aa578063487c70fc146102b3575f80fd5b80630e7e573f116101af5780630e7e573f1461022d57806318160ddd1461024257806323b872dd1461024a57806326991cc81461025d575f80fd5b806306fdde03146101d5578063095ea7b3146101f357806309f30a0314610216575b5f80fd5b6101dd6103fa565b6040516101ea9190610c5d565b60405180910390f35b610206610201366004610cc3565b61048a565b60405190151581526020016101ea565b61021f600c5481565b6040519081526020016101ea565b61024061023b366004610ceb565b6104a3565b005b60025461021f565b610206610258366004610d02565b6104c7565b601254610270906001600160a01b031681565b6040516001600160a01b0390911681526020016101ea565b604051601281526020016101ea565b6102066102a5366004610cc3565b6104ea565b61021f60095481565b61021f600e5481565b61021f600a5481565b6102406102d3366004610d3b565b61050b565b6102406102e6366004610d3b565b610535565b61021f6102f9366004610d3b565b6001600160a01b03165f9081526020819052604090205490565b61024061055f565b610240610329366004610d5b565b610572565b61021f600b5481565b6005546001600160a01b0316610270565b6101dd610595565b600754610270906001600160a01b031681565b61021f60085481565b61020661037a366004610cc3565b6105a4565b600654610270906001600160a01b031681565b6102066103a0366004610cc3565b610623565b61021f600d5481565b601154610270906001600160a01b031681565b61021f6103cf366004610d7b565b610630565b6102406103e2366004610d5b565b61065a565b6102406103f5366004610d3b565b61067d565b60606003805461040990610dac565b80601f016020809104026020016040519081016040528092919081815260200182805461043590610dac565b80156104805780601f1061045757610100808354040283529160200191610480565b820191905f5260205f20905b81548152906001019060200180831161046357829003601f168201915b5050505050905090565b5f336104978185856106f6565b60019150505b92915050565b6104ab610819565b6104b76012600a610ed8565b6104c19082610ee6565b600e5550565b5f336104d4858285610873565b6104df8585856108eb565b506001949350505050565b5f336104978185856104fc8383610630565b6105069190610efd565b6106f6565b610513610819565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61053d610819565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b610567610819565b6105705f610a69565b565b61057a610819565b600c829055600d81905561058e8183610efd565b600b555050565b60606004805461040990610dac565b5f33816105b18286610630565b9050838110156106165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6104df82868684036106f6565b5f336104978185856108eb565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610662610819565b6009829055600a8190556106768183610efd565b6008555050565b610685610819565b6001600160a01b0381166106ea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b6106f381610a69565b50565b6001600160a01b0383166107585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b0382166107b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146105705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b5f61087e8484610630565b90505f1981146108e557818110156108d85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b6108e584848484036106f6565b50505050565b6012545f9081906001600160a01b039081169085160361092a576064600b54846109159190610ee6565b61091f9190610f10565b915060019050610961565b6012546001600160a01b0390811690861603610961576064600854846109509190610ee6565b61095a9190610f10565b9150600290505b61097585856109708587610f2f565b610aba565b8115610a6257600181600281111561098f5761098f610f42565b036109f857600b54600d546109a49084610ee6565b6109ae9190610f10565b60105f8282546109be9190610efd565b9091555050600b54600c546109d39084610ee6565b6109dd9190610f10565b600f5f8282546109ed9190610efd565b90915550610a579050565b600854600a54610a089084610ee6565b610a129190610f10565b60105f828254610a229190610efd565b9091555050600854600954610a379084610ee6565b610a419190610f10565b600f5f828254610a519190610efd565b90915550505b610a62853084610aba565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316610b1e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610b805760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b6001600160a01b0383165f9081526020819052604090205481811015610bf75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f6020808352835180828501525f5b81811015610c8857858101830151858201604001528201610c6c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610cbe575f80fd5b919050565b5f8060408385031215610cd4575f80fd5b610cdd83610ca8565b946020939093013593505050565b5f60208284031215610cfb575f80fd5b5035919050565b5f805f60608486031215610d14575f80fd5b610d1d84610ca8565b9250610d2b60208501610ca8565b9150604084013590509250925092565b5f60208284031215610d4b575f80fd5b610d5482610ca8565b9392505050565b5f8060408385031215610d6c575f80fd5b50508035926020909101359150565b5f8060408385031215610d8c575f80fd5b610d9583610ca8565b9150610da360208401610ca8565b90509250929050565b600181811c90821680610dc057607f821691505b602082108103610dde57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610e3257815f1904821115610e1857610e18610de4565b80851615610e2557918102915b93841c9390800290610dfd565b509250929050565b5f82610e485750600161049d565b81610e5457505f61049d565b8160018114610e6a5760028114610e7457610e90565b600191505061049d565b60ff841115610e8557610e85610de4565b50506001821b61049d565b5060208310610133831016604e8410600b8410161715610eb3575081810a61049d565b610ebd8383610df8565b805f1904821115610ed057610ed0610de4565b029392505050565b5f610d5460ff841683610e3a565b808202811582820484141761049d5761049d610de4565b8082018082111561049d5761049d610de4565b5f82610f2a57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561049d5761049d610de4565b634e487b7160e01b5f52602160045260245ffdfea26469706673582212209035165b6aa008d9d1ba64790e5311c3ea1134fd1ba90f88bfb93fbfc00c59c364736f6c63430008140033

Deployed Bytecode Sourcemap

15362:4586:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6933:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9133:228;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;9133:228:0;1004:187:1;15776:33:0;;;;;;;;;1342:25:1;;;1330:2;1315:18;15776:33:0;1196:177:1;19293:118:0;;;;;;:::i;:::-;;:::i;:::-;;8038:110;8128:12;;8038:110;;9941:297;;;;;;:::i;:::-;;:::i;16099:23::-;;;;;-1:-1:-1;;;;;16099:23:0;;;;;;-1:-1:-1;;;;;2060:32:1;;;2042:51;;2030:2;2015:18;16099:23:0;1896:203:1;7880:93:0;;;7963:2;2246:36:1;;2234:2;2219:18;7880:93:0;2104:184:1;11650:265:0;;;;;;:::i;:::-;;:::i;15657:32::-;;;;;;15879:50;;;;;;15696:28;;;;;;19057:107;;;;;;:::i;:::-;;:::i;19172:113::-;;;;;;:::i;:::-;;:::i;7098:143::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7215:18:0;7188:7;7215:18;;;;;;;;;;;;7098:143;5388:103;;;:::i;19681:264::-;;;;;;:::i;:::-;;:::i;15735:32::-;;;;;;4740:87;4813:6;;-1:-1:-1;;;;;4813:6:0;4740:87;;6757:106;;;:::i;15511:76::-;;;;;-1:-1:-1;;;;;15511:76:0;;;15617:31;;;;;;10741:500;;;;;;:::i;:::-;;:::i;15431:73::-;;;;;-1:-1:-1;;;;;15431:73:0;;;8593:220;;;;;;:::i;:::-;;:::i;15816:29::-;;;;;;16056:36;;;;;-1:-1:-1;;;;;16056:36:0;;;8211:176;;;;;;:::i;:::-;;:::i;19419:254::-;;;;;;:::i;:::-;;:::i;5646:238::-;;;;;;:::i;:::-;;:::i;6933:102::-;6989:13;7022:5;7015:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6933:102;:::o;9133:228::-;9243:4;4120:10;9299:32;4120:10;9315:7;9324:6;9299:8;:32::i;:::-;9349:4;9342:11;;;9133:228;;;;;:::o;19293:118::-;4626:13;:11;:13::i;:::-;19387:16:::1;7963:2:::0;19387::::1;:16;:::i;:::-;19376:27;::::0;:8;:27:::1;:::i;:::-;19363:10;:40:::0;-1:-1:-1;19293:118:0:o;9941:297::-;10074:4;4120:10;10132:38;10148:4;4120:10;10163:6;10132:15;:38::i;:::-;10181:27;10191:4;10197:2;10201:6;10181:9;:27::i;:::-;-1:-1:-1;10226:4:0;;9941:297;-1:-1:-1;;;;9941:297:0:o;11650:265::-;11765:4;4120:10;11821:64;4120:10;11837:7;11874:10;11846:25;4120:10;11837:7;11846:9;:25::i;:::-;:38;;;;:::i;:::-;11821:8;:64::i;19057:107::-;4626:13;:11;:13::i;:::-;19131::::1;:25:::0;;-1:-1:-1;;;;;;19131:25:0::1;-1:-1:-1::0;;;;;19131:25:0;;;::::1;::::0;;;::::1;::::0;;19057:107::o;19172:113::-;4626:13;:11;:13::i;:::-;19249:16:::1;:28:::0;;-1:-1:-1;;;;;;19249:28:0::1;-1:-1:-1::0;;;;;19249:28:0;;;::::1;::::0;;;::::1;::::0;;19172:113::o;5388:103::-;4626:13;:11;:13::i;:::-;5453:30:::1;5480:1;5453:18;:30::i;:::-;5388:103::o:0;19681:264::-;4626:13;:11;:13::i;:::-;19814:14:::1;:32:::0;;;19857:10:::1;:24:::0;;;19908:29:::1;19870:11:::0;19831:15;19908:29:::1;:::i;:::-;19892:13;:45:::0;-1:-1:-1;;19681:264:0:o;6757:106::-;6815:13;6848:7;6841:14;;;;;:::i;10741:500::-;10861:4;4120:10;10861:4;10944:25;4120:10;10961:7;10944:9;:25::i;:::-;10917:52;;11022:15;11002:16;:35;;10980:122;;;;-1:-1:-1;;;10980:122:0;;5639:2:1;10980:122:0;;;5621:21:1;5678:2;5658:18;;;5651:30;5717:34;5697:18;;;5690:62;-1:-1:-1;;;5768:18:1;;;5761:35;5813:19;;10980:122:0;;;;;;;;;11138:60;11147:5;11154:7;11182:15;11163:16;:34;11138:8;:60::i;8593:220::-;8699:4;4120:10;8755:28;4120:10;8772:2;8776:6;8755:9;:28::i;8211:176::-;-1:-1:-1;;;;;8352:18:0;;;8325:7;8352:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8211:176::o;19419:254::-;4626:13;:11;:13::i;:::-;19549::::1;:30:::0;;;19590:9:::1;:22:::0;;;19638:27:::1;19602:10:::0;19565:14;19638:27:::1;:::i;:::-;19623:12;:42:::0;-1:-1:-1;;19419:254:0:o;5646:238::-;4626:13;:11;:13::i;:::-;-1:-1:-1;;;;;5749:22:0;::::1;5727:110;;;::::0;-1:-1:-1;;;5727:110:0;;6045:2:1;5727:110:0::1;::::0;::::1;6027:21:1::0;6084:2;6064:18;;;6057:30;6123:34;6103:18;;;6096:62;-1:-1:-1;;;6174:18:1;;;6167:36;6220:19;;5727:110:0::1;5843:402:1::0;5727:110:0::1;5848:28;5867:8;5848:18;:28::i;:::-;5646:238:::0;:::o;13398:380::-;-1:-1:-1;;;;;13534:19:0;;13526:68;;;;-1:-1:-1;;;13526:68:0;;6452:2:1;13526:68:0;;;6434:21:1;6491:2;6471:18;;;6464:30;6530:34;6510:18;;;6503:62;-1:-1:-1;;;6581:18:1;;;6574:34;6625:19;;13526:68:0;6250:400:1;13526:68:0;-1:-1:-1;;;;;13613:21:0;;13605:68;;;;-1:-1:-1;;;13605:68:0;;6857:2:1;13605:68:0;;;6839:21:1;6896:2;6876:18;;;6869:30;6935:34;6915:18;;;6908:62;-1:-1:-1;;;6986:18:1;;;6979:32;7028:19;;13605:68:0;6655:398:1;13605:68:0;-1:-1:-1;;;;;13686:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13738:32;;1342:25:1;;;13738:32:0;;1315:18:1;13738:32:0;;;;;;;13398:380;;;:::o;4905:132::-;4813:6;;-1:-1:-1;;;;;4813:6:0;4120:10;4969:23;4961:68;;;;-1:-1:-1;;;4961:68:0;;7260:2:1;4961:68:0;;;7242:21:1;;;7279:18;;;7272:30;7338:34;7318:18;;;7311:62;7390:18;;4961:68:0;7058:356:1;14069:502:0;14204:24;14231:25;14241:5;14248:7;14231:9;:25::i;:::-;14204:52;;-1:-1:-1;;14271:16:0;:37;14267:297;;14371:6;14351:16;:26;;14325:117;;;;-1:-1:-1;;;14325:117:0;;7621:2:1;14325:117:0;;;7603:21:1;7660:2;7640:18;;;7633:30;7699:31;7679:18;;;7672:59;7748:18;;14325:117:0;7419:353:1;14325:117:0;14486:51;14495:5;14502:7;14530:6;14511:16;:25;14486:8;:51::i;:::-;14193:378;14069:502;;;:::o;16810:1009::-;17010:8;;16934:17;;;;-1:-1:-1;;;;;17010:8:0;;;17004:14;;;;17000:242;;17072:3;17056:13;;17047:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;17035:40;;17097:9;17090:16;;17000:242;;;17136:8;;-1:-1:-1;;;;;17136:8:0;;;17128:16;;;;17124:118;;17197:3;17182:12;;17173:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17161:39;;17222:8;17215:15;;17124:118;17254:45;17270:4;17276:2;17280:18;17289:9;17280:6;:18;:::i;:::-;17254:15;:45::i;:::-;17324:13;;17320:480;;17365:9;17357:4;:17;;;;;;;;:::i;:::-;;17354:373;;17430:13;;17417:10;;17405:22;;:9;:22;:::i;:::-;:38;;;;:::i;:::-;17394:7;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;17506:13:0;;17489:14;;17477:26;;:9;:26;:::i;:::-;:42;;;;:::i;:::-;17462:11;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;17354:373:0;;-1:-1:-1;17354:373:0;;17625:12;;17613:9;;17601:21;;:9;:21;:::i;:::-;:36;;;;:::i;:::-;17590:7;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;17699:12:0;;17683:13;;17671:25;;:9;:25;:::i;:::-;:40;;;;:::i;:::-;17656:11;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;17354:373:0;17741:47;17757:4;17771;17778:9;17741:15;:47::i;:::-;16923:896;;16810:1009;;;:::o;6044:191::-;6137:6;;;-1:-1:-1;;;;;6154:17:0;;;-1:-1:-1;;;;;;6154:17:0;;;;;;;6187:40;;6137:6;;;6154:17;6137:6;;6187:40;;6118:16;;6187:40;6107:128;6044:191;:::o;14579:776::-;-1:-1:-1;;;;;14710:18:0;;14702:68;;;;-1:-1:-1;;;14702:68:0;;8466:2:1;14702:68:0;;;8448:21:1;8505:2;8485:18;;;8478:30;8544:34;8524:18;;;8517:62;-1:-1:-1;;;8595:18:1;;;8588:35;8640:19;;14702:68:0;8264:401:1;14702:68:0;-1:-1:-1;;;;;14789:16:0;;14781:64;;;;-1:-1:-1;;;14781:64:0;;8872:2:1;14781:64:0;;;8854:21:1;8911:2;8891:18;;;8884:30;8950:34;8930:18;;;8923:62;-1:-1:-1;;;9001:18:1;;;8994:33;9044:19;;14781:64:0;8670:399:1;14781:64:0;-1:-1:-1;;;;;14880:15:0;;14858:19;14880:15;;;;;;;;;;;14928:21;;;;14906:109;;;;-1:-1:-1;;;14906:109:0;;9276:2:1;14906:109:0;;;9258:21:1;9315:2;9295:18;;;9288:30;9354:34;9334:18;;;9327:62;-1:-1:-1;;;9405:18:1;;;9398:36;9451:19;;14906:109:0;9074:402:1;14906:109:0;-1:-1:-1;;;;;15051:15:0;;;:9;:15;;;;;;;;;;;15069:20;;;15051:38;;15269:13;;;;;;;;;;:23;;;;;;15321:26;;1342:25:1;;;15269:13:0;;15321:26;;1315:18:1;15321:26:0;;;;;;;14691:664;14579:776;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:180::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;-1:-1:-1;1529:23:1;;1378:180;-1:-1:-1;1378:180:1:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;2293:186::-;2352:6;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;:::-;2434:39;2293:186;-1:-1:-1;;;2293:186:1:o;2484:248::-;2552:6;2560;2613:2;2601:9;2592:7;2588:23;2584:32;2581:52;;;2629:1;2626;2619:12;2581:52;-1:-1:-1;;2652:23:1;;;2722:2;2707:18;;;2694:32;;-1:-1:-1;2484:248:1:o;2969:260::-;3037:6;3045;3098:2;3086:9;3077:7;3073:23;3069:32;3066:52;;;3114:1;3111;3104:12;3066:52;3137:29;3156:9;3137:29;:::i;:::-;3127:39;;3185:38;3219:2;3208:9;3204:18;3185:38;:::i;:::-;3175:48;;2969:260;;;;;:::o;3234:380::-;3313:1;3309:12;;;;3356;;;3377:61;;3431:4;3423:6;3419:17;3409:27;;3377:61;3484:2;3476:6;3473:14;3453:18;3450:38;3447:161;;3530:10;3525:3;3521:20;3518:1;3511:31;3565:4;3562:1;3555:15;3593:4;3590:1;3583:15;3447:161;;3234:380;;;:::o;3619:127::-;3680:10;3675:3;3671:20;3668:1;3661:31;3711:4;3708:1;3701:15;3735:4;3732:1;3725:15;3751:422;3840:1;3883:5;3840:1;3897:270;3918:7;3908:8;3905:21;3897:270;;;3977:4;3973:1;3969:6;3965:17;3959:4;3956:27;3953:53;;;3986:18;;:::i;:::-;4036:7;4026:8;4022:22;4019:55;;;4056:16;;;;4019:55;4135:22;;;;4095:15;;;;3897:270;;;3901:3;3751:422;;;;;:::o;4178:806::-;4227:5;4257:8;4247:80;;-1:-1:-1;4298:1:1;4312:5;;4247:80;4346:4;4336:76;;-1:-1:-1;4383:1:1;4397:5;;4336:76;4428:4;4446:1;4441:59;;;;4514:1;4509:130;;;;4421:218;;4441:59;4471:1;4462:10;;4485:5;;;4509:130;4546:3;4536:8;4533:17;4530:43;;;4553:18;;:::i;:::-;-1:-1:-1;;4609:1:1;4595:16;;4624:5;;4421:218;;4723:2;4713:8;4710:16;4704:3;4698:4;4695:13;4691:36;4685:2;4675:8;4672:16;4667:2;4661:4;4658:12;4654:35;4651:77;4648:159;;;-1:-1:-1;4760:19:1;;;4792:5;;4648:159;4839:34;4864:8;4858:4;4839:34;:::i;:::-;4909:6;4905:1;4901:6;4897:19;4888:7;4885:32;4882:58;;;4920:18;;:::i;:::-;4958:20;;4178:806;-1:-1:-1;;;4178:806:1:o;4989:140::-;5047:5;5076:47;5117:4;5107:8;5103:19;5097:4;5076:47;:::i;5134:168::-;5207:9;;;5238;;5255:15;;;5249:22;;5235:37;5225:71;;5276:18;;:::i;5307:125::-;5372:9;;;5393:10;;;5390:36;;;5406:18;;:::i;7777:217::-;7817:1;7843;7833:132;;7887:10;7882:3;7878:20;7875:1;7868:31;7922:4;7919:1;7912:15;7950:4;7947:1;7940:15;7833:132;-1:-1:-1;7979:9:1;;7777:217::o;7999:128::-;8066:9;;;8087:11;;;8084:37;;;8101:18;;:::i;8132:127::-;8193:10;8188:3;8184:20;8181:1;8174:31;8224:4;8221:1;8214:15;8248:4;8245:1;8238:15

Swarm Source

ipfs://9035165b6aa008d9d1ba64790e5311c3ea1134fd1ba90f88bfb93fbfc00c59c3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.