ETH Price: $3,398.56 (+2.06%)
Gas: 3.11 Gwei

Token

Pier Protocol (Pier)
 

Overview

Max Total Supply

10,000,000 Pier

Holders

554

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000001828612 Pier

Value
$0.00
0x78889b16737f55121d83173201691f3708dcee7c
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:
Pier

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-15
*/

/**
                                                                       
                                      =#+@@#                   
                            +@@@@@@@@@@@@@@@.                  
                            =@@@%        #@@                   
                              *@@@       @@@                   
                        @@%    #@@%      @@-                   
                      #@@#   #@@#   :=  =@@:                   
                    #@@%=  @@@@-  .%@%%%-@@                    
                  @@@@.  +@%@:   #%@@+@%@@@                    
         @%+    =%@@@   @%%@   =@@#    #@@%                    
        *@@%@ +%%%%   #%@#   +@@%                              
        @%%%@@@@@   #@@*   #@@%                                
        @%=  ##   %@@%   =%@%.                                 
       %@@      =@@@.   @%@                                    
       #@@      .@@@%                                          
       @@#        @@@%=                                        
       @@%+@@@@@@@@@@@%                                        
       @@@@#+%+                                                

    Pier Protocol - A cutting-edge multi-chain peer-to-peer protocol.
    Telegram: https://t.me/PierProtocolERC
    Website:  https://pierprotocol.com/
    dApp: https://pierprotocol.com/dashboard
    Twitter:  https://twitter.com/protocolpier
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

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

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 Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

}

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

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

/// @title A ERC-20 token contract for Pier Protocol
contract Pier is Context, IERC20, Ownable {
    using SafeMath for uint256;

    /// @notice Fallback function that allows the contract to receive ETH directly
    receive() external payable {}

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                            constants                            */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @dev Number of decimals the token uses.
    uint8 private constant _decimals = 18;
    /// @dev Total supply of the token.
    uint256 private constant _tTotal = 10_000_000 * 10**_decimals;

    /// @dev Name of the token.
    string private constant _name = unicode"Pier Protocol";
    /// @dev Symbol of the token.
    string private constant _symbol = unicode"Pier";

    /// @dev The threshold at which accumulated tokens will be swapped to ETH.
    uint256 public _taxSwapThreshold = 5_000 * 10**_decimals;
    /// @dev Maximum number of tokens to swap to ETH at once.
    uint256 public _maxTaxSwap = 100_000 * 10**_decimals;
    /// @dev Maximum amount that can be bought in a single transaction
    uint256 public _maxTxAmount = 50_000 * 10**_decimals;
    /// @dev Maximum amount a wallet can hold
    uint256 public _maxWalletAmount = 50_000 * 10**_decimals;

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                            mappings                             */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @dev Stores the balance of each address.
    mapping (address => uint256) private _balances;
    /// @dev Stores allowances one account has given to another.
    mapping (address => mapping (address => uint256)) private _allowances;
    /// @dev Records whether an account is excluded from paying fees.
    mapping (address => bool) public _isExcludedFromFee;
    /// @dev Records whether an address is considered a swap contract (and taxes are charged on transfers to/from it).
    mapping (address => bool) private _isSwapContract;

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                            variables                            */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @dev Addresses where collected taxes are sent.
    address payable public _taxWallet;
    address payable public _taxWallet2;

    /// @dev Custom tax rate that can be updated, if 0, the default tax rate is used.
    uint256 public _customTax = 0;
    /// @dev The block number when trading was enabled.
    uint256 public tradingOpenBlock;

    /// @dev The Uniswap V2 Router for token swaps.
    IUniswapV2Router02 private uniswapV2Router;
    /// @dev The Uniswap V2 Pair address for Pier-ETH liquidity pool.
    address public uniswapV2Pair;

    /// @dev Indicates if trading is open and transfers (not from/to owner) are possible.
    bool private tradingOpen;
    /// @dev Indicates if currently in swap operation to prevent reentrancy.
    bool private inSwap;
    /// @dev Indicates if automatic swapping of taxes to ETH is enabled.
    bool private swapEnabled;
    /// @dev Indicates if the maxTxAmount and maxWalletAmount limits are enabled.
    bool public _limitsEnabled = true;

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                         custom events                           */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @dev Emmited when the tax percentage is updated
    event TaxChanged(uint256 _oldTax, uint256 _newTax);
    /// @dev Emmited when a swap contract is updated
    event SwapContractUpdated(address _contract, bool _isSwapContract);

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                   modifiers and constructor                     */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @dev Modifier to lock the swap during its execution to prevent reentrancy.
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    /// @notice Initializes contract with initial settings
    constructor () {
        _taxWallet = payable(0x37335beA9Fb09c94d5346c2030217445b05464b2);
        _taxWallet2 = payable(0xAcE5e3c796Fd40f6a0D52964592CC885BAf71524);

        _balances[_msgSender()] = _tTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[_taxWallet2] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _isSwapContract[address(uniswapV2Router)] = true;
        _isSwapContract[uniswapV2Pair] = true;

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

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                 standard ERC-20 view functions                  */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

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

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

    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 transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                    standard ERC-20 functions                    */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @notice Sets amount as the allowance of spender over the caller’s tokens
    /// @param spender The address which will spend the funds
    /// @param amount The amount of tokens to be spent
    /// @return A boolean value indicating whether the operation was successful 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /// @notice Transfers tokens from one address to another with allowance check
    /// @dev Transfers tokens between two addresses and automatically deducts the allowance
    /// @param sender The address to transfer tokens from
    /// @param recipient The address to transfer tokens to
    /// @param amount The amount of tokens to be transferred
    /// @return A boolean value indicating whether the transfer was successful
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /// @dev Approves spending of a specified amount of tokens by a spender
    /// @param owner The address of the token holder
    /// @param spender The address of the spender
    /// @param amount The amount of tokens to approve
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /// @dev Handles the internal transfer logic, applying tax if necessary
    /// @param from The address to transfer tokens from
    /// @param to The address to transfer tokens to
    /// @param amount The amount of tokens to transfer
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(tradingOpen, "ERC20: Trading is not enabled");

            if (_isSwapContract[from] && !_isExcludedFromFee[to] && _limitsEnabled){
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount");
                require(_balances[to].add(amount) <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount");
            }
               
            if (_isSwapContract[to] && from != address(this)){
                taxAmount = amount.mul(_getTax()).div(100);
            } else if (_isSwapContract[from]){
                taxAmount = amount.mul(_getTax()).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold) {
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            taxAmount = 0;
        }

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

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                     internal helper functions                   */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @dev Calculates the tax rate based on the difference between current block number and trading open block
    /// @return The current tax rate as a percentage
    function _getTax() internal view returns (uint256) {
        if (_customTax != 0) return _customTax;

        if (block.number - tradingOpenBlock <= 5) {
            return 25;
        } else if (block.number - tradingOpenBlock <= 12) {
            return 12;
        } else {
            return 2;
        }
    }

    /// @dev Utility function to return the lesser of two values
    /// @param a The first value
    /// @param b The second value
    /// @return The lesser of the two values
    function min(uint256 a, uint256 b) private pure returns (uint256){
        return (a > b) ? b : a;
    }

    /// @dev Swaps tokens for ETH using the Uniswap V2 Router
    /// @param tokenAmount The amount of tokens to swap for ETH
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if (!tradingOpen || tokenAmount == 0) return;

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

    /// @dev Transfers ETH to the tax wallet
    /// @param amount The amount of ETH to transfer
    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount.mul(60).div(100));
        _taxWallet2.transfer(amount.mul(40).div(100));
    }

    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */
    /*                       protected functions                       */
    /* .:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:. */

    /// @notice Manually triggers a swap from tokens to ETH and send the proceeds to the tax wallet
    /// @dev Can only be called by the tax wallet address
    function manualSwap() external {
        require(_msgSender() == owner() || _msgSender() == _taxWallet || _msgSender() == _taxWallet2, "only owner or tax wallets");

        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0){
            swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0){
            sendETHToFee(ethBalance);
        }
    }

    /// @notice Opens trading on the token, enabling swaps and transfers
    /// @dev Can only be called by the contract owner
    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading is already open");

        swapEnabled = true;
        tradingOpen = true;
        tradingOpenBlock = block.number;
    }

    /// @notice Sets a custom tax rate for token transfers
    /// @dev Can only be called by the contract owner, tax rate must be <= 50%
    /// @param tax The new tax rate as a percentage
    function setCustomTax(uint256 tax) external onlyOwner {
        require(tax <= 50, "Tax must be less than or equal to 50%");
        emit TaxChanged(_customTax, tax);
        _customTax = tax;
    }

    /// @notice Toggles if an address is excluded from paying taxes on buys and sells
    function toggleIsExcludedFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = !_isExcludedFromFee[account];
    }

    /// @notice Recovers tokens or ETH mistakenly sent to the contract
    /// @dev Can only be called by the contract owner
    function recover(address token, uint256 amount) external {
        require(_msgSender() == owner() || _msgSender() == _taxWallet || _msgSender() == _taxWallet2, "only owner or tax wallets");

        if (token == address(0)){
            (bool sent, bytes memory data) = payable(msg.sender).call{value: amount}("");
        } else {
            IERC20(token).transfer(msg.sender, amount);
        }
    }

    /// @notice Toggles a contract address as a recognized swap contract
    /// @dev Can only be called by the contract owner
    /// @param contractAddress The address of the contract to toggle
    function toggleSwapContract(address contractAddress) external {
        require(_msgSender() == owner() || _msgSender() == _taxWallet || _msgSender() == _taxWallet2, "only owner or tax wallets");

        _isSwapContract[contractAddress] = !_isSwapContract[contractAddress];
        emit SwapContractUpdated(contractAddress, _isSwapContract[contractAddress]);
    }

    /// @notice Toggles if the automatic swap of taxes to ETH is enabled
    function toggleSwapEnabled() external {
        require(_msgSender() == owner() || _msgSender() == _taxWallet || _msgSender() == _taxWallet2, "only owner or tax wallets");
        swapEnabled = !swapEnabled;
    }

    /// @notice Sets the tax wallet address
    function setTaxWallet(address payable wallet, address payable wallet2) external {
        require(_msgSender() == owner() || _msgSender() == _taxWallet || _msgSender() == _taxWallet2, "only owner or tax wallets");
        _taxWallet = wallet;
        _taxWallet2 = wallet2;
    }

    /// @notice Toggles if the maxTxAmount and maxWalletAmount limits are enabled
    function toggleLimits() external onlyOwner() {
        _limitsEnabled = !_limitsEnabled;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_contract","type":"address"},{"indexed":false,"internalType":"bool","name":"_isSwapContract","type":"bool"}],"name":"SwapContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_oldTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTax","type":"uint256"}],"name":"TaxChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_customTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","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":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallet2","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recover","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setCustomTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"},{"internalType":"address payable","name":"wallet2","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"toggleIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"toggleSwapContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpenBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000513565b62000020906113886200052b565b600155620000316012600a62000513565b6200004090620186a06200052b565b600255620000516012600a62000513565b6200005f9061c3506200052b565b600355620000706012600a62000513565b6200007e9061c3506200052b565b6004556000600b55600e805460ff60b81b1916600160b81b179055348015620000a657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b03199081167337335bea9fb09c94d5346c2030217445b05464b217909155600a805490911673ace5e3c796fd40f6a0d52964592cc885baf715241781556200013e9060129062000513565b6200014d90629896806200052b565b3360009081526005602090815260408083209390935581546001600160a01b039081168352600782528383208054600160ff1991821681179092553085528585208054821683179055600954831685528585208054821683179055600a549092168452928490208054909116909217909155600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155825163c45a015560e01b81529251909263c45a01559260048083019391928290030181865afa15801562000220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000246919062000545565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000545565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000343919062000545565b600e80546001600160a01b0319166001600160a01b03928316178155600d548216600090815260086020526040808220805460ff199081166001908117909255935490941682529020805490911690911790556200039e3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003d86012600a62000513565b620003e790629896806200052b565b60405190815260200160405180910390a362000570565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000455578160001904821115620004395762000439620003fe565b808516156200044757918102915b93841c939080029062000419565b509250929050565b6000826200046e575060016200050d565b816200047d575060006200050d565b8160018114620004965760028114620004a157620004c1565b60019150506200050d565b60ff841115620004b557620004b5620003fe565b50506001821b6200050d565b5060208310610133831016604e8410600b8410161715620004e6575081810a6200050d565b620004f2838362000414565b8060001904821115620005095762000509620003fe565b0290505b92915050565b60006200052460ff8416836200045d565b9392505050565b80820281158282048414176200050d576200050d620003fe565b6000602082840312156200055857600080fd5b81516001600160a01b03811681146200052457600080fd5b611c4a80620005806000396000f3fe6080604052600436106101dc5760003560e01c80636c0a24eb11610102578063a9059cbb11610095578063cc7494d311610064578063cc7494d314610558578063dd62ed3e14610578578063e6b0ed02146105be578063f8492b1a146105de57600080fd5b8063a9059cbb146104ed578063b7d307bf1461050d578063bf474bed1461052d578063c9567bf91461054357600080fd5b8063768dc710116100d1578063768dc7101461045c5780637d1db4a51461048c5780638da5cb5b146104a257806395d89b41146104c057600080fd5b80636c0a24eb146103db5780636f268a99146103f157806370a0823114610411578063715018a61461044757600080fd5b80631f57414f1161017a57806349bd5a5e1161014957806349bd5a5e1461037157806351bc3c85146103915780635705ae43146103a65780635ef46022146103c657600080fd5b80631f57414f146102fe57806323b872dd1461031f5780632e0882141461033f578063313ce5671461035557600080fd5b80630faee56f116101b65780630faee56f1461028457806314228b0b1461029a57806317198564146102b157806318160ddd146102e957600080fd5b806306fdde03146101e8578063095ea7b3146102305780630e23500e1461026057600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600d81526c141a595c88141c9bdd1bd8dbdb609a1b60208201525b6040516102279190611810565b60405180910390f35b34801561023c57600080fd5b5061025061024b366004611876565b6105fe565b6040519015158152602001610227565b34801561026c57600080fd5b50610276600c5481565b604051908152602001610227565b34801561029057600080fd5b5061027660025481565b3480156102a657600080fd5b506102af610615565b005b3480156102bd57600080fd5b50600a546102d1906001600160a01b031681565b6040516001600160a01b039091168152602001610227565b3480156102f557600080fd5b50610276610669565b34801561030a57600080fd5b50600e5461025090600160b81b900460ff1681565b34801561032b57600080fd5b5061025061033a3660046118a2565b610689565b34801561034b57600080fd5b50610276600b5481565b34801561036157600080fd5b5060405160128152602001610227565b34801561037d57600080fd5b50600e546102d1906001600160a01b031681565b34801561039d57600080fd5b506102af6106f2565b3480156103b257600080fd5b506102af6103c1366004611876565b61078b565b3480156103d257600080fd5b506102af6108c9565b3480156103e757600080fd5b5061027660045481565b3480156103fd57600080fd5b506009546102d1906001600160a01b031681565b34801561041d57600080fd5b5061027661042c3660046118e3565b6001600160a01b031660009081526005602052604090205490565b34801561045357600080fd5b506102af610950565b34801561046857600080fd5b506102506104773660046118e3565b60076020526000908152604090205460ff1681565b34801561049857600080fd5b5061027660035481565b3480156104ae57600080fd5b506000546001600160a01b03166102d1565b3480156104cc57600080fd5b506040805180820190915260048152632834b2b960e11b602082015261021a565b3480156104f957600080fd5b50610250610508366004611876565b6109c4565b34801561051957600080fd5b506102af610528366004611900565b6109d1565b34801561053957600080fd5b5061027660015481565b34801561054f57600080fd5b506102af610a9b565b34801561056457600080fd5b506102af6105733660046118e3565b610b3c565b34801561058457600080fd5b50610276610593366004611919565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105ca57600080fd5b506102af6105d9366004611919565b610c0b565b3480156105ea57600080fd5b506102af6105f93660046118e3565b610c9f565b600061060b338484610cf2565b5060015b92915050565b6000546001600160a01b031633146106485760405162461bcd60e51b815260040161063f90611952565b60405180910390fd5b600e805460ff60b81b198116600160b81b9182900460ff1615909102179055565b60006106776012600a611a81565b6106849062989680611a90565b905090565b6000610696848484610e16565b6106e884336106e385604051806060016040528060288152602001611bed602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906113b6565b610cf2565b5060019392505050565b6000546001600160a01b031633148061071e57506009546001600160a01b0316336001600160a01b0316145b8061073c5750600a546001600160a01b0316336001600160a01b0316145b6107585760405162461bcd60e51b815260040161063f90611aa7565b30600090815260056020526040902054801561077757610777816113f0565b4780156107875761078781611585565b5050565b6000546001600160a01b03163314806107b757506009546001600160a01b0316336001600160a01b0316145b806107d55750600a546001600160a01b0316336001600160a01b0316145b6107f15760405162461bcd60e51b815260040161063f90611aa7565b6001600160a01b038216610853576040516000908190339084908381818185875af1925050503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b606091505b506107879350505050565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c49190611ade565b505050565b6000546001600160a01b03163314806108f557506009546001600160a01b0316336001600160a01b0316145b806109135750600a546001600160a01b0316336001600160a01b0316145b61092f5760405162461bcd60e51b815260040161063f90611aa7565b600e805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000546001600160a01b0316331461097a5760405162461bcd60e51b815260040161063f90611952565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061060b338484610e16565b6000546001600160a01b031633146109fb5760405162461bcd60e51b815260040161063f90611952565b6032811115610a5a5760405162461bcd60e51b815260206004820152602560248201527f546178206d757374206265206c657373207468616e206f7220657175616c20746044820152646f2035302560d81b606482015260840161063f565b600b5460408051918252602082018390527f4ac0d6b0d694ec6c120242feaca94cfb6fbfe646756cd7026301e3a5984f0450910160405180910390a1600b55565b6000546001600160a01b03163314610ac55760405162461bcd60e51b815260040161063f90611952565b600e54600160a01b900460ff1615610b1f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161063f565b600e805462ff00ff60a01b19166201000160a01b17905543600c55565b6000546001600160a01b0316331480610b6857506009546001600160a01b0316336001600160a01b0316145b80610b865750600a546001600160a01b0316336001600160a01b0316145b610ba25760405162461bcd60e51b815260040161063f90611aa7565b6001600160a01b038116600081815260086020908152604091829020805460ff8082161560ff1990921682179092558351948552161515908301527f2238b752bde5f0cb64dbc11c545edec44c801a7a4898bcb6bccb834964d13a6e910160405180910390a150565b6000546001600160a01b0316331480610c3757506009546001600160a01b0316336001600160a01b0316145b80610c555750600a546001600160a01b0316336001600160a01b0316145b610c715760405162461bcd60e51b815260040161063f90611aa7565b600980546001600160a01b039384166001600160a01b031991821617909155600a8054929093169116179055565b6000546001600160a01b03163314610cc95760405162461bcd60e51b815260040161063f90611952565b6001600160a01b03166000908152600760205260409020805460ff19811660ff90911615179055565b6001600160a01b038316610d545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161063f565b6001600160a01b038216610db55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161063f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063f565b6001600160a01b038216610edc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063f565b60008111610f3e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063f565b600080546001600160a01b03858116911614801590610f6b57506000546001600160a01b03848116911614155b1561122b57600e54600160a01b900460ff16610fc95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420656e61626c6564000000604482015260640161063f565b6001600160a01b03841660009081526008602052604090205460ff16801561100a57506001600160a01b03831660009081526007602052604090205460ff16155b801561101f5750600e54600160b81b900460ff165b1561110e576003548211156110865760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152661e105b5bdd5b9d60ca1b606482015260840161063f565b6004546001600160a01b0384166000908152600560205260409020546110ac9084611614565b111561110e5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526a185b1b195d105b5bdd5b9d60aa1b606482015260840161063f565b6001600160a01b03831660009081526008602052604090205460ff16801561113f57506001600160a01b0384163014155b1561116857611161606461115b61115461167a565b85906116c7565b90611749565b905061119c565b6001600160a01b03841660009081526008602052604090205460ff161561119c57611199606461115b61115461167a565b90505b30600090815260056020526040902054600e54600160a81b900460ff161580156111d35750600e546001600160a01b038581169116145b80156111e85750600e54600160b01b900460ff165b80156111f5575060015481115b15611229576112176112128461120d8460025461178b565b61178b565b6113f0565b4780156112275761122747611585565b505b505b6001600160a01b03841660009081526007602052604090205460ff168061126a57506001600160a01b03831660009081526007602052604090205460ff165b15611273575060005b80156112ed57306000908152600560205260409020546112939082611614565b30600081815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112e49085815260200190565b60405180910390a35b6001600160a01b03841660009081526005602052604090205461131090836117a0565b6001600160a01b03851660009081526005602052604090205561135561133683836117a0565b6001600160a01b03851660009081526005602052604090205490611614565b6001600160a01b0380851660008181526005602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61139f85856117a0565b60405190815260200160405180910390a350505050565b600081848411156113da5760405162461bcd60e51b815260040161063f9190611810565b5060006113e78486611b00565b95945050505050565b600e805460ff60a81b1916600160a81b1790819055600160a01b900460ff161580611419575080155b61157557604080516002808252606082018352600092602083019080368337019050509050308160008151811061145257611452611b13565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cf9190611b29565b816001815181106114e2576114e2611b13565b6001600160a01b039283166020918202929092010152600d546115089130911684610cf2565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611541908590600090869030904290600401611b46565b600060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b50505050505b50600e805460ff60a81b19169055565b6009546001600160a01b03166108fc6115a4606461115b85603c6116c7565b6040518115909202916000818181858888f193505050501580156115cc573d6000803e3d6000fd5b50600a546001600160a01b03166108fc6115ec606461115b8560286116c7565b6040518115909202916000818181858888f19350505050158015610787573d6000803e3d6000fd5b6000806116218385611bb7565b9050838110156116735760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161063f565b9392505050565b6000600b5460001461168d5750600b5490565b6005600c544361169d9190611b00565b116116a85750601990565b600c80546116b69043611b00565b116116c15750600c90565b50600290565b6000826000036116d95750600061060f565b60006116e58385611a90565b9050826116f28583611bca565b146116735760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161063f565b600061167383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117e2565b600081831161179a5782611673565b50919050565b600061167383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b6565b600081836118035760405162461bcd60e51b815260040161063f9190611810565b5060006113e78486611bca565b600060208083528351808285015260005b8181101561183d57858101830151858201604001528201611821565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461187357600080fd5b50565b6000806040838503121561188957600080fd5b82356118948161185e565b946020939093013593505050565b6000806000606084860312156118b757600080fd5b83356118c28161185e565b925060208401356118d28161185e565b929592945050506040919091013590565b6000602082840312156118f557600080fd5b81356116738161185e565b60006020828403121561191257600080fd5b5035919050565b6000806040838503121561192c57600080fd5b82356119378161185e565b915060208301356119478161185e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119d85781600019048211156119be576119be611987565b808516156119cb57918102915b93841c93908002906119a2565b509250929050565b6000826119ef5750600161060f565b816119fc5750600061060f565b8160018114611a125760028114611a1c57611a38565b600191505061060f565b60ff841115611a2d57611a2d611987565b50506001821b61060f565b5060208310610133831016604e8410600b8410161715611a5b575081810a61060f565b611a65838361199d565b8060001904821115611a7957611a79611987565b029392505050565b600061167360ff8416836119e0565b808202811582820484141761060f5761060f611987565b60208082526019908201527f6f6e6c79206f776e6572206f72207461782077616c6c65747300000000000000604082015260600190565b600060208284031215611af057600080fd5b8151801515811461167357600080fd5b8181038181111561060f5761060f611987565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b3b57600080fd5b81516116738161185e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b965784516001600160a01b031683529383019391830191600101611b71565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561060f5761060f611987565b600082611be757634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ac5c9a71a0ad6b8f3aebe3a752bb7bc76ad69ccbceaabf3ddd0329354f62e5464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80636c0a24eb11610102578063a9059cbb11610095578063cc7494d311610064578063cc7494d314610558578063dd62ed3e14610578578063e6b0ed02146105be578063f8492b1a146105de57600080fd5b8063a9059cbb146104ed578063b7d307bf1461050d578063bf474bed1461052d578063c9567bf91461054357600080fd5b8063768dc710116100d1578063768dc7101461045c5780637d1db4a51461048c5780638da5cb5b146104a257806395d89b41146104c057600080fd5b80636c0a24eb146103db5780636f268a99146103f157806370a0823114610411578063715018a61461044757600080fd5b80631f57414f1161017a57806349bd5a5e1161014957806349bd5a5e1461037157806351bc3c85146103915780635705ae43146103a65780635ef46022146103c657600080fd5b80631f57414f146102fe57806323b872dd1461031f5780632e0882141461033f578063313ce5671461035557600080fd5b80630faee56f116101b65780630faee56f1461028457806314228b0b1461029a57806317198564146102b157806318160ddd146102e957600080fd5b806306fdde03146101e8578063095ea7b3146102305780630e23500e1461026057600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600d81526c141a595c88141c9bdd1bd8dbdb609a1b60208201525b6040516102279190611810565b60405180910390f35b34801561023c57600080fd5b5061025061024b366004611876565b6105fe565b6040519015158152602001610227565b34801561026c57600080fd5b50610276600c5481565b604051908152602001610227565b34801561029057600080fd5b5061027660025481565b3480156102a657600080fd5b506102af610615565b005b3480156102bd57600080fd5b50600a546102d1906001600160a01b031681565b6040516001600160a01b039091168152602001610227565b3480156102f557600080fd5b50610276610669565b34801561030a57600080fd5b50600e5461025090600160b81b900460ff1681565b34801561032b57600080fd5b5061025061033a3660046118a2565b610689565b34801561034b57600080fd5b50610276600b5481565b34801561036157600080fd5b5060405160128152602001610227565b34801561037d57600080fd5b50600e546102d1906001600160a01b031681565b34801561039d57600080fd5b506102af6106f2565b3480156103b257600080fd5b506102af6103c1366004611876565b61078b565b3480156103d257600080fd5b506102af6108c9565b3480156103e757600080fd5b5061027660045481565b3480156103fd57600080fd5b506009546102d1906001600160a01b031681565b34801561041d57600080fd5b5061027661042c3660046118e3565b6001600160a01b031660009081526005602052604090205490565b34801561045357600080fd5b506102af610950565b34801561046857600080fd5b506102506104773660046118e3565b60076020526000908152604090205460ff1681565b34801561049857600080fd5b5061027660035481565b3480156104ae57600080fd5b506000546001600160a01b03166102d1565b3480156104cc57600080fd5b506040805180820190915260048152632834b2b960e11b602082015261021a565b3480156104f957600080fd5b50610250610508366004611876565b6109c4565b34801561051957600080fd5b506102af610528366004611900565b6109d1565b34801561053957600080fd5b5061027660015481565b34801561054f57600080fd5b506102af610a9b565b34801561056457600080fd5b506102af6105733660046118e3565b610b3c565b34801561058457600080fd5b50610276610593366004611919565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105ca57600080fd5b506102af6105d9366004611919565b610c0b565b3480156105ea57600080fd5b506102af6105f93660046118e3565b610c9f565b600061060b338484610cf2565b5060015b92915050565b6000546001600160a01b031633146106485760405162461bcd60e51b815260040161063f90611952565b60405180910390fd5b600e805460ff60b81b198116600160b81b9182900460ff1615909102179055565b60006106776012600a611a81565b6106849062989680611a90565b905090565b6000610696848484610e16565b6106e884336106e385604051806060016040528060288152602001611bed602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906113b6565b610cf2565b5060019392505050565b6000546001600160a01b031633148061071e57506009546001600160a01b0316336001600160a01b0316145b8061073c5750600a546001600160a01b0316336001600160a01b0316145b6107585760405162461bcd60e51b815260040161063f90611aa7565b30600090815260056020526040902054801561077757610777816113f0565b4780156107875761078781611585565b5050565b6000546001600160a01b03163314806107b757506009546001600160a01b0316336001600160a01b0316145b806107d55750600a546001600160a01b0316336001600160a01b0316145b6107f15760405162461bcd60e51b815260040161063f90611aa7565b6001600160a01b038216610853576040516000908190339084908381818185875af1925050503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b606091505b506107879350505050565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c49190611ade565b505050565b6000546001600160a01b03163314806108f557506009546001600160a01b0316336001600160a01b0316145b806109135750600a546001600160a01b0316336001600160a01b0316145b61092f5760405162461bcd60e51b815260040161063f90611aa7565b600e805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000546001600160a01b0316331461097a5760405162461bcd60e51b815260040161063f90611952565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061060b338484610e16565b6000546001600160a01b031633146109fb5760405162461bcd60e51b815260040161063f90611952565b6032811115610a5a5760405162461bcd60e51b815260206004820152602560248201527f546178206d757374206265206c657373207468616e206f7220657175616c20746044820152646f2035302560d81b606482015260840161063f565b600b5460408051918252602082018390527f4ac0d6b0d694ec6c120242feaca94cfb6fbfe646756cd7026301e3a5984f0450910160405180910390a1600b55565b6000546001600160a01b03163314610ac55760405162461bcd60e51b815260040161063f90611952565b600e54600160a01b900460ff1615610b1f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161063f565b600e805462ff00ff60a01b19166201000160a01b17905543600c55565b6000546001600160a01b0316331480610b6857506009546001600160a01b0316336001600160a01b0316145b80610b865750600a546001600160a01b0316336001600160a01b0316145b610ba25760405162461bcd60e51b815260040161063f90611aa7565b6001600160a01b038116600081815260086020908152604091829020805460ff8082161560ff1990921682179092558351948552161515908301527f2238b752bde5f0cb64dbc11c545edec44c801a7a4898bcb6bccb834964d13a6e910160405180910390a150565b6000546001600160a01b0316331480610c3757506009546001600160a01b0316336001600160a01b0316145b80610c555750600a546001600160a01b0316336001600160a01b0316145b610c715760405162461bcd60e51b815260040161063f90611aa7565b600980546001600160a01b039384166001600160a01b031991821617909155600a8054929093169116179055565b6000546001600160a01b03163314610cc95760405162461bcd60e51b815260040161063f90611952565b6001600160a01b03166000908152600760205260409020805460ff19811660ff90911615179055565b6001600160a01b038316610d545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161063f565b6001600160a01b038216610db55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161063f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063f565b6001600160a01b038216610edc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063f565b60008111610f3e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063f565b600080546001600160a01b03858116911614801590610f6b57506000546001600160a01b03848116911614155b1561122b57600e54600160a01b900460ff16610fc95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420656e61626c6564000000604482015260640161063f565b6001600160a01b03841660009081526008602052604090205460ff16801561100a57506001600160a01b03831660009081526007602052604090205460ff16155b801561101f5750600e54600160b81b900460ff165b1561110e576003548211156110865760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152661e105b5bdd5b9d60ca1b606482015260840161063f565b6004546001600160a01b0384166000908152600560205260409020546110ac9084611614565b111561110e5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526a185b1b195d105b5bdd5b9d60aa1b606482015260840161063f565b6001600160a01b03831660009081526008602052604090205460ff16801561113f57506001600160a01b0384163014155b1561116857611161606461115b61115461167a565b85906116c7565b90611749565b905061119c565b6001600160a01b03841660009081526008602052604090205460ff161561119c57611199606461115b61115461167a565b90505b30600090815260056020526040902054600e54600160a81b900460ff161580156111d35750600e546001600160a01b038581169116145b80156111e85750600e54600160b01b900460ff165b80156111f5575060015481115b15611229576112176112128461120d8460025461178b565b61178b565b6113f0565b4780156112275761122747611585565b505b505b6001600160a01b03841660009081526007602052604090205460ff168061126a57506001600160a01b03831660009081526007602052604090205460ff165b15611273575060005b80156112ed57306000908152600560205260409020546112939082611614565b30600081815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112e49085815260200190565b60405180910390a35b6001600160a01b03841660009081526005602052604090205461131090836117a0565b6001600160a01b03851660009081526005602052604090205561135561133683836117a0565b6001600160a01b03851660009081526005602052604090205490611614565b6001600160a01b0380851660008181526005602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61139f85856117a0565b60405190815260200160405180910390a350505050565b600081848411156113da5760405162461bcd60e51b815260040161063f9190611810565b5060006113e78486611b00565b95945050505050565b600e805460ff60a81b1916600160a81b1790819055600160a01b900460ff161580611419575080155b61157557604080516002808252606082018352600092602083019080368337019050509050308160008151811061145257611452611b13565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cf9190611b29565b816001815181106114e2576114e2611b13565b6001600160a01b039283166020918202929092010152600d546115089130911684610cf2565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611541908590600090869030904290600401611b46565b600060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b50505050505b50600e805460ff60a81b19169055565b6009546001600160a01b03166108fc6115a4606461115b85603c6116c7565b6040518115909202916000818181858888f193505050501580156115cc573d6000803e3d6000fd5b50600a546001600160a01b03166108fc6115ec606461115b8560286116c7565b6040518115909202916000818181858888f19350505050158015610787573d6000803e3d6000fd5b6000806116218385611bb7565b9050838110156116735760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161063f565b9392505050565b6000600b5460001461168d5750600b5490565b6005600c544361169d9190611b00565b116116a85750601990565b600c80546116b69043611b00565b116116c15750600c90565b50600290565b6000826000036116d95750600061060f565b60006116e58385611a90565b9050826116f28583611bca565b146116735760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161063f565b600061167383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117e2565b600081831161179a5782611673565b50919050565b600061167383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b6565b600081836118035760405162461bcd60e51b815260040161063f9190611810565b5060006113e78486611bca565b600060208083528351808285015260005b8181101561183d57858101830151858201604001528201611821565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461187357600080fd5b50565b6000806040838503121561188957600080fd5b82356118948161185e565b946020939093013593505050565b6000806000606084860312156118b757600080fd5b83356118c28161185e565b925060208401356118d28161185e565b929592945050506040919091013590565b6000602082840312156118f557600080fd5b81356116738161185e565b60006020828403121561191257600080fd5b5035919050565b6000806040838503121561192c57600080fd5b82356119378161185e565b915060208301356119478161185e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119d85781600019048211156119be576119be611987565b808516156119cb57918102915b93841c93908002906119a2565b509250929050565b6000826119ef5750600161060f565b816119fc5750600061060f565b8160018114611a125760028114611a1c57611a38565b600191505061060f565b60ff841115611a2d57611a2d611987565b50506001821b61060f565b5060208310610133831016604e8410600b8410161715611a5b575081810a61060f565b611a65838361199d565b8060001904821115611a7957611a79611987565b029392505050565b600061167360ff8416836119e0565b808202811582820484141761060f5761060f611987565b60208082526019908201527f6f6e6c79206f776e6572206f72207461782077616c6c65747300000000000000604082015260600190565b600060208284031215611af057600080fd5b8151801515811461167357600080fd5b8181038181111561060f5761060f611987565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b3b57600080fd5b81516116738161185e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b965784516001600160a01b031683529383019391830191600101611b71565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561060f5761060f611987565b600082611be757634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ac5c9a71a0ad6b8f3aebe3a752bb7bc76ad69ccbceaabf3ddd0329354f62e5464736f6c63430008130033

Deployed Bytecode Sourcemap

4969:16192:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10302:83;;;;;;;;;;-1:-1:-1;10372:5:0;;;;;;;;;;;;-1:-1:-1;;;10372:5:0;;;;10302:83;;;;;;;:::i;:::-;;;;;;;;11647:161;;;;;;;;;;-1:-1:-1;11647:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;11647:161:0;1023:187:1;7623:31:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;7623:31:0;1215:177:1;5996:52:0;;;;;;;;;;;;;;;;21062:96;;;;;;;;;;;;;:::i;:::-;;7400:34;;;;;;;;;;-1:-1:-1;7400:34:0;;;;-1:-1:-1;;;;;7400:34:0;;;;;;-1:-1:-1;;;;;1577:32:1;;;1559:51;;1547:2;1532:18;7400:34:0;1397:219:1;10579:95:0;;;;;;;;;;;;;:::i;8287:33::-;;;;;;;;;;-1:-1:-1;8287:33:0;;;;-1:-1:-1;;;8287:33:0;;;;;;12253:313;;;;;;;;;;-1:-1:-1;12253:313:0;;;;;:::i;:::-;;:::i;7530:29::-;;;;;;;;;;;;;;;;10488:83;;;;;;;;;;-1:-1:-1;10488:83:0;;5485:2;2224:36:1;;2212:2;2197:18;10488:83:0;2082:184:1;7836:28:0;;;;;;;;;;-1:-1:-1;7836:28:0;;;;-1:-1:-1;;;;;7836:28:0;;;17764:455;;;;;;;;;;;;;:::i;19348:412::-;;;;;;;;;;-1:-1:-1;19348:412:0;;;;;:::i;:::-;;:::i;20419:216::-;;;;;;;;;;;;;:::i;6233:56::-;;;;;;;;;;;;;;;;7360:33;;;;;;;;;;-1:-1:-1;7360:33:0;;;;-1:-1:-1;;;;;7360:33:0;;;10682:119;;;;;;;;;;-1:-1:-1;10682:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10775:18:0;10748:7;10775:18;;;:9;:18;;;;;;;10682:119;3996:148;;;;;;;;;;;;;:::i;6841:51::-;;;;;;;;;;-1:-1:-1;6841:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6127:52;;;;;;;;;;;;;;;;3782:79;;;;;;;;;;-1:-1:-1;3820:7:0;3847:6;-1:-1:-1;;;;;3847:6:0;3782:79;;10393:87;;;;;;;;;;-1:-1:-1;10465:7:0;;;;;;;;;;;;-1:-1:-1;;;10465:7:0;;;;10393:87;;10809:167;;;;;;;;;;-1:-1:-1;10809:167:0;;;;;:::i;:::-;;:::i;18770:202::-;;;;;;;;;;-1:-1:-1;18770:202:0;;;;;:::i;:::-;;:::i;5870:56::-;;;;;;;;;;;;;;;;18356:213;;;;;;;;;;;;;:::i;19967:370::-;;;;;;;;;;-1:-1:-1;19967:370:0;;;;;:::i;:::-;;:::i;10984:143::-;;;;;;;;;;-1:-1:-1;10984:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;11092:18:0;;;11065:7;11092:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10984:143;20688:283;;;;;;;;;;-1:-1:-1;20688:283:0;;;;;:::i;:::-;;:::i;19067:146::-;;;;;;;;;;-1:-1:-1;19067:146:0;;;;;:::i;:::-;;:::i;11647:161::-;11722:4;11739:39;1617:10;11762:7;11771:6;11739:8;:39::i;:::-;-1:-1:-1;11796:4:0;11647:161;;;;;:::o;21062:96::-;3909:6;;-1:-1:-1;;;;;3909:6:0;1617:10;3909:22;3901:67;;;;-1:-1:-1;;;3901:67:0;;;;;;;:::i;:::-;;;;;;;;;21136:14:::1;::::0;;-1:-1:-1;;;;21118:32:0;::::1;-1:-1:-1::0;;;21136:14:0;;;::::1;;;21135:15;21118:32:::0;;::::1;;::::0;;21062:96::o;10579:95::-;10632:7;5583:13;5485:2;5583;:13;:::i;:::-;5570:26;;:10;:26;:::i;:::-;10652:14;;10579:95;:::o;12253:313::-;12351:4;12368:36;12378:6;12386:9;12397:6;12368:9;:36::i;:::-;12415:121;12424:6;1617:10;12446:89;12484:6;12446:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12446:19:0;;;;;;:11;:19;;;;;;;;1617:10;12446:33;;;;;;;;;;:37;:89::i;:::-;12415:8;:121::i;:::-;-1:-1:-1;12554:4:0;12253:313;;;;;:::o;17764:455::-;3820:7;3847:6;-1:-1:-1;;;;;3847:6:0;1617:10;17814:23;;:53;;-1:-1:-1;17857:10:0;;-1:-1:-1;;;;;17857:10:0;1617;-1:-1:-1;;;;;17841:26:0;;17814:53;:84;;;-1:-1:-1;17887:11:0;;-1:-1:-1;;;;;17887:11:0;1617:10;-1:-1:-1;;;;;17871:27:0;;17814:84;17806:122;;;;-1:-1:-1;;;17806:122:0;;;;;;;:::i;:::-;17982:4;17941:20;10775:18;;;:9;:18;;;;;;18003:16;;17999:78;;18035:30;18052:12;18035:16;:30::i;:::-;18110:21;18146:14;;18142:70;;18176:24;18189:10;18176:12;:24::i;:::-;17795:424;;17764:455::o;19348:412::-;3820:7;3847:6;-1:-1:-1;;;;;3847:6:0;1617:10;19424:23;;:53;;-1:-1:-1;19467:10:0;;-1:-1:-1;;;;;19467:10:0;1617;-1:-1:-1;;;;;19451:26:0;;19424:53;:84;;;-1:-1:-1;19497:11:0;;-1:-1:-1;;;;;19497:11:0;1617:10;-1:-1:-1;;;;;19481:27:0;;19424:84;19416:122;;;;-1:-1:-1;;;19416:122:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19555:19:0;;19551:202;;19623:43;;19591:9;;;;19631:10;;19655:6;;19591:9;19623:43;19591:9;19623:43;19655:6;19631:10;19623:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19551:202:0;;-1:-1:-1;;;;19551:202:0;;19699:42;;-1:-1:-1;;;19699:42:0;;19722:10;19699:42;;;6505:51:1;6572:18;;;6565:34;;;-1:-1:-1;;;;;19699:22:0;;;;;6478:18:1;;19699:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19348:412;;:::o;20419:216::-;3820:7;3847:6;-1:-1:-1;;;;;3847:6:0;1617:10;20476:23;;:53;;-1:-1:-1;20519:10:0;;-1:-1:-1;;;;;20519:10:0;1617;-1:-1:-1;;;;;20503:26:0;;20476:53;:84;;;-1:-1:-1;20549:11:0;;-1:-1:-1;;;;;20549:11:0;1617:10;-1:-1:-1;;;;;20533:27:0;;20476:84;20468:122;;;;-1:-1:-1;;;20468:122:0;;;;;;;:::i;:::-;20616:11;;;-1:-1:-1;;;;20601:26:0;;-1:-1:-1;;;20616:11:0;;;;;;20615:12;20601:26;;;;;;20419:216::o;3996:148::-;3909:6;;-1:-1:-1;;;;;3909:6:0;1617:10;3909:22;3901:67;;;;-1:-1:-1;;;3901:67:0;;;;;;;:::i;:::-;4103:1:::1;4087:6:::0;;4066:40:::1;::::0;-1:-1:-1;;;;;4087:6:0;;::::1;::::0;4066:40:::1;::::0;4103:1;;4066:40:::1;4134:1;4117:19:::0;;-1:-1:-1;;;;;;4117:19:0::1;::::0;;3996:148::o;10809:167::-;10887:4;10904:42;1617:10;10928:9;10939:6;10904:9;:42::i;18770:202::-;3909:6;;-1:-1:-1;;;;;3909:6:0;1617:10;3909:22;3901:67;;;;-1:-1:-1;;;3901:67:0;;;;;;;:::i;:::-;18850:2:::1;18843:3;:9;;18835:59;;;::::0;-1:-1:-1;;;18835:59:0;;7094:2:1;18835:59:0::1;::::0;::::1;7076:21:1::0;7133:2;7113:18;;;7106:30;7172:34;7152:18;;;7145:62;-1:-1:-1;;;7223:18:1;;;7216:35;7268:19;;18835:59:0::1;6892:401:1::0;18835:59:0::1;18921:10;::::0;18910:27:::1;::::0;;7472:25:1;;;7528:2;7513:18;;7506:34;;;18910:27:0::1;::::0;7445:18:1;18910:27:0::1;;;;;;;18948:10;:16:::0;18770:202::o;18356:213::-;3909:6;;-1:-1:-1;;;;;3909:6:0;1617:10;3909:22;3901:67;;;;-1:-1:-1;;;3901:67:0;;;;;;;:::i;:::-;18420:11:::1;::::0;-1:-1:-1;;;18420:11:0;::::1;;;18419:12;18411:48;;;::::0;-1:-1:-1;;;18411:48:0;;7753:2:1;18411:48:0::1;::::0;::::1;7735:21:1::0;7792:2;7772:18;;;7765:30;7831:25;7811:18;;;7804:53;7874:18;;18411:48:0::1;7551:347:1::0;18411:48:0::1;18472:11;:18:::0;;-1:-1:-1;;;;18501:18:0;-1:-1:-1;;;18501:18:0;;;18549:12:::1;18530:16;:31:::0;18356:213::o;19967:370::-;3820:7;3847:6;-1:-1:-1;;;;;3847:6:0;1617:10;20048:23;;:53;;-1:-1:-1;20091:10:0;;-1:-1:-1;;;;;20091:10:0;1617;-1:-1:-1;;;;;20075:26:0;;20048:53;:84;;;-1:-1:-1;20121:11:0;;-1:-1:-1;;;;;20121:11:0;1617:10;-1:-1:-1;;;;;20105:27:0;;20048:84;20040:122;;;;-1:-1:-1;;;20040:122:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20211:32:0;;;;;;:15;:32;;;;;;;;;;;;;;;20210:33;-1:-1:-1;;20175:68:0;;;;;;;;20259:70;;8071:51:1;;;20296:32:0;8165:14:1;8158:22;8138:18;;;8131:50;20259:70:0;;8044:18:1;20259:70:0;;;;;;;19967:370;:::o;20688:283::-;3820:7;3847:6;-1:-1:-1;;;;;3847:6:0;1617:10;20787:23;;:53;;-1:-1:-1;20830:10:0;;-1:-1:-1;;;;;20830:10:0;1617;-1:-1:-1;;;;;20814:26:0;;20787:53;:84;;;-1:-1:-1;20860:11:0;;-1:-1:-1;;;;;20860:11:0;1617:10;-1:-1:-1;;;;;20844:27:0;;20787:84;20779:122;;;;-1:-1:-1;;;20779:122:0;;;;;;;:::i;:::-;20912:10;:19;;-1:-1:-1;;;;;20912:19:0;;;-1:-1:-1;;;;;;20912:19:0;;;;;;;20942:11;:21;;;;;;;;;;;20688:283::o;19067:146::-;3909:6;;-1:-1:-1;;;;;3909:6:0;1617:10;3909:22;3901:67;;;;-1:-1:-1;;;3901:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19178:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;;;-1:-1:-1;;19147:58:0;::::1;19178:27;::::0;;::::1;19177:28;19147:58;::::0;;19067:146::o;12811:335::-;-1:-1:-1;;;;;12904:19:0;;12896:68;;;;-1:-1:-1;;;12896:68:0;;8394:2:1;12896:68:0;;;8376:21:1;8433:2;8413:18;;;8406:30;8472:34;8452:18;;;8445:62;-1:-1:-1;;;8523:18:1;;;8516:34;8567:19;;12896:68:0;8192:400:1;12896:68:0;-1:-1:-1;;;;;12983:21:0;;12975:68;;;;-1:-1:-1;;;12975:68:0;;8799:2:1;12975:68:0;;;8781:21:1;8838:2;8818:18;;;8811:30;8877:34;8857:18;;;8850:62;-1:-1:-1;;;8928:18:1;;;8921:32;8970:19;;12975:68:0;8597:398:1;12975:68:0;-1:-1:-1;;;;;13054:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13106:32;;1361:25:1;;;13106:32:0;;1334:18:1;13106:32:0;;;;;;;12811:335;;;:::o;13397:2000::-;-1:-1:-1;;;;;13485:18:0;;13477:68;;;;-1:-1:-1;;;13477:68:0;;9202:2:1;13477:68:0;;;9184:21:1;9241:2;9221:18;;;9214:30;9280:34;9260:18;;;9253:62;-1:-1:-1;;;9331:18:1;;;9324:35;9376:19;;13477:68:0;9000:401:1;13477:68:0;-1:-1:-1;;;;;13564:16:0;;13556:64;;;;-1:-1:-1;;;13556:64:0;;9608:2:1;13556:64:0;;;9590:21:1;9647:2;9627:18;;;9620:30;9686:34;9666:18;;;9659:62;-1:-1:-1;;;9737:18:1;;;9730:33;9780:19;;13556:64:0;9406:399:1;13556:64:0;13648:1;13639:6;:10;13631:64;;;;-1:-1:-1;;;13631:64:0;;10012:2:1;13631:64:0;;;9994:21:1;10051:2;10031:18;;;10024:30;10090:34;10070:18;;;10063:62;-1:-1:-1;;;10141:18:1;;;10134:39;10190:19;;13631:64:0;9810:405:1;13631:64:0;13708:17;3847:6;;-1:-1:-1;;;;;13744:15:0;;;3847:6;;13744:15;;;;:32;;-1:-1:-1;3820:7:0;3847:6;-1:-1:-1;;;;;13763:13:0;;;3847:6;;13763:13;;13744:32;13740:1178;;;13801:11;;-1:-1:-1;;;13801:11:0;;;;13793:53;;;;-1:-1:-1;;;13793:53:0;;10422:2:1;13793:53:0;;;10404:21:1;10461:2;10441:18;;;10434:30;10500:31;10480:18;;;10473:59;10549:18;;13793:53:0;10220:353:1;13793:53:0;-1:-1:-1;;;;;13867:21:0;;;;;;:15;:21;;;;;;;;:48;;;;-1:-1:-1;;;;;;13893:22:0;;;;;;:18;:22;;;;;;;;13892:23;13867:48;:66;;;;-1:-1:-1;13919:14:0;;-1:-1:-1;;;13919:14:0;;;;13867:66;13863:300;;;13971:12;;13961:6;:22;;13953:74;;;;-1:-1:-1;;;13953:74:0;;10780:2:1;13953:74:0;;;10762:21:1;10819:2;10799:18;;;10792:30;10858:34;10838:18;;;10831:62;-1:-1:-1;;;10909:18:1;;;10902:37;10956:19;;13953:74:0;10578:403:1;13953:74:0;14083:16;;-1:-1:-1;;;;;14054:13:0;;;;;;:9;:13;;;;;;:25;;14072:6;14054:17;:25::i;:::-;:45;;14046:101;;;;-1:-1:-1;;;14046:101:0;;11188:2:1;14046:101:0;;;11170:21:1;11227:2;11207:18;;;11200:30;11266:34;11246:18;;;11239:62;-1:-1:-1;;;11317:18:1;;;11310:41;11368:19;;14046:101:0;10986:407:1;14046:101:0;-1:-1:-1;;;;;14198:19:0;;;;;;:15;:19;;;;;;;;:44;;;;-1:-1:-1;;;;;;14221:21:0;;14237:4;14221:21;;14198:44;14194:235;;;14274:30;14300:3;14274:21;14285:9;:7;:9::i;:::-;14274:6;;:10;:21::i;:::-;:25;;:30::i;:::-;14262:42;;14194:235;;;-1:-1:-1;;;;;14330:21:0;;;;;;:15;:21;;;;;;;;14326:103;;;14383:30;14409:3;14383:21;14394:9;:7;:9::i;14383:30::-;14371:42;;14326:103;14494:4;14445:28;10775:18;;;:9;:18;;;;;;14520:6;;-1:-1:-1;;;14520:6:0;;;;14519:7;:30;;;;-1:-1:-1;14536:13:0;;-1:-1:-1;;;;;14530:19:0;;;14536:13;;14530:19;14519:30;:45;;;;-1:-1:-1;14553:11:0;;-1:-1:-1;;;14553:11:0;;;;14519:45;:89;;;;;14591:17;;14568:20;:40;14519:89;14515:392;;;14629:69;14646:51;14650:6;14658:38;14662:20;14684:11;;14658:3;:38::i;:::-;14646:3;:51::i;:::-;14629:16;:69::i;:::-;14746:21;14790:22;;14786:106;;14837:35;14850:21;14837:12;:35::i;:::-;14610:297;14515:392;13778:1140;13740:1178;-1:-1:-1;;;;;14934:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;14962:22:0;;;;;;:18;:22;;;;;;;;14934:50;14930:95;;;-1:-1:-1;15012:1:0;14930:95;15041:13;;15037:171;;15115:4;15097:24;;;;:9;:24;;;;;;:39;;15126:9;15097:28;:39::i;:::-;15088:4;15070:24;;;;:9;:24;;;;;;;:66;;;;15156:40;;-1:-1:-1;;;;;15156:40:0;;;;;;;15186:9;1361:25:1;;1349:2;1334:18;;1215:177;15156:40:0;;;;;;;;15037:171;-1:-1:-1;;;;;15238:15:0;;;;;;:9;:15;;;;;;:27;;15258:6;15238:19;:27::i;:::-;-1:-1:-1;;;;;15220:15:0;;;;;;:9;:15;;;;;:45;15292:40;15310:21;:6;15321:9;15310:10;:21::i;:::-;-1:-1:-1;;;;;15292:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;15276:13:0;;;;;;;:9;:13;;;;;:56;;;;15348:41;;;15367:21;:6;15378:9;15367:10;:21::i;:::-;15348:41;;1361:25:1;;;1349:2;1334:18;15348:41:0;;;;;;;13466:1931;13397:2000;;;:::o;2674:190::-;2760:7;2796:12;2788:6;;;;2780:29;;;;-1:-1:-1;;;2780:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2820:9:0;2832:5;2836:1;2832;:5;:::i;:::-;2820:17;2674:190;-1:-1:-1;;;;;2674:190:0:o;16555:542::-;9142:6;:13;;-1:-1:-1;;;;9142:13:0;-1:-1:-1;;;9142:13:0;;;;;-1:-1:-1;;;16638:11:0;::::1;9142:13:::0;16638:11:::1;16637:12;::::0;:32:::1;;-1:-1:-1::0;16653:16:0;;16637:32:::1;16671:7;16633:45;16714:16;::::0;;16728:1:::1;16714:16:::0;;;;;::::1;::::0;;16690:21:::1;::::0;16714:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16714:16:0::1;16690:40;;16759:4;16741;16746:1;16741:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16741:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;16785:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;16785:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;16741:7;;16785:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16775:4;16780:1;16775:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16775:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16852:15:::1;::::0;16820:62:::1;::::0;16837:4:::1;::::0;16852:15:::1;16870:11:::0;16820:8:::1;:62::i;:::-;16893:15;::::0;:196:::1;::::0;-1:-1:-1;;;16893:196:0;;-1:-1:-1;;;;;16893:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16974:11;;16893:15:::1;::::0;17016:4;;17043::::1;::::0;17063:15:::1;::::0;16893:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16622:475;9166:1;-1:-1:-1::0;9178:6:0;:14;;-1:-1:-1;;;;9178:14:0;;;16555:542::o;17204:165::-;17261:10;;-1:-1:-1;;;;;17261:10:0;:44;17281:23;17300:3;17281:14;:6;17292:2;17281:10;:14::i;:23::-;17261:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17316:11:0;;-1:-1:-1;;;;;17316:11:0;:45;17337:23;17356:3;17337:14;:6;17348:2;17337:10;:14::i;:23::-;17316:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2343:179;2401:7;;2433:5;2437:1;2433;:5;:::i;:::-;2421:17;;2462:1;2457;:6;;2449:46;;;;-1:-1:-1;;;2449:46:0;;13368:2:1;2449:46:0;;;13350:21:1;13407:2;13387:18;;;13380:30;13446:29;13426:18;;;13419:57;13493:18;;2449:46:0;13166:351:1;2449:46:0;2513:1;2343:179;-1:-1:-1;;;2343:179:0:o;15800:324::-;15842:7;15866:10;;15880:1;15866:15;15862:38;;-1:-1:-1;15890:10:0;;;15800:324::o;15862:38::-;15952:1;15932:16;;15917:12;:31;;;;:::i;:::-;:36;15913:204;;-1:-1:-1;15977:2:0;;15800:324::o;15913:204::-;16036:2;16016:16;;16001:31;;:12;:31;:::i;:::-;:37;15997:120;;-1:-1:-1;16062:2:0;;15800:324::o;15997:120::-;-1:-1:-1;16104:1:0;;15800:324::o;2872:246::-;2930:7;2954:1;2959;2954:6;2950:47;;-1:-1:-1;2984:1:0;2977:8;;2950:47;3007:9;3019:5;3023:1;3019;:5;:::i;:::-;3007:17;-1:-1:-1;3052:1:0;3043:5;3047:1;3007:17;3043:5;:::i;:::-;:10;3035:56;;;;-1:-1:-1;;;3035:56:0;;13946:2:1;3035:56:0;;;13928:21:1;13985:2;13965:18;;;13958:30;14024:34;14004:18;;;13997:62;-1:-1:-1;;;14075:18:1;;;14068:31;14116:19;;3035:56:0;13744:397:1;3126:132:0;3184:7;3211:39;3215:1;3218;3211:39;;;;;;;;;;;;;;;;;:3;:39::i;16313:106::-;16370:7;16401:1;16397;:5;16396:15;;16410:1;16396:15;;;-1:-1:-1;16406:1:0;16313:106;-1:-1:-1;16313:106:0:o;2530:136::-;2588:7;2615:43;2619:1;2622;2615:43;;;;;;;;;;;;;;;;;:3;:43::i;3266:189::-;3352:7;3387:12;3380:5;3372:28;;;;-1:-1:-1;;;3372:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3411:9:0;3423:5;3427:1;3423;: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;1621:456::-;1698:6;1706;1714;1767:2;1755:9;1746:7;1742:23;1738:32;1735:52;;;1783:1;1780;1773:12;1735:52;1822:9;1809:23;1841:31;1866:5;1841:31;:::i;:::-;1891:5;-1:-1:-1;1948:2:1;1933:18;;1920:32;1961:33;1920:32;1961:33;:::i;:::-;1621:456;;2013:7;;-1:-1:-1;;;2067:2:1;2052:18;;;;2039:32;;1621:456::o;2479:247::-;2538:6;2591:2;2579:9;2570:7;2566:23;2562:32;2559:52;;;2607:1;2604;2597:12;2559:52;2646:9;2633:23;2665:31;2690:5;2665:31;:::i;2731:180::-;2790:6;2843:2;2831:9;2822:7;2818:23;2814:32;2811:52;;;2859:1;2856;2849:12;2811:52;-1:-1:-1;2882:23:1;;2731:180;-1:-1:-1;2731:180:1:o;2916:388::-;2984:6;2992;3045:2;3033:9;3024:7;3020:23;3016:32;3013:52;;;3061:1;3058;3051:12;3013:52;3100:9;3087:23;3119:31;3144:5;3119:31;:::i;:::-;3169:5;-1:-1:-1;3226:2:1;3211:18;;3198:32;3239:33;3198:32;3239:33;:::i;:::-;3291:7;3281:17;;;2916:388;;;;;:::o;3718:356::-;3920:2;3902:21;;;3939:18;;;3932:30;3998:34;3993:2;3978:18;;3971:62;4065:2;4050:18;;3718:356::o;4079:127::-;4140:10;4135:3;4131:20;4128:1;4121:31;4171:4;4168:1;4161:15;4195:4;4192:1;4185:15;4211:422;4300:1;4343:5;4300:1;4357:270;4378:7;4368:8;4365:21;4357:270;;;4437:4;4433:1;4429:6;4425:17;4419:4;4416:27;4413:53;;;4446:18;;:::i;:::-;4496:7;4486:8;4482:22;4479:55;;;4516:16;;;;4479:55;4595:22;;;;4555:15;;;;4357:270;;;4361:3;4211:422;;;;;:::o;4638:806::-;4687:5;4717:8;4707:80;;-1:-1:-1;4758:1:1;4772:5;;4707:80;4806:4;4796:76;;-1:-1:-1;4843:1:1;4857:5;;4796:76;4888:4;4906:1;4901:59;;;;4974:1;4969:130;;;;4881:218;;4901:59;4931:1;4922:10;;4945:5;;;4969:130;5006:3;4996:8;4993:17;4990:43;;;5013:18;;:::i;:::-;-1:-1:-1;;5069:1:1;5055:16;;5084:5;;4881:218;;5183:2;5173:8;5170:16;5164:3;5158:4;5155:13;5151:36;5145:2;5135:8;5132:16;5127:2;5121:4;5118:12;5114:35;5111:77;5108:159;;;-1:-1:-1;5220:19:1;;;5252:5;;5108:159;5299:34;5324:8;5318:4;5299:34;:::i;:::-;5369:6;5365:1;5361:6;5357:19;5348:7;5345:32;5342:58;;;5380:18;;:::i;:::-;5418:20;;4638:806;-1:-1:-1;;;4638:806:1:o;5449:140::-;5507:5;5536:47;5577:4;5567:8;5563:19;5557:4;5536:47;:::i;5594:168::-;5667:9;;;5698;;5715:15;;;5709:22;;5695:37;5685:71;;5736:18;;:::i;5767:349::-;5969:2;5951:21;;;6008:2;5988:18;;;5981:30;6047:27;6042:2;6027:18;;6020:55;6107:2;6092:18;;5767:349::o;6610:277::-;6677:6;6730:2;6718:9;6709:7;6705:23;6701:32;6698:52;;;6746:1;6743;6736:12;6698:52;6778:9;6772:16;6831:5;6824:13;6817:21;6810:5;6807:32;6797:60;;6853:1;6850;6843:12;11398:128;11465:9;;;11486:11;;;11483:37;;;11500:18;;:::i;11663:127::-;11724:10;11719:3;11715:20;11712:1;11705:31;11755:4;11752:1;11745:15;11779:4;11776:1;11769:15;11795:251;11865:6;11918:2;11906:9;11897:7;11893:23;11889:32;11886:52;;;11934:1;11931;11924:12;11886:52;11966:9;11960:16;11985:31;12010:5;11985:31;:::i;12051:980::-;12313:4;12361:3;12350:9;12346:19;12392:6;12381:9;12374:25;12418:2;12456:6;12451:2;12440:9;12436:18;12429:34;12499:3;12494:2;12483:9;12479:18;12472:31;12523:6;12558;12552:13;12589:6;12581;12574:22;12627:3;12616:9;12612:19;12605:26;;12666:2;12658:6;12654:15;12640:29;;12687:1;12697:195;12711:6;12708:1;12705:13;12697:195;;;12776:13;;-1:-1:-1;;;;;12772:39:1;12760:52;;12867:15;;;;12832:12;;;;12808:1;12726:9;12697:195;;;-1:-1:-1;;;;;;;12948:32:1;;;;12943:2;12928:18;;12921:60;-1:-1:-1;;;13012:3:1;12997:19;12990:35;12909:3;12051:980;-1:-1:-1;;;12051:980:1:o;13036:125::-;13101:9;;;13122:10;;;13119:36;;;13135:18;;:::i;13522:217::-;13562:1;13588;13578:132;;13632:10;13627:3;13623:20;13620:1;13613:31;13667:4;13664:1;13657:15;13695:4;13692:1;13685:15;13578:132;-1:-1:-1;13724:9:1;;13522:217::o

Swarm Source

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