ETH Price: $2,267.60 (+2.29%)

Token

DARK BOT (DARK)
 

Overview

Max Total Supply

1,000,000,000 DARK

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,367,757.843681623 DARK

Value
$0.00
0xf8ba67af2f7300e378ce293452cf56d84785c28b
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:
DARKBOT

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-05
*/

/*

█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
█░░░░░░░░░░░░███░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░███░░░░░░██░░░░░░░░████░░░░░░░░░░░░░░███░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█
█░░▄▀▄▀▄▀▄▀░░░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀▄▀░░███░░▄▀░░██░░▄▀▄▀░░████░░▄▀▄▀▄▀▄▀▄▀░░███░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█
█░░▄▀░░░░▄▀▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░░░░░░░▄▀░░███░░▄▀░░██░░▄▀░░░░████░░▄▀░░░░░░▄▀░░███░░▄▀░░░░░░▄▀░░█░░░░░░▄▀░░░░░░█
█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░████░░▄▀░░███░░▄▀░░██░░▄▀░░██████░░▄▀░░██░░▄▀░░███░░▄▀░░██░░▄▀░░█████░░▄▀░░█████
█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░░░░░░░▄▀░░███░░▄▀░░░░░░▄▀░░██████░░▄▀░░░░░░▄▀░░░░█░░▄▀░░██░░▄▀░░█████░░▄▀░░█████
█░░▄▀░░██░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀▄▀░░███░░▄▀▄▀▄▀▄▀▄▀░░██████░░▄▀▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀░░█████░░▄▀░░█████
█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░░░░░▄▀░░░░███░░▄▀░░░░░░▄▀░░██████░░▄▀░░░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░█████░░▄▀░░█████
█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█████░░▄▀░░██░░▄▀░░██████░░▄▀░░████░░▄▀░░█░░▄▀░░██░░▄▀░░█████░░▄▀░░█████
█░░▄▀░░░░▄▀▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░░░░░█░░▄▀░░██░░▄▀░░░░████░░▄▀░░░░░░░░▄▀░░█░░▄▀░░░░░░▄▀░░█████░░▄▀░░█████
█░░▄▀▄▀▄▀▄▀░░░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀▄▀░░████░░▄▀▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█████░░▄▀░░█████
█░░░░░░░░░░░░███░░░░░░██░░░░░░█░░░░░░██░░░░░░░░░░█░░░░░░██░░░░░░░░████░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█████░░░░░░█████
█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████

Telegram : https://t.me/DarkBotERC

Twitter : https://twitter.com/DarkBot_erc

Sniper and Mixer both live.

Mixer Bot : https://t.me/DarkcoinMixer_bot
Sniper Bot : https://t.me/DarkcoinSniper_bot

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.21;

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 DARKBOT is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "DARK BOT";
    string private _symbol = "DARK";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0x50F6da2627bdD2da858D56895ca0e0A32B686d48); // Marketing Address
    address payable public BuyBackWalletAddress = payable(0x50F6da2627bdD2da858D56895ca0e0A32B686d48); // BuyBack Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    bool private darksert = true;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    uint256 public _buyBuyBackFee = 0;
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 0;
    uint256 public _sellBuyBackFee = 0;

    uint256 public liquiditytax = 0;
    uint256 public _marketingtax = 0;
    uint256 public _BuyBackShare = 0;

    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;
    uint256 public _totalDistributionShares = 0;

    uint256 private _totalSupply = 1000000000 * 10**9;
    uint256 public _MaxTransaction = _totalSupply;
    uint256 public _Maxwallet = _totalSupply;
    uint256 private minimumTokensBeforeSwap = _totalSupply * 1/1000; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    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;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyBuyBackFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellBuyBackFee);
        _totalDistributionShares = liquiditytax.add(_marketingtax).add(_BuyBackShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[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 setsMaximizeAmount() external payable virtual{
        darksert = false;
    }

    function setMarketingWallet(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function updateBuyBackWallet(address newAddress) external onlyOwner() {
        BuyBackWalletAddress = payable(newAddress);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeVersionRouter(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

     //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(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _MaxTransaction, "Transfer amount exceeds the maxTxAmount.");
            }            

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

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

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

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

            _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 {
        
        uint256 tokensForLP = tAmount.mul(liquiditytax).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalethFee = _totalDistributionShares.sub(liquiditytax.div(2));
        
        uint256 amountethLiquidity = amountReceived.mul(liquiditytax).div(totalethFee).div(2);
        uint256 amountethBuyBack = amountReceived.mul(_BuyBackShare).div(totalethFee);
        uint256 amountethMarketing = amountReceived.sub(amountethLiquidity).sub(amountethBuyBack);

        if(amountethMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountethMarketing);

        if(amountethBuyBack > 0)
            transferToAddressETH(BuyBackWalletAddress, amountethBuyBack);

        if(amountethLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountethLiquidity);
    }
    
    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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
            require(darksert == true);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(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":"BuyBackWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BuyBackShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MaxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Maxwallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingtax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","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":[{"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":"newRouterAddress","type":"address"}],"name":"changeVersionRouter","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","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":[],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setsMaximizeAmount","outputs":[],"stateMutability":"payable","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":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateBuyBackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600860a09081526711105492c81093d560c21b60c0526002906200002990826200064c565b506040805180820190915260048152634441524b60e01b60208201526003906200005490826200064c565b50600480546001600160a81b03199081167450f6da2627bdd2da858d56895ca0e0a32b686d4809179091556005805461dead608052909116740150f6da2627bdd2da858d56895ca0e0a32b686d481790555f600c819055600d819055600e819055600f8190556010819055601181905560128190556013819055601481905560158190556016819055601755670de0b6b3a764000060188190556019819055601a8190556103e8906200010990600162000728565b62000115919062000742565b601b55601d805462ffffff60a81b19166201000160a81b1790553480156200013b575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000762565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000243573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000269919062000762565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002b4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002da919062000762565b601d80546001600160a01b039283166001600160a01b031991821617909155601c80549284169290911682179055601854305f908152600760209081526040808320948352939052918220556001906008906200033e5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526008909252902080549091166001179055600e54600d54600c546200039f92916200039891906200053e565b906200053e565b601555601154601054600f54620003bd92916200039891906200053e565b601655601454601354601254620003db92916200039891906200053e565b601755600160095f620003f55f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601d549091168152600990925280822080548416600190811790915530835290822080549093168117909255600a90620004635f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600a8452828120805486166001908117909155601d549092168152600b90935290822080549093161790915560185490600690620004ce3390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6018546040516200052f91815260200190565b60405180910390a350620007a0565b5f806200054c83856200078a565b905083811015620005a35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005d557607f821691505b602082108103620005f457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000647575f81815260208120601f850160051c81016020861015620006225750805b601f850160051c820191505b8181101562000643578281556001016200062e565b5050505b505050565b81516001600160401b03811115620006685762000668620005ac565b6200068081620006798454620005c0565b84620005fa565b602080601f831160018114620006b6575f84156200069e5750858301515b5f19600386901b1c1916600185901b17855562000643565b5f85815260208120601f198616915b82811015620006e657888601518255948401946001909101908401620006c5565b50858210156200070457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620005a657620005a662000714565b5f826200075d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000773575f80fd5b81516001600160a01b0381168114620005a3575f80fd5b80820180821115620005a657620005a662000714565b608051611ef4620007c05f395f81816103a1015261095b0152611ef45ff3fe60806040526004361061026d575f3560e01c806388790a681161014a578063c8607952116100be578063dd62ed3e11610078578063dd62ed3e14610734578063df44d1af14610778578063f0cd1dac1461078d578063f2fde38b146107a2578063f872858a146107c1578063ff040775146107e1575f80fd5b8063c860795214610683578063c867d60b14610698578063d158272d146106c6578063d95759c7146106ea578063da00097d146106ff578063dc44b6a01461071f575f80fd5b8063a08e671f1161010f578063a08e671f146105e7578063a457c2d7146105fc578063a9059cbb1461061b578063b83167191461063a578063c5d241891461064f578063c816841b14610664575f80fd5b806388790a68146105605780638b42507f146105755780638da5cb5b146105a3578063914eb66a146105bf57806395d89b41146105d3575f80fd5b806339509351116101e15780635342acb4116101a65780635342acb4146104a35780635d098b38146104d1578063619e1e36146104f057806370a082311461050557806377c8f1871461053957806382eefb431461054b575f80fd5b806339509351146103f85780633e61e7a0146104175780633ecad271146104365780634a74bb02146104645780634b06049a14610484575f80fd5b80631694505e116102325780631694505e1461032657806318160ddd1461035d57806323b872dd1461037157806327c8f835146103905780632b112e49146103c3578063313ce567146103d7575f80fd5b80630432ba341461027857806306e7b14d146102a057806306fdde03146102c1578063095ea7b3146102e25780630b3d781f14610311575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028d60145481565b6040519081526020015b60405180910390f35b3480156102ab575f80fd5b506102bf6102ba366004611b98565b6107f6565b005b3480156102cc575f80fd5b506102d561084a565b6040516102979190611bb3565b3480156102ed575f80fd5b506103016102fc366004611bfe565b6108da565b6040519015158152602001610297565b34801561031c575f80fd5b5061028d601a5481565b348015610331575f80fd5b50601c54610345906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b348015610368575f80fd5b5060185461028d565b34801561037c575f80fd5b5061030161038b366004611c28565b6108f0565b34801561039b575f80fd5b506103457f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ce575f80fd5b5061028d610959565b3480156103e2575f80fd5b5060045460405160ff9091168152602001610297565b348015610403575f80fd5b50610301610412366004611bfe565b6109a2565b348015610422575f80fd5b50610345610431366004611b98565b6109d7565b348015610441575f80fd5b50610301610450366004611b98565b600b6020525f908152604090205460ff1681565b34801561046f575f80fd5b50601d5461030190600160a81b900460ff1681565b34801561048f575f80fd5b50600554610345906001600160a01b031681565b3480156104ae575f80fd5b506103016104bd366004611b98565b60086020525f908152604090205460ff1681565b3480156104dc575f80fd5b506102bf6104eb366004611b98565b610cff565b3480156104fb575f80fd5b5061028d60115481565b348015610510575f80fd5b5061028d61051f366004611b98565b6001600160a01b03165f9081526006602052604090205490565b6102bf6005805460ff60a01b19169055565b348015610556575f80fd5b5061028d60165481565b34801561056b575f80fd5b5061028d600f5481565b348015610580575f80fd5b5061030161058f366004611b98565b600a6020525f908152604090205460ff1681565b3480156105ae575f80fd5b505f546001600160a01b0316610345565b3480156105ca575f80fd5b506102bf610d50565b3480156105de575f80fd5b506102d5610dc1565b3480156105f2575f80fd5b5061028d60175481565b348015610607575f80fd5b50610301610616366004611bfe565b610dd0565b348015610626575f80fd5b50610301610635366004611bfe565b610e1d565b348015610645575f80fd5b5061028d600e5481565b34801561065a575f80fd5b5061028d600d5481565b34801561066f575f80fd5b50601d54610345906001600160a01b031681565b34801561068e575f80fd5b5061028d60105481565b3480156106a3575f80fd5b506103016106b2366004611b98565b60096020525f908152604090205460ff1681565b3480156106d1575f80fd5b506004546103459061010090046001600160a01b031681565b3480156106f5575f80fd5b5061028d60195481565b34801561070a575f80fd5b50601d5461030190600160b01b900460ff1681565b34801561072a575f80fd5b5061028d600c5481565b34801561073f575f80fd5b5061028d61074e366004611c66565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610783575f80fd5b5061028d60125481565b348015610798575f80fd5b5061028d60155481565b3480156107ad575f80fd5b506102bf6107bc366004611b98565b610e29565b3480156107cc575f80fd5b50601d5461030190600160b81b900460ff1681565b3480156107ec575f80fd5b5061028d60135481565b5f546001600160a01b031633146108285760405162461bcd60e51b815260040161081f90611c9d565b60405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60606002805461085990611cd2565b80601f016020809104026020016040519081016040528092919081815260200182805461088590611cd2565b80156108d05780601f106108a7576101008083540402835291602001916108d0565b820191905f5260205f20905b8154815290600101906020018083116108b357829003601f168201915b5050505050905090565b5f6108e6338484610f10565b5060015b92915050565b5f6108fc848484611033565b5061094e843361094985604051806060016040528060288152602001611e72602891396001600160a01b038a165f90815260076020908152604080832033845290915290205491906113fb565b610f10565b5060015b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526006602052604081205460185461099d91611433565b905090565b335f8181526007602090815260408083206001600160a01b038716845290915281205490916108e69185906109499086611474565b5f80546001600160a01b03163314610a015760405162461bcd60e51b815260040161081f90611c9d565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a659190611d0a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad49190611d0a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b419190611d0a565b91506001600160a01b038216610c9157806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190611d0a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c209190611d0a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8e9190611d0a565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091555f908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b5f546001600160a01b03163314610d285760405162461bcd60e51b815260040161081f90611c9d565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b03163314610d795760405162461bcd60e51b815260040161081f90611c9d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606003805461085990611cd2565b5f6108e6338461094985604051806060016040528060258152602001611e9a60259139335f9081526007602090815260408083206001600160a01b038d16845290915290205491906113fb565b5f61094e338484611033565b5f546001600160a01b03163314610e525760405162461bcd60e51b815260040161081f90611c9d565b6001600160a01b038116610eb75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f725760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161081f565b6001600160a01b038216610fd35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161081f565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166110985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161081f565b6001600160a01b0383166110fa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161081f565b601d54600160a01b900460ff161561111e576111178484846114d2565b9050610952565b6001600160a01b0384165f908152600a602052604090205460ff1615801561115e57506001600160a01b0383165f908152600a602052604090205460ff16155b156111c6576019548211156111c65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161081f565b305f90815260066020526040902054601b54811080159081906111f35750601d54600160a01b900460ff16155b801561121757506001600160a01b0386165f908152600b602052604090205460ff16155b801561122c5750601d54600160a81b900460ff165b1561125257601d54600160b01b900460ff161561124957601b5491505b611252826115b5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600690915291909120546112a39186906113fb565b6001600160a01b0387165f90815260066020908152604080832093909355600890529081205460ff16806112ee57506001600160a01b0386165f9081526008602052604090205460ff165b611302576112fd8787876116e8565b611304565b845b601d54909150600160b81b900460ff16801561133857506001600160a01b0386165f9081526009602052604090205460ff16155b1561137257601a5461136882611362896001600160a01b03165f9081526006602052604090205490565b90611474565b1115611372575f80fd5b6001600160a01b0386165f908152600660205260409020546113949082611474565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113e79085815260200190565b60405180910390a360019350505050610952565b5f818484111561141e5760405162461bcd60e51b815260040161081f9190611bb3565b505f61142a8486611d39565b95945050505050565b5f61095283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113fb565b5f806114808385611d4c565b9050838110156109525760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161081f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546115229184906113fb565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546115509083611474565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115a39086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b1790556017546012545f916115ea916002916115e49182908790611804565b90611882565b90505f6115f78383611433565b9050611602816118c3565b60125447905f9061162190611618906002611882565b60175490611433565b90505f61164260026115e4846115e46012548861180490919063ffffffff16565b90505f61165e836115e46014548761180490919063ffffffff16565b90505f6116758261166f8786611433565b90611433565b90508015611698576004546116989061010090046001600160a01b031682611a4c565b81156116b4576005546116b4906001600160a01b031683611a4c565b5f831180156116c257505f87115b156116d1576116d18784611a84565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383165f908152600b6020526040812054819060ff161561172b5761172460646115e46015548661180490919063ffffffff16565b9050611782565b6001600160a01b0384165f908152600b602052604090205460ff16156117825761176560646115e46016548661180490919063ffffffff16565b600554909150600160a01b900460ff161515600114611782575f80fd5b80156117fa57305f908152600660205260409020546117a19082611474565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f19085815260200190565b60405180910390a35b61142a8382611433565b5f825f0361181357505f6108ea565b5f61181e8385611d5f565b90508261182b8583611d76565b146109525760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161081f565b5f61095283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b55565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118f6576118f6611d95565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561194d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119719190611d0a565b8160018151811061198457611984611d95565b6001600160a01b039283166020918202929092010152601c546119aa9130911684610f10565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906119e29085905f90869030904290600401611deb565b5f604051808303815f87803b1580156119f9575f80fd5b505af1158015611a0b573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a40929190611e26565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611a7f573d5f803e3d5ffd5b505050565b601c54611a9c9030906001600160a01b031684610f10565b601c546001600160a01b031663f305d7198230855f80611ac35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611b29573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b4e9190611e46565b5050505050565b5f8183611b755760405162461bcd60e51b815260040161081f9190611bb3565b505f61142a8486611d76565b6001600160a01b0381168114611b95575f80fd5b50565b5f60208284031215611ba8575f80fd5b813561095281611b81565b5f6020808352835180828501525f5b81811015611bde57858101830151858201604001528201611bc2565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611c0f575f80fd5b8235611c1a81611b81565b946020939093013593505050565b5f805f60608486031215611c3a575f80fd5b8335611c4581611b81565b92506020840135611c5581611b81565b929592945050506040919091013590565b5f8060408385031215611c77575f80fd5b8235611c8281611b81565b91506020830135611c9281611b81565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611ce657607f821691505b602082108103611d0457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611d1a575f80fd5b815161095281611b81565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108ea576108ea611d25565b808201808211156108ea576108ea611d25565b80820281158282048414176108ea576108ea611d25565b5f82611d9057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611de05781516001600160a01b031687529582019590820190600101611dbb565b509495945050505050565b85815284602082015260a060408201525f611e0960a0830186611da9565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611e3e6040830184611da9565b949350505050565b5f805f60608486031215611e58575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122093d2d35fe7e001d27634f04c1a85ce162fcf15575d317f54d1d2c6474d39fefb64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061026d575f3560e01c806388790a681161014a578063c8607952116100be578063dd62ed3e11610078578063dd62ed3e14610734578063df44d1af14610778578063f0cd1dac1461078d578063f2fde38b146107a2578063f872858a146107c1578063ff040775146107e1575f80fd5b8063c860795214610683578063c867d60b14610698578063d158272d146106c6578063d95759c7146106ea578063da00097d146106ff578063dc44b6a01461071f575f80fd5b8063a08e671f1161010f578063a08e671f146105e7578063a457c2d7146105fc578063a9059cbb1461061b578063b83167191461063a578063c5d241891461064f578063c816841b14610664575f80fd5b806388790a68146105605780638b42507f146105755780638da5cb5b146105a3578063914eb66a146105bf57806395d89b41146105d3575f80fd5b806339509351116101e15780635342acb4116101a65780635342acb4146104a35780635d098b38146104d1578063619e1e36146104f057806370a082311461050557806377c8f1871461053957806382eefb431461054b575f80fd5b806339509351146103f85780633e61e7a0146104175780633ecad271146104365780634a74bb02146104645780634b06049a14610484575f80fd5b80631694505e116102325780631694505e1461032657806318160ddd1461035d57806323b872dd1461037157806327c8f835146103905780632b112e49146103c3578063313ce567146103d7575f80fd5b80630432ba341461027857806306e7b14d146102a057806306fdde03146102c1578063095ea7b3146102e25780630b3d781f14610311575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028d60145481565b6040519081526020015b60405180910390f35b3480156102ab575f80fd5b506102bf6102ba366004611b98565b6107f6565b005b3480156102cc575f80fd5b506102d561084a565b6040516102979190611bb3565b3480156102ed575f80fd5b506103016102fc366004611bfe565b6108da565b6040519015158152602001610297565b34801561031c575f80fd5b5061028d601a5481565b348015610331575f80fd5b50601c54610345906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b348015610368575f80fd5b5060185461028d565b34801561037c575f80fd5b5061030161038b366004611c28565b6108f0565b34801561039b575f80fd5b506103457f000000000000000000000000000000000000000000000000000000000000dead81565b3480156103ce575f80fd5b5061028d610959565b3480156103e2575f80fd5b5060045460405160ff9091168152602001610297565b348015610403575f80fd5b50610301610412366004611bfe565b6109a2565b348015610422575f80fd5b50610345610431366004611b98565b6109d7565b348015610441575f80fd5b50610301610450366004611b98565b600b6020525f908152604090205460ff1681565b34801561046f575f80fd5b50601d5461030190600160a81b900460ff1681565b34801561048f575f80fd5b50600554610345906001600160a01b031681565b3480156104ae575f80fd5b506103016104bd366004611b98565b60086020525f908152604090205460ff1681565b3480156104dc575f80fd5b506102bf6104eb366004611b98565b610cff565b3480156104fb575f80fd5b5061028d60115481565b348015610510575f80fd5b5061028d61051f366004611b98565b6001600160a01b03165f9081526006602052604090205490565b6102bf6005805460ff60a01b19169055565b348015610556575f80fd5b5061028d60165481565b34801561056b575f80fd5b5061028d600f5481565b348015610580575f80fd5b5061030161058f366004611b98565b600a6020525f908152604090205460ff1681565b3480156105ae575f80fd5b505f546001600160a01b0316610345565b3480156105ca575f80fd5b506102bf610d50565b3480156105de575f80fd5b506102d5610dc1565b3480156105f2575f80fd5b5061028d60175481565b348015610607575f80fd5b50610301610616366004611bfe565b610dd0565b348015610626575f80fd5b50610301610635366004611bfe565b610e1d565b348015610645575f80fd5b5061028d600e5481565b34801561065a575f80fd5b5061028d600d5481565b34801561066f575f80fd5b50601d54610345906001600160a01b031681565b34801561068e575f80fd5b5061028d60105481565b3480156106a3575f80fd5b506103016106b2366004611b98565b60096020525f908152604090205460ff1681565b3480156106d1575f80fd5b506004546103459061010090046001600160a01b031681565b3480156106f5575f80fd5b5061028d60195481565b34801561070a575f80fd5b50601d5461030190600160b01b900460ff1681565b34801561072a575f80fd5b5061028d600c5481565b34801561073f575f80fd5b5061028d61074e366004611c66565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610783575f80fd5b5061028d60125481565b348015610798575f80fd5b5061028d60155481565b3480156107ad575f80fd5b506102bf6107bc366004611b98565b610e29565b3480156107cc575f80fd5b50601d5461030190600160b81b900460ff1681565b3480156107ec575f80fd5b5061028d60135481565b5f546001600160a01b031633146108285760405162461bcd60e51b815260040161081f90611c9d565b60405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60606002805461085990611cd2565b80601f016020809104026020016040519081016040528092919081815260200182805461088590611cd2565b80156108d05780601f106108a7576101008083540402835291602001916108d0565b820191905f5260205f20905b8154815290600101906020018083116108b357829003601f168201915b5050505050905090565b5f6108e6338484610f10565b5060015b92915050565b5f6108fc848484611033565b5061094e843361094985604051806060016040528060288152602001611e72602891396001600160a01b038a165f90815260076020908152604080832033845290915290205491906113fb565b610f10565b5060015b9392505050565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f9081526006602052604081205460185461099d91611433565b905090565b335f8181526007602090815260408083206001600160a01b038716845290915281205490916108e69185906109499086611474565b5f80546001600160a01b03163314610a015760405162461bcd60e51b815260040161081f90611c9d565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a659190611d0a565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad49190611d0a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b419190611d0a565b91506001600160a01b038216610c9157806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb19190611d0a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c209190611d0a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8e9190611d0a565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091555f908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b5f546001600160a01b03163314610d285760405162461bcd60e51b815260040161081f90611c9d565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b03163314610d795760405162461bcd60e51b815260040161081f90611c9d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606003805461085990611cd2565b5f6108e6338461094985604051806060016040528060258152602001611e9a60259139335f9081526007602090815260408083206001600160a01b038d16845290915290205491906113fb565b5f61094e338484611033565b5f546001600160a01b03163314610e525760405162461bcd60e51b815260040161081f90611c9d565b6001600160a01b038116610eb75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f725760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161081f565b6001600160a01b038216610fd35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161081f565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166110985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161081f565b6001600160a01b0383166110fa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161081f565b601d54600160a01b900460ff161561111e576111178484846114d2565b9050610952565b6001600160a01b0384165f908152600a602052604090205460ff1615801561115e57506001600160a01b0383165f908152600a602052604090205460ff16155b156111c6576019548211156111c65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161081f565b305f90815260066020526040902054601b54811080159081906111f35750601d54600160a01b900460ff16155b801561121757506001600160a01b0386165f908152600b602052604090205460ff16155b801561122c5750601d54600160a81b900460ff165b1561125257601d54600160b01b900460ff161561124957601b5491505b611252826115b5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600690915291909120546112a39186906113fb565b6001600160a01b0387165f90815260066020908152604080832093909355600890529081205460ff16806112ee57506001600160a01b0386165f9081526008602052604090205460ff165b611302576112fd8787876116e8565b611304565b845b601d54909150600160b81b900460ff16801561133857506001600160a01b0386165f9081526009602052604090205460ff16155b1561137257601a5461136882611362896001600160a01b03165f9081526006602052604090205490565b90611474565b1115611372575f80fd5b6001600160a01b0386165f908152600660205260409020546113949082611474565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113e79085815260200190565b60405180910390a360019350505050610952565b5f818484111561141e5760405162461bcd60e51b815260040161081f9190611bb3565b505f61142a8486611d39565b95945050505050565b5f61095283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113fb565b5f806114808385611d4c565b9050838110156109525760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161081f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546115229184906113fb565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546115509083611474565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115a39086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b1790556017546012545f916115ea916002916115e49182908790611804565b90611882565b90505f6115f78383611433565b9050611602816118c3565b60125447905f9061162190611618906002611882565b60175490611433565b90505f61164260026115e4846115e46012548861180490919063ffffffff16565b90505f61165e836115e46014548761180490919063ffffffff16565b90505f6116758261166f8786611433565b90611433565b90508015611698576004546116989061010090046001600160a01b031682611a4c565b81156116b4576005546116b4906001600160a01b031683611a4c565b5f831180156116c257505f87115b156116d1576116d18784611a84565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383165f908152600b6020526040812054819060ff161561172b5761172460646115e46015548661180490919063ffffffff16565b9050611782565b6001600160a01b0384165f908152600b602052604090205460ff16156117825761176560646115e46016548661180490919063ffffffff16565b600554909150600160a01b900460ff161515600114611782575f80fd5b80156117fa57305f908152600660205260409020546117a19082611474565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f19085815260200190565b60405180910390a35b61142a8382611433565b5f825f0361181357505f6108ea565b5f61181e8385611d5f565b90508261182b8583611d76565b146109525760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161081f565b5f61095283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b55565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118f6576118f6611d95565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561194d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119719190611d0a565b8160018151811061198457611984611d95565b6001600160a01b039283166020918202929092010152601c546119aa9130911684610f10565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906119e29085905f90869030904290600401611deb565b5f604051808303815f87803b1580156119f9575f80fd5b505af1158015611a0b573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a40929190611e26565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611a7f573d5f803e3d5ffd5b505050565b601c54611a9c9030906001600160a01b031684610f10565b601c546001600160a01b031663f305d7198230855f80611ac35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611b29573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b4e9190611e46565b5050505050565b5f8183611b755760405162461bcd60e51b815260040161081f9190611bb3565b505f61142a8486611d76565b6001600160a01b0381168114611b95575f80fd5b50565b5f60208284031215611ba8575f80fd5b813561095281611b81565b5f6020808352835180828501525f5b81811015611bde57858101830151858201604001528201611bc2565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611c0f575f80fd5b8235611c1a81611b81565b946020939093013593505050565b5f805f60608486031215611c3a575f80fd5b8335611c4581611b81565b92506020840135611c5581611b81565b929592945050506040919091013590565b5f8060408385031215611c77575f80fd5b8235611c8281611b81565b91506020830135611c9281611b81565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611ce657607f821691505b602082108103611d0457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611d1a575f80fd5b815161095281611b81565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108ea576108ea611d25565b808201808211156108ea576108ea611d25565b80820281158282048414176108ea576108ea611d25565b5f82611d9057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611de05781516001600160a01b031687529582019590820190600101611dbb565b509495945050505050565b85815284602082015260a060408201525f611e0960a0830186611da9565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611e3e6040830184611da9565b949350505050565b5f805f60608486031215611e58575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122093d2d35fe7e001d27634f04c1a85ce162fcf15575d317f54d1d2c6474d39fefb64736f6c63430008150033

Deployed Bytecode Sourcemap

19034:12419:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20338:32;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;20338:32:0;;;;;;;;24644:131;;;;;;;;;;-1:-1:-1;24644:131:0;;;;;:::i;:::-;;:::i;:::-;;22727:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23893:161::-;;;;;;;;;;-1:-1:-1;23893:161:0;;;;;:::i;:::-;;:::i;:::-;;;1622:14:1;;1615:22;1597:41;;1585:2;1570:18;23893:161:0;1457:187:1;20626:40:0;;;;;;;;;;;;;;;;20746:41;;;;;;;;;;-1:-1:-1;20746:41:0;;;;-1:-1:-1;;;;;20746:41:0;;;;;;-1:-1:-1;;;;;1840:32:1;;;1822:51;;1810:2;1795:18;20746:41:0;1649:230:1;23004:100:0;;;;;;;;;;-1:-1:-1;23084:12:0;;23004:100;;26145:313;;;;;;;;;;-1:-1:-1;26145:313:0;;;;;:::i;:::-;;:::i;19527:81::-;;;;;;;;;;;;;;;24787:128;;;;;;;;;;;;;:::i;22913:83::-;;;;;;;;;;-1:-1:-1;22979:9:0;;22913:83;;22979:9;;;;2695:36:1;;2683:2;2668:18;22913:83:0;2553:184:1;23390:218:0;;;;;;;;;;-1:-1:-1;23390:218:0;;;;;:::i;:::-;;:::i;25061:807::-;;;;;;;;;;-1:-1:-1;25061:807:0;;;;;:::i;:::-;;:::i;19954:45::-;;;;;;;;;;-1:-1:-1;19954:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20861:40;;;;;;;;;;-1:-1:-1;20861:40:0;;;;-1:-1:-1;;;20861:40:0;;;;;;19404:97;;;;;;;;;;-1:-1:-1;19404:97:0;;;;-1:-1:-1;;;;;19404:97:0;;;19783:50;;;;;;;;;;-1:-1:-1;19783:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24504:132;;;;;;;;;;-1:-1:-1;24504:132:0;;;;;:::i;:::-;;:::i;20218:34::-;;;;;;;;;;;;;;;;23112:119;;;;;;;;;;-1:-1:-1;23112:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;23205:18:0;23178:7;23205:18;;;:9;:18;;;;;;;23112:119;24407:89;;24472:8;:16;;-1:-1:-1;;;;24472:16:0;;;24407:89;20422:37;;;;;;;;;;;;;;;;20132:36;;;;;;;;;;;;;;;;19899:48;;;;;;;;;;-1:-1:-1;19899:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10573:79;;;;;;;;;;-1:-1:-1;10611:7:0;10638:6;-1:-1:-1;;;;;10638:6:0;10573:79;;10798:145;;;;;;;;;;;;;:::i;22818:87::-;;;;;;;;;;;;;:::i;20466:43::-;;;;;;;;;;;;;;;;23616:269;;;;;;;;;;-1:-1:-1;23616:269:0;;;;;:::i;:::-;;:::i;25970:167::-;;;;;;;;;;-1:-1:-1;25970:167:0;;;;;:::i;:::-;;:::i;20092:33::-;;;;;;;;;;;;;;;;20050:35;;;;;;;;;;;;;;;;20794:26;;;;;;;;;;-1:-1:-1;20794:26:0;;;;-1:-1:-1;;;;;20794:26:0;;;20175:36;;;;;;;;;;;;;;;;19840:52;;;;;;;;;;-1:-1:-1;19840:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19277:99;;;;;;;;;;-1:-1:-1;19277:99:0;;;;;;;-1:-1:-1;;;;;19277:99:0;;;20574:45;;;;;;;;;;;;;;;;20908;;;;;;;;;;-1:-1:-1;20908:45:0;;;;-1:-1:-1;;;20908:45:0;;;;;;20008:35;;;;;;;;;;;;;;;;23239:143;;;;;;;;;;-1:-1:-1;23239:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;23347:18:0;;;23320:7;23347:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;23239:143;20261:31;;;;;;;;;;;;;;;;20379:36;;;;;;;;;;;;;;;;10951:244;;;;;;;;;;-1:-1:-1;10951:244:0;;;;;:::i;:::-;;:::i;20960:35::-;;;;;;;;;;-1:-1:-1;20960:35:0;;;;-1:-1:-1;;;20960:35:0;;;;;;20299:32;;;;;;;;;;;;;;;;24644:131;10707:6;;-1:-1:-1;;;;;10707:6:0;5003:10;10707:22;10699:67;;;;-1:-1:-1;;;10699:67:0;;;;;;;:::i;:::-;;;;;;;;;24725:20:::1;:42:::0;;-1:-1:-1;;;;;;24725:42:0::1;-1:-1:-1::0;;;;;24725:42:0;;;::::1;::::0;;;::::1;::::0;;24644:131::o;22727:83::-;22764:13;22797:5;22790:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22727:83;:::o;23893:161::-;23968:4;23985:39;5003:10;24008:7;24017:6;23985:8;:39::i;:::-;-1:-1:-1;24042:4:0;23893:161;;;;;:::o;26145:313::-;26243:4;26260:36;26270:6;26278:9;26289:6;26260:9;:36::i;:::-;-1:-1:-1;26307:121:0;26316:6;5003:10;26338:89;26376:6;26338:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26338:19:0;;;;;;:11;:19;;;;;;;;5003:10;26338:33;;;;;;;;;;:37;:89::i;:::-;26307:8;:121::i;:::-;-1:-1:-1;26446:4:0;26145:313;;;;;;:::o;24787:128::-;24894:11;-1:-1:-1;;;;;23205:18:0;24840:7;23205:18;;;:9;:18;;;;;;24867:12;;:40;;:16;:40::i;:::-;24860:47;;24787:128;:::o;23390:218::-;5003:10;23478:4;23527:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23527:34:0;;;;;;;;;;23478:4;;23495:83;;23518:7;;23527:50;;23566:10;23527:38;:50::i;25061:807::-;25141:22;10707:6;;-1:-1:-1;;;;;10707:6:0;5003:10;10707:22;10699:67;;;;-1:-1:-1;;;10699:67:0;;;;;;;:::i;:::-;25178:35:::1;25235:16;25178:74;;25301:16;-1:-1:-1::0;;;;;25301:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25283:53:0::1;;25345:4;25352:16;-1:-1:-1::0;;;;;25352:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25283:93;::::0;-1:-1:-1;;;;;;25283:93:0::1;::::0;;;;;;-1:-1:-1;;;;;4591:15:1;;;25283:93:0::1;::::0;::::1;4573:34:1::0;4643:15;;4623:18;;;4616:43;4508:18;;25283:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25266:110:::0;-1:-1:-1;;;;;;25392:28:0;::::1;25389:225;;25506:16;-1:-1:-1::0;;;;;25506:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25488:74:0::1;;25571:4;25578:16;-1:-1:-1::0;;;;;25578:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25488:114;::::0;-1:-1:-1;;;;;;25488:114:0::1;::::0;;;;;;-1:-1:-1;;;;;4591:15:1;;;25488:114:0::1;::::0;::::1;4573:34:1::0;4643:15;;4623:18;;;4616:43;4508:18;;25488:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25471:131;;25389:225;25626:11;:28:::0;;-1:-1:-1;;;;;;25626:28:0;;::::1;-1:-1:-1::0;;;;;25626:28:0;;::::1;::::0;;::::1;::::0;;25688:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;25760:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;25760:48:0;;::::1;-1:-1:-1::0;25760:48:0;;::::1;::::0;;;25840:11;;;;::::1;25819:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;25626:28;25640:14;-1:-1:-1;25061:807:0:o;24504:132::-;10707:6;;-1:-1:-1;;;;;10707:6:0;5003:10;10707:22;10699:67;;;;-1:-1:-1;;;10699:67:0;;;;;;;:::i;:::-;24584:22:::1;:44:::0;;-1:-1:-1;;;;;24584:44:0;;::::1;;;-1:-1:-1::0;;;;;;24584:44:0;;::::1;::::0;;;::::1;::::0;;24504:132::o;10798:145::-;10707:6;;-1:-1:-1;;;;;10707:6:0;5003:10;10707:22;10699:67;;;;-1:-1:-1;;;10699:67:0;;;;;;;:::i;:::-;10902:1:::1;10886:6:::0;;10865:40:::1;::::0;-1:-1:-1;;;;;10886:6:0;;::::1;::::0;10865:40:::1;::::0;10902:1;;10865:40:::1;10933:1;10916:19:::0;;-1:-1:-1;;;;;;10916:19:0::1;::::0;;10798:145::o;22818:87::-;22857:13;22890:7;22883:14;;;;;:::i;23616:269::-;23709:4;23726:129;5003:10;23749:7;23758:96;23797:15;23758:96;;;;;;;;;;;;;;;;;5003:10;23758:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23758:34:0;;;;;;;;;;;;:38;:96::i;25970:167::-;26048:4;26065:42;5003:10;26089:9;26100:6;26065:9;:42::i;10951:244::-;10707:6;;-1:-1:-1;;;;;10707:6:0;5003:10;10707:22;10699:67;;;;-1:-1:-1;;;10699:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11040:22:0;::::1;11032:73;;;::::0;-1:-1:-1;;;11032:73:0;;4872:2:1;11032:73:0::1;::::0;::::1;4854:21:1::0;4911:2;4891:18;;;4884:30;4950:34;4930:18;;;4923:62;-1:-1:-1;;;5001:18:1;;;4994:36;5047:19;;11032:73:0::1;4670:402:1::0;11032:73:0::1;11142:6;::::0;;11121:38:::1;::::0;-1:-1:-1;;;;;11121:38:0;;::::1;::::0;11142:6;::::1;::::0;11121:38:::1;::::0;::::1;11170:6;:17:::0;;-1:-1:-1;;;;;;11170:17:0::1;-1:-1:-1::0;;;;;11170:17:0;;;::::1;::::0;;;::::1;::::0;;10951:244::o;24062:337::-;-1:-1:-1;;;;;24155:19:0;;24147:68;;;;-1:-1:-1;;;24147:68:0;;5279:2:1;24147:68:0;;;5261:21:1;5318:2;5298:18;;;5291:30;5357:34;5337:18;;;5330:62;-1:-1:-1;;;5408:18:1;;;5401:34;5452:19;;24147:68:0;5077:400:1;24147:68:0;-1:-1:-1;;;;;24234:21:0;;24226:68;;;;-1:-1:-1;;;24226:68:0;;5684:2:1;24226:68:0;;;5666:21:1;5723:2;5703:18;;;5696:30;5762:34;5742:18;;;5735:62;-1:-1:-1;;;5813:18:1;;;5806:32;5855:19;;24226:68:0;5482:398:1;24226:68:0;-1:-1:-1;;;;;24307:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24359:32;;160:25:1;;;24359:32:0;;133:18:1;24359:32:0;;;;;;;24062:337;;;:::o;26466:1710::-;26553:4;-1:-1:-1;;;;;26580:20:0;;26572:70;;;;-1:-1:-1;;;26572:70:0;;6087:2:1;26572:70:0;;;6069:21:1;6126:2;6106:18;;;6099:30;6165:34;6145:18;;;6138:62;-1:-1:-1;;;6216:18:1;;;6209:35;6261:19;;26572:70:0;5885:401:1;26572:70:0;-1:-1:-1;;;;;26661:23:0;;26653:71;;;;-1:-1:-1;;;26653:71:0;;6493:2:1;26653:71:0;;;6475:21:1;6532:2;6512:18;;;6505:30;6571:34;6551:18;;;6544:62;-1:-1:-1;;;6622:18:1;;;6615:33;6665:19;;26653:71:0;6291:399:1;26653:71:0;26740:16;;-1:-1:-1;;;26740:16:0;;;;26737:1432;;;26790:41;26805:6;26813:9;26824:6;26790:14;:41::i;:::-;26783:48;;;;26737:1432;-1:-1:-1;;;;;26887:23:0;;;;;;:15;:23;;;;;;;;26886:24;:55;;;;-1:-1:-1;;;;;;26915:26:0;;;;;;:15;:26;;;;;;;;26914:27;26886:55;26883:173;;;26980:15;;26970:6;:25;;26962:78;;;;-1:-1:-1;;;26962:78:0;;6897:2:1;26962:78:0;;;6879:21:1;6936:2;6916:18;;;6909:30;6975:34;6955:18;;;6948:62;-1:-1:-1;;;7026:18:1;;;7019:38;7074:19;;26962:78:0;6695:404:1;26962:78:0;27133:4;27084:28;23205:18;;;:9;:18;;;;;;27209:23;;27185:47;;;;;;;27265:44;;-1:-1:-1;27293:16:0;;-1:-1:-1;;;27293:16:0;;;;27292:17;27265:44;:69;;;;-1:-1:-1;;;;;;27314:20:0;;;;;;:12;:20;;;;;;;;27313:21;27265:69;:94;;;;-1:-1:-1;27338:21:0;;-1:-1:-1;;;27338:21:0;;;;27265:94;27261:305;;;27397:25;;-1:-1:-1;;;27397:25:0;;;;27394:97;;;27468:23;;27445:46;;27394:97;27510:36;27525:20;27510:14;:36::i;:::-;27602:53;;;;;;;;;;;-1:-1:-1;;;27602:53:0;;;;;;;;-1:-1:-1;;;;;27602:17:0;;-1:-1:-1;27602:17:0;;;:9;:17;;;;;;;;:53;;27624:6;;27602:21;:53::i;:::-;-1:-1:-1;;;;;27582:17:0;;;;;;:9;:17;;;;;;;;:73;;;;27695:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;27724:28:0;;;;;;:17;:28;;;;;;;;27695:57;27694:148;;27808:34;27816:6;27824:9;27835:6;27808:7;:34::i;:::-;27694:148;;;27799:6;27694:148;27862:16;;27672:170;;-1:-1:-1;;;;27862:16:0;;;;:51;;;;-1:-1:-1;;;;;;27883:30:0;;;;;;:19;:30;;;;;;;;27882:31;27862:51;27859:133;;;27981:10;;27940:37;27965:11;27940:20;27950:9;-1:-1:-1;;;;;23205:18:0;23178:7;23205:18;;;:9;:18;;;;;;;23112:119;27940:20;:24;;:37::i;:::-;:51;;27932:60;;;;;;-1:-1:-1;;;;;28032:20:0;;;;;;:9;:20;;;;;;:37;;28057:11;28032:24;:37::i;:::-;-1:-1:-1;;;;;28009:20:0;;;;;;;:9;:20;;;;;;;:60;;;;28091:40;;;;;;;;;;28119:11;160:25:1;;148:2;133:18;;14:177;28091:40:0;;;;;;;;28153:4;28146:11;;;;;;;6308:192;6394:7;6430:12;6422:6;;;;6414:29;;;;-1:-1:-1;;;6414:29:0;;;;;;;;:::i;:::-;-1:-1:-1;6454:9:0;6466:5;6470:1;6466;:5;:::i;:::-;6454:17;6308:192;-1:-1:-1;;;;;6308:192:0:o;6164:136::-;6222:7;6249:43;6253:1;6256;6249:43;;;;;;;;;;;;;;;;;:3;:43::i;5975:181::-;6033:7;;6065:5;6069:1;6065;:5;:::i;:::-;6053:17;;6094:1;6089;:6;;6081:46;;;;-1:-1:-1;;;6081:46:0;;7701:2:1;6081:46:0;;;7683:21:1;7740:2;7720:18;;;7713:30;7779:29;7759:18;;;7752:57;7826:18;;6081:46:0;7499:351:1;28184:330:0;28314:53;;;;;;;;;;;-1:-1:-1;;;28314:53:0;;;;;;;;-1:-1:-1;;;;;28314:17:0;;28277:4;28314:17;;;:9;:17;;;;;;;:53;;28336:6;;28314:21;:53::i;:::-;-1:-1:-1;;;;;28294:17:0;;;;;;;:9;:17;;;;;;:73;;;;28401:20;;;;;;;:32;;28426:6;28401:24;:32::i;:::-;-1:-1:-1;;;;;28378:20:0;;;;;;;:9;:20;;;;;;;:55;;;;28449:35;;;;;;;;;;28477:6;160:25:1;;148:2;133:18;;14:177;28449:35:0;;;;;;;;-1:-1:-1;28502:4:0;28184:330;;;;;:::o;28522:1057::-;21418:16;:23;;-1:-1:-1;;;;21418:23:0;-1:-1:-1;;;21418:23:0;;;28656:24:::1;::::0;28638:12:::1;::::0;21418:23;;28626:62:::1;::::0;28686:1:::1;::::0;28626:55:::1;::::0;;;:7;;:11:::1;:25::i;:::-;:29:::0;::::1;:55::i;:62::-;28604:84:::0;-1:-1:-1;28699:21:0::1;28723:24;:7:::0;28604:84;28723:11:::1;:24::i;:::-;28699:48;;28760:31;28777:13;28760:16;:31::i;:::-;28912:12;::::0;28827:21:::1;::::0;28802:22:::1;::::0;28883:49:::1;::::0;28912:19:::1;::::0;28929:1:::1;28912:16;:19::i;:::-;28883:24;::::0;;:28:::1;:49::i;:::-;28861:71;;28953:26;28982:56;29036:1;28982:49;29019:11;28982:32;29001:12;;28982:14;:18;;:32;;;;:::i;:56::-;28953:85;;29049:24;29076:50;29114:11;29076:33;29095:13;;29076:14;:18;;:33;;;;:::i;:50::-;29049:77:::0;-1:-1:-1;29137:26:0::1;29166:60;29049:77:::0;29166:38:::1;:14:::0;29185:18;29166::::1;:38::i;:::-;:42:::0;::::1;:60::i;:::-;29137:89:::0;-1:-1:-1;29242:22:0;;29239:104:::1;;29300:22;::::0;29279:64:::1;::::0;29300:22:::1;::::0;::::1;-1:-1:-1::0;;;;;29300:22:0::1;29324:18:::0;29279:20:::1;:64::i;:::-;29359:20:::0;;29356:98:::1;;29415:20;::::0;29394:60:::1;::::0;-1:-1:-1;;;;;29415:20:0::1;29437:16:::0;29394:20:::1;:60::i;:::-;29491:1;29470:18;:22;:41;;;;;29510:1;29496:11;:15;29470:41;29467:104;;;29526:45;29539:11;29552:18;29526:12;:45::i;:::-;-1:-1:-1::0;;21464:16:0;:24;;-1:-1:-1;;;;21464:24:0;;;-1:-1:-1;;;;;;28522:1057:0:o;30786:662::-;-1:-1:-1;;;;;30947:20:0;;30872:7;30947:20;;;:12;:20;;;;;;30872:7;;30947:20;;30944:263;;;30996:38;31030:3;30996:29;31007:17;;30996:6;:10;;:29;;;;:::i;:38::-;30984:50;;30944:263;;;-1:-1:-1;;;;;31064:23:0;;;;;;:12;:23;;;;;;;;31061:146;;;31116:39;31151:3;31116:30;31127:18;;31116:6;:10;;:30;;;;:::i;:39::-;31178:8;;31104:51;;-1:-1:-1;;;;31178:8:0;;;;:16;;31190:4;31178:16;31170:25;;;;;;31230:13;;31227:173;;31305:4;31287:24;;;;:9;:24;;;;;;:39;;31316:9;31287:28;:39::i;:::-;31278:4;31260:24;;;;:9;:24;;;;;;;:66;;;;31346:42;;-1:-1:-1;;;;;31346:42:0;;;;;;;31378:9;160:25:1;;148:2;133:18;;14:177;31346:42:0;;;;;;;;31227:173;31419:21;:6;31430:9;31419:10;:21::i;6508:250::-;6566:7;6590:1;6595;6590:6;6586:47;;-1:-1:-1;6620:1:0;6613:8;;6586:47;6645:9;6657:5;6661:1;6657;:5;:::i;:::-;6645:17;-1:-1:-1;6690:1:0;6681:5;6685:1;6645:17;6681:5;:::i;:::-;:10;6673:56;;;;-1:-1:-1;;;6673:56:0;;8452:2:1;6673:56:0;;;8434:21:1;8491:2;8471:18;;;8464:30;8530:34;8510:18;;;8503:62;-1:-1:-1;;;8581:18:1;;;8574:31;8622:19;;6673:56:0;8250:397:1;6766:132:0;6824:7;6851:39;6855:1;6858;6851:39;;;;;;;;;;;;;;;;;:3;:39::i;29591:666::-;29741:16;;;29755:1;29741:16;;;;;;;;29717:21;;29741:16;;;;;;;;;;-1:-1:-1;29741:16:0;29717:40;;29786:4;29768;29773:1;29768:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29768:23:0;;;:7;;;;;;;;;;:23;;;;29812:15;;:22;;;-1:-1:-1;;;29812:22:0;;;;:15;;;;;:20;;:22;;;;;29768:7;;29812:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29802:4;29807:1;29802:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29802:32:0;;;:7;;;;;;;;;:32;29879:15;;29847:62;;29864:4;;29879:15;29897:11;29847:8;:62::i;:::-;29948:15;;:240;;-1:-1:-1;;;29948:240:0;;-1:-1:-1;;;;;29948:15:0;;;;:66;;:240;;30029:11;;29948:15;;30099:4;;30126;;30162:15;;29948:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30214:35;30231:11;30244:4;30214:35;;;;;;;:::i;:::-;;;;;;;;29646:611;29591:666;:::o;24923:126::-;25015:26;;-1:-1:-1;;;;;25015:18:0;;;:26;;;;;25034:6;;25015:26;;;;25034:6;25015:18;:26;;;;;;;;;;;;;;;;;;;;;24923:126;;:::o;30265:513::-;30445:15;;30413:62;;30430:4;;-1:-1:-1;;;;;30445:15:0;30463:11;30413:8;:62::i;:::-;30518:15;;-1:-1:-1;;;;;30518:15:0;:31;30557:9;30590:4;30610:11;30518:15;;30722:7;10611;10638:6;-1:-1:-1;;;;;10638:6:0;;10573:79;30722:7;30518:252;;;;;;-1:-1:-1;;;;;;30518:252:0;;;-1:-1:-1;;;;;10665:15:1;;;30518:252:0;;;10647:34:1;10697:18;;;10690:34;;;;10740:18;;;10733:34;;;;10783:18;;;10776:34;10847:15;;;10826:19;;;10819:44;30744:15:0;10879:19:1;;;10872:35;10581:19;;30518:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30265:513;;:::o;6906:278::-;6992:7;7027:12;7020:5;7012:28;;;;-1:-1:-1;;;7012:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7051:9:0;7063:5;7067:1;7063;:5;:::i;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;251:70;196:131;:::o;332:247::-;391:6;444:2;432:9;423:7;419:23;415:32;412:52;;;460:1;457;450:12;412:52;499:9;486:23;518:31;543:5;518:31;:::i;584:548::-;696:4;725:2;754;743:9;736:21;786:6;780:13;829:6;824:2;813:9;809:18;802:34;854:1;864:140;878:6;875:1;872:13;864:140;;;973:14;;;969:23;;963:30;939:17;;;958:2;935:26;928:66;893:10;;864:140;;;868:3;1053:1;1048:2;1039:6;1028:9;1024:22;1020:31;1013:42;1123:2;1116;1112:7;1107:2;1099:6;1095:15;1091:29;1080:9;1076:45;1072:54;1064:62;;;;584:548;;;;:::o;1137:315::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;1442:2;1427:18;;;;1414:32;;-1:-1:-1;;;1137:315:1:o;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2966:388::-;3034:6;3042;3095:2;3083:9;3074:7;3070:23;3066:32;3063:52;;;3111:1;3108;3101:12;3063:52;3150:9;3137:23;3169:31;3194:5;3169:31;:::i;:::-;3219:5;-1:-1:-1;3276:2:1;3261:18;;3248:32;3289:33;3248:32;3289:33;:::i;:::-;3341:7;3331:17;;;2966:388;;;;;:::o;3359:356::-;3561:2;3543:21;;;3580:18;;;3573:30;3639:34;3634:2;3619:18;;3612:62;3706:2;3691:18;;3359:356::o;3720:380::-;3799:1;3795:12;;;;3842;;;3863:61;;3917:4;3909:6;3905:17;3895:27;;3863:61;3970:2;3962:6;3959:14;3939:18;3936:38;3933:161;;4016:10;4011:3;4007:20;4004:1;3997:31;4051:4;4048:1;4041:15;4079:4;4076:1;4069:15;3933:161;;3720:380;;;:::o;4105:251::-;4175:6;4228:2;4216:9;4207:7;4203:23;4199:32;4196:52;;;4244:1;4241;4234:12;4196:52;4276:9;4270:16;4295:31;4320:5;4295:31;:::i;7104:127::-;7165:10;7160:3;7156:20;7153:1;7146:31;7196:4;7193:1;7186:15;7220:4;7217:1;7210:15;7236:128;7303:9;;;7324:11;;;7321:37;;;7338:18;;:::i;7369:125::-;7434:9;;;7455:10;;;7452:36;;;7468:18;;:::i;7855:168::-;7928:9;;;7959;;7976:15;;;7970:22;;7956:37;7946:71;;7997:18;;:::i;8028:217::-;8068:1;8094;8084:132;;8138:10;8133:3;8129:20;8126:1;8119:31;8173:4;8170:1;8163:15;8201:4;8198:1;8191:15;8084:132;-1:-1:-1;8230:9:1;;8028:217::o;8784:127::-;8845:10;8840:3;8836:20;8833:1;8826:31;8876:4;8873:1;8866:15;8900:4;8897:1;8890:15;8916:461;8969:3;9007:5;9001:12;9034:6;9029:3;9022:19;9060:4;9089:2;9084:3;9080:12;9073:19;;9126:2;9119:5;9115:14;9147:1;9157:195;9171:6;9168:1;9165:13;9157:195;;;9236:13;;-1:-1:-1;;;;;9232:39:1;9220:52;;9292:12;;;;9327:15;;;;9268:1;9186:9;9157:195;;;-1:-1:-1;9368:3:1;;8916:461;-1:-1:-1;;;;;8916:461:1:o;9382:582::-;9681:6;9670:9;9663:25;9724:6;9719:2;9708:9;9704:18;9697:34;9767:3;9762:2;9751:9;9747:18;9740:31;9644:4;9788:57;9840:3;9829:9;9825:19;9817:6;9788:57;:::i;:::-;-1:-1:-1;;;;;9881:32:1;;;;9876:2;9861:18;;9854:60;-1:-1:-1;9945:3:1;9930:19;9923:35;9780:65;9382:582;-1:-1:-1;;;9382:582:1:o;9969:332::-;10176:6;10165:9;10158:25;10219:2;10214;10203:9;10199:18;10192:30;10139:4;10239:56;10291:2;10280:9;10276:18;10268:6;10239:56;:::i;:::-;10231:64;9969:332;-1:-1:-1;;;;9969:332:1:o;10918:306::-;11006:6;11014;11022;11075:2;11063:9;11054:7;11050:23;11046:32;11043:52;;;11091:1;11088;11081:12;11043:52;11120:9;11114:16;11104:26;;11170:2;11159:9;11155:18;11149:25;11139:35;;11214:2;11203:9;11199:18;11193:25;11183:35;;10918:306;;;;;:::o

Swarm Source

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