ETH Price: $2,520.85 (+3.16%)
Gas: 0.94 Gwei

Token

Pinks Cryptoverse (PINKCV)
 

Overview

Max Total Supply

100,000,000 PINKCV

Holders

182 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,003.999999999998951424 PINKCV

Value
$0.00
0x41bC25E8fC547564e7C1A7fFDff6278bF6Eb5cc5
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Creators of the Pink's Cryptoverse brand, Crypto Force digital comic series and related NFTs. Come be a part of the story in this epic journey!

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PINKCV

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-03
*/

// SPDX-License-Identifier: MIT

/* 
Creators of Crypto Force digital comic series and related NFTs. Come join us!
https://linktr.ee/pinkscryptoverse

Contract created by: Service Bridge https://serbridge.com/ 
*/

pragma solidity 0.8.17;

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

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

interface IUniswapV3Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV3Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

}


contract ERC20 is Context, IERC20, IERC20Metadata {
    
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }


    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// Interface for Uniswap Router

interface IUniswapV3Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV3Router02 is IUniswapV3Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

    IUniswapV3Router02 public uniswapV3Router;
    address public uniswapV3Pair;
    bool private swapping;

    address public marketingWallet;
    address private developerWallet;

    uint256 public percentForMarketing = 100;
    bool public buyBackEnabled = false;

    uint256 public swapTokensAtAmount;

    bool public swapEnabled = true;

    uint256 public feeDivisor = 1000;

    uint256 public totalSellFees;
    uint256 public marketingSellFee;
    uint256 public developerSellFee;

    uint256 public totalBuyFees;
    uint256 public marketingBuyFee;
    uint256 public developerBuyFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForDeveloper;

    mapping (address => bool) private _isExcludedFromFees;

    mapping (address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);


    constructor() ERC20("Pinks Cryptoverse", "PINKCV"){

        address newOwner = address(0x7c70239C0a77D1Db7Fc7d6759DAeec1A7B161020);

        // Total Supply minted once during deployment and never minted again | Set number in exact tokens
        uint256 totalSupply = 100000000 * (10**18);

        // Tokens threshold for conversion event | Set number in exact tokens
        swapTokensAtAmount = 100000 * (10**18);

        // Contracts Sell fees in percents | Static values
        marketingSellFee = 295;
        developerSellFee = 5;
        totalSellFees = marketingSellFee + developerSellFee;

        // Contracts Buy fees in percents | Static values
        marketingBuyFee = 95;
        developerBuyFee = 5;
        totalBuyFees = marketingBuyFee + developerBuyFee;

        // Project Marketing Wallet | In case of compromise, updateable
        marketingWallet = address(0x38D3A2CfC28aE20Fe05810cF28540693B385F5B9);

        // Project Developer Wallet | Static variable
        developerWallet = address(0x04D694566baF756Ca1bA9Ae9eEf512875217c9D8);

        // Router settings for Binance Smart Chain | Pancakeswap:
        // Pancakeswap testnet: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
        // Pancakeswap mainnet: 0x10ED43C718714eb63d5aA57B78B54704E256024E

        // Router settings for Ethereum, Arbitrum, Optimism:
        // Uniswap V2 testnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        // Uniswap V2 mainnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

        // Router settings for Polygon, Mumbai
        // SushiSwap mainnet & testnet: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
        // QuickSwap mainnet: 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff

        IUniswapV3Router02 _uniswapV3Router = IUniswapV3Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        address _uniswapV3Pair = IUniswapV3Factory(_uniswapV3Router.factory())
            .createPair(address(this), _uniswapV3Router.WETH());

        uniswapV3Router = _uniswapV3Router;
        uniswapV3Pair = _uniswapV3Pair;

        _setAutomatedMarketMakerPair(_uniswapV3Pair, true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(address(newOwner), totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {

      }

    // Update contracts buy fees | Example percentages: 5 = 0.5% | 10 = 1% | 100 = 10%
    function updateBuyFees(uint256 _marketingFee, uint256 _developerFee) external onlyOwner {
        marketingBuyFee = _marketingFee;
        developerBuyFee = _developerFee;
        totalBuyFees = marketingBuyFee + developerBuyFee;
        require(totalBuyFees <= 350, "Must be equal or lower 35%");
    }

    // Update contracts sell fees | Example percentages: 5 = 0.5% | 10 = 1% | 100 = 10%
    function updateSellFees(uint256 _marketingFee, uint256 _developerFee) external onlyOwner {
        marketingSellFee = _marketingFee;
        developerSellFee = _developerFee;
        totalSellFees = marketingSellFee + developerSellFee;
        require(totalSellFees <= 350, "Must be equal or lower 35%");
    }

    // Change S.A.L token swap amounts | Set number in exact tokens to be swapped to native currency
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
          swapTokensAtAmount = newAmount * (10**18);
          return true;
      }


    // Exclude a wallet from fees | Not to be abused and only to be used for project wallets
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    // Exclude multiple wallets from fees | Not to be abused and only to be used for project wallets
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV3Pair, "The UniSwap pair cannot be removed from AutomatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    // Set a new project marketing wallet | In case of compromise | Security measurements
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        require(newMarketingWallet != address(0), "cannot set to 0 address");
        excludeFromFees(newMarketingWallet, true);
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

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

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;


        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;


        if(takeFee){

            if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount.mul(totalSellFees).div(feeDivisor);
                tokensForMarketing += fees * marketingSellFee / totalSellFees;
                tokensForDeveloper += fees * developerSellFee / totalSellFees;
            }

            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
                fees = amount.mul(totalBuyFees).div(feeDivisor);
                tokensForMarketing += fees * marketingBuyFee / totalBuyFees;
                tokensForDeveloper += fees * developerBuyFee / totalBuyFees;

                }


            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);

    }

    function swapEthForNativeToken(uint256 ethAmount) private {
        if(ethAmount > 0){
            address[] memory path = new address[](2);
            path[0] = uniswapV3Router.WETH();
            path[1] = address(this);

            uniswapV3Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
                0,
                path,
                address(marketingWallet),
                block.timestamp
            );
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV3Router.WETH();

        _approve(address(this), address(uniswapV3Router), tokenAmount);

        uniswapV3Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        _approve(address(this), address(uniswapV3Router), tokenAmount);


        uniswapV3Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );

    }

    // Sell pressure cancelation | Performs automatic purchases between sells

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing + tokensForDeveloper;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        bool success;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDeveloper= ethBalance.mul(tokensForDeveloper).div(totalTokensToSwap);

        (success,) = address(developerWallet).call{value: ethForDeveloper}("Converted");

        if(buyBackEnabled){
            (success,) = address(marketingWallet).call{value: ethForMarketing * percentForMarketing / 100}("Automated BuyBack completed");
            swapEthForNativeToken(address(this).balance);
        } else {
            (success,) = address(marketingWallet).call{value: address(this).balance}("Success");
        }
    }

    // Recovery functions for stuck native balances and accidentally sent ERC20 tokens

    // Recover possible stuck ETH or other native currency from the contract
    function recoverStuckETH() external onlyOwner {
        (bool success,) = address(msg.sender).call{value: address(this).balance}("Stuck ETH balance from contract address recovered");
        require(success, "Failed. Either caller is not the owner or address is not the contract address");
    }

    // Recover possible stuck ERC20 tokens from the contract
    function recoverStuckTokens(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){
    return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    //Function for automated buyback settings if in use | Set in numbers. Higher the number, lower the buyback amount
    function changeBuyBackSettings(bool _buyBackEnabled, uint256 _percentForMarketing) external onlyOwner {
        require(_percentForMarketing <= 100, "Must be set below 100%");
        percentForMarketing = _percentForMarketing;
        buyBackEnabled = _buyBackEnabled;
    }
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_buyBackEnabled","type":"bool"},{"internalType":"uint256","name":"_percentForMarketing","type":"uint256"}],"name":"changeBuyBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developerBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developerSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"recoverStuckTokens","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV3Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV3Router","outputs":[{"internalType":"contract IUniswapV3Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526064600a55600b805460ff19908116909155600d805490911660011790556103e8600e553480156200003557600080fd5b506040518060400160405280601181526020017050696e6b732043727970746f766572736560781b815250604051806040016040528060068152602001652824a725a1ab60d11b8152508160039081620000909190620007a4565b5060046200009f8282620007a4565b5050506000620000b46200039060201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002c77833981519152908290a35069152d02c7e14af6800000600c55610127601081905560056011819055737c70239c0a77d1db7fc7d6759daeec1a7b161020916a52b7d2dcc80cd2e4000000916200013c9162000870565b600f55605f601381905560056014819055620001589162000870565b601255600880546001600160a01b03199081167338d3a2cfc28ae20fe05810cf28540693b385f5b917909155600980549091167304d694566baf756ca1ba9ae9eef512875217c9d81790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048083019260209291908290030181865afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f919062000892565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000892565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000892565b600680546001600160a01b038086166001600160a01b031992831617909255600780549284169290911691909117905590506200034681600162000394565b62000353846001620003e8565b62000360306001620003e8565b6200036f61dead6001620003e8565b6200037b848462000496565b620003868462000592565b50505050620008bd565b3390565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004375760405162461bcd60e51b8152602060048201819052602482015260008051602062002c5783398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004ee5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200042e565b6200050a816002546200069460201b6200116c1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200053d9183906200116c62000694821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005dd5760405162461bcd60e51b8152602060048201819052602482015260008051602062002c5783398151915260448201526064016200042e565b6001600160a01b038116620006445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200042e565b6005546040516001600160a01b0380841692169060008051602062002c7783398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b600080620006a3838562000870565b905083811015620006f75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200042e565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200072b57607f821691505b6020821081036200074c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068f57600081815260208120601f850160051c810160208610156200077b5750805b601f850160051c820191505b818110156200079c5782815560010162000787565b505050505050565b81516001600160401b03811115620007c057620007c062000700565b620007d881620007d1845462000716565b8462000752565b602080601f831160018114620008105760008415620007f75750858301515b600019600386901b1c1916600185901b1785556200079c565b600085815260208120601f198616915b82811015620008415788860151825594840194600190910190840162000820565b5085821015620008605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620006fa57634e487b7160e01b600052601160045260246000fd5b600060208284031215620008a557600080fd5b81516001600160a01b0381168114620006f757600080fd5b61238a80620008cd6000396000f3fe60806040526004361061023f5760003560e01c8063885229981161012e578063b9e93700116100ab578063d257b34f1161006f578063d257b34f146106a5578063dd62ed3e146106c5578063e2f456051461070b578063e7f444b314610721578063f2fde38b1461073757600080fd5b8063b9e9370014610619578063c02466681461062f578063c492f0461461064f578063c596f3fe1461066f578063d0a398141461068f57600080fd5b80639a7a23d6116100f25780639a7a23d614610569578063a457c2d714610589578063a9059cbb146105a9578063aacebbe3146105c9578063b62496f5146105e957600080fd5b806388522998146104ea5780638da5cb5b1461050a57806395d89b4114610528578063984f02d31461053d5780639a36f9321461055357600080fd5b80633f1c325d116101bc5780636ddd1713116101805780636ddd17131461045057806370a082311461046a578063715018a6146104a057806375f0a874146104b557806381a16445146104d557600080fd5b80633f1c325d146103b15780634fbee193146103c75780636053a0e31461040057806366ca9b831461041a578063680789521461043a57600080fd5b806323b872dd1161020357806323b872dd146102fd5780632c76d7a61461031d578063313ce5671461035557806339509351146103715780633a919b6c1461039157600080fd5b806302dbd8f81461024b57806306fdde031461026d578063095ea7b31461029857806318160ddd146102c85780631e9c1e89146102e757600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b610266366004611dbd565b610757565b005b34801561027957600080fd5b506102826107f8565b60405161028f9190611ddf565b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004611e42565b61088a565b604051901515815260200161028f565b3480156102d457600080fd5b506002545b60405190815260200161028f565b3480156102f357600080fd5b506102d960115481565b34801561030957600080fd5b506102b8610318366004611e6e565b6108a1565b34801561032957600080fd5b5060065461033d906001600160a01b031681565b6040516001600160a01b03909116815260200161028f565b34801561036157600080fd5b506040516012815260200161028f565b34801561037d57600080fd5b506102b861038c366004611e42565b61090a565b34801561039d57600080fd5b5061026b6103ac366004611ebd565b610940565b3480156103bd57600080fd5b506102d960145481565b3480156103d357600080fd5b506102b86103e2366004611edb565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561040c57600080fd5b50600b546102b89060ff1681565b34801561042657600080fd5b5061026b610435366004611dbd565b6109ca565b34801561044657600080fd5b506102d960135481565b34801561045c57600080fd5b50600d546102b89060ff1681565b34801561047657600080fd5b506102d9610485366004611edb565b6001600160a01b031660009081526020819052604090205490565b3480156104ac57600080fd5b5061026b610a5e565b3480156104c157600080fd5b5060085461033d906001600160a01b031681565b3480156104e157600080fd5b5061026b610ad2565b3480156104f657600080fd5b5060075461033d906001600160a01b031681565b34801561051657600080fd5b506005546001600160a01b031661033d565b34801561053457600080fd5b50610282610c18565b34801561054957600080fd5b506102d9600a5481565b34801561055f57600080fd5b506102d9600e5481565b34801561057557600080fd5b5061026b610584366004611ef8565b610c27565b34801561059557600080fd5b506102b86105a4366004611e42565b610ce9565b3480156105b557600080fd5b506102b86105c4366004611e42565b610d38565b3480156105d557600080fd5b5061026b6105e4366004611edb565b610d45565b3480156105f557600080fd5b506102b8610604366004611edb565b60186020526000908152604090205460ff1681565b34801561062557600080fd5b506102d960125481565b34801561063b57600080fd5b5061026b61064a366004611ef8565b610e2d565b34801561065b57600080fd5b5061026b61066a366004611f31565b610eb6565b34801561067b57600080fd5b506102b861068a366004611e42565b610f92565b34801561069b57600080fd5b506102d9600f5481565b3480156106b157600080fd5b506102b86106c0366004611fb7565b611037565b3480156106d157600080fd5b506102d96106e0366004611fd0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561071757600080fd5b506102d9600c5481565b34801561072d57600080fd5b506102d960105481565b34801561074357600080fd5b5061026b610752366004611edb565b611081565b6005546001600160a01b0316331461078a5760405162461bcd60e51b815260040161078190611ffe565b60405180910390fd5b6010829055601181905561079e8183612049565b600f81905561015e10156107f45760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610781565b5050565b6060600380546108079061205c565b80601f01602080910402602001604051908101604052809291908181526020018280546108339061205c565b80156108805780601f1061085557610100808354040283529160200191610880565b820191906000526020600020905b81548152906001019060200180831161086357829003601f168201915b5050505050905090565b60006108973384846111cb565b5060015b92915050565b60006108ae8484846112f0565b61090084336108fb85604051806060016040528060288152602001612308602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611626565b6111cb565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108979185906108fb908661116c565b6005546001600160a01b0316331461096a5760405162461bcd60e51b815260040161078190611ffe565b60648111156109b45760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610781565b600a55600b805460ff1916911515919091179055565b6005546001600160a01b031633146109f45760405162461bcd60e51b815260040161078190611ffe565b60138290556014819055610a088183612049565b601281905561015e10156107f45760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610781565b6005546001600160a01b03163314610a885760405162461bcd60e51b815260040161078190611ffe565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610afc5760405162461bcd60e51b815260040161078190611ffe565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610b83576040519150601f19603f3d011682016040523d82523d6000602084013e610b88565b606091505b5050905080610c155760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610781565b50565b6060600480546108079061205c565b6005546001600160a01b03163314610c515760405162461bcd60e51b815260040161078190611ffe565b6007546001600160a01b0390811690831603610cdf5760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610781565b6107f48282611660565b600061089733846108fb85604051806060016040528060258152602001612330602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611626565b60006108973384846112f0565b6005546001600160a01b03163314610d6f5760405162461bcd60e51b815260040161078190611ffe565b6001600160a01b038116610dc55760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610781565b610dd0816001610e2d565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e575760405162461bcd60e51b815260040161078190611ffe565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ee05760405162461bcd60e51b815260040161078190611ffe565b60005b82811015610f51578160176000868685818110610f0257610f02612096565b9050602002016020810190610f179190611edb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f49816120ac565b915050610ee3565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610f85939291906120c5565b60405180910390a1505050565b6005546000906001600160a01b03163314610fbf5760405162461bcd60e51b815260040161078190611ffe565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611030919061211e565b9392505050565b6005546000906001600160a01b031633146110645760405162461bcd60e51b815260040161078190611ffe565b61107682670de0b6b3a764000061213b565b600c55506001919050565b6005546001600160a01b031633146110ab5760405162461bcd60e51b815260040161078190611ffe565b6001600160a01b0381166111105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610781565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111798385612049565b9050838110156110305760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610781565b6001600160a01b03831661122d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610781565b6001600160a01b03821661128e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610781565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113165760405162461bcd60e51b815260040161078190612152565b6001600160a01b03821661133c5760405162461bcd60e51b815260040161078190612197565b8060000361135557611350838360006116b4565b505050565b30600090815260208190526040902054600c548110801590819061137b5750600d5460ff165b80156113915750600754600160a01b900460ff16155b80156113b657506001600160a01b03851660009081526018602052604090205460ff16155b80156113db57506001600160a01b03851660009081526017602052604090205460ff16155b801561140057506001600160a01b03841660009081526017602052604090205460ff16155b1561142e576007805460ff60a01b1916600160a01b1790556114206117bd565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526017602052604090205460ff600160a01b90920482161591168061147c57506001600160a01b03851660009081526017602052604090205460ff165b15611485575060005b60008115611612576001600160a01b03861660009081526018602052604090205460ff1680156114b757506000600f54115b15611546576114dd600e546114d7600f54886119db90919063ffffffff16565b90611a5d565b9050600f54601054826114f0919061213b565b6114fa91906121da565b6015600082825461150b9190612049565b9091555050600f54601154611520908361213b565b61152a91906121da565b6016600082825461153b9190612049565b909155506115f49050565b6001600160a01b03871660009081526018602052604090205460ff16801561157057506000601254115b156115f457611590600e546114d7601254886119db90919063ffffffff16565b9050601254601354826115a3919061213b565b6115ad91906121da565b601560008282546115be9190612049565b90915550506012546014546115d3908361213b565b6115dd91906121da565b601660008282546115ee9190612049565b90915550505b8015611605576116058730836116b4565b61160f81866121fc565b94505b61161d8787876116b4565b50505050505050565b6000818484111561164a5760405162461bcd60e51b81526004016107819190611ddf565b50600061165784866121fc565b95945050505050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166116da5760405162461bcd60e51b815260040161078190612152565b6001600160a01b0382166117005760405162461bcd60e51b815260040161078190612197565b61173d816040518060600160405280602681526020016122e2602691396001600160a01b0386166000908152602081905260409020549190611626565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461176c908261116c565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016112e3565b30600090815260208190526040812054905060006016546015546117e19190612049565b90508115806117ee575080155b156117f7575050565b60004761180384611a9f565b600061180f4783611bf9565b9050600061182c856114d7601554856119db90919063ffffffff16565b90506000611849866114d7601654866119db90919063ffffffff16565b600980546040516810dbdb9d995c9d195960ba1b81529293506001600160a01b03169183910160006040518083038185875af1925050503d80600081146118ac576040519150601f19603f3d011682016040523d82523d6000602084013e6118b1565b606091505b5050600b5490955060ff161561196957600854600a546001600160a01b03909116906064906118e0908561213b565b6118ea91906121da565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611950576040519150601f19603f3d011682016040523d82523d6000602084013e611955565b606091505b50508095505061196447611c3b565b61161d565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d80600081146119ca576040519150601f19603f3d011682016040523d82523d6000602084013e6119cf565b606091505b50505050505050505050565b6000826000036119ed5750600061089b565b60006119f9838561213b565b905082611a0685836121da565b146110305760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610781565b600061103083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d8f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ad457611ad4612096565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b51919061220f565b81600181518110611b6457611b64612096565b6001600160a01b039283166020918202929092010152600654611b8a91309116846111cb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bc3908590600090869030904290600401612270565b600060405180830381600087803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b505050505050565b600061103083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611626565b8015610c15576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccf919061220f565b81600081518110611ce257611ce2612096565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611d1657611d16612096565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611d629260009288929091169042906004016122ac565b6000604051808303818588803b158015611d7b57600080fd5b505af115801561161d573d6000803e3d6000fd5b60008183611db05760405162461bcd60e51b81526004016107819190611ddf565b50600061165784866121da565b60008060408385031215611dd057600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611e0c57858101830151858201604001528201611df0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c1557600080fd5b60008060408385031215611e5557600080fd5b8235611e6081611e2d565b946020939093013593505050565b600080600060608486031215611e8357600080fd5b8335611e8e81611e2d565b92506020840135611e9e81611e2d565b929592945050506040919091013590565b8015158114610c1557600080fd5b60008060408385031215611ed057600080fd5b8235611e6081611eaf565b600060208284031215611eed57600080fd5b813561103081611e2d565b60008060408385031215611f0b57600080fd5b8235611f1681611e2d565b91506020830135611f2681611eaf565b809150509250929050565b600080600060408486031215611f4657600080fd5b833567ffffffffffffffff80821115611f5e57600080fd5b818601915086601f830112611f7257600080fd5b813581811115611f8157600080fd5b8760208260051b8501011115611f9657600080fd5b60209283019550935050840135611fac81611eaf565b809150509250925092565b600060208284031215611fc957600080fd5b5035919050565b60008060408385031215611fe357600080fd5b8235611fee81611e2d565b91506020830135611f2681611e2d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089b5761089b612033565b600181811c9082168061207057607f821691505b60208210810361209057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000600182016120be576120be612033565b5060010190565b6040808252810183905260008460608301825b868110156121085782356120eb81611e2d565b6001600160a01b03168252602092830192909101906001016120d8565b5080925050508215156020830152949350505050565b60006020828403121561213057600080fd5b815161103081611eaf565b808202811582820484141761089b5761089b612033565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826121f757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561089b5761089b612033565b60006020828403121561222157600080fd5b815161103081611e2d565b600081518084526020808501945080840160005b838110156122655781516001600160a01b031687529582019590820190600101612240565b509495945050505050565b85815284602082015260a06040820152600061228f60a083018661222c565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006122c5608083018661222c565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208bbfc6617361275701f4da7a8f13d7e20c4b9677f55afd2d698401ec006043c664736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061023f5760003560e01c8063885229981161012e578063b9e93700116100ab578063d257b34f1161006f578063d257b34f146106a5578063dd62ed3e146106c5578063e2f456051461070b578063e7f444b314610721578063f2fde38b1461073757600080fd5b8063b9e9370014610619578063c02466681461062f578063c492f0461461064f578063c596f3fe1461066f578063d0a398141461068f57600080fd5b80639a7a23d6116100f25780639a7a23d614610569578063a457c2d714610589578063a9059cbb146105a9578063aacebbe3146105c9578063b62496f5146105e957600080fd5b806388522998146104ea5780638da5cb5b1461050a57806395d89b4114610528578063984f02d31461053d5780639a36f9321461055357600080fd5b80633f1c325d116101bc5780636ddd1713116101805780636ddd17131461045057806370a082311461046a578063715018a6146104a057806375f0a874146104b557806381a16445146104d557600080fd5b80633f1c325d146103b15780634fbee193146103c75780636053a0e31461040057806366ca9b831461041a578063680789521461043a57600080fd5b806323b872dd1161020357806323b872dd146102fd5780632c76d7a61461031d578063313ce5671461035557806339509351146103715780633a919b6c1461039157600080fd5b806302dbd8f81461024b57806306fdde031461026d578063095ea7b31461029857806318160ddd146102c85780631e9c1e89146102e757600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b610266366004611dbd565b610757565b005b34801561027957600080fd5b506102826107f8565b60405161028f9190611ddf565b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004611e42565b61088a565b604051901515815260200161028f565b3480156102d457600080fd5b506002545b60405190815260200161028f565b3480156102f357600080fd5b506102d960115481565b34801561030957600080fd5b506102b8610318366004611e6e565b6108a1565b34801561032957600080fd5b5060065461033d906001600160a01b031681565b6040516001600160a01b03909116815260200161028f565b34801561036157600080fd5b506040516012815260200161028f565b34801561037d57600080fd5b506102b861038c366004611e42565b61090a565b34801561039d57600080fd5b5061026b6103ac366004611ebd565b610940565b3480156103bd57600080fd5b506102d960145481565b3480156103d357600080fd5b506102b86103e2366004611edb565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561040c57600080fd5b50600b546102b89060ff1681565b34801561042657600080fd5b5061026b610435366004611dbd565b6109ca565b34801561044657600080fd5b506102d960135481565b34801561045c57600080fd5b50600d546102b89060ff1681565b34801561047657600080fd5b506102d9610485366004611edb565b6001600160a01b031660009081526020819052604090205490565b3480156104ac57600080fd5b5061026b610a5e565b3480156104c157600080fd5b5060085461033d906001600160a01b031681565b3480156104e157600080fd5b5061026b610ad2565b3480156104f657600080fd5b5060075461033d906001600160a01b031681565b34801561051657600080fd5b506005546001600160a01b031661033d565b34801561053457600080fd5b50610282610c18565b34801561054957600080fd5b506102d9600a5481565b34801561055f57600080fd5b506102d9600e5481565b34801561057557600080fd5b5061026b610584366004611ef8565b610c27565b34801561059557600080fd5b506102b86105a4366004611e42565b610ce9565b3480156105b557600080fd5b506102b86105c4366004611e42565b610d38565b3480156105d557600080fd5b5061026b6105e4366004611edb565b610d45565b3480156105f557600080fd5b506102b8610604366004611edb565b60186020526000908152604090205460ff1681565b34801561062557600080fd5b506102d960125481565b34801561063b57600080fd5b5061026b61064a366004611ef8565b610e2d565b34801561065b57600080fd5b5061026b61066a366004611f31565b610eb6565b34801561067b57600080fd5b506102b861068a366004611e42565b610f92565b34801561069b57600080fd5b506102d9600f5481565b3480156106b157600080fd5b506102b86106c0366004611fb7565b611037565b3480156106d157600080fd5b506102d96106e0366004611fd0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561071757600080fd5b506102d9600c5481565b34801561072d57600080fd5b506102d960105481565b34801561074357600080fd5b5061026b610752366004611edb565b611081565b6005546001600160a01b0316331461078a5760405162461bcd60e51b815260040161078190611ffe565b60405180910390fd5b6010829055601181905561079e8183612049565b600f81905561015e10156107f45760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610781565b5050565b6060600380546108079061205c565b80601f01602080910402602001604051908101604052809291908181526020018280546108339061205c565b80156108805780601f1061085557610100808354040283529160200191610880565b820191906000526020600020905b81548152906001019060200180831161086357829003601f168201915b5050505050905090565b60006108973384846111cb565b5060015b92915050565b60006108ae8484846112f0565b61090084336108fb85604051806060016040528060288152602001612308602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611626565b6111cb565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108979185906108fb908661116c565b6005546001600160a01b0316331461096a5760405162461bcd60e51b815260040161078190611ffe565b60648111156109b45760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610781565b600a55600b805460ff1916911515919091179055565b6005546001600160a01b031633146109f45760405162461bcd60e51b815260040161078190611ffe565b60138290556014819055610a088183612049565b601281905561015e10156107f45760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610781565b6005546001600160a01b03163314610a885760405162461bcd60e51b815260040161078190611ffe565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610afc5760405162461bcd60e51b815260040161078190611ffe565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610b83576040519150601f19603f3d011682016040523d82523d6000602084013e610b88565b606091505b5050905080610c155760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610781565b50565b6060600480546108079061205c565b6005546001600160a01b03163314610c515760405162461bcd60e51b815260040161078190611ffe565b6007546001600160a01b0390811690831603610cdf5760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610781565b6107f48282611660565b600061089733846108fb85604051806060016040528060258152602001612330602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611626565b60006108973384846112f0565b6005546001600160a01b03163314610d6f5760405162461bcd60e51b815260040161078190611ffe565b6001600160a01b038116610dc55760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610781565b610dd0816001610e2d565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e575760405162461bcd60e51b815260040161078190611ffe565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ee05760405162461bcd60e51b815260040161078190611ffe565b60005b82811015610f51578160176000868685818110610f0257610f02612096565b9050602002016020810190610f179190611edb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f49816120ac565b915050610ee3565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610f85939291906120c5565b60405180910390a1505050565b6005546000906001600160a01b03163314610fbf5760405162461bcd60e51b815260040161078190611ffe565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611030919061211e565b9392505050565b6005546000906001600160a01b031633146110645760405162461bcd60e51b815260040161078190611ffe565b61107682670de0b6b3a764000061213b565b600c55506001919050565b6005546001600160a01b031633146110ab5760405162461bcd60e51b815260040161078190611ffe565b6001600160a01b0381166111105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610781565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111798385612049565b9050838110156110305760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610781565b6001600160a01b03831661122d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610781565b6001600160a01b03821661128e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610781565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113165760405162461bcd60e51b815260040161078190612152565b6001600160a01b03821661133c5760405162461bcd60e51b815260040161078190612197565b8060000361135557611350838360006116b4565b505050565b30600090815260208190526040902054600c548110801590819061137b5750600d5460ff165b80156113915750600754600160a01b900460ff16155b80156113b657506001600160a01b03851660009081526018602052604090205460ff16155b80156113db57506001600160a01b03851660009081526017602052604090205460ff16155b801561140057506001600160a01b03841660009081526017602052604090205460ff16155b1561142e576007805460ff60a01b1916600160a01b1790556114206117bd565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526017602052604090205460ff600160a01b90920482161591168061147c57506001600160a01b03851660009081526017602052604090205460ff165b15611485575060005b60008115611612576001600160a01b03861660009081526018602052604090205460ff1680156114b757506000600f54115b15611546576114dd600e546114d7600f54886119db90919063ffffffff16565b90611a5d565b9050600f54601054826114f0919061213b565b6114fa91906121da565b6015600082825461150b9190612049565b9091555050600f54601154611520908361213b565b61152a91906121da565b6016600082825461153b9190612049565b909155506115f49050565b6001600160a01b03871660009081526018602052604090205460ff16801561157057506000601254115b156115f457611590600e546114d7601254886119db90919063ffffffff16565b9050601254601354826115a3919061213b565b6115ad91906121da565b601560008282546115be9190612049565b90915550506012546014546115d3908361213b565b6115dd91906121da565b601660008282546115ee9190612049565b90915550505b8015611605576116058730836116b4565b61160f81866121fc565b94505b61161d8787876116b4565b50505050505050565b6000818484111561164a5760405162461bcd60e51b81526004016107819190611ddf565b50600061165784866121fc565b95945050505050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166116da5760405162461bcd60e51b815260040161078190612152565b6001600160a01b0382166117005760405162461bcd60e51b815260040161078190612197565b61173d816040518060600160405280602681526020016122e2602691396001600160a01b0386166000908152602081905260409020549190611626565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461176c908261116c565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016112e3565b30600090815260208190526040812054905060006016546015546117e19190612049565b90508115806117ee575080155b156117f7575050565b60004761180384611a9f565b600061180f4783611bf9565b9050600061182c856114d7601554856119db90919063ffffffff16565b90506000611849866114d7601654866119db90919063ffffffff16565b600980546040516810dbdb9d995c9d195960ba1b81529293506001600160a01b03169183910160006040518083038185875af1925050503d80600081146118ac576040519150601f19603f3d011682016040523d82523d6000602084013e6118b1565b606091505b5050600b5490955060ff161561196957600854600a546001600160a01b03909116906064906118e0908561213b565b6118ea91906121da565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611950576040519150601f19603f3d011682016040523d82523d6000602084013e611955565b606091505b50508095505061196447611c3b565b61161d565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d80600081146119ca576040519150601f19603f3d011682016040523d82523d6000602084013e6119cf565b606091505b50505050505050505050565b6000826000036119ed5750600061089b565b60006119f9838561213b565b905082611a0685836121da565b146110305760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610781565b600061103083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d8f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ad457611ad4612096565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b51919061220f565b81600181518110611b6457611b64612096565b6001600160a01b039283166020918202929092010152600654611b8a91309116846111cb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bc3908590600090869030904290600401612270565b600060405180830381600087803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b505050505050565b600061103083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611626565b8015610c15576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccf919061220f565b81600081518110611ce257611ce2612096565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611d1657611d16612096565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611d629260009288929091169042906004016122ac565b6000604051808303818588803b158015611d7b57600080fd5b505af115801561161d573d6000803e3d6000fd5b60008183611db05760405162461bcd60e51b81526004016107819190611ddf565b50600061165784866121da565b60008060408385031215611dd057600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611e0c57858101830151858201604001528201611df0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c1557600080fd5b60008060408385031215611e5557600080fd5b8235611e6081611e2d565b946020939093013593505050565b600080600060608486031215611e8357600080fd5b8335611e8e81611e2d565b92506020840135611e9e81611e2d565b929592945050506040919091013590565b8015158114610c1557600080fd5b60008060408385031215611ed057600080fd5b8235611e6081611eaf565b600060208284031215611eed57600080fd5b813561103081611e2d565b60008060408385031215611f0b57600080fd5b8235611f1681611e2d565b91506020830135611f2681611eaf565b809150509250929050565b600080600060408486031215611f4657600080fd5b833567ffffffffffffffff80821115611f5e57600080fd5b818601915086601f830112611f7257600080fd5b813581811115611f8157600080fd5b8760208260051b8501011115611f9657600080fd5b60209283019550935050840135611fac81611eaf565b809150509250925092565b600060208284031215611fc957600080fd5b5035919050565b60008060408385031215611fe357600080fd5b8235611fee81611e2d565b91506020830135611f2681611e2d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089b5761089b612033565b600181811c9082168061207057607f821691505b60208210810361209057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000600182016120be576120be612033565b5060010190565b6040808252810183905260008460608301825b868110156121085782356120eb81611e2d565b6001600160a01b03168252602092830192909101906001016120d8565b5080925050508215156020830152949350505050565b60006020828403121561213057600080fd5b815161103081611eaf565b808202811582820484141761089b5761089b612033565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826121f757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561089b5761089b612033565b60006020828403121561222157600080fd5b815161103081611e2d565b600081518084526020808501945080840160005b838110156122655781516001600160a01b031687529582019590820190600101612240565b509495945050505050565b85815284602082015260a06040820152600061228f60a083018661222c565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006122c5608083018661222c565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208bbfc6617361275701f4da7a8f13d7e20c4b9677f55afd2d698401ec006043c664736f6c63430008110033

Deployed Bytecode Sourcemap

15620:12081:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19804:315;;;;;;;;;;-1:-1:-1;19804:315:0;;;;;:::i;:::-;;:::i;:::-;;4847:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5761:169;;;;;;;;;;-1:-1:-1;5761:169:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;5761:169:0;1276:187:1;5168:108:0;;;;;;;;;;-1:-1:-1;5256:12:0;;5168:108;;;1614:25:1;;;1602:2;1587:18;5168:108:0;1468:177:1;16171:31:0;;;;;;;;;;;;;;;;5938:355;;;;;;;;;;-1:-1:-1;5938:355:0;;;;;:::i;:::-;;:::i;15696:41::-;;;;;;;;;;-1:-1:-1;15696:41:0;;;;-1:-1:-1;;;;;15696:41:0;;;;;;-1:-1:-1;;;;;2302:32:1;;;2284:51;;2272:2;2257:18;15696:41:0;2111:230:1;5067:93:0;;;;;;;;;;-1:-1:-1;5067:93:0;;5150:2;2488:36:1;;2476:2;2461:18;5067:93:0;2346:184:1;6301:218:0;;;;;;;;;;-1:-1:-1;6301:218:0;;;;;:::i;:::-;;:::i;27419:279::-;;;;;;;;;;-1:-1:-1;27419:279:0;;;;;:::i;:::-;;:::i;16282:30::-;;;;;;;;;;;;;;;;22005:125;;;;;;;;;;-1:-1:-1;22005:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;22094:28:0;22070:4;22094:28;;;:19;:28;;;;;;;;;22005:125;15933:34;;;;;;;;;;-1:-1:-1;15933:34:0;;;;;;;;19399:308;;;;;;;;;;-1:-1:-1;19399:308:0;;;;;:::i;:::-;;:::i;16245:30::-;;;;;;;;;;;;;;;;16018;;;;;;;;;;-1:-1:-1;16018:30:0;;;;;;;;5284:127;;;;;;;;;;-1:-1:-1;5284:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5385:18:0;5358:7;5385:18;;;;;;;;;;;;5284:127;10313:150;;;;;;;;;;;;;:::i;15809:30::-;;;;;;;;;;-1:-1:-1;15809:30:0;;;;-1:-1:-1;;;;;15809:30:0;;;26747:298;;;;;;;;;;;;;:::i;15744:28::-;;;;;;;;;;-1:-1:-1;15744:28:0;;;;-1:-1:-1;;;;;15744:28:0;;;10099:79;;;;;;;;;;-1:-1:-1;10164:6:0;;-1:-1:-1;;;;;10164:6:0;10099:79;;4955:104;;;;;;;;;;;;;:::i;15886:40::-;;;;;;;;;;;;;;;;16057:32;;;;;;;;;;;;;;;;21115:250;;;;;;;;;;-1:-1:-1;21115:250:0;;;;;:::i;:::-;;:::i;6527:269::-;;;;;;;;;;-1:-1:-1;6527:269:0;;;;;:::i;:::-;;:::i;5419:175::-;;;;;;;;;;-1:-1:-1;5419:175:0;;;;;:::i;:::-;;:::i;21658:339::-;;;;;;;;;;-1:-1:-1;21658:339:0;;;;;:::i;:::-;;:::i;16467:58::-;;;;;;;;;;-1:-1:-1;16467:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16211:27;;;;;;;;;;;;;;;;20507:184;;;;;;;;;;-1:-1:-1;20507:184:0;;;;;:::i;:::-;;:::i;20801:306::-;;;;;;;;;;-1:-1:-1;20801:306:0;;;;;:::i;:::-;;:::i;27115:177::-;;;;;;;;;;-1:-1:-1;27115:177:0;;;;;:::i;:::-;;:::i;16098:28::-;;;;;;;;;;;;;;;;20229:174;;;;;;;;;;-1:-1:-1;20229:174:0;;;;;:::i;:::-;;:::i;5602:151::-;;;;;;;;;;-1:-1:-1;5602:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5718:18:0;;;5691:7;5718:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5602:151;15976:33;;;;;;;;;;;;;;;;16133:31;;;;;;;;;;;;;;;;10473:244;;;;;;;;;;-1:-1:-1;10473:244:0;;;;;:::i;:::-;;:::i;19804:315::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;;;;;;;;;19904:16:::1;:32:::0;;;19947:16:::1;:32:::0;;;20006:35:::1;19966:13:::0;19923;20006:35:::1;:::i;:::-;19990:13;:51:::0;;;20077:3:::1;-1:-1:-1::0;20060:20:0::1;20052:59;;;::::0;-1:-1:-1;;;20052:59:0;;5977:2:1;20052:59:0::1;::::0;::::1;5959:21:1::0;6016:2;5996:18;;;5989:30;6055:28;6035:18;;;6028:56;6101:18;;20052:59:0::1;5775:350:1::0;20052:59:0::1;19804:315:::0;;:::o;4847:100::-;4901:13;4934:5;4927:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4847:100;:::o;5761:169::-;5844:4;5861:39;364:10;5884:7;5893:6;5861:8;:39::i;:::-;-1:-1:-1;5918:4:0;5761:169;;;;;:::o;5938:355::-;6078:4;6095:36;6105:6;6113:9;6124:6;6095:9;:36::i;:::-;6142:121;6151:6;364:10;6173:89;6211:6;6173:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6173:19:0;;;;;;:11;:19;;;;;;;;364:10;6173:33;;;;;;;;;;:37;:89::i;:::-;6142:8;:121::i;:::-;-1:-1:-1;6281:4:0;5938:355;;;;;:::o;6301:218::-;364:10;6389:4;6438:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6438:34:0;;;;;;;;;;6389:4;;6406:83;;6429:7;;6438:50;;6477:10;6438:38;:50::i;27419:279::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;27564:3:::1;27540:20;:27;;27532:62;;;::::0;-1:-1:-1;;;27532:62:0;;6717:2:1;27532:62:0::1;::::0;::::1;6699:21:1::0;6756:2;6736:18;;;6729:30;-1:-1:-1;;;6775:18:1;;;6768:52;6837:18;;27532:62:0::1;6515:346:1::0;27532:62:0::1;27605:19;:42:::0;27658:14:::1;:32:::0;;-1:-1:-1;;27658:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27419:279::o;19399:308::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;19498:15:::1;:31:::0;;;19540:15:::1;:31:::0;;;19597:33:::1;19558:13:::0;19516;19597:33:::1;:::i;:::-;19582:12;:48:::0;;;19665:3:::1;-1:-1:-1::0;19649:19:0::1;19641:58;;;::::0;-1:-1:-1;;;19641:58:0;;5977:2:1;19641:58:0::1;::::0;::::1;5959:21:1::0;6016:2;5996:18;;;5989:30;6055:28;6035:18;;;6028:56;6101:18;;19641:58:0::1;5775:350:1::0;10313:150:0;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;10406:6:::1;::::0;10385:40:::1;::::0;10422:1:::1;::::0;-1:-1:-1;;;;;10406:6:0::1;::::0;10385:40:::1;::::0;10422:1;;10385:40:::1;10436:6;:19:::0;;-1:-1:-1;;;;;;10436:19:0::1;::::0;;10313:150::o;26747:298::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;26822:107:::1;::::0;7079:34:1;7067:47;;-1:-1:-1;;;7139:2:1;7130:12;;7123:41;26805:12:0::1;::::0;26830:10:::1;::::0;26854:21:::1;::::0;7189:2:1;7180:12;26822:107:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26804:125;;;26948:7;26940:97;;;::::0;-1:-1:-1;;;26940:97:0;;7405:2:1;26940:97:0::1;::::0;::::1;7387:21:1::0;7444:2;7424:18;;;7417:30;7483:34;7463:18;;;7456:62;7554:34;7534:18;;;7527:62;-1:-1:-1;;;7605:19:1;;;7598:44;7659:19;;26940:97:0::1;7203:481:1::0;26940:97:0::1;26793:252;26747:298::o:0;4955:104::-;5011:13;5044:7;5037:14;;;;;:::i;21115:250::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;21222:13:::1;::::0;-1:-1:-1;;;;;21222:13:0;;::::1;21214:21:::0;;::::1;::::0;21206:99:::1;;;::::0;-1:-1:-1;;;21206:99:0;;7891:2:1;21206:99:0::1;::::0;::::1;7873:21:1::0;7930:2;7910:18;;;7903:30;7969:34;7949:18;;;7942:62;8040:34;8020:18;;;8013:62;-1:-1:-1;;;8091:19:1;;;8084:32;8133:19;;21206:99:0::1;7689:469:1::0;21206:99:0::1;21316:41;21345:4;21351:5;21316:28;:41::i;6527:269::-:0;6620:4;6637:129;364:10;6660:7;6669:96;6708:15;6669:96;;;;;;;;;;;;;;;;;364:10;6669:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6669:34:0;;;;;;;;;;;;:38;:96::i;5419:175::-;5505:4;5522:42;364:10;5546:9;5557:6;5522:9;:42::i;21658:339::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21755:32:0;::::1;21747:68;;;::::0;-1:-1:-1;;;21747:68:0;;8365:2:1;21747:68:0::1;::::0;::::1;8347:21:1::0;8404:2;8384:18;;;8377:30;8443:25;8423:18;;;8416:53;8486:18;;21747:68:0::1;8163:347:1::0;21747:68:0::1;21826:41;21842:18;21862:4;21826:15;:41::i;:::-;21926:15;::::0;21883:59:::1;::::0;-1:-1:-1;;;;;21926:15:0;;::::1;::::0;21883:59;::::1;::::0;::::1;::::0;21926:15:::1;::::0;21883:59:::1;21953:15;:36:::0;;-1:-1:-1;;;;;;21953:36:0::1;-1:-1:-1::0;;;;;21953:36:0;;;::::1;::::0;;;::::1;::::0;;21658:339::o;20507:184::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20592:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20592:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20649:34;;1416:41:1;;;20649:34:0::1;::::0;1389:18:1;20649:34:0::1;;;;;;;20507:184:::0;;:::o;20801:306::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;20920:9:::1;20916:115;20935:19:::0;;::::1;20916:115;;;21011:8;20976:19;:32;20996:8;;21005:1;20996:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20976:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20976:32:0;:43;;-1:-1:-1;;20976:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20956:3;::::1;::::0;::::1;:::i;:::-;;;;20916:115;;;;21048:51;21080:8;;21090;21048:51;;;;;;;;:::i;:::-;;;;;;;;20801:306:::0;;;:::o;27115:177::-;10226:6;;27209:12;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;27236:48:::1;::::0;-1:-1:-1;;;27236:48:0;;27265:10:::1;27236:48;::::0;::::1;9760:51:1::0;9827:18;;;9820:34;;;-1:-1:-1;;;;;27236:28:0;::::1;::::0;::::1;::::0;9733:18:1;;27236:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27229:55:::0;27115:177;-1:-1:-1;;;27115:177:0:o;20229:174::-;10226:6;;20310:4;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;20349:20:::1;:9:::0;20362:6:::1;20349:20;:::i;:::-;20328:18;:41:::0;-1:-1:-1;20389:4:0::1;20229:174:::0;;;:::o;10473:244::-;10226:6;;-1:-1:-1;;;;;10226:6:0;364:10;10226:22;10218:67;;;;-1:-1:-1;;;10218:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10562:22:0;::::1;10554:73;;;::::0;-1:-1:-1;;;10554:73:0;;10490:2:1;10554:73:0::1;::::0;::::1;10472:21:1::0;10529:2;10509:18;;;10502:30;10568:34;10548:18;;;10541:62;-1:-1:-1;;;10619:18:1;;;10612:36;10665:19;;10554:73:0::1;10288:402:1::0;10554:73:0::1;10664:6;::::0;10643:38:::1;::::0;-1:-1:-1;;;;;10643:38:0;;::::1;::::0;10664:6:::1;::::0;10643:38:::1;::::0;10664:6:::1;::::0;10643:38:::1;10692:6;:17:::0;;-1:-1:-1;;;;;;10692:17:0::1;-1:-1:-1::0;;;;;10692:17:0;;;::::1;::::0;;;::::1;::::0;;10473:244::o;8332:181::-;8390:7;;8422:5;8426:1;8422;:5;:::i;:::-;8410:17;;8451:1;8446;:6;;8438:46;;;;-1:-1:-1;;;8438:46:0;;10897:2:1;8438:46:0;;;10879:21:1;10936:2;10916:18;;;10909:30;10975:29;10955:18;;;10948:57;11022:18;;8438:46:0;10695:351:1;7786:380:0;-1:-1:-1;;;;;7922:19:0;;7914:68;;;;-1:-1:-1;;;7914:68:0;;11253:2:1;7914:68:0;;;11235:21:1;11292:2;11272:18;;;11265:30;11331:34;11311:18;;;11304:62;-1:-1:-1;;;11382:18:1;;;11375:34;11426:19;;7914:68:0;11051:400:1;7914:68:0;-1:-1:-1;;;;;8001:21:0;;7993:68;;;;-1:-1:-1;;;7993:68:0;;11658:2:1;7993:68:0;;;11640:21:1;11697:2;11677:18;;;11670:30;11736:34;11716:18;;;11709:62;-1:-1:-1;;;11787:18:1;;;11780:32;11829:19;;7993:68:0;11456:398:1;7993:68:0;-1:-1:-1;;;;;8074:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8126:32;;1614:25:1;;;8126:32:0;;1587:18:1;8126:32:0;;;;;;;;7786:380;;;:::o;22138:1888::-;-1:-1:-1;;;;;22270:18:0;;22262:68;;;;-1:-1:-1;;;22262:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22349:16:0;;22341:64;;;;-1:-1:-1;;;22341:64:0;;;;;;;:::i;:::-;22422:6;22432:1;22422:11;22419:92;;22450:28;22466:4;22472:2;22476:1;22450:15;:28::i;:::-;22138:1888;;;:::o;22419:92::-;22572:4;22523:28;5385:18;;;;;;;;;;;22630;;22606:42;;;;;;;22678:35;;-1:-1:-1;22702:11:0;;;;22678:35;:61;;;;-1:-1:-1;22731:8:0;;-1:-1:-1;;;22731:8:0;;;;22730:9;22678:61;:110;;;;-1:-1:-1;;;;;;22757:31:0;;;;;;:25;:31;;;;;;;;22756:32;22678:110;:153;;;;-1:-1:-1;;;;;;22806:25:0;;;;;;:19;:25;;;;;;;;22805:26;22678:153;:194;;;;-1:-1:-1;;;;;;22849:23:0;;;;;;:19;:23;;;;;;;;22848:24;22678:194;22661:321;;;22899:8;:15;;-1:-1:-1;;;;22899:15:0;-1:-1:-1;;;22899:15:0;;;22929:10;:8;:10::i;:::-;22954:8;:16;;-1:-1:-1;;;;22954:16:0;;;22661:321;23010:8;;-1:-1:-1;;;;;23036:25:0;;22994:12;23036:25;;;:19;:25;;;;;;23010:8;-1:-1:-1;;;23010:8:0;;;;;23009:9;;23036:25;;:52;;-1:-1:-1;;;;;;23065:23:0;;;;;;:19;:23;;;;;;;;23036:52;23033:99;;;-1:-1:-1;23115:5:0;23033:99;23144:12;23178:7;23175:796;;;-1:-1:-1;;;;;23207:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23256:1;23240:13;;:17;23207:50;23203:619;;;23284:41;23314:10;;23284:25;23295:13;;23284:6;:10;;:25;;;;:::i;:::-;:29;;:41::i;:::-;23277:48;;23392:13;;23373:16;;23366:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23344:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23472:13:0;;23453:16;;23446:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;23424:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;23203:619:0;;-1:-1:-1;23203:619:0;;-1:-1:-1;;;;;23525:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;23575:1;23560:12;;:16;23525:51;23522:300;;;23604:40;23633:10;;23604:24;23615:12;;23604:6;:10;;:24;;;;:::i;:40::-;23597:47;;23710:12;;23692:15;;23685:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23663:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;23788:12:0;;23770:15;;23763:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;23741:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;23522:300:0;23843:8;;23840:89;;23871:42;23887:4;23901;23908;23871:15;:42::i;:::-;23945:14;23955:4;23945:14;;:::i;:::-;;;23175:796;23983:33;23999:4;24005:2;24009:6;23983:15;:33::i;:::-;22251:1775;;;;22138:1888;;;:::o;8667:192::-;8753:7;8789:12;8781:6;;;;8773:29;;;;-1:-1:-1;;;8773:29:0;;;;;;;;:::i;:::-;-1:-1:-1;8813:9:0;8825:5;8829:1;8825;:5;:::i;:::-;8813:17;8667:192;-1:-1:-1;;;;;8667:192:0:o;21373:186::-;-1:-1:-1;;;;;21456:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21456:39:0;;;;;;;;;;21511:40;;21456:39;;:31;21511:40;;;21373:186;;:::o;6804:573::-;-1:-1:-1;;;;;6944:20:0;;6936:70;;;;-1:-1:-1;;;6936:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7025:23:0;;7017:71;;;;-1:-1:-1;;;7017:71:0;;;;;;;:::i;:::-;7181;7203:6;7181:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7181:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7161:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7286:20;;;;;;;:32;;7311:6;7286:24;:32::i;:::-;-1:-1:-1;;;;;7263:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7334:35;1614:25:1;;;7263:20:0;;7334:35;;;;;;1587:18:1;7334:35:0;1468:177:1;25475:1096:0;25558:4;25514:23;5385:18;;;;;;;;;;;25514:50;;25575:25;25624:18;;25603;;:39;;;;:::i;:::-;25575:67;-1:-1:-1;25658:20:0;;;:46;;-1:-1:-1;25682:22:0;;25658:46;25655:60;;;25707:7;;25475:1096::o;25655:60::-;25727:12;25780:21;25814:33;25831:15;25814:16;:33::i;:::-;25860:18;25881:44;:21;25907:17;25881:25;:44::i;:::-;25860:65;;25938:23;25964:57;26003:17;25964:34;25979:18;;25964:10;:14;;:34;;;;:::i;:57::-;25938:83;;26032:23;26057:57;26096:17;26057:34;26072:18;;26057:10;:14;;:34;;;;:::i;:57::-;26148:15;;;26140:66;;-1:-1:-1;;;13225:24:1;;26032:82:0;;-1:-1:-1;;;;;;26148:15:0;;26032:82;;13265:11:1;26140:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26222:14:0;;26127:79;;-1:-1:-1;26222:14:0;;26219:345;;;26273:15;;26320:19;;-1:-1:-1;;;;;26273:15:0;;;;26342:3;;26302:37;;:15;:37;:::i;:::-;:43;;;;:::i;:::-;26265:112;;13500:29:1;13488:42;;13555:2;13546:12;26265:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26252:125;;;;;26392:44;26414:21;26392;:44::i;:::-;26219:345;;;26490:15;;26482:70;;-1:-1:-1;;;13770:22:1;;-1:-1:-1;;;;;26490:15:0;;;;26519:21;;13817:1:1;13808:11;26482:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;25475:1096:0:o;8869:252::-;8927:7;8953:1;8958;8953:6;8949:47;;-1:-1:-1;8983:1:0;8976:8;;8949:47;9008:9;9020:5;9024:1;9020;:5;:::i;:::-;9008:17;-1:-1:-1;9053:1:0;9044:5;9048:1;9008:17;9044:5;:::i;:::-;:10;9036:56;;;;-1:-1:-1;;;9036:56:0;;14032:2:1;9036:56:0;;;14014:21:1;14071:2;14051:18;;;14044:30;14110:34;14090:18;;;14083:62;-1:-1:-1;;;14161:18:1;;;14154:31;14202:19;;9036:56:0;13830:397:1;9129:132:0;9187:7;9214:39;9218:1;9221;9214:39;;;;;;;;;;;;;;;;;:3;:39::i;24523:479::-;24615:16;;;24629:1;24615:16;;;;;;;;24591:21;;24615:16;;;;;;;;;;-1:-1:-1;24615:16:0;24591:40;;24660:4;24642;24647:1;24642:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24642:23:0;;;:7;;;;;;;;;;:23;;;;24686:15;;:22;;;-1:-1:-1;;;24686:22:0;;;;:15;;;;;:20;;:22;;;;;24642:7;;24686:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24676:4;24681:1;24676:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24676:32:0;;;:7;;;;;;;;;:32;24753:15;;24721:62;;24738:4;;24753:15;24771:11;24721:8;:62::i;:::-;24796:15;;:196;;-1:-1:-1;;;24796:196:0;;-1:-1:-1;;;;;24796:15:0;;;;:66;;:196;;24877:11;;24796:15;;24919:4;;24946;;24966:15;;24796:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24578:424;24523:479;:::o;8523:136::-;8581:7;8608:43;8612:1;8615;8608:43;;;;;;;;;;;;;;;;;:3;:43::i;24034:481::-;24106:13;;24103:405;;24159:16;;;24173:1;24159:16;;;;;;;;24135:21;;24159:16;;;;;;;;-1:-1:-1;;24200:15:0;;:22;;;-1:-1:-1;;;24200:22:0;;;;24135:40;;-1:-1:-1;;;;;;24200:15:0;;;;:20;;-1:-1:-1;24200:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24190:4;24195:1;24190:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24190:32:0;;;-1:-1:-1;;;;;24190:32:0;;;;;24255:4;24237;24242:1;24237:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24237:23:0;;;:7;;;;;;;;;:23;24277:15;;24431;;24277:219;;-1:-1:-1;;;24277:219:0;;:15;;;;:66;;24351:9;;24277:219;;:15;;24400:4;;24431:15;;;;24466;;24277:219;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9269:191;9355:7;9390:12;9383:5;9375:28;;;;-1:-1:-1;;;9375:28:0;;;;;;;;:::i;:::-;-1:-1:-1;9414:9:0;9426:5;9430:1;9426;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1650:456::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;1851:9;1838:23;1870:31;1895:5;1870:31;:::i;:::-;1920:5;-1:-1:-1;1977:2:1;1962:18;;1949:32;1990:33;1949:32;1990:33;:::i;:::-;1650:456;;2042:7;;-1:-1:-1;;;2096:2:1;2081:18;;;;2068:32;;1650:456::o;2535:118::-;2621:5;2614:13;2607:21;2600:5;2597:32;2587:60;;2643:1;2640;2633:12;2658:309;2723:6;2731;2784:2;2772:9;2763:7;2759:23;2755:32;2752:52;;;2800:1;2797;2790:12;2752:52;2839:9;2826:23;2858:28;2880:5;2858:28;:::i;2972:247::-;3031:6;3084:2;3072:9;3063:7;3059:23;3055:32;3052:52;;;3100:1;3097;3090:12;3052:52;3139:9;3126:23;3158:31;3183:5;3158:31;:::i;3432:382::-;3497:6;3505;3558:2;3546:9;3537:7;3533:23;3529:32;3526:52;;;3574:1;3571;3564:12;3526:52;3613:9;3600:23;3632:31;3657:5;3632:31;:::i;:::-;3682:5;-1:-1:-1;3739:2:1;3724:18;;3711:32;3752:30;3711:32;3752:30;:::i;:::-;3801:7;3791:17;;;3432:382;;;;;:::o;3819:750::-;3911:6;3919;3927;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;4036:9;4023:23;4065:18;4106:2;4098:6;4095:14;4092:34;;;4122:1;4119;4112:12;4092:34;4160:6;4149:9;4145:22;4135:32;;4205:7;4198:4;4194:2;4190:13;4186:27;4176:55;;4227:1;4224;4217:12;4176:55;4267:2;4254:16;4293:2;4285:6;4282:14;4279:34;;;4309:1;4306;4299:12;4279:34;4364:7;4357:4;4347:6;4344:1;4340:14;4336:2;4332:23;4328:34;4325:47;4322:67;;;4385:1;4382;4375:12;4322:67;4416:4;4408:13;;;;-1:-1:-1;4440:6:1;-1:-1:-1;;4481:20:1;;4468:34;4511:28;4468:34;4511:28;:::i;:::-;4558:5;4548:15;;;3819:750;;;;;:::o;4574:180::-;4633:6;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;-1:-1:-1;4725:23:1;;4574:180;-1:-1:-1;4574:180:1:o;4759:388::-;4827:6;4835;4888:2;4876:9;4867:7;4863:23;4859:32;4856:52;;;4904:1;4901;4894:12;4856:52;4943:9;4930:23;4962:31;4987:5;4962:31;:::i;:::-;5012:5;-1:-1:-1;5069:2:1;5054:18;;5041:32;5082:33;5041:32;5082:33;:::i;5152:356::-;5354:2;5336:21;;;5373:18;;;5366:30;5432:34;5427:2;5412:18;;5405:62;5499:2;5484:18;;5152:356::o;5513:127::-;5574:10;5569:3;5565:20;5562:1;5555:31;5605:4;5602:1;5595:15;5629:4;5626:1;5619:15;5645:125;5710:9;;;5731:10;;;5728:36;;;5744:18;;:::i;6130:380::-;6209:1;6205:12;;;;6252;;;6273:61;;6327:4;6319:6;6315:17;6305:27;;6273:61;6380:2;6372:6;6369:14;6349:18;6346:38;6343:161;;6426:10;6421:3;6417:20;6414:1;6407:31;6461:4;6458:1;6451:15;6489:4;6486:1;6479:15;6343:161;;6130:380;;;:::o;8515:127::-;8576:10;8571:3;8567:20;8564:1;8557:31;8607:4;8604:1;8597:15;8631:4;8628:1;8621:15;8647:135;8686:3;8707:17;;;8704:43;;8727:18;;:::i;:::-;-1:-1:-1;8774:1:1;8763:13;;8647:135::o;8787:794::-;9009:2;9021:21;;;8994:18;;9077:22;;;8961:4;9156:6;9130:2;9115:18;;8961:4;9190:304;9204:6;9201:1;9198:13;9190:304;;;9279:6;9266:20;9299:31;9324:5;9299:31;:::i;:::-;-1:-1:-1;;;;;9355:31:1;9343:44;;9410:4;9469:15;;;;9434:12;;;;9383:1;9219:9;9190:304;;;9194:3;9511;9503:11;;;;9566:6;9559:14;9552:22;9545:4;9534:9;9530:20;9523:52;8787:794;;;;;;:::o;9865:245::-;9932:6;9985:2;9973:9;9964:7;9960:23;9956:32;9953:52;;;10001:1;9998;9991:12;9953:52;10033:9;10027:16;10052:28;10074:5;10052:28;:::i;10115:168::-;10188:9;;;10219;;10236:15;;;10230:22;;10216:37;10206:71;;10257:18;;:::i;11859:401::-;12061:2;12043:21;;;12100:2;12080:18;;;12073:30;12139:34;12134:2;12119:18;;12112:62;-1:-1:-1;;;12205:2:1;12190:18;;12183:35;12250:3;12235:19;;11859:401::o;12265:399::-;12467:2;12449:21;;;12506:2;12486:18;;;12479:30;12545:34;12540:2;12525:18;;12518:62;-1:-1:-1;;;12611:2:1;12596:18;;12589:33;12654:3;12639:19;;12265:399::o;12669:217::-;12709:1;12735;12725:132;;12779:10;12774:3;12770:20;12767:1;12760:31;12814:4;12811:1;12804:15;12842:4;12839:1;12832:15;12725:132;-1:-1:-1;12871:9:1;;12669:217::o;12891:128::-;12958:9;;;12979:11;;;12976:37;;;12993:18;;:::i;14364:251::-;14434:6;14487:2;14475:9;14466:7;14462:23;14458:32;14455:52;;;14503:1;14500;14493:12;14455:52;14535:9;14529:16;14554:31;14579:5;14554:31;:::i;14620:461::-;14673:3;14711:5;14705:12;14738:6;14733:3;14726:19;14764:4;14793:2;14788:3;14784:12;14777:19;;14830:2;14823:5;14819:14;14851:1;14861:195;14875:6;14872:1;14869:13;14861:195;;;14940:13;;-1:-1:-1;;;;;14936:39:1;14924:52;;14996:12;;;;15031:15;;;;14972:1;14890:9;14861:195;;;-1:-1:-1;15072:3:1;;14620:461;-1:-1:-1;;;;;14620:461:1:o;15086:582::-;15385:6;15374:9;15367:25;15428:6;15423:2;15412:9;15408:18;15401:34;15471:3;15466:2;15455:9;15451:18;15444:31;15348:4;15492:57;15544:3;15533:9;15529:19;15521:6;15492:57;:::i;:::-;-1:-1:-1;;;;;15585:32:1;;;;15580:2;15565:18;;15558:60;-1:-1:-1;15649:3:1;15634:19;15627:35;15484:65;15086:582;-1:-1:-1;;;15086:582:1:o;15673:510::-;15944:6;15933:9;15926:25;15987:3;15982:2;15971:9;15967:18;15960:31;15907:4;16008:57;16060:3;16049:9;16045:19;16037:6;16008:57;:::i;:::-;-1:-1:-1;;;;;16101:32:1;;;;16096:2;16081:18;;16074:60;-1:-1:-1;16165:2:1;16150:18;16143:34;16000:65;15673:510;-1:-1:-1;;15673:510:1:o

Swarm Source

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