ETH Price: $3,290.82 (+1.26%)
Gas: 2 Gwei

Token

ONE PROTOCOL (ONE)
 

Overview

Max Total Supply

1,000,000,000 ONE

Holders

134

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

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:
ONE

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-20
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        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) {
  
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;  //hash address of empty contract

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

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

    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 isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

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

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

    address public liquidityReciever;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public blacklisted;
    mapping (address => bool) private allowTransfer;

    uint256 _buyLiquidityFee = 10;
    uint256 _sellLiquidityFee = 10;

    uint256 totalBuy;
    uint256 totalSell;

    uint256 denominator = 1000;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;   

    uint256 public minimumTokensBeforeSwap = 10000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(5).div(denominator);     //0.5%
    uint256 public _walletMax = _totalSupply.mul(10).div(denominator);    //1%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    bool public initalDistribution;
    bool public triggered;
    uint public launchTime;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = 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)] = ~uint256(0);

        liquidityReciever = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;


        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuy = _buyLiquidityFee;
        totalSell = _sellLiquidityFee;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    /*====================================
    |               Getters              |
    ====================================*/

    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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

     //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");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!blacklisted[sender] && !blacklisted[recipient],"Error: Blacklist Bots/Contracts not Allowed!!");
        require(initalDistribution || allowTransfer[msg.sender] || isOwner() ,"Trade is Currently Paused!!");
        
        
        if((block.timestamp > launchTime + 15 minutes) && !triggered && (launchTime != 0) ){
            _maxTxAmount =  _totalSupply.mul(15).div(denominator);     //1%
            _walletMax = _totalSupply.mul(15).div(denominator);    //2%
            triggered = true;
            
        }
        

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

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

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

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

            _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() private lockTheSwap {

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;


        uint256 tokensForLP = contractBalance.div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountBNBLiquidity = address(this).balance.sub(initialBalance);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }
    
    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
            liquidityReciever,
            block.timestamp
        );
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

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

        unchecked {

            if(isMarketPair[sender]) {
            
                feeAmount = amount.mul(totalBuy).div(denominator);
            }
            else if(isMarketPair[recipient]) {

                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

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

            return amount.sub(feeAmount);
        }
        
    }

    /*====================================
    |               Setters              |
    ====================================*/

    //To Block Bots to trade
    function blacklistBot(address _adr,bool _status) public onlyOwner {
        blacklisted[_adr] = _status;
    }

    //To Rescue Stucked Balance
    function rescueFunds() public onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) public onlyOwner {
        adr.transfer(recipient,amount);
    }

    function openTrade(bool _status) public onlyOwner {
        initalDistribution = _status;
        launchTime = block.timestamp;
    }

    function setWhitelistTransfer(address _adr, bool _status) public onlyOwner {
        allowTransfer[_adr] = _status;
    }

    function enableTxLimit(bool _status) public onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    function setBuyFee(uint _newLP) public onlyOwner {     
        _buyLiquidityFee = _newLP;
        totalBuy = _buyLiquidityFee;
    }

    function setSellFee(uint _newLP) public onlyOwner {        
        _sellLiquidityFee = _newLP;
        totalSell = _sellLiquidityFee;
    }

    function setWallets(address _liquidityRec) public onlyOwner {
        liquidityReciever = _liquidityRec;
    }

    function setExcludeFromFee(address _adr,bool _status) public onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) public onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) public onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

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

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

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

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

    function setMarketPair(address _pair, bool _status) public onlyOwner {
        isMarketPair[_pair] = _status;
    }

    function changeRouterVersion(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

        isMarketPair[address(uniswapPair)] = true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","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":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initalDistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"isOwner","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":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityRec","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistTransfer","outputs":[],"stateMutability":"nonpayable","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":"triggered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600c60c09081526b13d39148141493d513d0d3d360a21b60e0526001906200002e908262000612565b506040805180820190915260038152624f4e4560e81b602082015260029062000058908262000612565b506003805460ff1916600490811790915561dead608052600060a052600a600c819055600d8190556103e8601055620000929190620007f1565b620000a290633b9aca0062000802565b601155600354620000b89060ff16600a620007f1565b620000c69061271062000802565b60125562000101601054620000ed60056011546200045060201b620018191790919060201c565b620004e760201b6200189b1790919060201c565b60135562000128601054620000ed600a6011546200045060201b620018191790919060201c565b6014556015805461010161ffff199091161790556018805460ff60a81b1916600160a81b1790553480156200015c57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021c919062000824565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000824565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000824565b601880546001600160a01b039283166001600160a01b031991821617825560178054858516921682179055306000818152600560209081526040808320948352938152838220600019905560038054336101008102610100600160a81b03199092169190911790915583835260068252848320805460ff199081166001908117909255828552868520805482168317905560088452868520805482168317905587548916855286852080548216831790558585528685208054821683179055828552600984528685208054821683179055948452858420805486168217905595549096168252600781528382208054909316909417909155600c54600e55600d54600f55601154848252600484528282208190559151918252917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620008ca565b6000826000036200046457506000620004e1565b600062000472838562000802565b9050826200048185836200084f565b14620004de5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200053160201b60201c565b60008183620005555760405162461bcd60e51b8152600401620004d5919062000872565b5060006200056484866200084f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200059857607f821691505b602082108103620005b957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200060d57600081815260208120601f850160051c81016020861015620005e85750805b601f850160051c820191505b818110156200060957828155600101620005f4565b5050505b505050565b81516001600160401b038111156200062e576200062e6200056d565b62000646816200063f845462000583565b84620005bf565b602080601f8311600181146200067e5760008415620006655750858301515b600019600386901b1c1916600185901b17855562000609565b600085815260208120601f198616915b82811015620006af578886015182559484019460019091019084016200068e565b5085821015620006ce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000735578160001904821115620007195762000719620006de565b808516156200072757918102915b93841c9390800290620006f9565b509250929050565b6000826200074e57506001620004e1565b816200075d57506000620004e1565b81600181146200077657600281146200078157620007a1565b6001915050620004e1565b60ff841115620007955762000795620006de565b50506001821b620004e1565b5060208310610133831016604e8410600b8410161715620007c6575081810a620004e1565b620007d28383620006f4565b8060001904821115620007e957620007e9620006de565b029392505050565b6000620004de60ff8416836200073d565b60008160001904831182151516156200081f576200081f620006de565b500290565b6000602082840312156200083757600080fd5b81516001600160a01b0381168114620004de57600080fd5b6000826200086d57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015620008a15785810183015185820160400152820162000883565b81811115620008b4576000604083870101525b50601f01601f1916929092016040019392505050565b60805160a051612ad9620008fe600039600081816103820152610d030152600081816104b40152610d3e0152612ad96000f3fe6080604052600436106103395760003560e01c8063790ca413116101ab578063b37f80f8116100f7578063dbac26e911610095578063eb50e70e1161006f578063eb50e70e14610a1a578063ee828db314610a3a578063f2fde38b14610a5a578063f872858a14610a7a57600080fd5b8063dbac26e91461098f578063dd62ed3e146109bf578063e6b2603b14610a0557600080fd5b8063c816841b116100d1578063c816841b14610909578063c867d60b14610929578063cea9d26f14610959578063d2d7ad831461097957600080fd5b8063b37f80f8146108a9578063c16dd4a4146108c9578063c49b9a80146108e957600080fd5b80638da5cb5b1161016457806398e944c81161013e57806398e944c814610824578063a457c2d714610849578063a9059cbb14610869578063af9549e01461088957600080fd5b80638da5cb5b146107d15780638f32d59b146107ef57806395d89b411461080f57600080fd5b8063790ca4131461071f5780637d1db4a514610735578063807c2d9c1461074b5780638236802e146107615780638b42507f146107815780638b4cee08146107b157600080fd5b806338ec0b11116102855780635881f3ef1161022357806366a16cad116101fd57806366a16cad1461068857806370a08231146106a8578063728d41c9146106de578063741c8907146106fe57600080fd5b80635881f3ef1461062e5780635c85974f1461064e5780635e42358c1461066e57600080fd5b80633ecad2711161025f5780633ecad2711461058d5780634974d88f146105bd5780634a74bb02146105dd5780635342acb4146105fe57600080fd5b806338ec0b111461052d578063395093511461054d5780633b97084a1461056d57600080fd5b806318160ddd116102f257806327c8f835116102cc57806327c8f835146104a25780632b112e49146104d657806330d35dee146104eb578063313ce5671461050b57600080fd5b806318160ddd1461044e57806320365d5f1461046d57806323b872dd1461048257600080fd5b806306fdde03146103455780630930907b14610370578063095ea7b3146103bc5780630cc835a3146103ec57806313ea1d891461040e5780631694505e1461042e57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610a99565b604051610367919061267c565b60405180910390f35b34801561037c57600080fd5b506103a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610367565b3480156103c857600080fd5b506103dc6103d73660046126e6565b610b2b565b6040519015158152602001610367565b3480156103f857600080fd5b5061040c610407366004612712565b610b42565b005b34801561041a57600080fd5b5061040c610429366004612739565b610b7f565b34801561043a57600080fd5b506017546103a4906001600160a01b031681565b34801561045a57600080fd5b506011545b604051908152602001610367565b34801561047957600080fd5b5061040c610c14565b34801561048e57600080fd5b506103dc61049d366004612772565b610c8e565b3480156104ae57600080fd5b506103a47f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b5061045f610cf9565b3480156104f757600080fd5b5061040c6105063660046127b3565b610d8c565b34801561051757600080fd5b5060035460405160ff9091168152602001610367565b34801561053957600080fd5b5061040c610548366004612739565b610dd6565b34801561055957600080fd5b506103dc6105683660046126e6565b610e6b565b34801561057957600080fd5b5061040c610588366004612712565b610ea1565b34801561059957600080fd5b506103dc6105a83660046127d0565b60076020526000908152604090205460ff1681565b3480156105c957600080fd5b5061040c6105d83660046127b3565b610ed0565b3480156105e957600080fd5b506018546103dc90600160a81b900460ff1681565b34801561060a57600080fd5b506103dc6106193660046127d0565b60066020526000908152604090205460ff1681565b34801561063a57600080fd5b506103a46106493660046127d0565b610f14565b34801561065a57600080fd5b5061040c610669366004612712565b61122e565b34801561067a57600080fd5b506015546103dc9060ff1681565b34801561069457600080fd5b5061040c6106a3366004612739565b61125d565b3480156106b457600080fd5b5061045f6106c33660046127d0565b6001600160a01b031660009081526004602052604090205490565b3480156106ea57600080fd5b5061040c6106f9366004612712565b6112b2565b34801561070a57600080fd5b506015546103dc906301000000900460ff1681565b34801561072b57600080fd5b5061045f60165481565b34801561074157600080fd5b5061045f60135481565b34801561075757600080fd5b5061045f60145481565b34801561076d57600080fd5b5061040c61077c366004612739565b6112e1565b34801561078d57600080fd5b506103dc61079c3660046127d0565b60096020526000908152604090205460ff1681565b3480156107bd57600080fd5b5061040c6107cc366004612712565b611336565b3480156107dd57600080fd5b506000546001600160a01b03166103a4565b3480156107fb57600080fd5b506000546001600160a01b031633146103dc565b34801561081b57600080fd5b5061035a61136a565b34801561083057600080fd5b506003546103a49061010090046001600160a01b031681565b34801561085557600080fd5b506103dc6108643660046126e6565b611379565b34801561087557600080fd5b506103dc6108843660046126e6565b6113c8565b34801561089557600080fd5b5061040c6108a4366004612739565b6113d5565b3480156108b557600080fd5b506015546103dc9062010000900460ff1681565b3480156108d557600080fd5b5061040c6108e4366004612739565b61146a565b3480156108f557600080fd5b5061040c6109043660046127b3565b6114bf565b34801561091557600080fd5b506018546103a4906001600160a01b031681565b34801561093557600080fd5b506103dc6109443660046127d0565b60086020526000908152604090205460ff1681565b34801561096557600080fd5b5061040c610974366004612772565b611541565b34801561098557600080fd5b5061045f60125481565b34801561099b57600080fd5b506103dc6109aa3660046127d0565b600a6020526000908152604090205460ff1681565b3480156109cb57600080fd5b5061045f6109da3660046127ed565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a1157600080fd5b5061040c6115e4565b348015610a2657600080fd5b5061040c610a353660046127d0565b6116a0565b348015610a4657600080fd5b5061040c610a553660046127b3565b6116f2565b348015610a6657600080fd5b5061040c610a753660046127d0565b61172f565b348015610a8657600080fd5b506015546103dc90610100900460ff1681565b606060018054610aa89061281b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad49061281b565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b6000610b383384846118dd565b5060015b92915050565b6000546001600160a01b03163314610b755760405162461bcd60e51b8152600401610b6c90612855565b60405180910390fd5b600c819055600e55565b6000546001600160a01b03163314610ba95760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03821660009081526009602052604090205481151560ff909116151503610be95760405162461bcd60e51b8152600401610b6c9061288a565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c3e5760405162461bcd60e51b8152600401610b6c90612855565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000610c9b848484611a01565b50610cee8433610ce985604051806060016040528060288152602001612a57602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611ffd565b6118dd565b5060015b9392505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260046020526040812054610d8790610d81610d787f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526004602052604090205490565b60115490612037565b90612037565b905090565b6000546001600160a01b03163314610db65760405162461bcd60e51b8152600401610b6c90612855565b60158054911515620100000262ff00001990921691909117905542601655565b6000546001600160a01b03163314610e005760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03821660009081526008602052604090205481151560ff909116151503610e405760405162461bcd60e51b8152600401610b6c9061288a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610b38918590610ce99086612079565b6000546001600160a01b03163314610ecb5760405162461bcd60e51b8152600401610b6c90612855565b601255565b6000546001600160a01b03163314610efa5760405162461bcd60e51b8152600401610b6c90612855565b601580549115156101000261ff0019909216919091179055565b600080546001600160a01b03163314610f3f5760405162461bcd60e51b8152600401610b6c90612855565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa691906128b1565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101791906128b1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108691906128b1565b91506001600160a01b0382166111dd57806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f891906128b1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116991906128b1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da91906128b1565b91505b601880546001600160a01b038085166001600160a01b03199283168117909355601780549490911693909116929092179091556000908152600760205260409020805460ff19166001179055919050565b6000546001600160a01b031633146112585760405162461bcd60e51b8152600401610b6c90612855565b601355565b6000546001600160a01b031633146112875760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112dc5760405162461bcd60e51b8152600401610b6c90612855565b601455565b6000546001600160a01b0316331461130b5760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113605760405162461bcd60e51b8152600401610b6c90612855565b600d819055600f55565b606060028054610aa89061281b565b6000610b383384610ce985604051806060016040528060258152602001612a7f602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611ffd565b6000610cee338484611a01565b6000546001600160a01b031633146113ff5760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03821660009081526006602052604090205481151560ff90911615150361143f5760405162461bcd60e51b8152600401610b6c9061288a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114945760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610b6c90612855565b60188054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061153690831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461156b5760405162461bcd60e51b8152600401610b6c90612855565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de91906128ce565b50505050565b6000546001600160a01b0316331461160e5760405162461bcd60e51b8152600401610b6c90612855565b604051600090339047908381818185875af1925050503d8060008114611650576040519150601f19603f3d011682016040523d82523d6000602084013e611655565b606091505b505090508061169d5760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b6044820152606401610b6c565b50565b6000546001600160a01b031633146116ca5760405162461bcd60e51b8152600401610b6c90612855565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610b6c90612855565b6015805460ff1916911515919091179055565b6000546001600160a01b031633146117595760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b0381166117be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b6c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361182b57506000610b3c565b60006118378385612901565b9050826118448583612920565b14610cf25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b6c565b6000610cf283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120d8565b6001600160a01b03831661193f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b6c565b6001600160a01b0382166119a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b6c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611a675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6c565b6001600160a01b038316611ac95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6c565b60008211611b2b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b6c565b6001600160a01b0384166000908152600a602052604090205460ff16158015611b6d57506001600160a01b0383166000908152600a602052604090205460ff16155b611bcf5760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060448201526c6e6f7420416c6c6f776564212160981b6064820152608401610b6c565b60155462010000900460ff1680611bf55750336000908152600b602052604090205460ff165b80611c0a57506000546001600160a01b031633145b611c565760405162461bcd60e51b815260206004820152601b60248201527f54726164652069732043757272656e746c7920506175736564212100000000006044820152606401610b6c565b601654611c6590610384612942565b42118015611c7d57506015546301000000900460ff16155b8015611c8a575060165415155b15611ce157611cb1601054611cab600f60115461181990919063ffffffff16565b9061189b565b601355601054601154611cca9190611cab90600f611819565b6014556015805463ff000000191663010000001790555b601854600160a01b900460ff1615611d0557611cfe848484612106565b9050610cf2565b6001600160a01b03841660009081526009602052604090205460ff16158015611d4757506001600160a01b03831660009081526009602052604090205460ff16155b8015611d55575060155460ff165b15611dbd57601354821115611dbd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b6c565b3060009081526004602052604090205460125481108015908190611deb5750601854600160a01b900460ff16155b8015611e1057506001600160a01b03861660009081526007602052604090205460ff16155b8015611e255750601854600160a81b900460ff165b15611e3257611e326121ec565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260049091529190912054611e84918690611ffd565b6001600160a01b038716600090815260046020526040812091909155611eaa8787612288565b611ebe57611eb9878787612328565b611ec0565b845b601554909150610100900460ff168015611ef357506001600160a01b03861660009081526008602052604090205460ff16155b15611f7257601454611f2482611f1e896001600160a01b031660009081526004602052604090205490565b90612079565b1115611f725760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610b6c565b6001600160a01b038616600090815260046020526040902054611f959082612079565b6001600160a01b0380881660008181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fe99085815260200190565b60405180910390a360019350505050610cf2565b600081848411156120215760405162461bcd60e51b8152600401610b6c919061267c565b50600061202e848661295a565b95945050505050565b6000610cf283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ffd565b6000806120868385612942565b905083811015610cf25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b6c565b600081836120f95760405162461bcd60e51b8152600401610b6c919061267c565b50600061202e8486612920565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600490915291822054612157918490611ffd565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546121869083612079565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121da9086815260200190565b60405180910390a35060019392505050565b6018805460ff60a01b1916600160a01b1790553060009081526004602052604081205490508060000361221f5750612279565b600061222c82600261189b565b9050600061223a8383612037565b90504761224682612430565b60006122524783612037565b90506000811180156122645750600084115b156122735761227384826125c3565b50505050505b6018805460ff60a01b19169055565b6001600160a01b03821660009081526006602052604081205460ff16806122c757506001600160a01b03821660009081526006602052604090205460ff165b156122d457506001610b3c565b6001600160a01b03831660009081526007602052604090205460ff168061231357506001600160a01b03821660009081526007602052604090205460ff165b1561232057506000610b3c565b506000610b3c565b6001600160a01b038316600090815260076020526040812054819060ff161561236d57612366601054611cab600e548661181990919063ffffffff16565b90506123ac565b6001600160a01b03841660009081526007602052604090205460ff16156123ac576123a9601054611cab600f548661181990919063ffffffff16565b90505b801561242657306000908152600460205260409020546123cc9082612079565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061241d9085815260200190565b60405180910390a35b61202e8382612037565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061246557612465612971565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e291906128b1565b816001815181106124f5576124f5612971565b6001600160a01b03928316602091820292909201015260175461251b91309116846118dd565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906125549085906000908690309042906004016129cb565b600060405180830381600087803b15801561256e57600080fd5b505af1158015612582573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125b7929190612a07565b60405180910390a15050565b6017546125db9030906001600160a01b0316846118dd565b60175460035460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612650573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126759190612a28565b5050505050565b600060208083528351808285015260005b818110156126a95785810183015185820160400152820161268d565b818111156126bb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461169d57600080fd5b600080604083850312156126f957600080fd5b8235612704816126d1565b946020939093013593505050565b60006020828403121561272457600080fd5b5035919050565b801515811461169d57600080fd5b6000806040838503121561274c57600080fd5b8235612757816126d1565b915060208301356127678161272b565b809150509250929050565b60008060006060848603121561278757600080fd5b8335612792816126d1565b925060208401356127a2816126d1565b929592945050506040919091013590565b6000602082840312156127c557600080fd5b8135610cf28161272b565b6000602082840312156127e257600080fd5b8135610cf2816126d1565b6000806040838503121561280057600080fd5b823561280b816126d1565b91506020830135612767816126d1565b600181811c9082168061282f57607f821691505b60208210810361284f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600d908201526c4e6f74204368616e676564212160981b604082015260600190565b6000602082840312156128c357600080fd5b8151610cf2816126d1565b6000602082840312156128e057600080fd5b8151610cf28161272b565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561291b5761291b6128eb565b500290565b60008261293d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612955576129556128eb565b500190565b60008282101561296c5761296c6128eb565b500390565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156129c05781516001600160a01b03168752958201959082019060010161299b565b509495945050505050565b85815284602082015260a0604082015260006129ea60a0830186612987565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612a206040830184612987565b949350505050565b600080600060608486031215612a3d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d2c3adb0411fc4bdf07717b8212eed4bb95a2ccdfec06dd03bc155ac5113a41464736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c8063790ca413116101ab578063b37f80f8116100f7578063dbac26e911610095578063eb50e70e1161006f578063eb50e70e14610a1a578063ee828db314610a3a578063f2fde38b14610a5a578063f872858a14610a7a57600080fd5b8063dbac26e91461098f578063dd62ed3e146109bf578063e6b2603b14610a0557600080fd5b8063c816841b116100d1578063c816841b14610909578063c867d60b14610929578063cea9d26f14610959578063d2d7ad831461097957600080fd5b8063b37f80f8146108a9578063c16dd4a4146108c9578063c49b9a80146108e957600080fd5b80638da5cb5b1161016457806398e944c81161013e57806398e944c814610824578063a457c2d714610849578063a9059cbb14610869578063af9549e01461088957600080fd5b80638da5cb5b146107d15780638f32d59b146107ef57806395d89b411461080f57600080fd5b8063790ca4131461071f5780637d1db4a514610735578063807c2d9c1461074b5780638236802e146107615780638b42507f146107815780638b4cee08146107b157600080fd5b806338ec0b11116102855780635881f3ef1161022357806366a16cad116101fd57806366a16cad1461068857806370a08231146106a8578063728d41c9146106de578063741c8907146106fe57600080fd5b80635881f3ef1461062e5780635c85974f1461064e5780635e42358c1461066e57600080fd5b80633ecad2711161025f5780633ecad2711461058d5780634974d88f146105bd5780634a74bb02146105dd5780635342acb4146105fe57600080fd5b806338ec0b111461052d578063395093511461054d5780633b97084a1461056d57600080fd5b806318160ddd116102f257806327c8f835116102cc57806327c8f835146104a25780632b112e49146104d657806330d35dee146104eb578063313ce5671461050b57600080fd5b806318160ddd1461044e57806320365d5f1461046d57806323b872dd1461048257600080fd5b806306fdde03146103455780630930907b14610370578063095ea7b3146103bc5780630cc835a3146103ec57806313ea1d891461040e5780631694505e1461042e57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610a99565b604051610367919061267c565b60405180910390f35b34801561037c57600080fd5b506103a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610367565b3480156103c857600080fd5b506103dc6103d73660046126e6565b610b2b565b6040519015158152602001610367565b3480156103f857600080fd5b5061040c610407366004612712565b610b42565b005b34801561041a57600080fd5b5061040c610429366004612739565b610b7f565b34801561043a57600080fd5b506017546103a4906001600160a01b031681565b34801561045a57600080fd5b506011545b604051908152602001610367565b34801561047957600080fd5b5061040c610c14565b34801561048e57600080fd5b506103dc61049d366004612772565b610c8e565b3480156104ae57600080fd5b506103a47f000000000000000000000000000000000000000000000000000000000000dead81565b3480156104e257600080fd5b5061045f610cf9565b3480156104f757600080fd5b5061040c6105063660046127b3565b610d8c565b34801561051757600080fd5b5060035460405160ff9091168152602001610367565b34801561053957600080fd5b5061040c610548366004612739565b610dd6565b34801561055957600080fd5b506103dc6105683660046126e6565b610e6b565b34801561057957600080fd5b5061040c610588366004612712565b610ea1565b34801561059957600080fd5b506103dc6105a83660046127d0565b60076020526000908152604090205460ff1681565b3480156105c957600080fd5b5061040c6105d83660046127b3565b610ed0565b3480156105e957600080fd5b506018546103dc90600160a81b900460ff1681565b34801561060a57600080fd5b506103dc6106193660046127d0565b60066020526000908152604090205460ff1681565b34801561063a57600080fd5b506103a46106493660046127d0565b610f14565b34801561065a57600080fd5b5061040c610669366004612712565b61122e565b34801561067a57600080fd5b506015546103dc9060ff1681565b34801561069457600080fd5b5061040c6106a3366004612739565b61125d565b3480156106b457600080fd5b5061045f6106c33660046127d0565b6001600160a01b031660009081526004602052604090205490565b3480156106ea57600080fd5b5061040c6106f9366004612712565b6112b2565b34801561070a57600080fd5b506015546103dc906301000000900460ff1681565b34801561072b57600080fd5b5061045f60165481565b34801561074157600080fd5b5061045f60135481565b34801561075757600080fd5b5061045f60145481565b34801561076d57600080fd5b5061040c61077c366004612739565b6112e1565b34801561078d57600080fd5b506103dc61079c3660046127d0565b60096020526000908152604090205460ff1681565b3480156107bd57600080fd5b5061040c6107cc366004612712565b611336565b3480156107dd57600080fd5b506000546001600160a01b03166103a4565b3480156107fb57600080fd5b506000546001600160a01b031633146103dc565b34801561081b57600080fd5b5061035a61136a565b34801561083057600080fd5b506003546103a49061010090046001600160a01b031681565b34801561085557600080fd5b506103dc6108643660046126e6565b611379565b34801561087557600080fd5b506103dc6108843660046126e6565b6113c8565b34801561089557600080fd5b5061040c6108a4366004612739565b6113d5565b3480156108b557600080fd5b506015546103dc9062010000900460ff1681565b3480156108d557600080fd5b5061040c6108e4366004612739565b61146a565b3480156108f557600080fd5b5061040c6109043660046127b3565b6114bf565b34801561091557600080fd5b506018546103a4906001600160a01b031681565b34801561093557600080fd5b506103dc6109443660046127d0565b60086020526000908152604090205460ff1681565b34801561096557600080fd5b5061040c610974366004612772565b611541565b34801561098557600080fd5b5061045f60125481565b34801561099b57600080fd5b506103dc6109aa3660046127d0565b600a6020526000908152604090205460ff1681565b3480156109cb57600080fd5b5061045f6109da3660046127ed565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a1157600080fd5b5061040c6115e4565b348015610a2657600080fd5b5061040c610a353660046127d0565b6116a0565b348015610a4657600080fd5b5061040c610a553660046127b3565b6116f2565b348015610a6657600080fd5b5061040c610a753660046127d0565b61172f565b348015610a8657600080fd5b506015546103dc90610100900460ff1681565b606060018054610aa89061281b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad49061281b565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b6000610b383384846118dd565b5060015b92915050565b6000546001600160a01b03163314610b755760405162461bcd60e51b8152600401610b6c90612855565b60405180910390fd5b600c819055600e55565b6000546001600160a01b03163314610ba95760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03821660009081526009602052604090205481151560ff909116151503610be95760405162461bcd60e51b8152600401610b6c9061288a565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c3e5760405162461bcd60e51b8152600401610b6c90612855565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000610c9b848484611a01565b50610cee8433610ce985604051806060016040528060288152602001612a57602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611ffd565b6118dd565b5060015b9392505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260046020526040812054610d8790610d81610d787f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b031660009081526004602052604090205490565b60115490612037565b90612037565b905090565b6000546001600160a01b03163314610db65760405162461bcd60e51b8152600401610b6c90612855565b60158054911515620100000262ff00001990921691909117905542601655565b6000546001600160a01b03163314610e005760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03821660009081526008602052604090205481151560ff909116151503610e405760405162461bcd60e51b8152600401610b6c9061288a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610b38918590610ce99086612079565b6000546001600160a01b03163314610ecb5760405162461bcd60e51b8152600401610b6c90612855565b601255565b6000546001600160a01b03163314610efa5760405162461bcd60e51b8152600401610b6c90612855565b601580549115156101000261ff0019909216919091179055565b600080546001600160a01b03163314610f3f5760405162461bcd60e51b8152600401610b6c90612855565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa691906128b1565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101791906128b1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108691906128b1565b91506001600160a01b0382166111dd57806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f891906128b1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116991906128b1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da91906128b1565b91505b601880546001600160a01b038085166001600160a01b03199283168117909355601780549490911693909116929092179091556000908152600760205260409020805460ff19166001179055919050565b6000546001600160a01b031633146112585760405162461bcd60e51b8152600401610b6c90612855565b601355565b6000546001600160a01b031633146112875760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112dc5760405162461bcd60e51b8152600401610b6c90612855565b601455565b6000546001600160a01b0316331461130b5760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113605760405162461bcd60e51b8152600401610b6c90612855565b600d819055600f55565b606060028054610aa89061281b565b6000610b383384610ce985604051806060016040528060258152602001612a7f602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611ffd565b6000610cee338484611a01565b6000546001600160a01b031633146113ff5760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03821660009081526006602052604090205481151560ff90911615150361143f5760405162461bcd60e51b8152600401610b6c9061288a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114945760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610b6c90612855565b60188054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061153690831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461156b5760405162461bcd60e51b8152600401610b6c90612855565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de91906128ce565b50505050565b6000546001600160a01b0316331461160e5760405162461bcd60e51b8152600401610b6c90612855565b604051600090339047908381818185875af1925050503d8060008114611650576040519150601f19603f3d011682016040523d82523d6000602084013e611655565b606091505b505090508061169d5760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b6044820152606401610b6c565b50565b6000546001600160a01b031633146116ca5760405162461bcd60e51b8152600401610b6c90612855565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610b6c90612855565b6015805460ff1916911515919091179055565b6000546001600160a01b031633146117595760405162461bcd60e51b8152600401610b6c90612855565b6001600160a01b0381166117be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b6c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361182b57506000610b3c565b60006118378385612901565b9050826118448583612920565b14610cf25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b6c565b6000610cf283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120d8565b6001600160a01b03831661193f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b6c565b6001600160a01b0382166119a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b6c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611a675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6c565b6001600160a01b038316611ac95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6c565b60008211611b2b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b6c565b6001600160a01b0384166000908152600a602052604090205460ff16158015611b6d57506001600160a01b0383166000908152600a602052604090205460ff16155b611bcf5760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060448201526c6e6f7420416c6c6f776564212160981b6064820152608401610b6c565b60155462010000900460ff1680611bf55750336000908152600b602052604090205460ff165b80611c0a57506000546001600160a01b031633145b611c565760405162461bcd60e51b815260206004820152601b60248201527f54726164652069732043757272656e746c7920506175736564212100000000006044820152606401610b6c565b601654611c6590610384612942565b42118015611c7d57506015546301000000900460ff16155b8015611c8a575060165415155b15611ce157611cb1601054611cab600f60115461181990919063ffffffff16565b9061189b565b601355601054601154611cca9190611cab90600f611819565b6014556015805463ff000000191663010000001790555b601854600160a01b900460ff1615611d0557611cfe848484612106565b9050610cf2565b6001600160a01b03841660009081526009602052604090205460ff16158015611d4757506001600160a01b03831660009081526009602052604090205460ff16155b8015611d55575060155460ff165b15611dbd57601354821115611dbd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b6c565b3060009081526004602052604090205460125481108015908190611deb5750601854600160a01b900460ff16155b8015611e1057506001600160a01b03861660009081526007602052604090205460ff16155b8015611e255750601854600160a81b900460ff165b15611e3257611e326121ec565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260049091529190912054611e84918690611ffd565b6001600160a01b038716600090815260046020526040812091909155611eaa8787612288565b611ebe57611eb9878787612328565b611ec0565b845b601554909150610100900460ff168015611ef357506001600160a01b03861660009081526008602052604090205460ff16155b15611f7257601454611f2482611f1e896001600160a01b031660009081526004602052604090205490565b90612079565b1115611f725760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610b6c565b6001600160a01b038616600090815260046020526040902054611f959082612079565b6001600160a01b0380881660008181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fe99085815260200190565b60405180910390a360019350505050610cf2565b600081848411156120215760405162461bcd60e51b8152600401610b6c919061267c565b50600061202e848661295a565b95945050505050565b6000610cf283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ffd565b6000806120868385612942565b905083811015610cf25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b6c565b600081836120f95760405162461bcd60e51b8152600401610b6c919061267c565b50600061202e8486612920565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600490915291822054612157918490611ffd565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546121869083612079565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121da9086815260200190565b60405180910390a35060019392505050565b6018805460ff60a01b1916600160a01b1790553060009081526004602052604081205490508060000361221f5750612279565b600061222c82600261189b565b9050600061223a8383612037565b90504761224682612430565b60006122524783612037565b90506000811180156122645750600084115b156122735761227384826125c3565b50505050505b6018805460ff60a01b19169055565b6001600160a01b03821660009081526006602052604081205460ff16806122c757506001600160a01b03821660009081526006602052604090205460ff165b156122d457506001610b3c565b6001600160a01b03831660009081526007602052604090205460ff168061231357506001600160a01b03821660009081526007602052604090205460ff165b1561232057506000610b3c565b506000610b3c565b6001600160a01b038316600090815260076020526040812054819060ff161561236d57612366601054611cab600e548661181990919063ffffffff16565b90506123ac565b6001600160a01b03841660009081526007602052604090205460ff16156123ac576123a9601054611cab600f548661181990919063ffffffff16565b90505b801561242657306000908152600460205260409020546123cc9082612079565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061241d9085815260200190565b60405180910390a35b61202e8382612037565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061246557612465612971565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e291906128b1565b816001815181106124f5576124f5612971565b6001600160a01b03928316602091820292909201015260175461251b91309116846118dd565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906125549085906000908690309042906004016129cb565b600060405180830381600087803b15801561256e57600080fd5b505af1158015612582573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125b7929190612a07565b60405180910390a15050565b6017546125db9030906001600160a01b0316846118dd565b60175460035460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612650573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126759190612a28565b5050505050565b600060208083528351808285015260005b818110156126a95785810183015185820160400152820161268d565b818111156126bb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461169d57600080fd5b600080604083850312156126f957600080fd5b8235612704816126d1565b946020939093013593505050565b60006020828403121561272457600080fd5b5035919050565b801515811461169d57600080fd5b6000806040838503121561274c57600080fd5b8235612757816126d1565b915060208301356127678161272b565b809150509250929050565b60008060006060848603121561278757600080fd5b8335612792816126d1565b925060208401356127a2816126d1565b929592945050506040919091013590565b6000602082840312156127c557600080fd5b8135610cf28161272b565b6000602082840312156127e257600080fd5b8135610cf2816126d1565b6000806040838503121561280057600080fd5b823561280b816126d1565b91506020830135612767816126d1565b600181811c9082168061282f57607f821691505b60208210810361284f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600d908201526c4e6f74204368616e676564212160981b604082015260600190565b6000602082840312156128c357600080fd5b8151610cf2816126d1565b6000602082840312156128e057600080fd5b8151610cf28161272b565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561291b5761291b6128eb565b500290565b60008261293d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612955576129556128eb565b500190565b60008282101561296c5761296c6128eb565b500390565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156129c05781516001600160a01b03168752958201959082019060010161299b565b509495945050505050565b85815284602082015260a0604082015260006129ea60a0830186612987565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612a206040830184612987565b949350505050565b600080600060608486031215612a3d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d2c3adb0411fc4bdf07717b8212eed4bb95a2ccdfec06dd03bc155ac5113a41464736f6c634300080f0033

Deployed Bytecode Sourcemap

13918:15045:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17360:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14289:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;780:32:1;;;762:51;;750:2;735:18;14289:81:0;616:203:1;18530:161:0;;;;;;;;;;-1:-1:-1;18530:161:0;;;;;:::i;:::-;;:::i;:::-;;;1445:14:1;;1438:22;1420:41;;1408:2;1393:18;18530:161:0;1280:187:1;26535:136:0;;;;;;;;;;-1:-1:-1;26535:136:0;;;;;:::i;:::-;;:::i;:::-;;27357:186;;;;;;;;;;-1:-1:-1;27357:186:0;;;;;:::i;:::-;;:::i;15488:41::-;;;;;;;;;;-1:-1:-1;15488:41:0;;;;-1:-1:-1;;;;;15488:41:0;;;17637:100;;;;;;;;;;-1:-1:-1;17717:12:0;;17637:100;;;2548:25:1;;;2536:2;2521:18;17637:100:0;2402:177:1;5594:231:0;;;;;;;;;;;;;:::i;19481:313::-;;;;;;;;;;-1:-1:-1;19481:313:0;;;;;:::i;:::-;;:::i;14201:81::-;;;;;;;;;;;;;;;19048:156;;;;;;;;;;;;;:::i;26045:136::-;;;;;;;;;;-1:-1:-1;26045:136:0;;;;;:::i;:::-;;:::i;17546:83::-;;;;;;;;;;-1:-1:-1;17612:9:0;;17546:83;;17612:9;;;;3433:36:1;;3421:2;3406:18;17546:83:0;3291:184:1;27151:198:0;;;;;;;;;;-1:-1:-1;27151:198:0;;;;;:::i;:::-;;:::i;18027:218::-;;;;;;;;;;-1:-1:-1;18027:218:0;;;;;:::i;:::-;;:::i;27551:124::-;;;;;;;;;;-1:-1:-1;27551:124:0;;;;;:::i;:::-;;:::i;14567:45::-;;;;;;;;;;-1:-1:-1;14567:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26424:103;;;;;;;;;;-1:-1:-1;26424:103:0;;;;;:::i;:::-;;:::i;15603:40::-;;;;;;;;;;-1:-1:-1;15603:40:0;;;;-1:-1:-1;;;15603:40:0;;;;;;14510:50;;;;;;;;;;-1:-1:-1;14510:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28210:748;;;;;;;;;;-1:-1:-1;28210:748:0;;;;;:::i;:::-;;:::i;27797:101::-;;;;;;;;;;-1:-1:-1;27797:101:0;;;;;:::i;:::-;;:::i;15309:32::-;;;;;;;;;;-1:-1:-1;15309:32:0;;;;;;;;26189:123;;;;;;;;;;-1:-1:-1;26189:123:0;;;;;:::i;:::-;;:::i;17745:::-;;;;;;;;;;-1:-1:-1;17745:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;17837:18:0;17811:7;17837:18;;;:9;:18;;;;;;;17745:123;27683:106;;;;;;;;;;-1:-1:-1;27683:106:0;;;;;:::i;:::-;;:::i;15429:21::-;;;;;;;;;;-1:-1:-1;15429:21:0;;;;;;;;;;;15457:22;;;;;;;;;;;;;;;;15142:67;;;;;;;;;;;;;;;;15227:65;;;;;;;;;;;;;;;;25538:112;;;;;;;;;;-1:-1:-1;25538:112:0;;;;;:::i;:::-;;:::i;14678:48::-;;;;;;;;;;-1:-1:-1;14678:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26679:143;;;;;;;;;;-1:-1:-1;26679:143:0;;;;;:::i;:::-;;:::i;5269:79::-;;;;;;;;;;-1:-1:-1;5307:7:0;5334:6;-1:-1:-1;;;;;5334:6:0;5269:79;;5494:92;;;;;;;;;;-1:-1:-1;5534:4:0;5572:6;-1:-1:-1;;;;;5572:6:0;5558:10;:20;5494:92;;17451:87;;;;;;;;;;;;;:::i;14160:32::-;;;;;;;;;;-1:-1:-1;14160:32:0;;;;;;;-1:-1:-1;;;;;14160:32:0;;;18253:269;;;;;;;;;;-1:-1:-1;18253:269:0;;;;;:::i;:::-;;:::i;19306:167::-;;;;;;;;;;-1:-1:-1;19306:167:0;;;;;:::i;:::-;;:::i;26950:193::-;;;;;;;;;;-1:-1:-1;26950:193:0;;;;;:::i;:::-;;:::i;15392:30::-;;;;;;;;;;-1:-1:-1;15392:30:0;;;;;;;;;;;28085:117;;;;;;;;;;-1:-1:-1;28085:117:0;;;;;:::i;:::-;;:::i;27906:171::-;;;;;;;;;;-1:-1:-1;27906:171:0;;;;;:::i;:::-;;:::i;15536:26::-;;;;;;;;;;-1:-1:-1;15536:26:0;;;;-1:-1:-1;;;;;15536:26:0;;;14619:52;;;;;;;;;;-1:-1:-1;14619:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25907:130;;;;;;;;;;-1:-1:-1;25907:130:0;;;;;:::i;:::-;;:::i;15071:62::-;;;;;;;;;;;;;;;;14733:44;;;;;;;;;;-1:-1:-1;14733:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17876:143;;;;;;;;;;-1:-1:-1;17876:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17984:18:0;;;17957:7;17984:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17876:143;25691:176;;;;;;;;;;;;;:::i;26830:112::-;;;;;;;;;;-1:-1:-1;26830:112:0;;;;;:::i;:::-;;:::i;26320:96::-;;;;;;;;;;-1:-1:-1;26320:96:0;;;;;:::i;:::-;;:::i;5833:244::-;;;;;;;;;;-1:-1:-1;5833:244:0;;;;;:::i;:::-;;:::i;15348:35::-;;;;;;;;;;-1:-1:-1;15348:35:0;;;;;;;;;;;17360:83;17397:13;17430:5;17423:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17360:83;:::o;18530:161::-;18605:4;18622:39;193:10;18645:7;18654:6;18622:8;:39::i;:::-;-1:-1:-1;18679:4:0;18530:161;;;;;:::o;26535:136::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;;;;;;;;;26600:16:::1;:25:::0;;;26636:8:::1;:27:::0;26535:136::o;27357:186::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27444:21:0;::::1;;::::0;;;:15:::1;:21;::::0;;;;;:32;::::1;;:21;::::0;;::::1;:32;;::::0;27436:57:::1;;;;-1:-1:-1::0;;;27436:57:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27504:21:0;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:31;;-1:-1:-1;;27504:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27357:186::o;5594:231::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;5686:6:::1;::::0;;5665:81:::1;::::0;5702:42:::1;::::0;-1:-1:-1;;;;;5686:6:0;;::::1;::::0;5665:81:::1;::::0;::::1;5757:6;:60:::0;;-1:-1:-1;;;;;;5757:60:0::1;5774:42;5757:60;::::0;;5594:231::o;19481:313::-;19579:4;19596:36;19606:6;19614:9;19625:6;19596:9;:36::i;:::-;-1:-1:-1;19643:121:0;19652:6;193:10;19674:89;19712:6;19674:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19674:19:0;;;;;;:11;:19;;;;;;;;193:10;19674:33;;;;;;;;;;:37;:89::i;:::-;19643:8;:121::i;:::-;-1:-1:-1;19782:4:0;19481:313;;;;;;:::o;19048:156::-;-1:-1:-1;;;;;19183:11:0;17837:18;19101:7;17837:18;;;:9;:18;;;;;;19128:68;;:40;19145:22;19155:11;-1:-1:-1;;;;;17837:18:0;17811:7;17837:18;;;:9;:18;;;;;;;17745:123;19145:22;19128:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;19121:75;;19048:156;:::o;26045:136::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;26106:18:::1;:28:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;26106:28:0;;::::1;::::0;;;::::1;::::0;;26158:15:::1;26145:10;:28:::0;26045:136::o;27151:198::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27242:25:0;::::1;;::::0;;;:19:::1;:25;::::0;;;;;:36;::::1;;:25;::::0;;::::1;:36;;::::0;27234:61:::1;;;;-1:-1:-1::0;;;27234:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27306:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:35;;-1:-1:-1;;27306:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27151:198::o;18027:218::-;193:10;18115:4;18164:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18164:34:0;;;;;;;;;;18115:4;;18132:83;;18155:7;;18164:50;;18203:10;18164:38;:50::i;27551:124::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27633:23:::1;:34:::0;27551:124::o;26424:103::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;26493:16:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;26493:26:0;;::::1;::::0;;;::::1;::::0;;26424:103::o;28210:748::-;28290:22;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;28327:35:::1;28384:16;28327:74;;28450:16;-1:-1:-1::0;;;;;28450:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28432:53:0::1;;28494:4;28501:16;-1:-1:-1::0;;;;;28501:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28432:93;::::0;-1:-1:-1;;;;;;28432:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6173:15:1;;;28432:93:0::1;::::0;::::1;6155:34:1::0;6225:15;;6205:18;;;6198:43;6090:18;;28432:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28415:110:::0;-1:-1:-1;;;;;;28541:28:0;::::1;28538:225;;28655:16;-1:-1:-1::0;;;;;28655:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28637:74:0::1;;28720:4;28727:16;-1:-1:-1::0;;;;;28727:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28637:114;::::0;-1:-1:-1;;;;;;28637:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6173:15:1;;;28637:114:0::1;::::0;::::1;6155:34:1::0;6225:15;;6205:18;;;6198:43;6090:18;;28637:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28620:131;;28538:225;28775:11;:28:::0;;-1:-1:-1;;;;;28775:28:0;;::::1;-1:-1:-1::0;;;;;;28775:28:0;;::::1;::::0;::::1;::::0;;;28837:15:::1;:34:::0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;28775:11:::1;28909:34:::0;;;:12:::1;:34;::::0;;;;:41;;-1:-1:-1;;28909:41:0::1;28775:28:::0;28909:41:::1;::::0;;28789:14;28210:748;-1:-1:-1;28210:748:0:o;27797:101::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27867:12:::1;:23:::0;27797:101::o;26189:123::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26275:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:29;;-1:-1:-1;;26275:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26189:123::o;27683:106::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27760:10:::1;:21:::0;27683:106::o;25538:112::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25615:17:0;;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:27;;-1:-1:-1;;25615:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25538:112::o;26679:143::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;26748:17:::1;:26:::0;;;26785:9:::1;:29:::0;26679:143::o;17451:87::-;17490:13;17523:7;17516:14;;;;;:::i;18253:269::-;18346:4;18363:129;193:10;18386:7;18395:96;18434:15;18395:96;;;;;;;;;;;;;;;;;193:10;18395:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18395:34:0;;;;;;;;;;;;:38;:96::i;19306:167::-;19384:4;19401:42;193:10;19425:9;19436:6;19401:9;:42::i;26950:193::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27040:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;:34;::::1;;:23;::::0;;::::1;:34;;::::0;27032:59:::1;;;;-1:-1:-1::0;;;27032:59:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27102:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:33;;-1:-1:-1;;27102:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26950:193::o;28085:117::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28165:19:0;;;::::1;;::::0;;;:12:::1;:19;::::0;;;;:29;;-1:-1:-1;;28165:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28085:117::o;27906:171::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27983:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;27983:32:0::1;-1:-1:-1::0;;;;27983:32:0;;::::1;;::::0;;28031:38:::1;::::0;::::1;::::0;::::1;::::0;28007:8;1445:14:1;1438:22;1420:41;;1408:2;1393:18;;1280:187;28031:38:0::1;;;;;;;;27906:171:::0;:::o;25907:130::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;25999:30:::1;::::0;-1:-1:-1;;;25999:30:0;;-1:-1:-1;;;;;6444:32:1;;;25999:30:0::1;::::0;::::1;6426:51:1::0;6493:18;;;6486:34;;;25999:12:0;::::1;::::0;::::1;::::0;6399:18:1;;25999:30:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25907:130:::0;;;:::o;25691:176::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;25756:58:::1;::::0;25744:7:::1;::::0;25764:10:::1;::::0;25788:21:::1;::::0;25744:7;25756:58;25744:7;25756:58;25788:21;25764:10;25756:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25743:71;;;25833:2;25825:34;;;::::0;-1:-1:-1;;;25825:34:0;;7193:2:1;25825:34:0::1;::::0;::::1;7175:21:1::0;7232:2;7212:18;;;7205:30;-1:-1:-1;;;7251:18:1;;;7244:50;7311:18;;25825:34:0::1;6991:344:1::0;25825:34:0::1;25731:136;25691:176::o:0;26830:112::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;26901:17:::1;:33:::0;;-1:-1:-1;;;;;26901:33:0;;::::1;;;-1:-1:-1::0;;;;;;26901:33:0;;::::1;::::0;;;::::1;::::0;;26830:112::o;26320:96::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;26385:13:::1;:23:::0;;-1:-1:-1;;26385:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26320:96::o;5833:244::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5922:22:0;::::1;5914:73;;;::::0;-1:-1:-1;;;5914:73:0;;7542:2:1;5914:73:0::1;::::0;::::1;7524:21:1::0;7581:2;7561:18;;;7554:30;7620:34;7600:18;;;7593:62;-1:-1:-1;;;7671:18:1;;;7664:36;7717:19;;5914:73:0::1;7340:402:1::0;5914:73:0::1;6024:6;::::0;;6003:38:::1;::::0;-1:-1:-1;;;;;6003:38:0;;::::1;::::0;6024:6;::::1;::::0;6003:38:::1;::::0;::::1;6052:6;:17:::0;;-1:-1:-1;;;;;;6052:17:0::1;-1:-1:-1::0;;;;;6052:17:0;;;::::1;::::0;;;::::1;::::0;;5833:244::o;1579:250::-;1637:7;1661:1;1666;1661:6;1657:47;;-1:-1:-1;1691:1:0;1684:8;;1657:47;1716:9;1728:5;1732:1;1728;:5;:::i;:::-;1716:17;-1:-1:-1;1761:1:0;1752:5;1756:1;1716:17;1752:5;:::i;:::-;:10;1744:56;;;;-1:-1:-1;;;1744:56:0;;8476:2:1;1744:56:0;;;8458:21:1;8515:2;8495:18;;;8488:30;8554:34;8534:18;;;8527:62;-1:-1:-1;;;8605:18:1;;;8598:31;8646:19;;1744:56:0;8274:397:1;1837:132:0;1895:7;1922:39;1926:1;1929;1922:39;;;;;;;;;;;;;;;;;:3;:39::i;18699:337::-;-1:-1:-1;;;;;18792:19:0;;18784:68;;;;-1:-1:-1;;;18784:68:0;;8878:2:1;18784:68:0;;;8860:21:1;8917:2;8897:18;;;8890:30;8956:34;8936:18;;;8929:62;-1:-1:-1;;;9007:18:1;;;9000:34;9051:19;;18784:68:0;8676:400:1;18784:68:0;-1:-1:-1;;;;;18871:21:0;;18863:68;;;;-1:-1:-1;;;18863:68:0;;9283:2:1;18863:68:0;;;9265:21:1;9322:2;9302:18;;;9295:30;9361:34;9341:18;;;9334:62;-1:-1:-1;;;9412:18:1;;;9405:32;9454:19;;18863:68:0;9081:398:1;18863:68:0;-1:-1:-1;;;;;18944:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18996:32;;2548:25:1;;;18996:32:0;;2521:18:1;18996:32:0;;;;;;;18699:337;;;:::o;19802:2182::-;19889:4;-1:-1:-1;;;;;19916:20:0;;19908:70;;;;-1:-1:-1;;;19908:70:0;;9686:2:1;19908:70:0;;;9668:21:1;9725:2;9705:18;;;9698:30;9764:34;9744:18;;;9737:62;-1:-1:-1;;;9815:18:1;;;9808:35;9860:19;;19908:70:0;9484:401:1;19908:70:0;-1:-1:-1;;;;;19997:23:0;;19989:71;;;;-1:-1:-1;;;19989:71:0;;10092:2:1;19989:71:0;;;10074:21:1;10131:2;10111:18;;;10104:30;10170:34;10150:18;;;10143:62;-1:-1:-1;;;10221:18:1;;;10214:33;10264:19;;19989:71:0;9890:399:1;19989:71:0;20088:1;20079:6;:10;20071:64;;;;-1:-1:-1;;;20071:64:0;;10496:2:1;20071:64:0;;;10478:21:1;10535:2;10515:18;;;10508:30;10574:34;10554:18;;;10547:62;-1:-1:-1;;;10625:18:1;;;10618:39;10674:19;;20071:64:0;10294:405:1;20071:64:0;-1:-1:-1;;;;;20155:19:0;;;;;;:11;:19;;;;;;;;20154:20;:47;;;;-1:-1:-1;;;;;;20179:22:0;;;;;;:11;:22;;;;;;;;20178:23;20154:47;20146:104;;;;-1:-1:-1;;;20146:104:0;;10906:2:1;20146:104:0;;;10888:21:1;10945:2;10925:18;;;10918:30;10984:34;10964:18;;;10957:62;-1:-1:-1;;;11035:18:1;;;11028:43;11088:19;;20146:104:0;10704:409:1;20146:104:0;20269:18;;;;;;;;:47;;-1:-1:-1;20305:10:0;20291:25;;;;:13;:25;;;;;;;;20269:47;:60;;;-1:-1:-1;5534:4:0;5572:6;-1:-1:-1;;;;;5572:6:0;5558:10;:20;20320:9;20261:100;;;;-1:-1:-1;;;20261:100:0;;11320:2:1;20261:100:0;;;11302:21:1;11359:2;11339:18;;;11332:30;11398:29;11378:18;;;11371:57;11445:18;;20261:100:0;11118:351:1;20261:100:0;20414:10;;:23;;20427:10;20414:23;:::i;:::-;20396:15;:41;20395:57;;;;-1:-1:-1;20443:9:0;;;;;;;20442:10;20395:57;:78;;;;-1:-1:-1;20457:10:0;;:15;;20395:78;20392:290;;;20506:37;20531:11;;20506:20;20523:2;20506:12;;:16;;:20;;;;:::i;:::-;:24;;:37::i;:::-;20490:12;:53;20605:11;;20580:12;;:37;;20605:11;20580:20;;20597:2;20580:16;:20::i;:37::-;20567:10;:50;20640:9;:16;;-1:-1:-1;;20640:16:0;;;;;20392:290;20707:16;;-1:-1:-1;;;20707:16:0;;;;20704:1273;;;20757:41;20772:6;20780:9;20791:6;20757:14;:41::i;:::-;20750:48;;;;20704:1273;-1:-1:-1;;;;;20856:23:0;;;;;;:15;:23;;;;;;;;20855:24;:55;;;;-1:-1:-1;;;;;;20884:26:0;;;;;;:15;:26;;;;;;;;20883:27;20855:55;:72;;;;-1:-1:-1;20914:13:0;;;;20855:72;20852:187;;;20966:12;;20956:6;:22;;20948:75;;;;-1:-1:-1;;;20948:75:0;;11809:2:1;20948:75:0;;;11791:21:1;11848:2;11828:18;;;11821:30;11887:34;11867:18;;;11860:62;-1:-1:-1;;;11938:18:1;;;11931:38;11986:19;;20948:75:0;11607:404:1;20948:75:0;21105:4;21056:28;17837:18;;;:9;:18;;;;;;21181:23;;21157:47;;;;;;;21237:44;;-1:-1:-1;21265:16:0;;-1:-1:-1;;;21265:16:0;;;;21264:17;21237:44;:69;;;;-1:-1:-1;;;;;;21286:20:0;;;;;;:12;:20;;;;;;;;21285:21;21237:69;:94;;;;-1:-1:-1;21310:21:0;;-1:-1:-1;;;21310:21:0;;;;21237:94;21233:165;;;21366:16;:14;:16::i;:::-;21434:53;;;;;;;;;;;-1:-1:-1;;;21434:53:0;;;;;;;;-1:-1:-1;;;;;21434:17:0;;-1:-1:-1;21434:17:0;;;:9;:17;;;;;;;;:53;;21456:6;;21434:21;:53::i;:::-;-1:-1:-1;;;;;21414:17:0;;;;;;:9;:17;;;;;:73;;;;21526:31;21424:6;21547:9;21526:13;:31::i;:::-;:77;;21569:34;21577:6;21585:9;21596:6;21569:7;:34::i;:::-;21526:77;;;21560:6;21526:77;21623:16;;21504:99;;-1:-1:-1;21623:16:0;;;;;:51;;;;-1:-1:-1;;;;;;21644:30:0;;;;;;:19;:30;;;;;;;;21643:31;21623:51;21620:181;;;21744:10;;21703:37;21728:11;21703:20;21713:9;-1:-1:-1;;;;;17837:18:0;17811:7;17837:18;;;:9;:18;;;;;;;17745:123;21703:20;:24;;:37::i;:::-;:51;;21695:90;;;;-1:-1:-1;;;21695:90:0;;12218:2:1;21695:90:0;;;12200:21:1;12257:2;12237:18;;;12230:30;12296:29;12276:18;;;12269:57;12343:18;;21695:90:0;12016:351:1;21695:90:0;-1:-1:-1;;;;;21840:20:0;;;;;;:9;:20;;;;;;:37;;21865:11;21840:24;:37::i;:::-;-1:-1:-1;;;;;21817:20:0;;;;;;;:9;:20;;;;;;;:60;;;;21899:40;;;;;;;;;;21927:11;2548:25:1;;2536:2;2521:18;;2402:177;21899:40:0;;;;;;;;21961:4;21954:11;;;;;;;1379:192;1465:7;1501:12;1493:6;;;;1485:29;;;;-1:-1:-1;;;1485:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1525:9:0;1537:5;1541:1;1537;:5;:::i;:::-;1525:17;1379:192;-1:-1:-1;;;;;1379:192:0:o;1235:136::-;1293:7;1320:43;1324:1;1327;1320:43;;;;;;;;;;;;;;;;;:3;:43::i;1046:181::-;1104:7;;1136:5;1140:1;1136;:5;:::i;:::-;1124:17;;1165:1;1160;:6;;1152:46;;;;-1:-1:-1;;;1152:46:0;;12704:2:1;1152:46:0;;;12686:21:1;12743:2;12723:18;;;12716:30;12782:29;12762:18;;;12755:57;12829:18;;1152:46:0;12502:351:1;1977:278:0;2063:7;2098:12;2091:5;2083:28;;;;-1:-1:-1;;;2083:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2122:9:0;2134:5;2138:1;2134;:5;:::i;21992:330::-;22122:53;;;;;;;;;;;-1:-1:-1;;;22122:53:0;;;;;;;;-1:-1:-1;;;;;22122:17:0;;22085:4;22122:17;;;:9;:17;;;;;;;:53;;22144:6;;22122:21;:53::i;:::-;-1:-1:-1;;;;;22102:17:0;;;;;;;:9;:17;;;;;;:73;;;;22209:20;;;;;;;:32;;22234:6;22209:24;:32::i;:::-;-1:-1:-1;;;;;22186:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22257:35;;;;;;;;;;22285:6;2548:25:1;;2536:2;2521:18;;2402:177;22257:35:0;;;;;;;;-1:-1:-1;22310:4:0;21992:330;;;;;:::o;22330:586::-;16068:16;:23;;-1:-1:-1;;;;16068:23:0;-1:-1:-1;;;16068:23:0;;;22433:4:::1;-1:-1:-1::0;17837:18:0;;;:9;:18;;;;;;22389:50:::1;;22455:15;22474:1;22455:20:::0;22452:32:::1;;22477:7;;;22452:32;22498:19;22520:22;:15:::0;22540:1:::1;22520:19;:22::i;:::-;22498:44:::0;-1:-1:-1;22553:21:0::1;22577:32;:15:::0;22498:44;22577:19:::1;:32::i;:::-;22553:56:::0;-1:-1:-1;22647:21:0::1;22679:31;22553:56:::0;22679:16:::1;:31::i;:::-;22721:26;22750:41;:21;22776:14:::0;22750:25:::1;:41::i;:::-;22721:70;;22828:1;22807:18;:22;:41;;;;;22847:1;22833:11;:15;22807:41;22804:104;;;22863:45;22876:11;22889:18;22863:12;:45::i;:::-;22376:540;;;;;16102:1;16114:16:::0;:24;;-1:-1:-1;;;;16114:24:0;;;22330:586::o;24268:366::-;-1:-1:-1;;;;;24369:25:0;;24349:4;24369:25;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;24398:28:0;;;;;;:17;:28;;;;;;;;24369:57;24366:261;;;-1:-1:-1;24450:4:0;24443:11;;24366:261;-1:-1:-1;;;;;24485:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;24509:23:0;;;;;;:12;:23;;;;;;;;24485:47;24481:146;;;-1:-1:-1;24556:5:0;24549:12;;24481:146;-1:-1:-1;24610:5:0;24603:12;;24642:724;-1:-1:-1;;;;;24815:20:0;;24728:7;24815:20;;;:12;:20;;;;;;24728:7;;24815:20;;24812:275;;;24882:37;24907:11;;24882:20;24893:8;;24882:6;:10;;:20;;;;:::i;:37::-;24870:49;;24812:275;;;-1:-1:-1;;;;;24957:23:0;;;;;;:12;:23;;;;;;;;24954:133;;;25015:38;25041:11;;25015:21;25026:9;;25015:6;:10;;:21;;;;:::i;:38::-;25003:50;;24954:133;25111:13;;25108:185;;25190:4;25172:24;;;;:9;:24;;;;;;:39;;25201:9;25172:28;:39::i;:::-;25163:4;25145:24;;;;:9;:24;;;;;;;:66;;;;25235:42;;-1:-1:-1;;;;;25235:42:0;;;;;;;25267:9;2548:25:1;;2536:2;2521:18;;2402:177;25235:42:0;;;;;;;;25108:185;25316:21;:6;25327:9;25316:10;:21::i;23063:666::-;23213:16;;;23227:1;23213:16;;;;;;;;23189:21;;23213:16;;;;;;;;;;-1:-1:-1;23213:16:0;23189:40;;23258:4;23240;23245:1;23240:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23240:23:0;;;:7;;;;;;;;;;:23;;;;23284:15;;:22;;;-1:-1:-1;;;23284:22:0;;;;:15;;;;;:20;;:22;;;;;23240:7;;23284:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23274:4;23279:1;23274:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23274:32:0;;;:7;;;;;;;;;:32;23351:15;;23319:62;;23336:4;;23351:15;23369:11;23319:8;:62::i;:::-;23420:15;;:240;;-1:-1:-1;;;23420:240:0;;-1:-1:-1;;;;;23420:15:0;;;;:66;;:240;;23501:11;;23420:15;;23571:4;;23598;;23634:15;;23420:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23686:35;23703:11;23716:4;23686:35;;;;;;;:::i;:::-;;;;;;;;23118:611;23063:666;:::o;23737:523::-;23917:15;;23885:62;;23902:4;;-1:-1:-1;;;;;23917:15:0;23935:11;23885:8;:62::i;:::-;23990:15;;24194:17;;23990:262;;-1:-1:-1;;;23990:262:0;;24062:4;23990:262;;;14853:34:1;14903:18;;;14896:34;;;-1:-1:-1;14946:18:1;;;14939:34;;;14989:18;;;14982:34;-1:-1:-1;;;;;23990:15:0;24194:17;;;;;15032:19:1;;;15025:44;24226:15:0;15085:19:1;;;15078:35;23990:15:0;;;:31;;24029:9;;14787:19:1;;23990:262:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23737:523;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;824:131::-;-1:-1:-1;;;;;899:31:1;;889:42;;879:70;;945:1;942;935:12;960:315;1028:6;1036;1089:2;1077:9;1068:7;1064:23;1060:32;1057:52;;;1105:1;1102;1095:12;1057:52;1144:9;1131:23;1163:31;1188:5;1163:31;:::i;:::-;1213:5;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;960:315:1:o;1472:180::-;1531:6;1584:2;1572:9;1563:7;1559:23;1555:32;1552:52;;;1600:1;1597;1590:12;1552:52;-1:-1:-1;1623:23:1;;1472:180;-1:-1:-1;1472:180:1:o;1657:118::-;1743:5;1736:13;1729:21;1722:5;1719:32;1709:60;;1765:1;1762;1755:12;1780:382;1845:6;1853;1906:2;1894:9;1885:7;1881:23;1877:32;1874:52;;;1922:1;1919;1912:12;1874:52;1961:9;1948:23;1980:31;2005:5;1980:31;:::i;:::-;2030:5;-1:-1:-1;2087:2:1;2072:18;;2059:32;2100:30;2059:32;2100:30;:::i;:::-;2149:7;2139:17;;;1780:382;;;;;:::o;2584:456::-;2661:6;2669;2677;2730:2;2718:9;2709:7;2705:23;2701:32;2698:52;;;2746:1;2743;2736:12;2698:52;2785:9;2772:23;2804:31;2829:5;2804:31;:::i;:::-;2854:5;-1:-1:-1;2911:2:1;2896:18;;2883:32;2924:33;2883:32;2924:33;:::i;:::-;2584:456;;2976:7;;-1:-1:-1;;;3030:2:1;3015:18;;;;3002:32;;2584:456::o;3045:241::-;3101:6;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:28;3250:5;3228:28;:::i;3480:247::-;3539:6;3592:2;3580:9;3571:7;3567:23;3563:32;3560:52;;;3608:1;3605;3598:12;3560:52;3647:9;3634:23;3666:31;3691:5;3666:31;:::i;4206:388::-;4274:6;4282;4335:2;4323:9;4314:7;4310:23;4306:32;4303:52;;;4351:1;4348;4341:12;4303:52;4390:9;4377:23;4409:31;4434:5;4409:31;:::i;:::-;4459:5;-1:-1:-1;4516:2:1;4501:18;;4488:32;4529:33;4488:32;4529:33;:::i;4599:380::-;4678:1;4674:12;;;;4721;;;4742:61;;4796:4;4788:6;4784:17;4774:27;;4742:61;4849:2;4841:6;4838:14;4818:18;4815:38;4812:161;;4895:10;4890:3;4886:20;4883:1;4876:31;4930:4;4927:1;4920:15;4958:4;4955:1;4948:15;4812:161;;4599:380;;;:::o;4984:356::-;5186:2;5168:21;;;5205:18;;;5198:30;5264:34;5259:2;5244:18;;5237:62;5331:2;5316:18;;4984:356::o;5345:337::-;5547:2;5529:21;;;5586:2;5566:18;;;5559:30;-1:-1:-1;;;5620:2:1;5605:18;;5598:43;5673:2;5658:18;;5345:337::o;5687:251::-;5757:6;5810:2;5798:9;5789:7;5785:23;5781:32;5778:52;;;5826:1;5823;5816:12;5778:52;5858:9;5852:16;5877:31;5902:5;5877:31;:::i;6531:245::-;6598:6;6651:2;6639:9;6630:7;6626:23;6622:32;6619:52;;;6667:1;6664;6657:12;6619:52;6699:9;6693:16;6718:28;6740:5;6718:28;:::i;7747:127::-;7808:10;7803:3;7799:20;7796:1;7789:31;7839:4;7836:1;7829:15;7863:4;7860:1;7853:15;7879:168;7919:7;7985:1;7981;7977:6;7973:14;7970:1;7967:21;7962:1;7955:9;7948:17;7944:45;7941:71;;;7992:18;;:::i;:::-;-1:-1:-1;8032:9:1;;7879:168::o;8052:217::-;8092:1;8118;8108:132;;8162:10;8157:3;8153:20;8150:1;8143:31;8197:4;8194:1;8187:15;8225:4;8222:1;8215:15;8108:132;-1:-1:-1;8254:9:1;;8052:217::o;11474:128::-;11514:3;11545:1;11541:6;11538:1;11535:13;11532:39;;;11551:18;;:::i;:::-;-1:-1:-1;11587:9:1;;11474:128::o;12372:125::-;12412:4;12440:1;12437;12434:8;12431:34;;;12445:18;;:::i;:::-;-1:-1:-1;12482:9:1;;12372:125::o;12990:127::-;13051:10;13046:3;13042:20;13039:1;13032:31;13082:4;13079:1;13072:15;13106:4;13103:1;13096:15;13122:461;13175:3;13213:5;13207:12;13240:6;13235:3;13228:19;13266:4;13295:2;13290:3;13286:12;13279:19;;13332:2;13325:5;13321:14;13353:1;13363:195;13377:6;13374:1;13371:13;13363:195;;;13442:13;;-1:-1:-1;;;;;13438:39:1;13426:52;;13498:12;;;;13533:15;;;;13474:1;13392:9;13363:195;;;-1:-1:-1;13574:3:1;;13122:461;-1:-1:-1;;;;;13122:461:1:o;13588:582::-;13887:6;13876:9;13869:25;13930:6;13925:2;13914:9;13910:18;13903:34;13973:3;13968:2;13957:9;13953:18;13946:31;13850:4;13994:57;14046:3;14035:9;14031:19;14023:6;13994:57;:::i;:::-;-1:-1:-1;;;;;14087:32:1;;;;14082:2;14067:18;;14060:60;-1:-1:-1;14151:3:1;14136:19;14129:35;13986:65;13588:582;-1:-1:-1;;;13588:582:1:o;14175:332::-;14382:6;14371:9;14364:25;14425:2;14420;14409:9;14405:18;14398:30;14345:4;14445:56;14497:2;14486:9;14482:18;14474:6;14445:56;:::i;:::-;14437:64;14175:332;-1:-1:-1;;;;14175:332:1:o;15124:306::-;15212:6;15220;15228;15281:2;15269:9;15260:7;15256:23;15252:32;15249:52;;;15297:1;15294;15287:12;15249:52;15326:9;15320:16;15310:26;;15376:2;15365:9;15361:18;15355:25;15345:35;;15420:2;15409:9;15405:18;15399:25;15389:35;;15124:306;;;;;:::o

Swarm Source

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