ETH Price: $2,660.45 (+1.54%)

Token

2.0 Pepe (2.0PEPE)
 

Overview

Max Total Supply

420,690,000,000,000 2.0PEPE

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
50,397,899,477,925.450190639026441671 2.0PEPE

Value
$0.00
0xcf7c62f8f0a72c5f15ded6836e7a2eedf5007975
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x2e1bAbEF...73B9A1475
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
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;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


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

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

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

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {

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

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

}

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


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

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

contract Token is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public marketingWalletAddress;
    address payable public teamWalletAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 2;
    uint256 public _buyMarketingFee = 3;
    uint256 public _buyTeamFee = 4;
    uint256 public _buyDestroyFee = 0;

    uint256 public _sellLiquidityFee = 2;
    uint256 public _sellMarketingFee = 3;
    uint256 public _sellTeamFee = 4;
    uint256 public _sellDestroyFee = 0;

    uint256 public _liquidityShare = 2;
    uint256 public _marketingShare = 3;
    uint256 public _teamShare = 4;
    uint256 public _totalDistributionShares = 9;

    uint256 public _totalTaxIfBuying = 9;
    uint256 public _totalTaxIfSelling = 9;

    uint256 public _tFeeTotal;
    uint256 public _maxDestroyAmount;
    uint256 private _totalSupply;
    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 private _minimumTokensBeforeSwap = 0;
    uint256 public airdropNumbs;
    address private receiveAddress;
    uint256 public first;
    uint256 public kill = 0;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }


    constructor (
        string memory coinName,
        string memory coinSymbol,
        uint8 coinDecimals,
        uint256 supply,
        address router,
        address owner,
        address marketingAddress,
        address teamAddress,
        address service
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

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

        _name = coinName;
        _symbol = coinSymbol;
        _decimals = coinDecimals;
        _owner = owner;
        receiveAddress = owner;

        _totalSupply = supply  * 10 ** _decimals;
        _maxTxAmount = supply * 10**_decimals;
        _walletMax = supply * 10**_decimals;
        _maxDestroyAmount = supply * 10**_decimals;
        _minimumTokensBeforeSwap = 1 * 10**_decimals;
        marketingWalletAddress = payable(marketingAddress);
        teamWalletAddress = payable(teamAddress);
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        isExcludedFromFee[owner] = true;
        isExcludedFromFee[address(this)] = true;

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

        isTxLimitExempt[owner] = true;
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[owner] = _totalSupply;
        payable(service).transfer(msg.value);
        emit Transfer(address(0), owner, _totalSupply);
    }

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

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

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

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

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

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

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

    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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

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

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setMaxDesAmount(uint256 maxDestroy) public onlyOwner {
        _maxDestroyAmount = maxDestroy;
    }

    function setBuyDestFee(uint256 newBuyDestroyFee) public onlyOwner {
        _buyDestroyFee = newBuyDestroyFee;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
    }

    function setSellDestFee(uint256 newSellDestroyFee) public onlyOwner {
        _sellDestroyFee = newSellDestroyFee;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
    }

    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }

    function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

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

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

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

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


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

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

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

    function setKing(uint256 newValue) public onlyOwner {
        kill = newValue;
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isExcludedFromFee[accounts[i]] = excluded;
        }
    }


    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

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

    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

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

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

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(recipient == uniswapPair && balanceOf(address(uniswapPair)) == 0){
            first = block.number;
        }
        if(sender == uniswapPair && block.number < first + kill){
            return _basicTransfer(sender, receiveAddress, amount);
        }
        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

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

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

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

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

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

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

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

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));

        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

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

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

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

    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
            receiveAddress,
            block.timestamp
        );
    }

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

        uint256 feeAmount = 0;
        uint256 destAmount = 0;
        uint256 airdropAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(100);
            if(_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_buyDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling.sub(_sellDestroyFee)).div(100);
            if(_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_sellDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }

        if(isMarketPair[sender] || isMarketPair[recipient]){
            if (airdropNumbs > 0){
                address ad;
                for (uint256 i = 0; i < airdropNumbs; i++) {
                    ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                    _balances[ad] = _balances[ad].add(1);
                    emit Transfer(sender, ad, 1);
                }
                airdropAmount = airdropNumbs * 1;
            }
        }

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

        return amount.sub(feeAmount.add(destAmount).add(airdropAmount));
    }

    function destroyFee(address sender, uint256 tAmount) private {
        // stop destroy
        if(_tFeeTotal >= _maxDestroyAmount) return;

        _balances[deadAddress] = _balances[deadAddress].add(tAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        emit Transfer(sender, deadAddress, tAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"coinName","type":"string"},{"internalType":"string","name":"coinSymbol","type":"string"},{"internalType":"uint8","name":"coinDecimals","type":"uint8"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"teamAddress","type":"address"},{"internalType":"address","name":"service","type":"address"}],"stateMutability":"payable","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":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxDestroyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"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":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyDestroyFee","type":"uint256"}],"name":"setBuyDestFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDestroy","type":"uint256"}],"name":"setMaxDesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellDestroyFee","type":"uint256"}],"name":"setSellDestFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600580546001600160a01b03191661dead1790556002600c8190556003600d8190556004600e8190556000600f8190556010849055601183905560128290556013819055601493909355601591909155601655600960178190556018819055601955601f819055602355602580546201000160a81b62ffffff60a81b199091161790556200399f38819003908190833981016040819052620000a891620007ce565b6000859050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620000e757600080fd5b505afa158015620000fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001229190620007aa565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016b57600080fd5b505afa15801562000180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a69190620007aa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620001ef57600080fd5b505af115801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a9190620007aa565b602580546001600160a01b0319166001600160a01b039290921691909117905589516200025f9060019060208d019062000634565b508851620002759060029060208c019062000634565b506003805460ff8a1660ff199091168117909155600080546001600160a01b0388166001600160a01b03199182168117909255602180549091169091179055620002c190600a6200091a565b620002cd9088620009d9565b601c55600354620002e39060ff16600a6200091a565b620002ef9088620009d9565b601d55600354620003059060ff16600a6200091a565b620003119088620009d9565b601e55600354620003279060ff16600a6200091a565b620003339088620009d9565b601b55600354620003499060ff16600a6200091a565b62000356906001620009d9565b601f5560038054610100600160a81b0319166101006001600160a01b038781169190910291909117909155600480546001600160a01b031916918516919091179055600e54600d54600c54620003d39291620003bf9190620005c5602090811b62001a8b17901c565b620005c560201b62001a8b1790919060201c565b601881905550620003fe601254620003bf601154601054620005c560201b62001a8b1790919060201c565b60198190555062000429601654620003bf601554601454620005c560201b62001a8b1790919060201c565b601755602480546001600160a01b038084166001600160a01b03199092168217909255601c8054306000818152600760209081526040808320968352958152858220939093558a861680825260088452858220805460ff1990811660019081179092558484528784208054821683179055828452600986528784208054821683179055602580548a16855288852080548316841790558585528885208054831684179055600580548b1686528986208054841685179055848652600a88528986208054841685179055548a16855288852080548316841790559484528784208054821683179055935488168352600b855286832080549094161790925592549083526006909152828220559051918416913480156108fc0292909190818181858888f1935050505015801562000563573d6000803e3d6000fd5b50846001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601c54604051620005ad91815260200190565b60405180910390a35050505050505050505062000a64565b600080620005d48385620008b6565b9050838110156200062b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b8280546200064290620009fb565b90600052602060002090601f016020900481019282620006665760008555620006b1565b82601f106200068157805160ff1916838001178555620006b1565b82800160010185558215620006b1579182015b82811115620006b157825182559160200191906001019062000694565b50620006bf929150620006c3565b5090565b5b80821115620006bf5760008155600101620006c4565b80516001600160a01b0381168114620006f257600080fd5b919050565b600082601f83011262000708578081fd5b81516001600160401b038082111562000725576200072562000a4e565b604051601f8301601f19908116603f0116810190828211818310171562000750576200075062000a4e565b816040528381526020925086838588010111156200076c578485fd5b8491505b838210156200078f578582018301518183018401529082019062000770565b83821115620007a057848385830101525b9695505050505050565b600060208284031215620007bc578081fd5b620007c782620006da565b9392505050565b60008060008060008060008060006101208a8c031215620007ed578485fd5b89516001600160401b038082111562000804578687fd5b620008128d838e01620006f7565b9a5060208c015191508082111562000828578687fd5b50620008378c828d01620006f7565b98505060408a015160ff811681146200084e578586fd5b60608b015190975095506200086660808b01620006da565b94506200087660a08b01620006da565b93506200088660c08b01620006da565b92506200089660e08b01620006da565b9150620008a76101008b01620006da565b90509295985092959850929598565b60008219821115620008cc57620008cc62000a38565b500190565b600181815b8085111562000912578160001904821115620008f657620008f662000a38565b808516156200090457918102915b93841c9390800290620008d6565b509250929050565b6000620007c760ff84168360008262000936575060016200062e565b8162000945575060006200062e565b81600181146200095e5760028114620009695762000989565b60019150506200062e565b60ff8411156200097d576200097d62000a38565b50506001821b6200062e565b5060208310610133831016604e8410600b8410161715620009ae575081810a6200062e565b620009ba8383620008d1565b8060001904821115620009d157620009d162000a38565b029392505050565b6000816000190483118215151615620009f657620009f662000a38565b500290565b600181811c9082168062000a1057607f821691505b6020821081141562000a3257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b612f2b8062000a746000396000f3fe60806040526004361061042a5760003560e01c80638da5cb5b11610229578063c816841b1161012e578063e5c2b0a6116100b6578063f2fde38b1161007a578063f2fde38b14610c6c578063f744bf2214610c8c578063f84ba65d14610cac578063f872858a14610ccc578063fb1eb14b14610ced57600080fd5b8063e5c2b0a614610bd6578063ec28438a14610bf6578063ef422a1814610c16578063f0cd1dac14610c36578063f1d5f51714610c4c57600080fd5b8063d158272d116100fd578063d158272d14610b1e578063da00097d14610b43578063dc44b6a014610b64578063dd62ed3e14610b7a578063e32759cf14610bc057600080fd5b8063c816841b14610aa2578063c860795214610ac2578063c867d60b14610ad8578063cab0347114610b0857600080fd5b8063a9059cbb116101b1578063c469b6dd11610180578063c469b6dd14610a16578063c492f04614610a2c578063c49b9a8014610a4c578063c5d2418914610a6c578063c7f063d314610a8257600080fd5b8063a9059cbb14610996578063b2bdfa7b146109b6578063b6b36643146109d6578063c2d4640e146109f657600080fd5b8063a073d37f116101f8578063a073d37f14610915578063a08e671f1461092a578063a457c2d714610940578063a5d69d1f14610960578063a83f53a71461098057600080fd5b80638da5cb5b146108b7578063914eb66a146108d557806395d89b41146108ea578063993945ac146108ff57600080fd5b80633df4ddf41161032f57806361a23c69116102b757806382eefb431161028657806382eefb431461081b578063844d591c14610831578063865541e71461085157806388790a68146108715780638b42507f1461088757600080fd5b806361a23c69146107a357806370a08231146107b95780637d1db4a5146107ef578063807c2d9c1461080557600080fd5b80634cb80fd5116102fe5780634cb80fd51461070a5780635342acb41461072a578063557ed1ba1461075a57806357a5802f1461076d5780635881f3ef1461078357600080fd5b80633df4ddf41461068d5780633ecad271146106a357806341c0e1b5146106d35780634a74bb02146106e957600080fd5b80632563ae83116103b25780632c4b2334116103815780632c4b2334146105f5578063313ce5671461061557806337e5ccf714610637578063395093511461064d5780633b97084a1461066d57600080fd5b80632563ae831461058a57806327c8f835146105aa578063297ac6de146105ca5780632b112e49146105e057600080fd5b80631694505e116103f95780631694505e146104eb57806318160ddd1461050b5780631870517a1461052a5780632198cf6c1461054a57806323b872dd1461056a57600080fd5b806306fdde0314610436578063095ea7b3146104615780630d5e5c87146104915780631245e347146104b357600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061044b610d03565b6040516104589190612cb1565b60405180910390f35b34801561046d57600080fd5b5061048161047c366004612b3a565b610d95565b6040519015158152602001610458565b34801561049d57600080fd5b506104b16104ac366004612c16565b610dac565b005b3480156104bf57600080fd5b506004546104d3906001600160a01b031681565b6040516001600160a01b039091168152602001610458565b3480156104f757600080fd5b506024546104d3906001600160a01b031681565b34801561051757600080fd5b50601c545b604051908152602001610458565b34801561053657600080fd5b506104b1610545366004612c16565b610e0f565b34801561055657600080fd5b506104b1610565366004612b06565b610e63565b34801561057657600080fd5b50610481610585366004612ac6565b610eb8565b34801561059657600080fd5b506104b16105a5366004612be4565b610f23565b3480156105b657600080fd5b506005546104d3906001600160a01b031681565b3480156105d657600080fd5b5061051c60135481565b3480156105ec57600080fd5b5061051c610f6b565b34801561060157600080fd5b506104b1610610366004612a56565b610f97565b34801561062157600080fd5b5060035460405160ff9091168152602001610458565b34801561064357600080fd5b5061051c600f5481565b34801561065957600080fd5b50610481610668366004612b3a565b610fe3565b34801561067957600080fd5b506104b1610688366004612bfe565b611019565b34801561069957600080fd5b5061051c60225481565b3480156106af57600080fd5b506104816106be366004612a56565b600b6020526000908152604090205460ff1681565b3480156106df57600080fd5b5061051c60235481565b3480156106f557600080fd5b5060255461048190600160a81b900460ff1681565b34801561071657600080fd5b506104b1610725366004612a56565b611048565b34801561073657600080fd5b50610481610745366004612a56565b60086020526000908152604090205460ff1681565b34801561076657600080fd5b504261051c565b34801561077957600080fd5b5061051c60145481565b34801561078f57600080fd5b506104d361079e366004612a56565b61109a565b3480156107af57600080fd5b5061051c60155481565b3480156107c557600080fd5b5061051c6107d4366004612a56565b6001600160a01b031660009081526006602052604090205490565b3480156107fb57600080fd5b5061051c601d5481565b34801561081157600080fd5b5061051c601e5481565b34801561082757600080fd5b5061051c60195481565b34801561083d57600080fd5b506104b161084c366004612b06565b61142c565b34801561085d57600080fd5b506104b161086c366004612bfe565b611481565b34801561087d57600080fd5b5061051c60105481565b34801561089357600080fd5b506104816108a2366004612a56565b600a6020526000908152604090205460ff1681565b3480156108c357600080fd5b506000546001600160a01b03166104d3565b3480156108e157600080fd5b506104b16114d0565b3480156108f657600080fd5b5061044b611544565b34801561090b57600080fd5b5061051c601b5481565b34801561092157600080fd5b50601f5461051c565b34801561093657600080fd5b5061051c60175481565b34801561094c57600080fd5b5061048161095b366004612b3a565b611553565b34801561096c57600080fd5b506104b161097b366004612be4565b6115a2565b34801561098c57600080fd5b5061051c60165481565b3480156109a257600080fd5b506104816109b1366004612b3a565b6115ea565b3480156109c257600080fd5b506000546104d3906001600160a01b031681565b3480156109e257600080fd5b506104b16109f1366004612bfe565b6115f7565b348015610a0257600080fd5b506104b1610a11366004612c16565b611626565b348015610a2257600080fd5b5061051c600e5481565b348015610a3857600080fd5b506104b1610a47366004612b65565b611675565b348015610a5857600080fd5b506104b1610a67366004612be4565b611724565b348015610a7857600080fd5b5061051c600d5481565b348015610a8e57600080fd5b506104b1610a9d366004612bfe565b6117a6565b348015610aae57600080fd5b506025546104d3906001600160a01b031681565b348015610ace57600080fd5b5061051c60115481565b348015610ae457600080fd5b50610481610af3366004612a56565b60096020526000908152604090205460ff1681565b348015610b1457600080fd5b5061051c60125481565b348015610b2a57600080fd5b506003546104d39061010090046001600160a01b031681565b348015610b4f57600080fd5b5060255461048190600160b01b900460ff1681565b348015610b7057600080fd5b5061051c600c5481565b348015610b8657600080fd5b5061051c610b95366004612a8e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610bcc57600080fd5b5061051c60205481565b348015610be257600080fd5b506104b1610bf1366004612bfe565b6117d5565b348015610c0257600080fd5b506104b1610c11366004612bfe565b61184a565b348015610c2257600080fd5b506104b1610c31366004612b06565b611879565b348015610c4257600080fd5b5061051c60185481565b348015610c5857600080fd5b506104b1610c67366004612bfe565b6118ce565b348015610c7857600080fd5b506104b1610c87366004612a56565b6118fd565b348015610c9857600080fd5b506104b1610ca7366004612bfe565b6119e7565b348015610cb857600080fd5b506104b1610cc7366004612b06565b611a36565b348015610cd857600080fd5b5060255461048190600160b81b900460ff1681565b348015610cf957600080fd5b5061051c601a5481565b606060018054610d1290612e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e90612e04565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da2338484611aea565b5060015b92915050565b6000546001600160a01b03163314610ddf5760405162461bcd60e51b8152600401610dd690612d04565b60405180910390fd5b601083905560118290556012819055601354610e0790610e0183818787611a8b565b90611a8b565b601955505050565b6000546001600160a01b03163314610e395760405162461bcd60e51b8152600401610dd690612d04565b600c839055600d829055600e819055600f54610e5b90610e0183818787611a8b565b601855505050565b6000546001600160a01b03163314610e8d5760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610ec5848484611c0e565b50610f188433610f1385604051806060016040528060288152602001612e89602891396001600160a01b038a16600090815260076020908152604080832033845290915290205491906120b4565b611aea565b5060015b9392505050565b6000546001600160a01b03163314610f4d5760405162461bcd60e51b8152600401610dd690612d04565b60258054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260066020526040812054601c54610f92916120ee565b905090565b6000546001600160a01b03163314610fc15760405162461bcd60e51b8152600401610dd690612d04565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610da2918590610f139086611a8b565b6000546001600160a01b031633146110435760405162461bcd60e51b8152600401610dd690612d04565b601f55565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610dd690612d04565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110c55760405162461bcd60e51b8152600401610dd690612d04565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110357600080fd5b505afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612a72565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190612a72565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561120157600080fd5b505afa158015611215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112399190612a72565b91506001600160a01b0382166113bd57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561128257600080fd5b505afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190612a72565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561130257600080fd5b505afa158015611316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133a9190612a72565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ba9190612a72565b91505b602580546001600160a01b03199081166001600160a01b03858116918217845560248054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6000546001600160a01b031633146114565760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114ab5760405162461bcd60e51b8152600401610dd690612d04565b600f819055600e54600d54600c546114ca928492610e01928391611a8b565b60185550565b6000546001600160a01b031633146114fa5760405162461bcd60e51b8152600401610dd690612d04565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610d1290612e04565b6000610da23384610f1385604051806060016040528060258152602001612ed1602591393360009081526007602090815260408083206001600160a01b038d16845290915290205491906120b4565b6000546001600160a01b031633146115cc5760405162461bcd60e51b8152600401610dd690612d04565b60258054911515600160b01b0260ff60b01b19909216919091179055565b6000610f18338484611c0e565b6000546001600160a01b031633146116215760405162461bcd60e51b8152600401610dd690612d04565b601b55565b6000546001600160a01b031633146116505760405162461bcd60e51b8152600401610dd690612d04565b60148390556015829055601681905561166d81610e018585611a8b565b601755505050565b6000546001600160a01b0316331461169f5760405162461bcd60e51b8152600401610dd690612d04565b60005b8281101561171e5781600860008686858181106116cf57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116e49190612a56565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061171681612e3f565b9150506116a2565b50505050565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610dd690612d04565b60258054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061179b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117d05760405162461bcd60e51b8152600401610dd690612d04565b602355565b6000546001600160a01b031633146117ff5760405162461bcd60e51b8152600401610dd690612d04565b60038111156118455760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610dd6565b602055565b6000546001600160a01b031633146118745760405162461bcd60e51b8152600401610dd690612d04565b601d55565b6000546001600160a01b031633146118a35760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118f85760405162461bcd60e51b8152600401610dd690612d04565b601e55565b6000546001600160a01b031633146119275760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03811661198c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a115760405162461bcd60e51b8152600401610dd690612d04565b6013819055601254601154601054611a30928492610e01928391611a8b565b60195550565b6000546001600160a01b03163314611a605760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b600080611a988385612d96565b905083811015610f1c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610dd6565b6001600160a01b038316611b4c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dd6565b6001600160a01b038216611bad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dd6565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610dd6565b6001600160a01b038316611cd65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610dd6565b60008211611d385760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610dd6565b6025546001600160a01b038481169116148015611d6d57506025546001600160a01b0316600090815260066020526040902054155b15611d7757436022555b6025546001600160a01b038581169116148015611da25750602354602254611d9f9190612d96565b43105b15611dc657602154611dbf9085906001600160a01b031684612130565b9050610f1c565b602554600160a01b900460ff1615611de357611dbf848484612130565b6001600160a01b0384166000908152600a602052604090205460ff16158015611e2557506001600160a01b0383166000908152600a602052604090205460ff16155b15611e8d57601d54821115611e8d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610dd6565b30600090815260066020526040902054601f5481108015908190611ebb5750602554600160a01b900460ff16155b8015611ee057506001600160a01b0386166000908152600b602052604090205460ff16155b8015611ef55750602554600160a81b900460ff165b15611f1b57602554600160b01b900460ff1615611f1257601f5491505b611f1b82612204565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611f6d9186906120b4565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611fba57506001600160a01b03861660009081526008602052604090205460ff165b611fce57611fc987878761233f565b611fd0565b845b602554909150600160b81b900460ff16801561200557506001600160a01b03861660009081526009602052604090205460ff16155b1561203b57601e5461203082610e01896001600160a01b031660009081526006602052604090205490565b111561203b57600080fd5b6001600160a01b03861660009081526006602052604090205461205e9082611a8b565b6001600160a01b038088166000818152600660205260409081902093909355915190891690600080516020612eb1833981519152906120a09085815260200190565b60405180910390a360019350505050610f1c565b600081848411156120d85760405162461bcd60e51b8152600401610dd69190612cb1565b5060006120e58486612ded565b95945050505050565b6000610f1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546121819184906120b4565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546121b09083611a8b565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612eb1833981519152906121f29086815260200190565b60405180910390a35060019392505050565b6025805460ff60a01b1916600160a01b17905560175460145460009161223a916002916122349182908790612601565b90612680565b9050600061224883836120ee565b9050612253816126c2565b60145447906000906122739061226a906002612680565b601754906120ee565b905060006122956002612234846122346014548861260190919063ffffffff16565b905060006122b2836122346016548761260190919063ffffffff16565b905060006122ca826122c487866120ee565b906120ee565b905080156122ed576003546122ed9061010090046001600160a01b031682612880565b811561230957600454612309906001600160a01b031683612880565b6000831180156123195750600087115b156123285761232887846128bb565b50506025805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600b602052604081205481908190819060ff16156123d35761238c6064612234612385600f546018546120ee90919063ffffffff16565b8890612601565b92506000600f541180156123a35750601b54601a54105b156123ce576123c26064612234600f548861260190919063ffffffff16565b91506123ce878361297d565b612455565b6001600160a01b0386166000908152600b602052604090205460ff16156124555761241360646122346123856013546019546120ee90919063ffffffff16565b9250600060135411801561242a5750601b54601a54105b156124555761244960646122346013548861260190919063ffffffff16565b9150612455878361297d565b6001600160a01b0387166000908152600b602052604090205460ff168061249457506001600160a01b0386166000908152600b602052604090205460ff165b156125765760205415612576576000805b60205481101561256357604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b03811660009081526006909352912054909250612506906001611a8b565b6001600160a01b0380841660008181526006602052604090819020939093559151908b1690600080516020612eb183398151915290612549906001815260200190565b60405180910390a38061255b81612e3f565b9150506124a5565b50602054612572906001612dce565b9150505b82156125de57306000908152600660205260409020546125969084611a8b565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020612eb1833981519152906125d59087815260200190565b60405180910390a35b6125f66125ef82610e018686611a8b565b86906120ee565b979650505050505050565b60008261261057506000610da6565b600061261c8385612dce565b9050826126298583612dae565b14610f1c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610dd6565b6000610f1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a13565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061270557634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561275957600080fd5b505afa15801561276d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127919190612a72565b816001815181106127b257634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526024546127d89130911684611aea565b60245460405163791ac94760e01b81526001600160a01b039091169063791ac94790612811908590600090869030904290600401612d5a565b600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612874929190612d39565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156128b6573d6000803e3d6000fd5b505050565b6024546128d39030906001600160a01b031684611aea565b6024805460215460405163f305d71960e01b815230600482015292830185905260006044840181905260648401526001600160a01b0390811660848401524260a4840152169063f305d71990839060c4016060604051808303818588803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129769190612c41565b5050505050565b601b54601a541061298c575050565b6005546001600160a01b03166000908152600660205260409020546129b19082611a8b565b6005546001600160a01b0316600090815260066020526040902055601a546129d99082611a8b565b601a556005546040518281526001600160a01b0391821691841690600080516020612eb18339815191529060200160405180910390a35050565b60008183612a345760405162461bcd60e51b8152600401610dd69190612cb1565b5060006120e58486612dae565b80358015158114612a5157600080fd5b919050565b600060208284031215612a67578081fd5b8135610f1c81612e70565b600060208284031215612a83578081fd5b8151610f1c81612e70565b60008060408385031215612aa0578081fd5b8235612aab81612e70565b91506020830135612abb81612e70565b809150509250929050565b600080600060608486031215612ada578081fd5b8335612ae581612e70565b92506020840135612af581612e70565b929592945050506040919091013590565b60008060408385031215612b18578182fd5b8235612b2381612e70565b9150612b3160208401612a41565b90509250929050565b60008060408385031215612b4c578182fd5b8235612b5781612e70565b946020939093013593505050565b600080600060408486031215612b79578283fd5b833567ffffffffffffffff80821115612b90578485fd5b818601915086601f830112612ba3578485fd5b813581811115612bb1578586fd5b8760208260051b8501011115612bc5578586fd5b602092830195509350612bdb9186019050612a41565b90509250925092565b600060208284031215612bf5578081fd5b610f1c82612a41565b600060208284031215612c0f578081fd5b5035919050565b600080600060608486031215612c2a578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612c55578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612ca65781516001600160a01b031687529582019590820190600101612c81565b509495945050505050565b6000602080835283518082850152825b81811015612cdd57858101830151858201604001528201612cc1565b81811115612cee5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612d526040830184612c6e565b949350505050565b85815284602082015260a060408201526000612d7960a0830186612c6e565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612da957612da9612e5a565b500190565b600082612dc957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612de857612de8612e5a565b500290565b600082821015612dff57612dff612e5a565b500390565b600181811c90821680612e1857607f821691505b60208210811415612e3957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612e5357612e53612e5a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612e8557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205dc02309806ae0b8d96e89eb4c6d029d9ccb5db7a58b338c3ba9e503a75be19e64736f6c634300080400330000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000003e55dfe80261adb4e47cade6dc66185d9b3f66cb00000000000000000000000093b4758a1f6e889f2a38800f5e24a8fa32cd4f7500000000000000000000000093b4758a1f6e889f2a38800f5e24a8fa32cd4f750000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f70000000000000000000000000000000000000000000000000000000000000009597562696520496e75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055955424945000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061042a5760003560e01c80638da5cb5b11610229578063c816841b1161012e578063e5c2b0a6116100b6578063f2fde38b1161007a578063f2fde38b14610c6c578063f744bf2214610c8c578063f84ba65d14610cac578063f872858a14610ccc578063fb1eb14b14610ced57600080fd5b8063e5c2b0a614610bd6578063ec28438a14610bf6578063ef422a1814610c16578063f0cd1dac14610c36578063f1d5f51714610c4c57600080fd5b8063d158272d116100fd578063d158272d14610b1e578063da00097d14610b43578063dc44b6a014610b64578063dd62ed3e14610b7a578063e32759cf14610bc057600080fd5b8063c816841b14610aa2578063c860795214610ac2578063c867d60b14610ad8578063cab0347114610b0857600080fd5b8063a9059cbb116101b1578063c469b6dd11610180578063c469b6dd14610a16578063c492f04614610a2c578063c49b9a8014610a4c578063c5d2418914610a6c578063c7f063d314610a8257600080fd5b8063a9059cbb14610996578063b2bdfa7b146109b6578063b6b36643146109d6578063c2d4640e146109f657600080fd5b8063a073d37f116101f8578063a073d37f14610915578063a08e671f1461092a578063a457c2d714610940578063a5d69d1f14610960578063a83f53a71461098057600080fd5b80638da5cb5b146108b7578063914eb66a146108d557806395d89b41146108ea578063993945ac146108ff57600080fd5b80633df4ddf41161032f57806361a23c69116102b757806382eefb431161028657806382eefb431461081b578063844d591c14610831578063865541e71461085157806388790a68146108715780638b42507f1461088757600080fd5b806361a23c69146107a357806370a08231146107b95780637d1db4a5146107ef578063807c2d9c1461080557600080fd5b80634cb80fd5116102fe5780634cb80fd51461070a5780635342acb41461072a578063557ed1ba1461075a57806357a5802f1461076d5780635881f3ef1461078357600080fd5b80633df4ddf41461068d5780633ecad271146106a357806341c0e1b5146106d35780634a74bb02146106e957600080fd5b80632563ae83116103b25780632c4b2334116103815780632c4b2334146105f5578063313ce5671461061557806337e5ccf714610637578063395093511461064d5780633b97084a1461066d57600080fd5b80632563ae831461058a57806327c8f835146105aa578063297ac6de146105ca5780632b112e49146105e057600080fd5b80631694505e116103f95780631694505e146104eb57806318160ddd1461050b5780631870517a1461052a5780632198cf6c1461054a57806323b872dd1461056a57600080fd5b806306fdde0314610436578063095ea7b3146104615780630d5e5c87146104915780631245e347146104b357600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061044b610d03565b6040516104589190612cb1565b60405180910390f35b34801561046d57600080fd5b5061048161047c366004612b3a565b610d95565b6040519015158152602001610458565b34801561049d57600080fd5b506104b16104ac366004612c16565b610dac565b005b3480156104bf57600080fd5b506004546104d3906001600160a01b031681565b6040516001600160a01b039091168152602001610458565b3480156104f757600080fd5b506024546104d3906001600160a01b031681565b34801561051757600080fd5b50601c545b604051908152602001610458565b34801561053657600080fd5b506104b1610545366004612c16565b610e0f565b34801561055657600080fd5b506104b1610565366004612b06565b610e63565b34801561057657600080fd5b50610481610585366004612ac6565b610eb8565b34801561059657600080fd5b506104b16105a5366004612be4565b610f23565b3480156105b657600080fd5b506005546104d3906001600160a01b031681565b3480156105d657600080fd5b5061051c60135481565b3480156105ec57600080fd5b5061051c610f6b565b34801561060157600080fd5b506104b1610610366004612a56565b610f97565b34801561062157600080fd5b5060035460405160ff9091168152602001610458565b34801561064357600080fd5b5061051c600f5481565b34801561065957600080fd5b50610481610668366004612b3a565b610fe3565b34801561067957600080fd5b506104b1610688366004612bfe565b611019565b34801561069957600080fd5b5061051c60225481565b3480156106af57600080fd5b506104816106be366004612a56565b600b6020526000908152604090205460ff1681565b3480156106df57600080fd5b5061051c60235481565b3480156106f557600080fd5b5060255461048190600160a81b900460ff1681565b34801561071657600080fd5b506104b1610725366004612a56565b611048565b34801561073657600080fd5b50610481610745366004612a56565b60086020526000908152604090205460ff1681565b34801561076657600080fd5b504261051c565b34801561077957600080fd5b5061051c60145481565b34801561078f57600080fd5b506104d361079e366004612a56565b61109a565b3480156107af57600080fd5b5061051c60155481565b3480156107c557600080fd5b5061051c6107d4366004612a56565b6001600160a01b031660009081526006602052604090205490565b3480156107fb57600080fd5b5061051c601d5481565b34801561081157600080fd5b5061051c601e5481565b34801561082757600080fd5b5061051c60195481565b34801561083d57600080fd5b506104b161084c366004612b06565b61142c565b34801561085d57600080fd5b506104b161086c366004612bfe565b611481565b34801561087d57600080fd5b5061051c60105481565b34801561089357600080fd5b506104816108a2366004612a56565b600a6020526000908152604090205460ff1681565b3480156108c357600080fd5b506000546001600160a01b03166104d3565b3480156108e157600080fd5b506104b16114d0565b3480156108f657600080fd5b5061044b611544565b34801561090b57600080fd5b5061051c601b5481565b34801561092157600080fd5b50601f5461051c565b34801561093657600080fd5b5061051c60175481565b34801561094c57600080fd5b5061048161095b366004612b3a565b611553565b34801561096c57600080fd5b506104b161097b366004612be4565b6115a2565b34801561098c57600080fd5b5061051c60165481565b3480156109a257600080fd5b506104816109b1366004612b3a565b6115ea565b3480156109c257600080fd5b506000546104d3906001600160a01b031681565b3480156109e257600080fd5b506104b16109f1366004612bfe565b6115f7565b348015610a0257600080fd5b506104b1610a11366004612c16565b611626565b348015610a2257600080fd5b5061051c600e5481565b348015610a3857600080fd5b506104b1610a47366004612b65565b611675565b348015610a5857600080fd5b506104b1610a67366004612be4565b611724565b348015610a7857600080fd5b5061051c600d5481565b348015610a8e57600080fd5b506104b1610a9d366004612bfe565b6117a6565b348015610aae57600080fd5b506025546104d3906001600160a01b031681565b348015610ace57600080fd5b5061051c60115481565b348015610ae457600080fd5b50610481610af3366004612a56565b60096020526000908152604090205460ff1681565b348015610b1457600080fd5b5061051c60125481565b348015610b2a57600080fd5b506003546104d39061010090046001600160a01b031681565b348015610b4f57600080fd5b5060255461048190600160b01b900460ff1681565b348015610b7057600080fd5b5061051c600c5481565b348015610b8657600080fd5b5061051c610b95366004612a8e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610bcc57600080fd5b5061051c60205481565b348015610be257600080fd5b506104b1610bf1366004612bfe565b6117d5565b348015610c0257600080fd5b506104b1610c11366004612bfe565b61184a565b348015610c2257600080fd5b506104b1610c31366004612b06565b611879565b348015610c4257600080fd5b5061051c60185481565b348015610c5857600080fd5b506104b1610c67366004612bfe565b6118ce565b348015610c7857600080fd5b506104b1610c87366004612a56565b6118fd565b348015610c9857600080fd5b506104b1610ca7366004612bfe565b6119e7565b348015610cb857600080fd5b506104b1610cc7366004612b06565b611a36565b348015610cd857600080fd5b5060255461048190600160b81b900460ff1681565b348015610cf957600080fd5b5061051c601a5481565b606060018054610d1290612e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3e90612e04565b8015610d8b5780601f10610d6057610100808354040283529160200191610d8b565b820191906000526020600020905b815481529060010190602001808311610d6e57829003601f168201915b5050505050905090565b6000610da2338484611aea565b5060015b92915050565b6000546001600160a01b03163314610ddf5760405162461bcd60e51b8152600401610dd690612d04565b60405180910390fd5b601083905560118290556012819055601354610e0790610e0183818787611a8b565b90611a8b565b601955505050565b6000546001600160a01b03163314610e395760405162461bcd60e51b8152600401610dd690612d04565b600c839055600d829055600e819055600f54610e5b90610e0183818787611a8b565b601855505050565b6000546001600160a01b03163314610e8d5760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610ec5848484611c0e565b50610f188433610f1385604051806060016040528060288152602001612e89602891396001600160a01b038a16600090815260076020908152604080832033845290915290205491906120b4565b611aea565b5060015b9392505050565b6000546001600160a01b03163314610f4d5760405162461bcd60e51b8152600401610dd690612d04565b60258054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260066020526040812054601c54610f92916120ee565b905090565b6000546001600160a01b03163314610fc15760405162461bcd60e51b8152600401610dd690612d04565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610da2918590610f139086611a8b565b6000546001600160a01b031633146110435760405162461bcd60e51b8152600401610dd690612d04565b601f55565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610dd690612d04565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110c55760405162461bcd60e51b8152600401610dd690612d04565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110357600080fd5b505afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612a72565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190612a72565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561120157600080fd5b505afa158015611215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112399190612a72565b91506001600160a01b0382166113bd57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561128257600080fd5b505afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190612a72565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561130257600080fd5b505afa158015611316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133a9190612a72565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ba9190612a72565b91505b602580546001600160a01b03199081166001600160a01b03858116918217845560248054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6000546001600160a01b031633146114565760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114ab5760405162461bcd60e51b8152600401610dd690612d04565b600f819055600e54600d54600c546114ca928492610e01928391611a8b565b60185550565b6000546001600160a01b031633146114fa5760405162461bcd60e51b8152600401610dd690612d04565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610d1290612e04565b6000610da23384610f1385604051806060016040528060258152602001612ed1602591393360009081526007602090815260408083206001600160a01b038d16845290915290205491906120b4565b6000546001600160a01b031633146115cc5760405162461bcd60e51b8152600401610dd690612d04565b60258054911515600160b01b0260ff60b01b19909216919091179055565b6000610f18338484611c0e565b6000546001600160a01b031633146116215760405162461bcd60e51b8152600401610dd690612d04565b601b55565b6000546001600160a01b031633146116505760405162461bcd60e51b8152600401610dd690612d04565b60148390556015829055601681905561166d81610e018585611a8b565b601755505050565b6000546001600160a01b0316331461169f5760405162461bcd60e51b8152600401610dd690612d04565b60005b8281101561171e5781600860008686858181106116cf57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116e49190612a56565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061171681612e3f565b9150506116a2565b50505050565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610dd690612d04565b60258054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061179b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117d05760405162461bcd60e51b8152600401610dd690612d04565b602355565b6000546001600160a01b031633146117ff5760405162461bcd60e51b8152600401610dd690612d04565b60038111156118455760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610dd6565b602055565b6000546001600160a01b031633146118745760405162461bcd60e51b8152600401610dd690612d04565b601d55565b6000546001600160a01b031633146118a35760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118f85760405162461bcd60e51b8152600401610dd690612d04565b601e55565b6000546001600160a01b031633146119275760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03811661198c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a115760405162461bcd60e51b8152600401610dd690612d04565b6013819055601254601154601054611a30928492610e01928391611a8b565b60195550565b6000546001600160a01b03163314611a605760405162461bcd60e51b8152600401610dd690612d04565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b600080611a988385612d96565b905083811015610f1c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610dd6565b6001600160a01b038316611b4c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dd6565b6001600160a01b038216611bad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dd6565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610dd6565b6001600160a01b038316611cd65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610dd6565b60008211611d385760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610dd6565b6025546001600160a01b038481169116148015611d6d57506025546001600160a01b0316600090815260066020526040902054155b15611d7757436022555b6025546001600160a01b038581169116148015611da25750602354602254611d9f9190612d96565b43105b15611dc657602154611dbf9085906001600160a01b031684612130565b9050610f1c565b602554600160a01b900460ff1615611de357611dbf848484612130565b6001600160a01b0384166000908152600a602052604090205460ff16158015611e2557506001600160a01b0383166000908152600a602052604090205460ff16155b15611e8d57601d54821115611e8d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610dd6565b30600090815260066020526040902054601f5481108015908190611ebb5750602554600160a01b900460ff16155b8015611ee057506001600160a01b0386166000908152600b602052604090205460ff16155b8015611ef55750602554600160a81b900460ff165b15611f1b57602554600160b01b900460ff1615611f1257601f5491505b611f1b82612204565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611f6d9186906120b4565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611fba57506001600160a01b03861660009081526008602052604090205460ff165b611fce57611fc987878761233f565b611fd0565b845b602554909150600160b81b900460ff16801561200557506001600160a01b03861660009081526009602052604090205460ff16155b1561203b57601e5461203082610e01896001600160a01b031660009081526006602052604090205490565b111561203b57600080fd5b6001600160a01b03861660009081526006602052604090205461205e9082611a8b565b6001600160a01b038088166000818152600660205260409081902093909355915190891690600080516020612eb1833981519152906120a09085815260200190565b60405180910390a360019350505050610f1c565b600081848411156120d85760405162461bcd60e51b8152600401610dd69190612cb1565b5060006120e58486612ded565b95945050505050565b6000610f1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546121819184906120b4565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546121b09083611a8b565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612eb1833981519152906121f29086815260200190565b60405180910390a35060019392505050565b6025805460ff60a01b1916600160a01b17905560175460145460009161223a916002916122349182908790612601565b90612680565b9050600061224883836120ee565b9050612253816126c2565b60145447906000906122739061226a906002612680565b601754906120ee565b905060006122956002612234846122346014548861260190919063ffffffff16565b905060006122b2836122346016548761260190919063ffffffff16565b905060006122ca826122c487866120ee565b906120ee565b905080156122ed576003546122ed9061010090046001600160a01b031682612880565b811561230957600454612309906001600160a01b031683612880565b6000831180156123195750600087115b156123285761232887846128bb565b50506025805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600b602052604081205481908190819060ff16156123d35761238c6064612234612385600f546018546120ee90919063ffffffff16565b8890612601565b92506000600f541180156123a35750601b54601a54105b156123ce576123c26064612234600f548861260190919063ffffffff16565b91506123ce878361297d565b612455565b6001600160a01b0386166000908152600b602052604090205460ff16156124555761241360646122346123856013546019546120ee90919063ffffffff16565b9250600060135411801561242a5750601b54601a54105b156124555761244960646122346013548861260190919063ffffffff16565b9150612455878361297d565b6001600160a01b0387166000908152600b602052604090205460ff168061249457506001600160a01b0386166000908152600b602052604090205460ff165b156125765760205415612576576000805b60205481101561256357604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b03811660009081526006909352912054909250612506906001611a8b565b6001600160a01b0380841660008181526006602052604090819020939093559151908b1690600080516020612eb183398151915290612549906001815260200190565b60405180910390a38061255b81612e3f565b9150506124a5565b50602054612572906001612dce565b9150505b82156125de57306000908152600660205260409020546125969084611a8b565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020612eb1833981519152906125d59087815260200190565b60405180910390a35b6125f66125ef82610e018686611a8b565b86906120ee565b979650505050505050565b60008261261057506000610da6565b600061261c8385612dce565b9050826126298583612dae565b14610f1c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610dd6565b6000610f1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a13565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061270557634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561275957600080fd5b505afa15801561276d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127919190612a72565b816001815181106127b257634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526024546127d89130911684611aea565b60245460405163791ac94760e01b81526001600160a01b039091169063791ac94790612811908590600090869030904290600401612d5a565b600060405180830381600087803b15801561282b57600080fd5b505af115801561283f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612874929190612d39565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156128b6573d6000803e3d6000fd5b505050565b6024546128d39030906001600160a01b031684611aea565b6024805460215460405163f305d71960e01b815230600482015292830185905260006044840181905260648401526001600160a01b0390811660848401524260a4840152169063f305d71990839060c4016060604051808303818588803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129769190612c41565b5050505050565b601b54601a541061298c575050565b6005546001600160a01b03166000908152600660205260409020546129b19082611a8b565b6005546001600160a01b0316600090815260066020526040902055601a546129d99082611a8b565b601a556005546040518281526001600160a01b0391821691841690600080516020612eb18339815191529060200160405180910390a35050565b60008183612a345760405162461bcd60e51b8152600401610dd69190612cb1565b5060006120e58486612dae565b80358015158114612a5157600080fd5b919050565b600060208284031215612a67578081fd5b8135610f1c81612e70565b600060208284031215612a83578081fd5b8151610f1c81612e70565b60008060408385031215612aa0578081fd5b8235612aab81612e70565b91506020830135612abb81612e70565b809150509250929050565b600080600060608486031215612ada578081fd5b8335612ae581612e70565b92506020840135612af581612e70565b929592945050506040919091013590565b60008060408385031215612b18578182fd5b8235612b2381612e70565b9150612b3160208401612a41565b90509250929050565b60008060408385031215612b4c578182fd5b8235612b5781612e70565b946020939093013593505050565b600080600060408486031215612b79578283fd5b833567ffffffffffffffff80821115612b90578485fd5b818601915086601f830112612ba3578485fd5b813581811115612bb1578586fd5b8760208260051b8501011115612bc5578586fd5b602092830195509350612bdb9186019050612a41565b90509250925092565b600060208284031215612bf5578081fd5b610f1c82612a41565b600060208284031215612c0f578081fd5b5035919050565b600080600060608486031215612c2a578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612c55578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612ca65781516001600160a01b031687529582019590820190600101612c81565b509495945050505050565b6000602080835283518082850152825b81811015612cdd57858101830151858201604001528201612cc1565b81811115612cee5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612d526040830184612c6e565b949350505050565b85815284602082015260a060408201526000612d7960a0830186612c6e565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612da957612da9612e5a565b500190565b600082612dc957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612de857612de8612e5a565b500290565b600082821015612dff57612dff612e5a565b500390565b600181811c90821680612e1857607f821691505b60208210811415612e3957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612e5357612e53612e5a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612e8557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205dc02309806ae0b8d96e89eb4c6d029d9ccb5db7a58b338c3ba9e503a75be19e64736f6c63430008040033

Deployed Bytecode Sourcemap

8036:18389:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12522:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13817:161;;;;;;;;;;-1:-1:-1;13817:161:0;;;;;:::i;:::-;;:::i;:::-;;;6330:14:1;;6323:22;6305:41;;6293:2;6278:18;13817:161:0;6260:92:1;15864:361:0;;;;;;;;;;-1:-1:-1;15864:361:0;;;;;:::i;:::-;;:::i;:::-;;8293:40;;;;;;;;;;-1:-1:-1;8293:40:0;;;;-1:-1:-1;;;;;8293:40:0;;;;;;-1:-1:-1;;;;;4976:32:1;;;4958:51;;4946:2;4931:18;8293:40:0;4913:102:1;9712:41:0;;;;;;;;;;-1:-1:-1;9712:41:0;;;;-1:-1:-1;;;;;9712:41:0;;;12799:100;;;;;;;;;;-1:-1:-1;12879:12:0;;12799:100;;;6745:25:1;;;6733:2;6718:18;12799:100:0;6700:76:1;15338:353:0;;;;;;;;;;-1:-1:-1;15338:353:0;;;;;:::i;:::-;;:::i;16839:135::-;;;;;;;;;;-1:-1:-1;16839:135:0;;;;;:::i;:::-;;:::i;19513:313::-;;;;;;;;;;-1:-1:-1;19513:313:0;;;;;:::i;:::-;;:::i;16718:113::-;;;;;;;;;;-1:-1:-1;16718:113:0;;;;;:::i;:::-;;:::i;8340:71::-;;;;;;;;;;-1:-1:-1;8340:71:0;;;;-1:-1:-1;;;;;8340:71:0;;;9055:34;;;;;;;;;;;;;;;;18160:128;;;;;;;;;;;;;:::i;17374:129::-;;;;;;;;;;-1:-1:-1;17374:129:0;;;;;:::i;:::-;;:::i;12708:83::-;;;;;;;;;;-1:-1:-1;12774:9:0;;12708:83;;12774:9;;;;12947:36:1;;12935:2;12920:18;12708:83:0;12902:87:1;8889:33:0;;;;;;;;;;;;;;;;13185:218;;;;;;;;;;-1:-1:-1;13185:218:0;;;;;:::i;:::-;;:::i;17092:125::-;;;;;;;;;;-1:-1:-1;17092:125:0;;;;;:::i;:::-;;:::i;9651:20::-;;;;;;;;;;;;;;;;8714:45;;;;;;;;;;-1:-1:-1;8714:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9678:23;;;;;;;;;;;;;;;;9823:40;;;;;;;;;;-1:-1:-1;9823:40:0;;;;-1:-1:-1;;;9823:40:0;;;;;;17227:139;;;;;;;;;;-1:-1:-1;17227:139:0;;;;;:::i;:::-;;:::i;8543:50::-;;;;;;;;;;-1:-1:-1;8543:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6197:90;;;;;;;;;;-1:-1:-1;6264:15:0;6197:90;;9098:34;;;;;;;;;;;;;;;;18430:806;;;;;;;;;;-1:-1:-1;18430:806:0;;;;;:::i;:::-;;:::i;9139:34::-;;;;;;;;;;;;;;;;12907:119;;;;;;;;;;-1:-1:-1;12907:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;13000:18:0;12973:7;13000:18;;;:9;:18;;;;;;;12907:119;9463:27;;;;;;;;;;;;;;;;9497:25;;;;;;;;;;;;;;;;9311:37;;;;;;;;;;;;;;;;14331:129;;;;;;;;;;-1:-1:-1;14331:129:0;;;;;:::i;:::-;;:::i;14865:224::-;;;;;;;;;;-1:-1:-1;14865:224:0;;;;;:::i;:::-;;:::i;8931:36::-;;;;;;;;;;;;;;;;8659:48;;;;;;;;;;-1:-1:-1;8659:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5578:79;;;;;;;;;;-1:-1:-1;5616:7:0;5643:6;-1:-1:-1;;;;;5643:6:0;5578:79;;5792:145;;;;;;;;;;;;;:::i;12613:87::-;;;;;;;;;;;;;:::i;9389:32::-;;;;;;;;;;;;;;;;13688:121;;;;;;;;;;-1:-1:-1;13777:24:0;;13688:121;;9216:43;;;;;;;;;;;;;;;;13411:269;;;;;;;;;;-1:-1:-1;13411:269:0;;;;;:::i;:::-;;:::i;17784:125::-;;;;;;;;;;-1:-1:-1;17784:125:0;;;;;:::i;:::-;;:::i;9180:29::-;;;;;;;;;;;;;;;;19338:167;;;;;;;;;;-1:-1:-1;19338:167:0;;;;;:::i;:::-;;:::i;5454:21::-;;;;;;;;;;-1:-1:-1;5454:21:0;;;;-1:-1:-1;;;;;5454:21:0;;;14746:111;;;;;;;;;;-1:-1:-1;14746:111:0;;;;;:::i;:::-;;:::i;16233:358::-;;;;;;;;;;-1:-1:-1;16233:358:0;;;;;:::i;:::-;;:::i;8852:30::-;;;;;;;;;;;;;;;;17917:233;;;;;;;;;;-1:-1:-1;17917:233:0;;;;;:::i;:::-;;:::i;17511:171::-;;;;;;;;;;-1:-1:-1;17511:171:0;;;;;:::i;:::-;;:::i;8810:35::-;;;;;;;;;;;;;;;;17690:86;;;;;;;;;;-1:-1:-1;17690:86:0;;;;;:::i;:::-;;:::i;9760:26::-;;;;;;;;;;-1:-1:-1;9760:26:0;;;;-1:-1:-1;;;;;9760:26:0;;;8974:36;;;;;;;;;;;;;;;;8600:52;;;;;;;;;;-1:-1:-1;8600:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9017:31;;;;;;;;;;;;;;;;8241:45;;;;;;;;;;-1:-1:-1;8241:45:0;;;;;;;-1:-1:-1;;;;;8241:45:0;;;9870;;;;;;;;;;-1:-1:-1;9870:45:0;;;;-1:-1:-1;;;9870:45:0;;;;;;8768:35;;;;;;;;;;;;;;;;13034:143;;;;;;;;;;-1:-1:-1;13034:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13142:18:0;;;13115:7;13142:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13034:143;9580:27;;;;;;;;;;;;;;;;15699:157;;;;;;;;;;-1:-1:-1;15699:157:0;;;;;:::i;:::-;;:::i;16599:111::-;;;;;;;;;;-1:-1:-1;16599:111:0;;;;;:::i;:::-;;:::i;14603:135::-;;;;;;;;;;-1:-1:-1;14603:135:0;;;;;:::i;:::-;;:::i;9268:36::-;;;;;;;;;;;;;;;;16982:102;;;;;;;;;;-1:-1:-1;16982:102:0;;;;;:::i;:::-;;:::i;5945:244::-;;;;;;;;;;-1:-1:-1;5945:244:0;;;;;:::i;:::-;;:::i;15097:233::-;;;;;;;;;;-1:-1:-1;15097:233:0;;;;;:::i;:::-;;:::i;14468:127::-;;;;;;;;;;-1:-1:-1;14468:127:0;;;;;:::i;:::-;;:::i;9922:35::-;;;;;;;;;;-1:-1:-1;9922:35:0;;;;-1:-1:-1;;;9922:35:0;;;;;;9357:25;;;;;;;;;;;;;;;;12522:83;12559:13;12592:5;12585:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12522:83;:::o;13817:161::-;13892:4;13909:39;198:10;13932:7;13941:6;13909:8;:39::i;:::-;-1:-1:-1;13966:4:0;13817:161;;;;;:::o;15864:361::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;;;;;;;;;15987:17:::1;:35:::0;;;16033:17:::1;:35:::0;;;16079:12:::1;:25:::0;;;16201:15:::1;::::0;16138:79:::1;::::0;:58:::1;16094:10:::0;16138:58;16007:15;16053;16138:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:79::-;16117:18;:100:::0;-1:-1:-1;;;15864:361:0:o;15338:353::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15461:16:::1;:34:::0;;;15506:16:::1;:34:::0;;;15551:11:::1;:24:::0;;;15668:14:::1;::::0;15608:75:::1;::::0;:55:::1;15565:10:::0;15608:55;15480:15;15525;15608:20:::1;:38::i;:75::-;15588:17;:95:::0;-1:-1:-1;;;15338:353:0:o;16839:135::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16930:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;16930:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16839:135::o;19513:313::-;19611:4;19628:36;19638:6;19646:9;19657:6;19628:9;:36::i;:::-;-1:-1:-1;19675:121:0;19684:6;198:10;19706:89;19744:6;19706:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19706:19:0;;;;;;:11;:19;;;;;;;;198:10;19706:33;;;;;;;;;;:37;:89::i;:::-;19675:8;:121::i;:::-;-1:-1:-1;19814:4:0;19513:313;;;;;;:::o;16718:113::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;16796:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;16796:27:0::1;-1:-1:-1::0;;;;16796:27:0;;::::1;::::0;;;::::1;::::0;;16718:113::o;18160:128::-;18267:11;;-1:-1:-1;;;;;18267:11:0;18213:7;13000:18;;;:9;:18;;;;;;18240:12;;:40;;:16;:40::i;:::-;18233:47;;18160:128;:::o;17374:129::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17456:17:::1;:39:::0;;-1:-1:-1;;;;;;17456:39:0::1;-1:-1:-1::0;;;;;17456:39:0;;;::::1;::::0;;;::::1;::::0;;17374:129::o;13185:218::-;198:10;13273:4;13322:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13322:34:0;;;;;;;;;;13273:4;;13290:83;;13313:7;;13322:50;;13361:10;13322:38;:50::i;17092:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17174:24:::1;:35:::0;17092:125::o;17227:139::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17314:22:::1;:44:::0;;-1:-1:-1;;;;;17314:44:0;;::::1;;;-1:-1:-1::0;;;;;;17314:44:0;;::::1;::::0;;;::::1;::::0;;17227:139::o;18430:806::-;18510:22;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18547:35:::1;18604:16;18547:74;;18669:16;-1:-1:-1::0;;;;;18669:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18651:53:0::1;;18713:4;18720:16;-1:-1:-1::0;;;;;18720:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18651:93;::::0;-1:-1:-1;;;;;;18651:93:0::1;::::0;;;;;;-1:-1:-1;;;;;5474:15:1;;;18651:93:0::1;::::0;::::1;5456:34:1::0;5526:15;;5506:18;;;5499:43;5391:18;;18651:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18634:110:::0;-1:-1:-1;;;;;;18760:28:0;::::1;18757:225;;18874:16;-1:-1:-1::0;;;;;18874:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18856:74:0::1;;18939:4;18946:16;-1:-1:-1::0;;;;;18946:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18856:114;::::0;-1:-1:-1;;;;;;18856:114:0::1;::::0;;;;;;-1:-1:-1;;;;;5474:15:1;;;18856:114:0::1;::::0;::::1;5456:34:1::0;5526:15;;5506:18;;;5499:43;5391:18;;18856:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18839:131;;18757:225;18994:11;:28:::0;;-1:-1:-1;;;;;;18994:28:0;;::::1;-1:-1:-1::0;;;;;18994:28:0;;::::1;::::0;;::::1;::::0;;19056:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;19128:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;19128:48:0;;::::1;-1:-1:-1::0;19128:48:0;;::::1;::::0;;;19208:11;;;;::::1;19187:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;18994:28;19008:14;-1:-1:-1;18430:806:0:o;14331:129::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14420:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;14420:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14331:129::o;14865:224::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;14942:14:::1;:33:::0;;;15049:11:::1;::::0;15027:16:::1;::::0;15006::::1;::::0;:75:::1;::::0;14959:16;;15006:55:::1;::::0;;;:20:::1;:38::i;:75::-;14986:17;:95:::0;-1:-1:-1;14865:224:0:o;5792:145::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;5896:1:::1;5880:6:::0;;5859:40:::1;::::0;-1:-1:-1;;;;;5880:6:0;;::::1;::::0;5859:40:::1;::::0;5896:1;;5859:40:::1;5927:1;5910:19:::0;;-1:-1:-1;;;;;;5910:19:0::1;::::0;;5792:145::o;12613:87::-;12652:13;12685:7;12678:14;;;;;:::i;13411:269::-;13504:4;13521:129;198:10;13544:7;13553:96;13592:15;13553:96;;;;;;;;;;;;;;;;;198:10;13553:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13553:34:0;;;;;;;;;;;;:38;:96::i;17784:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17865:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;17865:36:0::1;-1:-1:-1::0;;;;17865:36:0;;::::1;::::0;;;::::1;::::0;;17784:125::o;19338:167::-;19416:4;19433:42;198:10;19457:9;19468:6;19433:9;:42::i;14746:111::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;14819:17:::1;:30:::0;14746:111::o;16233:358::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;16374:15:::1;:35:::0;;;16420:15:::1;:35:::0;;;16466:10:::1;:25:::0;;;16531:52:::1;16479:12:::0;16531:36:::1;16392:17:::0;16438;16531:19:::1;:36::i;:52::-;16504:24;:79:::0;-1:-1:-1;;;16233:358:0:o;17917:233::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18034:9:::1;18030:113;18049:19:::0;;::::1;18030:113;;;18123:8;18090:17;:30;18108:8;;18117:1;18108:11;;;;;-1:-1:-1::0;;;18108:11:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18090:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18090:30:0;:41;;-1:-1:-1;;18090:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18070:3;::::1;::::0;::::1;:::i;:::-;;;;18030:113;;;;17917:233:::0;;;:::o;17511:171::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17588:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17588:32:0::1;-1:-1:-1::0;;;;17588:32:0;;::::1;;::::0;;17636:38:::1;::::0;::::1;::::0;::::1;::::0;17612:8;6330:14:1;6323:22;6305:41;;6293:2;6278:18;;6260:92;17636:38:0::1;;;;;;;;17511:171:::0;:::o;17690:86::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17753:4:::1;:15:::0;17690:86::o;15699:157::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15790:1:::1;15778:8;:13;;15770:44;;;::::0;-1:-1:-1;;;15770:44:0;;11149:2:1;15770:44:0::1;::::0;::::1;11131:21:1::0;11188:2;11168:18;;;11161:30;-1:-1:-1;;;11207:18:1;;;11200:48;11265:18;;15770:44:0::1;11121:168:1::0;15770:44:0::1;15825:12;:23:::0;15699:157::o;16599:111::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;16676:12:::1;:26:::0;16599:111::o;14603:135::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14693:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;14693:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14603:135::o;16982:102::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17054:10:::1;:22:::0;16982:102::o;5945:244::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6034:22:0;::::1;6026:73;;;::::0;-1:-1:-1;;;6026:73:0;;7995:2:1;6026:73:0::1;::::0;::::1;7977:21:1::0;8034:2;8014:18;;;8007:30;8073:34;8053:18;;;8046:62;-1:-1:-1;;;8124:18:1;;;8117:36;8170:19;;6026:73:0::1;7967:228:1::0;6026:73:0::1;6136:6;::::0;;6115:38:::1;::::0;-1:-1:-1;;;;;6115:38:0;;::::1;::::0;6136:6;::::1;::::0;6115:38:::1;::::0;::::1;6164:6;:17:::0;;-1:-1:-1;;;;;;6164:17:0::1;-1:-1:-1::0;;;;;6164:17:0;;;::::1;::::0;;;::::1;::::0;;5945:244::o;15097:233::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15176:15:::1;:35:::0;;;15288:12:::1;::::0;15265:17:::1;::::0;15243::::1;::::0;:79:::1;::::0;15194:17;;15243:58:::1;::::0;;;:21:::1;:40::i;:79::-;15222:18;:100:::0;-1:-1:-1;15097:233:0:o;14468:127::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14555:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;14555:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14468:127::o;1191:181::-;1249:7;;1281:5;1285:1;1281;:5;:::i;:::-;1269:17;;1310:1;1305;:6;;1297:46;;;;-1:-1:-1;;;1297:46:0;;8805:2:1;1297:46:0;;;8787:21:1;8844:2;8824:18;;;8817:30;8883:29;8863:18;;;8856:57;8930:18;;1297:46:0;8777:177:1;13986:337:0;-1:-1:-1;;;;;14079:19:0;;14071:68;;;;-1:-1:-1;;;14071:68:0;;11496:2:1;14071:68:0;;;11478:21:1;11535:2;11515:18;;;11508:30;11574:34;11554:18;;;11547:62;-1:-1:-1;;;11625:18:1;;;11618:34;11669:19;;14071:68:0;11468:226:1;14071:68:0;-1:-1:-1;;;;;14158:21:0;;14150:68;;;;-1:-1:-1;;;14150:68:0;;8402:2:1;14150:68:0;;;8384:21:1;8441:2;8421:18;;;8414:30;8480:34;8460:18;;;8453:62;-1:-1:-1;;;8531:18:1;;;8524:32;8573:19;;14150:68:0;8374:224:1;14150:68:0;-1:-1:-1;;;;;14231:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14283:32;;6745:25:1;;;14283:32:0;;6718:18:1;14283:32:0;;;;;;;13986:337;;;:::o;19834:2023::-;19921:4;-1:-1:-1;;;;;19948:20:0;;19940:70;;;;-1:-1:-1;;;19940:70:0;;10743:2:1;19940:70:0;;;10725:21:1;10782:2;10762:18;;;10755:30;10821:34;10801:18;;;10794:62;-1:-1:-1;;;10872:18:1;;;10865:35;10917:19;;19940:70:0;10715:227:1;19940:70:0;-1:-1:-1;;;;;20029:23:0;;20021:71;;;;-1:-1:-1;;;20021:71:0;;7591:2:1;20021:71:0;;;7573:21:1;7630:2;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;-1:-1:-1;;;7720:18:1;;;7713:33;7763:19;;20021:71:0;7563:225:1;20021:71:0;20120:1;20111:6;:10;20103:64;;;;-1:-1:-1;;;20103:64:0;;10333:2:1;20103:64:0;;;10315:21:1;10372:2;10352:18;;;10345:30;10411:34;10391:18;;;10384:62;-1:-1:-1;;;10462:18:1;;;10455:39;10511:19;;20103:64:0;10305:231:1;20103:64:0;20196:11;;-1:-1:-1;;;;;20183:24:0;;;20196:11;;20183:24;:64;;;;-1:-1:-1;20229:11:0;;-1:-1:-1;;;;;20229:11:0;12973:7;13000:18;;;:9;:18;;;;;;20211:36;20183:64;20180:115;;;20271:12;20263:5;:20;20180:115;20318:11;;-1:-1:-1;;;;;20308:21:0;;;20318:11;;20308:21;:52;;;;;20356:4;;20348:5;;:12;;;;:::i;:::-;20333;:27;20308:52;20305:136;;;20406:14;;20383:46;;20398:6;;-1:-1:-1;;;;;20406:14:0;20422:6;20383:14;:46::i;:::-;20376:53;;;;20305:136;20454:16;;-1:-1:-1;;;20454:16:0;;;;20451:1399;;;20503:41;20518:6;20526:9;20537:6;20503:14;:41::i;20451:1399::-;-1:-1:-1;;;;;20599:23:0;;;;;;:15;:23;;;;;;;;20598:24;:55;;;;-1:-1:-1;;;;;;20627:26:0;;;;;;:15;:26;;;;;;;;20626:27;20598:55;20595:170;;;20692:12;;20682:6;:22;;20674:75;;;;-1:-1:-1;;;20674:75:0;;9161:2:1;20674:75:0;;;9143:21:1;9200:2;9180:18;;;9173:30;9239:34;9219:18;;;9212:62;-1:-1:-1;;;9290:18:1;;;9283:38;9338:19;;20674:75:0;9133:230:1;20674:75:0;20830:4;20781:28;13000:18;;;:9;:18;;;;;;20906:24;;20882:48;;;;;;;20951:44;;-1:-1:-1;20979:16:0;;-1:-1:-1;;;20979:16:0;;;;20978:17;20951:44;:69;;;;-1:-1:-1;;;;;;21000:20:0;;;;;;:12;:20;;;;;;;;20999:21;20951:69;:94;;;;-1:-1:-1;21024:21:0;;-1:-1:-1;;;21024:21:0;;;;20951:94;20947:301;;;21082:25;;-1:-1:-1;;;21082:25:0;;;;21079:98;;;21153:24;;21130:47;;21079:98;21196:36;21211:20;21196:14;:36::i;:::-;21284:53;;;;;;;;;;;-1:-1:-1;;;21284:53:0;;;;;;;;-1:-1:-1;;;;;21284:17:0;;-1:-1:-1;21284:17:0;;;:9;:17;;;;;;;;:53;;21306:6;;21284:21;:53::i;:::-;-1:-1:-1;;;;;21264:17:0;;;;;;:9;:17;;;;;;;;:73;;;;21377:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;21406:28:0;;;;;;:17;:28;;;;;;;;21377:57;21376:147;;21489:34;21497:6;21505:9;21516:6;21489:7;:34::i;:::-;21376:147;;;21480:6;21376:147;21543:16;;21354:169;;-1:-1:-1;;;;21543:16:0;;;;:51;;;;-1:-1:-1;;;;;;21564:30:0;;;;;;:19;:30;;;;;;;;21563:31;21543:51;21540:133;;;21662:10;;21621:37;21646:11;21621:20;21631:9;-1:-1:-1;;;;;13000:18:0;12973:7;13000:18;;;:9;:18;;;;;;;12907:119;21621:37;:51;;21613:60;;;;;;-1:-1:-1;;;;;21713:20:0;;;;;;:9;:20;;;;;;:37;;21738:11;21713:24;:37::i;:::-;-1:-1:-1;;;;;21690:20:0;;;;;;;:9;:20;;;;;;;:60;;;;21772:40;;;;;;-1:-1:-1;;;;;;;;;;;21772:40:0;;;21800:11;6745:25:1;;6733:2;6718:18;;6700:76;21772:40:0;;;;;;;;21834:4;21827:11;;;;;;;1524:192;1610:7;1646:12;1638:6;;;;1630:29;;;;-1:-1:-1;;;1630:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1670:9:0;1682:5;1686:1;1682;:5;:::i;:::-;1670:17;1524:192;-1:-1:-1;;;;;1524:192:0:o;1380:136::-;1438:7;1465:43;1469:1;1472;1465:43;;;;;;;;;;;;;;;;;:3;:43::i;21865:330::-;21995:53;;;;;;;;;;;-1:-1:-1;;;21995:53:0;;;;;;;;-1:-1:-1;;;;;21995:17:0;;21958:4;21995:17;;;:9;:17;;;;;;;:53;;22017:6;;21995:21;:53::i;:::-;-1:-1:-1;;;;;21975:17:0;;;;;;;:9;:17;;;;;;:73;;;;22082:20;;;;;;;:32;;22107:6;22082:24;:32::i;:::-;-1:-1:-1;;;;;22059:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22130:35;;;;;;-1:-1:-1;;;;;;;;;;;22130:35:0;;;22158:6;6745:25:1;;6733:2;6718:18;;6700:76;22130:35:0;;;;;;;;-1:-1:-1;22183:4:0;21865:330;;;;;:::o;22203:1032::-;10368:16;:23;;-1:-1:-1;;;;10368:23:0;-1:-1:-1;;;10368:23:0;;;22332:24:::1;::::0;10368:16;22311:15;10368:23;;22299:65:::1;::::0;22362:1:::1;::::0;22299:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;22277:87:::0;-1:-1:-1;22375:21:0::1;22399:24;:7:::0;22277:87;22399:11:::1;:24::i;:::-;22375:48;;22436:31;22453:13;22436:16;:31::i;:::-;22588:15;::::0;22503:21:::1;::::0;22478:22:::1;::::0;22559:52:::1;::::0;22588:22:::1;::::0;22608:1:::1;22588:19;:22::i;:::-;22559:24;::::0;;:28:::1;:52::i;:::-;22537:74;;22624:26;22653:59;22710:1;22653:52;22693:11;22653:35;22672:15;;22653:14;:18;;:35;;;;:::i;:59::-;22624:88;;22723:21;22747:47;22782:11;22747:30;22766:10;;22747:14;:18;;:30;;;;:::i;:47::-;22723:71:::0;-1:-1:-1;22805:26:0::1;22834:57;22723:71:::0;22834:38:::1;:14:::0;22853:18;22834::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;22805:86:::0;-1:-1:-1;22907:22:0;;22904:104:::1;;22965:22;::::0;22944:64:::1;::::0;22965:22:::1;::::0;::::1;-1:-1:-1::0;;;;;22965:22:0::1;22989:18:::0;22944:20:::1;:64::i;:::-;23024:17:::0;;23021:89:::1;;23077:17;::::0;23056:54:::1;::::0;-1:-1:-1;;;;;23077:17:0::1;23096:13:::0;23056:20:::1;:54::i;:::-;23147:1;23126:18;:22;:41;;;;;23166:1;23152:11;:15;23126:41;23123:104;;;23182:45;23195:11;23208:18;23182:12;:45::i;:::-;-1:-1:-1::0;;10414:16:0;:24;;-1:-1:-1;;;;10414:24:0;;;-1:-1:-1;;;;;;22203:1032:0:o;24437:1654::-;-1:-1:-1;;;;;24649:20:0;;24523:7;24649:20;;;:12;:20;;;;;;24523:7;;;;;;24649:20;;24646:670;;;24698:58;24752:3;24698:49;24709:37;24731:14;;24709:17;;:21;;:37;;;;:::i;:::-;24698:6;;:10;:49::i;:58::-;24686:70;;24791:1;24774:14;;:18;:52;;;;;24809:17;;24796:10;;:30;24774:52;24771:188;;;24860:35;24891:3;24860:26;24871:14;;24860:6;:10;;:26;;;;:::i;:35::-;24847:48;;24914:29;24925:6;24932:10;24914;:29::i;:::-;24646:670;;;-1:-1:-1;;;;;24988:23:0;;;;;;:12;:23;;;;;;;;24985:331;;;25040:60;25096:3;25040:51;25051:39;25074:15;;25051:18;;:22;;:39;;;;:::i;25040:60::-;25028:72;;25136:1;25118:15;;:19;:53;;;;;25154:17;;25141:10;;:30;25118:53;25115:190;;;25205:36;25237:3;25205:27;25216:15;;25205:6;:10;;:27;;;;:::i;:36::-;25192:49;;25260:29;25271:6;25278:10;25260;:29::i;:::-;-1:-1:-1;;;;;25331:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;25355:23:0;;;;;;:12;:23;;;;;;;;25331:47;25328:495;;;25398:12;;:16;25394:418;;25434:10;;25463:283;25487:12;;25483:1;:16;25463:283;;;25568:44;;;;;;4680:19:1;;;4715:12;;;4708:28;;;25596:15:0;4752:12:1;;;4745:28;4789:12;;25568:44:0;;;-1:-1:-1;;25568:44:0;;;;;;;;;25558:55;;25568:44;25558:55;;;;-1:-1:-1;;;;;25655:13:0;;25550:64;25655:13;;;:9;:13;;;;;;25558:55;;-1:-1:-1;25655:20:0;;25673:1;25655:17;:20::i;:::-;-1:-1:-1;;;;;25639:13:0;;;;;;;:9;:13;;;;;;;:36;;;;25703:23;;;;;;-1:-1:-1;;;;;;;;;;;25703:23:0;;;25724:1;6745:25:1;;6733:2;6718:18;;6700:76;25703:23:0;;;;;;;;25501:3;;;;:::i;:::-;;;;25463:283;;;-1:-1:-1;25780:12:0;;:16;;25795:1;25780:16;:::i;:::-;25764:32;;25394:418;;25838:13;;25835:173;;25913:4;25895:24;;;;:9;:24;;;;;;:39;;25924:9;25895:28;:39::i;:::-;25886:4;25868:24;;;;:9;:24;;;;;;;:66;;;;25954:42;;-1:-1:-1;;;;;25954:42:0;;;-1:-1:-1;;;;;;;;;;;25954:42:0;;;25986:9;6745:25:1;;6733:2;6718:18;;6700:76;25954:42:0;;;;;;;;25835:173;26027:56;26038:44;26068:13;26038:25;:9;26052:10;26038:13;:25::i;:44::-;26027:6;;:10;:56::i;:::-;26020:63;24437:1654;-1:-1:-1;;;;;;;24437:1654:0:o;1724:250::-;1782:7;1806:6;1802:47;;-1:-1:-1;1836:1:0;1829:8;;1802:47;1861:9;1873:5;1877:1;1873;:5;:::i;:::-;1861:17;-1:-1:-1;1906:1:0;1897:5;1901:1;1861:17;1897:5;:::i;:::-;:10;1889:56;;;;-1:-1:-1;;;1889:56:0;;9570:2:1;1889:56:0;;;9552:21:1;9609:2;9589:18;;;9582:30;9648:34;9628:18;;;9621:62;-1:-1:-1;;;9699:18:1;;;9692:31;9740:19;;1889:56:0;9542:223:1;1982:132:0;2040:7;2067:39;2071:1;2074;2067:39;;;;;;;;;;;;;;;;;:3;:39::i;23243:658::-;23393:16;;;23407:1;23393:16;;;;;;;;23369:21;;23393:16;;;;;;;;;;-1:-1:-1;23393:16:0;23369:40;;23438:4;23420;23425:1;23420:7;;;;;;-1:-1:-1;;;23420:7:0;;;;;;;;;-1:-1:-1;;;;;23420:23:0;;;:7;;;;;;;;;;:23;;;;23464:15;;:22;;;-1:-1:-1;;;23464:22:0;;;;:15;;;;;:20;;:22;;;;;23420:7;;23464:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23454:4;23459:1;23454:7;;;;;;-1:-1:-1;;;23454:7:0;;;;;;;;;-1:-1:-1;;;;;23454:32:0;;;:7;;;;;;;;;:32;23531:15;;23499:62;;23516:4;;23531:15;23549:11;23499:8;:62::i;:::-;23600:15;;:240;;-1:-1:-1;;;23600:240:0;;-1:-1:-1;;;;;23600:15:0;;;;:66;;:240;;23681:11;;23600:15;;23751:4;;23778;;23814:15;;23600:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23858:35;23875:11;23888:4;23858:35;;;;;;;:::i;:::-;;;;;;;;23243:658;;:::o;18296:126::-;18388:26;;-1:-1:-1;;;;;18388:18:0;;;:26;;;;;18407:6;;18388:26;;;;18407:6;18388:18;:26;;;;;;;;;;;;;;;;;;;;;18296:126;;:::o;23909:520::-;24089:15;;24057:62;;24074:4;;-1:-1:-1;;;;;24089:15:0;24107:11;24057:8;:62::i;:::-;24162:15;;;24366:14;;24162:259;;-1:-1:-1;;;24162:259:0;;24234:4;24162:259;;;5894:34:1;5944:18;;;5937:34;;;24162:15:0;5987:18:1;;;5980:34;;;6030:18;;;6023:34;-1:-1:-1;;;;;24366:14:0;;;6073:19:1;;;6066:44;24395:15:0;6126:19:1;;;6119:35;24162:15:0;;:31;;24201:9;;5828:19:1;;24162:259:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23909:520;;:::o;26099:321::-;26213:17;;26199:10;;:31;26196:43;;26099:321;;:::o;26196:43::-;26286:11;;-1:-1:-1;;;;;26286:11:0;26276:22;;;;:9;:22;;;;;;:35;;26303:7;26276:26;:35::i;:::-;26261:11;;-1:-1:-1;;;;;26261:11:0;26251:22;;;;:9;:22;;;;;:60;26335:10;;:23;;26350:7;26335:14;:23::i;:::-;26322:10;:36;26391:11;;26374:38;;6745:25:1;;;-1:-1:-1;;;;;26391:11:0;;;;26374:38;;;-1:-1:-1;;;;;;;;;;;26374:38:0;6733:2:1;6718:18;26374:38:0;;;;;;;26099:321;;:::o;2122:278::-;2208:7;2243:12;2236:5;2228:28;;;;-1:-1:-1;;;2228:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2267:9:0;2279:5;2283:1;2279;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:739::-;2333:6;2341;2349;2402:2;2390:9;2381:7;2377:23;2373:32;2370:2;;;2423:6;2415;2408:22;2370:2;2468:9;2455:23;2497:18;2538:2;2530:6;2527:14;2524:2;;;2559:6;2551;2544:22;2524:2;2602:6;2591:9;2587:22;2577:32;;2647:7;2640:4;2636:2;2632:13;2628:27;2618:2;;2674:6;2666;2659:22;2618:2;2719;2706:16;2745:2;2737:6;2734:14;2731:2;;;2766:6;2758;2751:22;2731:2;2826:7;2819:4;2809:6;2806:1;2802:14;2798:2;2794:23;2790:34;2787:47;2784:2;;;2852:6;2844;2837:22;2784:2;2888:4;2880:13;;;;-1:-1:-1;2912:6:1;-1:-1:-1;2937:37:1;;2953:20;;;-1:-1:-1;2937:37:1;:::i;:::-;2927:47;;2360:620;;;;;:::o;2985:190::-;3041:6;3094:2;3082:9;3073:7;3069:23;3065:32;3062:2;;;3115:6;3107;3100:22;3062:2;3143:26;3159:9;3143:26;:::i;3180:190::-;3239:6;3292:2;3280:9;3271:7;3267:23;3263:32;3260:2;;;3313:6;3305;3298:22;3260:2;-1:-1:-1;3341:23:1;;3250:120;-1:-1:-1;3250:120:1:o;3375:326::-;3452:6;3460;3468;3521:2;3509:9;3500:7;3496:23;3492:32;3489:2;;;3542:6;3534;3527:22;3489:2;-1:-1:-1;;3570:23:1;;;3640:2;3625:18;;3612:32;;-1:-1:-1;3691:2:1;3676:18;;;3663:32;;3479:222;-1:-1:-1;3479:222:1:o;3706:316::-;3794:6;3802;3810;3863:2;3851:9;3842:7;3838:23;3834:32;3831:2;;;3884:6;3876;3869:22;3831:2;3918:9;3912:16;3902:26;;3968:2;3957:9;3953:18;3947:25;3937:35;;4012:2;4001:9;3997:18;3991:25;3981:35;;3821:201;;;;;:::o;4027:463::-;4080:3;4118:5;4112:12;4145:6;4140:3;4133:19;4171:4;4200:2;4195:3;4191:12;4184:19;;4237:2;4230:5;4226:14;4258:3;4270:195;4284:6;4281:1;4278:13;4270:195;;;4349:13;;-1:-1:-1;;;;;4345:39:1;4333:52;;4405:12;;;;4440:15;;;;4381:1;4299:9;4270:195;;;-1:-1:-1;4481:3:1;;4088:402;-1:-1:-1;;;;;4088:402:1:o;6781:603::-;6893:4;6922:2;6951;6940:9;6933:21;6983:6;6977:13;7026:6;7021:2;7010:9;7006:18;6999:34;7051:4;7064:140;7078:6;7075:1;7072:13;7064:140;;;7173:14;;;7169:23;;7163:30;7139:17;;;7158:2;7135:26;7128:66;7093:10;;7064:140;;;7222:6;7219:1;7216:13;7213:2;;;7292:4;7287:2;7278:6;7267:9;7263:22;7259:31;7252:45;7213:2;-1:-1:-1;7368:2:1;7347:15;-1:-1:-1;;7343:29:1;7328:45;;;;7375:2;7324:54;;6902:482;-1:-1:-1;;;6902:482:1:o;9770:356::-;9972:2;9954:21;;;9991:18;;;9984:30;10050:34;10045:2;10030:18;;10023:62;10117:2;10102:18;;9944:182::o;11881:332::-;12088:6;12077:9;12070:25;12131:2;12126;12115:9;12111:18;12104:30;12051:4;12151:56;12203:2;12192:9;12188:18;12180:6;12151:56;:::i;:::-;12143:64;12060:153;-1:-1:-1;;;;12060:153:1:o;12218:582::-;12517:6;12506:9;12499:25;12560:6;12555:2;12544:9;12540:18;12533:34;12603:3;12598:2;12587:9;12583:18;12576:31;12480:4;12624:57;12676:3;12665:9;12661:19;12653:6;12624:57;:::i;:::-;-1:-1:-1;;;;;12717:32:1;;;;12712:2;12697:18;;12690:60;-1:-1:-1;12781:3:1;12766:19;12759:35;12616:65;12489:311;-1:-1:-1;;;12489:311:1:o;12994:128::-;13034:3;13065:1;13061:6;13058:1;13055:13;13052:2;;;13071:18;;:::i;:::-;-1:-1:-1;13107:9:1;;13042:80::o;13127:217::-;13167:1;13193;13183:2;;-1:-1:-1;;;13218:31:1;;13272:4;13269:1;13262:15;13300:4;13225:1;13290:15;13183:2;-1:-1:-1;13329:9:1;;13173:171::o;13349:168::-;13389:7;13455:1;13451;13447:6;13443:14;13440:1;13437:21;13432:1;13425:9;13418:17;13414:45;13411:2;;;13462:18;;:::i;:::-;-1:-1:-1;13502:9:1;;13401:116::o;13522:125::-;13562:4;13590:1;13587;13584:8;13581:2;;;13595:18;;:::i;:::-;-1:-1:-1;13632:9:1;;13571:76::o;13652:380::-;13731:1;13727:12;;;;13774;;;13795:2;;13849:4;13841:6;13837:17;13827:27;;13795:2;13902;13894:6;13891:14;13871:18;13868:38;13865:2;;;13948:10;13943:3;13939:20;13936:1;13929:31;13983:4;13980:1;13973:15;14011:4;14008:1;14001:15;13865:2;;13707:325;;;:::o;14037:135::-;14076:3;-1:-1:-1;;14097:17:1;;14094:2;;;14117:18;;:::i;:::-;-1:-1:-1;14164:1:1;14153:13;;14084:88::o;14177:127::-;14238:10;14233:3;14229:20;14226:1;14219:31;14269:4;14266:1;14259:15;14293:4;14290:1;14283:15;14309:131;-1:-1:-1;;;;;14384:31:1;;14374:42;;14364:2;;14430:1;14427;14420:12;14364:2;14354:86;:::o

Swarm Source

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