ETH Price: $2,632.59 (+0.14%)
Gas: 2 Gwei

Token

COHENSIVE AI (CAI)
 

Overview

Max Total Supply

100,000,000 CAI

Holders

124

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.051859383008194081 CAI

Value
$0.00
0x634ede50b7a4d9c9990cf63abf246e679207667a
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:
COHENSIVE_AI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
Telegram: https://t.me/cohesiveai_portal
Website: https://cohesiveai.org/
Twitter: https://twitter.com/cohesive_ai
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        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);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _transfer(sender, recipient, amount);
        
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: transfer to the zero address");
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }
}

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

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

contract COHENSIVE_AI is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _inSwap = false;
    bool public LpProvider = false;
    bool public tradingEnabled = false;

    uint256 public ThresholdTokens = 3e5 * 10**18;
    uint256 public maxWalletLimit = 2e6 * 10**18;

    uint256 private kill_block;
    uint256 private deadline = 1;
    uint256 private Earlytaxes = 99;

    address public marketingWallet = 0x45DC02e716378C5B437fD41D174Cd1A4b9bdCFa3;
	address private developmentWallet = 0xF4037801dDFA32bb2681F52Be304Eb585843E385;
    address public constant DeadAddy = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 development;
    }

    Taxes private buytaxes = Taxes(2, 2, 1);
    Taxes private sellTaxes = Taxes(2, 2, 1);

   uint256 public TotalBuyFee = buytaxes.marketing + buytaxes.liquidity + buytaxes.development;
   uint256 public TotalSellFee = sellTaxes.marketing + sellTaxes.liquidity + sellTaxes.development;

    mapping(address => bool) public exemptFee;

    modifier lockTheSwap() {
        if (!_inSwap) {
            _inSwap = true;
            _;
            _inSwap = false;
        }
    }

    constructor() ERC20("COHENSIVE AI", "CAI") {
        _tokengeneration(msg.sender, 1e8 * 10**decimals());

        if (block.chainid == 56){
     router = IRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
     }
      else if(block.chainid == 1){
          router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
      }
      else if(block.chainid == 42161){
           router = IRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
      }
      else if (block.chainid == 97){
     router = IRouter(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
     }
        address _pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        require(_pair != address(0), "Generated Pair Address cannot be zero");
        router = router;
        pair = _pair;
        
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[developmentWallet] = true;
        exemptFee[DeadAddy] = true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient]) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender]) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }
       
        uint256 swapfee;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useEarlyFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < kill_block + deadline;

        if (exemptFee[sender] || exemptFee[recipient])
            fee = 0;

        else if (recipient == pair && !useEarlyFee) { 
            swapfee = sellTaxes.liquidity + sellTaxes.marketing + sellTaxes.development;
            currentTaxes = sellTaxes;
        
        } else if (sender == pair && recipient != address(router) && !useEarlyFee) { 
            swapfee = buytaxes.liquidity + buytaxes.marketing + buytaxes.development;
            currentTaxes = buytaxes;
        
        } else if (useEarlyFee) {
            swapfee = Earlytaxes;
        }

        fee = (amount * swapfee) / 100;

       if(sender != pair && recipient != pair) { 
          fee = 0;
       }
        
        if (LpProvider && sender != pair) Liquify(swapfee, currentTaxes);

        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
    
            if (swapfee > 0) {
                uint256 feeAmount = (amount * swapfee) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 swapfee, Taxes memory swapTaxes) private lockTheSwap {

        if(swapfee == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= ThresholdTokens) {
            if (ThresholdTokens > 1) {
                contractBalance = ThresholdTokens;
            }

            uint256 denominator = swapfee * 2;
            uint256 Liquiditytokens = (contractBalance * swapTaxes.liquidity) / denominator;
            uint256 AmountToSwap = contractBalance - Liquiditytokens;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(AmountToSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 LiquidityEth = unitBalance * swapTaxes.liquidity;

            if (LiquidityEth  > 0) {
                addLiquidity(Liquiditytokens, LiquidityEth);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }
  
          uint256 developmentAmt = unitBalance * 2 * swapTaxes.development;
            if (developmentAmt > 0) {
                payable(developmentWallet).sendValue(developmentAmt);
            }
        
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        require(tokenAmount > 0, "Amount should be greater than zero");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

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

    function updateLiquidityProvide(bool _state) external onlyOwner {
        LpProvider = _state;
    }

    function updateThreshold(uint256 _liquidityThreshold) external onlyOwner {
        ThresholdTokens = _liquidityThreshold * 10**decimals();
    }

    function SetBuyTaxes( uint256 _marketing, uint256 _liquidity, uint256 _development ) external onlyOwner {
        buytaxes = Taxes(_marketing, _liquidity, _development);
    }

    function SetSellTaxes( uint256 _marketing, uint256 _liquidity, uint256 _development ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity, _development);
    }

    function EnableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        LpProvider = true;
        kill_block = block.number;
    }

    function UpdateDeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 4,"Deadline should be less than 3 Blocks");
        deadline = _deadline;
    }

    function UpdateMarketingWallet(address _newWallet) external onlyOwner {
        require(_newWallet != address(0),"Fee Address cannot be zero address");
        require(_newWallet != address(this),"Fee Addy cannot be CA");
        marketingWallet = _newWallet;
        exemptFee[_newWallet] = true;
    }

    function UpdateDevelopmentWallet(address _newWallet) external onlyOwner {
        require(_newWallet != address(0),"Fee Address cannot be zero address");
        require(_newWallet != address(this),"Fee Addy cannot be CA");
        developmentWallet = _newWallet;
        exemptFee[_newWallet] = true;
    }

    function ExemptFee(address _address, bool state) external onlyOwner {
        require(_address != address(0), "Address cannot be the zero address");
        exemptFee[_address] = state;
    }

    function SetMaxTxLimit(uint256 maxWallet) external onlyOwner {
        require(maxWallet >= 1e5, "Cannot set max wallet amount lower than 0.1%");
        maxWalletLimit = maxWallet * 10**decimals(); 
    }
    
    function ClearETHBalance() external {
        uint256 contractETHBalance = address(this).balance;
        require(contractETHBalance > 0, "Amount should be greater than zero");
        require(contractETHBalance <= address(this).balance, "Insufficient Amount");
        payable(owner()).sendValue(contractETHBalance);
    }

    function ClearERC20Tokens(address _tokenAddy, uint256 _amount) external {
        require(_tokenAddy != address(this), "Owner can't claim contract's balance of its own tokens");
        require(_amount > 0, "Amount should be greater than zero");
        require(_amount <= IERC20(_tokenAddy).balanceOf(address(this)), "Insufficient Amount");
        IERC20(_tokenAddy).transfer(owner(), _amount);
    }

    // fallbacks
    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":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":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ClearERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClearETHBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DeadAddy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"ExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LpProvider","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"SetMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ThresholdTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"UpdateDeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"UpdateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"UpdateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b19169055693f870857a3e0e38000006008556a01a784379d99db420000006009556001600b8190556063600c55600d80546001600160a01b03199081167345dc02e716378c5b437fd41d174cd1a4b9bdcfa317909155600e805490911673f4037801ddfa32bb2681f52be304eb585843e3851790556002608081905260a081905260c0829052600f8190556010819055601182905561014060405260e0819052610100819052610120829052601281905560138190556014829055620000d190806200063f565b620000dd91906200063f565b601555601454601354601254620000f591906200063f565b6200010191906200063f565b6016553480156200011157600080fd5b506040518060400160405280600c81526020016b434f48454e5349564520414960a01b8152506040518060400160405280600381526020016243414960e81b815250816003908162000164919062000700565b50600462000173828262000700565b505050620001906200018a6200051b60201b60201c565b6200051f565b620001b933620001a36012600a620008c9565b620001b3906305f5e100620008e1565b62000571565b46603803620001ee57600680546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000289565b466001036200022357600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000289565b4661a4b1036200025957600680546001600160a01b031916731b02da8cb0d097eb8d57a175b88c7d8b4799750617905562000289565b466061036200028957600680546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d11790555b6006546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015620002d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fa9190620008fb565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003839190620008fb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f79190620008fb565b90506001600160a01b038116620004635760405162461bcd60e51b815260206004820152602560248201527f47656e657261746564205061697220416464726573732063616e6e6f74206265604482015264207a65726f60d81b60648201526084015b60405180910390fd5b600680546001600160a01b03198082166001600160a01b0392831617909255600780549382169390921692909217905530600090815260176020526040808220805460ff1990811660019081179092553384528284208054821683179055600d54851684528284208054821683179055600e549094168352908220805484168217905561dead9091527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303805490921617905562000926565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005d55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016200045a565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000655576200065562000629565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200068657607f821691505b602082108103620006a757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006fb57600081815260208120601f850160051c81016020861015620006d65750805b601f850160051c820191505b81811015620006f757828155600101620006e2565b5050505b505050565b81516001600160401b038111156200071c576200071c6200065b565b62000734816200072d845462000671565b84620006ad565b602080601f8311600181146200076c5760008415620007535750858301515b600019600386901b1c1916600185901b178555620006f7565b600085815260208120601f198616915b828110156200079d578886015182559484019460019091019084016200077c565b5085821015620007bc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156200080d578160001904821115620007f157620007f162000629565b80851615620007ff57918102915b93841c9390800290620007d1565b509250929050565b600082620008265750600162000655565b81620008355750600062000655565b81600181146200084e5760028114620008595762000879565b600191505062000655565b60ff8411156200086d576200086d62000629565b50506001821b62000655565b5060208310610133831016604e8410600b84101617156200089e575081810a62000655565b620008aa8383620007cc565b8060001904821115620008c157620008c162000629565b029392505050565b6000620008da60ff84168362000815565b9392505050565b808202811582820484141762000655576200065562000629565b6000602082840312156200090e57600080fd5b81516001600160a01b0381168114620008da57600080fd5b61251980620009366000396000f3fe60806040526004361061021e5760003560e01c8063715018a611610123578063b8632f8e116100ab578063dc89f88c1161006f578063dc89f88c14610636578063dd62ed3e1461064c578063e7aa150a14610692578063f2fde38b146106a8578063f887ea40146106c857600080fd5b8063b8632f8e14610585578063c5d32bb2146105a6578063cdc029fe146105d6578063d7d7442f146105f6578063dc01dd3d1461061657600080fd5b80638da5cb5b116100f25780638da5cb5b146104f257806395d89b4114610510578063a457c2d714610525578063a8aa1b3114610545578063a9059cbb1461056557600080fd5b8063715018a61461046f57806375f0a874146104845780637b46eee5146104bc578063870069ea146104d257600080fd5b8063335aad0e116101a65780634ada218b116101755780634ada218b146103cc5780634b72f005146103ed5780634e736f221461040357806366a88d961461042357806370a082311461043957600080fd5b8063335aad0e1461034c578063395093511461036c578063481518a01461038c5780634a2b3b13146103ac57600080fd5b80631340538f116101ed5780631340538f146102bc57806318160ddd146102dc5780631d97b7cd146102fb57806323b872dd14610310578063313ce5671461033057600080fd5b8063068b26f11461022a57806306fdde0314610241578063095ea7b31461026c5780630fdf8d771461029c57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106e8565b005b34801561024d57600080fd5b5061025661077d565b6040516102639190611fb5565b60405180910390f35b34801561027857600080fd5b5061028c610287366004612018565b61080f565b6040519015158152602001610263565b3480156102a857600080fd5b5061023f6102b7366004612052565b610826565b3480156102c857600080fd5b5061023f6102d736600461208b565b6108dc565b3480156102e857600080fd5b506002545b604051908152602001610263565b34801561030757600080fd5b5061023f610924565b34801561031c57600080fd5b5061028c61032b3660046120af565b6109c3565b34801561033c57600080fd5b5060405160128152602001610263565b34801561035857600080fd5b5061023f6103673660046120f0565b610a74565b34801561037857600080fd5b5061028c610387366004612018565b610b4e565b34801561039857600080fd5b5061023f6103a7366004612018565b610b85565b3480156103b857600080fd5b5061023f6103c736600461210d565b610d60565b3480156103d857600080fd5b5060075461028c90600160b01b900460ff1681565b3480156103f957600080fd5b506102ed60085481565b34801561040f57600080fd5b5061023f61041e36600461210d565b610db0565b34801561042f57600080fd5b506102ed60095481565b34801561044557600080fd5b506102ed6104543660046120f0565b6001600160a01b031660009081526020819052604090205490565b34801561047b57600080fd5b5061023f610e00565b34801561049057600080fd5b50600d546104a4906001600160a01b031681565b6040516001600160a01b039091168152602001610263565b3480156104c857600080fd5b506102ed60155481565b3480156104de57600080fd5b5061023f6104ed366004612139565b610e36565b3480156104fe57600080fd5b506005546001600160a01b03166104a4565b34801561051c57600080fd5b50610256610ee4565b34801561053157600080fd5b5061028c610540366004612018565b610ef3565b34801561055157600080fd5b506007546104a4906001600160a01b031681565b34801561057157600080fd5b5061028c610580366004612018565b610f8e565b34801561059157600080fd5b5060075461028c90600160a81b900460ff1681565b3480156105b257600080fd5b5061028c6105c13660046120f0565b60176020526000908152604090205460ff1681565b3480156105e257600080fd5b5061023f6105f13660046120f0565b610f9b565b34801561060257600080fd5b5061023f610611366004612139565b611075565b34801561062257600080fd5b5061023f610631366004612139565b6110bb565b34801561064257600080fd5b506102ed60165481565b34801561065857600080fd5b506102ed610667366004612152565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069e57600080fd5b506104a461dead81565b3480156106b457600080fd5b5061023f6106c33660046120f0565b6111b0565b3480156106d457600080fd5b506006546104a4906001600160a01b031681565b478061070f5760405162461bcd60e51b815260040161070690612180565b60405180910390fd5b478111156107555760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610706565b61077a8161076b6005546001600160a01b031690565b6001600160a01b031690611248565b50565b60606003805461078c906121c2565b80601f01602080910402602001604051908101604052809291908181526020018280546107b8906121c2565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b600061081c338484611361565b5060015b92915050565b6005546001600160a01b031633146108505760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b0382166108b15760405162461bcd60e51b815260206004820152602260248201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604482015261737360f01b6064820152608401610706565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109065760405162461bcd60e51b8152600401610706906121fc565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461094e5760405162461bcd60e51b8152600401610706906121fc565b600754600160b01b900460ff16156109a85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610706565b6007805461ffff60a81b191661010160a81b17905543600a55565b60006109d0848484611485565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a555760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610706565b610a698533610a648685612247565b611361565b506001949350505050565b6005546001600160a01b03163314610a9e5760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b038116610ac45760405162461bcd60e51b81526004016107069061225a565b306001600160a01b03821603610b145760405162461bcd60e51b815260206004820152601560248201527446656520416464792063616e6e6f7420626520434160581b6044820152606401610706565b600d80546001600160a01b039092166001600160a01b0319909216821790556000908152601760205260409020805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161081c918590610a6490869061229c565b306001600160a01b03831603610bfc5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610706565b60008111610c1c5760405162461bcd60e51b815260040161070690612180565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8491906122af565b811115610cc95760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610706565b816001600160a01b031663a9059cbb610cea6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b91906122c8565b505050565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610706906121fc565b604080516060810182528481526020810184905201819052600f92909255601055601155565b6005546001600160a01b03163314610dda5760405162461bcd60e51b8152600401610706906121fc565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610e2a5760405162461bcd60e51b8152600401610706906121fc565b610e3460006119c2565b565b6005546001600160a01b03163314610e605760405162461bcd60e51b8152600401610706906121fc565b620186a0811015610ec85760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b6064820152608401610706565b610ed46012600a6123c9565b610ede90826123d8565b60095550565b60606004805461078c906121c2565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610706565b610f843385610a648685612247565b5060019392505050565b600061081c338484611485565b6005546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b038116610feb5760405162461bcd60e51b81526004016107069061225a565b306001600160a01b0382160361103b5760405162461bcd60e51b815260206004820152601560248201527446656520416464792063616e6e6f7420626520434160581b6044820152606401610706565b600e80546001600160a01b039092166001600160a01b0319909216821790556000908152601760205260409020805460ff19166001179055565b6005546001600160a01b0316331461109f5760405162461bcd60e51b8152600401610706906121fc565b6110ab6012600a6123c9565b6110b590826123d8565b60085550565b6005546001600160a01b031633146110e55760405162461bcd60e51b8152600401610706906121fc565b600754600160b01b900460ff161561114d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610706565b600481106111ab5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203320426044820152646c6f636b7360d81b6064820152608401610706565b600b55565b6005546001600160a01b031633146111da5760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b03811661123f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610706565b61077a816119c2565b804710156112985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610706565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146112e5576040519150601f19603f3d011682016040523d82523d6000602084013e6112ea565b606091505b5050905080610d5b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610706565b6001600160a01b0383166113c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610706565b6001600160a01b0382166114245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610706565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114e75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610706565b6001600160a01b03831660009081526017602052604090205460ff1615801561152957506001600160a01b03821660009081526017602052604090205460ff16155b1561157d57600754600160b01b900460ff1661157d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610706565b6007546001600160a01b0384811691161480156115b357506001600160a01b03821660009081526017602052604090205460ff16155b1561163357600954816115db846001600160a01b031660009081526020819052604090205490565b6115e5919061229c565b11156116335760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610706565b6007546001600160a01b0384811691161480159061166a57506001600160a01b03821660009081526017602052604090205460ff16155b801561168f57506001600160a01b03831660009081526017602052604090205460ff16155b15611724576007546001600160a01b0383811691161461172457600954816116cc846001600160a01b031660009081526020819052604090205490565b6116d6919061229c565b11156117245760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610706565b60008061174b60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03861660009081526017602052604081205460ff1615801561178d57506001600160a01b03861660009081526017602052604090205460ff16155b80156117a75750600b54600a546117a4919061229c565b43105b6001600160a01b03881660009081526017602052604090205490915060ff16806117e957506001600160a01b03861660009081526017602052604090205460ff165b156117f757600092506118ed565b6007546001600160a01b038781169116148015611812575080155b1561185f5760145460125460135461182a919061229c565b611834919061229c565b60408051606081018252601254815260135460208201526014549181019190915290945091506118ed565b6007546001600160a01b03888116911614801561188a57506006546001600160a01b03878116911614155b8015611894575080155b156118e157601154600f546010546118ac919061229c565b6118b6919061229c565b60408051606081018252600f54815260105460208201526011549181019190915290945091506118ed565b80156118ed57600c5493505b60646118f985876123d8565b61190391906123ef565b6007549093506001600160a01b0388811691161480159061193257506007546001600160a01b03878116911614155b1561193c57600092505b600754600160a81b900460ff16801561196357506007546001600160a01b03888116911614155b15611972576119728483611a14565b61198687876119818689612247565b611b8e565b82156119b95783156119b957600060646119a086886123d8565b6119aa91906123ef565b90506119b7883083611b8e565b505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16611b8a576007805460ff60a01b1916600160a01b1790558115611b7c57306000908152602081905260409020546008548110611b7a5760016008541115611a6757506008545b6000611a748460026123d8565b9050600081846020015184611a8991906123d8565b611a9391906123ef565b90506000611aa18285612247565b905047611aad82611d66565b6000611ab98247612247565b90506000876020015186611acd9190612247565b611ad790836123ef565b90506000886020015182611aeb91906123d8565b90508015611afd57611afd8682611ee0565b8851600090611b0d8460026123d8565b611b1791906123d8565b90508015611b3557600d54611b35906001600160a01b031682611248565b60408a0151600090611b488560026123d8565b611b5291906123d8565b90508015611b7057600e54611b70906001600160a01b031682611248565b5050505050505050505b505b6007805460ff60a01b191690555b5050565b6001600160a01b038316611bf25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610706565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610706565b6001600160a01b03831660009081526020819052604090205481811015611ccc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610706565b611cd68282612247565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d0c90849061229c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5891815260200190565b60405180910390a350505050565b60008111611d865760405162461bcd60e51b815260040161070690612180565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611dbb57611dbb612411565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e389190612427565b81600181518110611e4b57611e4b612411565b6001600160a01b039283166020918202929092010152600654611e719130911684611361565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611eaa908590600090869030904290600401612444565b600060405180830381600087803b158015611ec457600080fd5b505af1158015611ed8573d6000803e3d6000fd5b505050505050565b600654611ef89030906001600160a01b031684611361565b6006546001600160a01b031663f305d719823085600080611f216005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611f89573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fae91906124b5565b5050505050565b600060208083528351808285015260005b81811015611fe257858101830151858201604001528201611fc6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461077a57600080fd5b6000806040838503121561202b57600080fd5b823561203681612003565b946020939093013593505050565b801515811461077a57600080fd5b6000806040838503121561206557600080fd5b823561207081612003565b9150602083013561208081612044565b809150509250929050565b60006020828403121561209d57600080fd5b81356120a881612044565b9392505050565b6000806000606084860312156120c457600080fd5b83356120cf81612003565b925060208401356120df81612003565b929592945050506040919091013590565b60006020828403121561210257600080fd5b81356120a881612003565b60008060006060848603121561212257600080fd5b505081359360208301359350604090920135919050565b60006020828403121561214b57600080fd5b5035919050565b6000806040838503121561216557600080fd5b823561217081612003565b9150602083013561208081612003565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b600181811c908216806121d657607f821691505b6020821081036121f657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561082057610820612231565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b8082018082111561082057610820612231565b6000602082840312156122c157600080fd5b5051919050565b6000602082840312156122da57600080fd5b81516120a881612044565b600181815b8085111561232057816000190482111561230657612306612231565b8085161561231357918102915b93841c93908002906122ea565b509250929050565b60008261233757506001610820565b8161234457506000610820565b816001811461235a576002811461236457612380565b6001915050610820565b60ff84111561237557612375612231565b50506001821b610820565b5060208310610133831016604e8410600b84101617156123a3575081810a610820565b6123ad83836122e5565b80600019048211156123c1576123c1612231565b029392505050565b60006120a860ff841683612328565b808202811582820484141761082057610820612231565b60008261240c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561243957600080fd5b81516120a881612003565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124945784516001600160a01b03168352938301939183019160010161246f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124ca57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206f9e019df77584310560a6201ff50ee34ca3ea42f7c1a6f4335b78c35c70f79a64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063715018a611610123578063b8632f8e116100ab578063dc89f88c1161006f578063dc89f88c14610636578063dd62ed3e1461064c578063e7aa150a14610692578063f2fde38b146106a8578063f887ea40146106c857600080fd5b8063b8632f8e14610585578063c5d32bb2146105a6578063cdc029fe146105d6578063d7d7442f146105f6578063dc01dd3d1461061657600080fd5b80638da5cb5b116100f25780638da5cb5b146104f257806395d89b4114610510578063a457c2d714610525578063a8aa1b3114610545578063a9059cbb1461056557600080fd5b8063715018a61461046f57806375f0a874146104845780637b46eee5146104bc578063870069ea146104d257600080fd5b8063335aad0e116101a65780634ada218b116101755780634ada218b146103cc5780634b72f005146103ed5780634e736f221461040357806366a88d961461042357806370a082311461043957600080fd5b8063335aad0e1461034c578063395093511461036c578063481518a01461038c5780634a2b3b13146103ac57600080fd5b80631340538f116101ed5780631340538f146102bc57806318160ddd146102dc5780631d97b7cd146102fb57806323b872dd14610310578063313ce5671461033057600080fd5b8063068b26f11461022a57806306fdde0314610241578063095ea7b31461026c5780630fdf8d771461029c57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106e8565b005b34801561024d57600080fd5b5061025661077d565b6040516102639190611fb5565b60405180910390f35b34801561027857600080fd5b5061028c610287366004612018565b61080f565b6040519015158152602001610263565b3480156102a857600080fd5b5061023f6102b7366004612052565b610826565b3480156102c857600080fd5b5061023f6102d736600461208b565b6108dc565b3480156102e857600080fd5b506002545b604051908152602001610263565b34801561030757600080fd5b5061023f610924565b34801561031c57600080fd5b5061028c61032b3660046120af565b6109c3565b34801561033c57600080fd5b5060405160128152602001610263565b34801561035857600080fd5b5061023f6103673660046120f0565b610a74565b34801561037857600080fd5b5061028c610387366004612018565b610b4e565b34801561039857600080fd5b5061023f6103a7366004612018565b610b85565b3480156103b857600080fd5b5061023f6103c736600461210d565b610d60565b3480156103d857600080fd5b5060075461028c90600160b01b900460ff1681565b3480156103f957600080fd5b506102ed60085481565b34801561040f57600080fd5b5061023f61041e36600461210d565b610db0565b34801561042f57600080fd5b506102ed60095481565b34801561044557600080fd5b506102ed6104543660046120f0565b6001600160a01b031660009081526020819052604090205490565b34801561047b57600080fd5b5061023f610e00565b34801561049057600080fd5b50600d546104a4906001600160a01b031681565b6040516001600160a01b039091168152602001610263565b3480156104c857600080fd5b506102ed60155481565b3480156104de57600080fd5b5061023f6104ed366004612139565b610e36565b3480156104fe57600080fd5b506005546001600160a01b03166104a4565b34801561051c57600080fd5b50610256610ee4565b34801561053157600080fd5b5061028c610540366004612018565b610ef3565b34801561055157600080fd5b506007546104a4906001600160a01b031681565b34801561057157600080fd5b5061028c610580366004612018565b610f8e565b34801561059157600080fd5b5060075461028c90600160a81b900460ff1681565b3480156105b257600080fd5b5061028c6105c13660046120f0565b60176020526000908152604090205460ff1681565b3480156105e257600080fd5b5061023f6105f13660046120f0565b610f9b565b34801561060257600080fd5b5061023f610611366004612139565b611075565b34801561062257600080fd5b5061023f610631366004612139565b6110bb565b34801561064257600080fd5b506102ed60165481565b34801561065857600080fd5b506102ed610667366004612152565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069e57600080fd5b506104a461dead81565b3480156106b457600080fd5b5061023f6106c33660046120f0565b6111b0565b3480156106d457600080fd5b506006546104a4906001600160a01b031681565b478061070f5760405162461bcd60e51b815260040161070690612180565b60405180910390fd5b478111156107555760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610706565b61077a8161076b6005546001600160a01b031690565b6001600160a01b031690611248565b50565b60606003805461078c906121c2565b80601f01602080910402602001604051908101604052809291908181526020018280546107b8906121c2565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b600061081c338484611361565b5060015b92915050565b6005546001600160a01b031633146108505760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b0382166108b15760405162461bcd60e51b815260206004820152602260248201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604482015261737360f01b6064820152608401610706565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109065760405162461bcd60e51b8152600401610706906121fc565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461094e5760405162461bcd60e51b8152600401610706906121fc565b600754600160b01b900460ff16156109a85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610706565b6007805461ffff60a81b191661010160a81b17905543600a55565b60006109d0848484611485565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a555760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610706565b610a698533610a648685612247565b611361565b506001949350505050565b6005546001600160a01b03163314610a9e5760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b038116610ac45760405162461bcd60e51b81526004016107069061225a565b306001600160a01b03821603610b145760405162461bcd60e51b815260206004820152601560248201527446656520416464792063616e6e6f7420626520434160581b6044820152606401610706565b600d80546001600160a01b039092166001600160a01b0319909216821790556000908152601760205260409020805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161081c918590610a6490869061229c565b306001600160a01b03831603610bfc5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610706565b60008111610c1c5760405162461bcd60e51b815260040161070690612180565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8491906122af565b811115610cc95760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610706565b816001600160a01b031663a9059cbb610cea6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b91906122c8565b505050565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610706906121fc565b604080516060810182528481526020810184905201819052600f92909255601055601155565b6005546001600160a01b03163314610dda5760405162461bcd60e51b8152600401610706906121fc565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610e2a5760405162461bcd60e51b8152600401610706906121fc565b610e3460006119c2565b565b6005546001600160a01b03163314610e605760405162461bcd60e51b8152600401610706906121fc565b620186a0811015610ec85760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b6064820152608401610706565b610ed46012600a6123c9565b610ede90826123d8565b60095550565b60606004805461078c906121c2565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610706565b610f843385610a648685612247565b5060019392505050565b600061081c338484611485565b6005546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b038116610feb5760405162461bcd60e51b81526004016107069061225a565b306001600160a01b0382160361103b5760405162461bcd60e51b815260206004820152601560248201527446656520416464792063616e6e6f7420626520434160581b6044820152606401610706565b600e80546001600160a01b039092166001600160a01b0319909216821790556000908152601760205260409020805460ff19166001179055565b6005546001600160a01b0316331461109f5760405162461bcd60e51b8152600401610706906121fc565b6110ab6012600a6123c9565b6110b590826123d8565b60085550565b6005546001600160a01b031633146110e55760405162461bcd60e51b8152600401610706906121fc565b600754600160b01b900460ff161561114d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610706565b600481106111ab5760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203320426044820152646c6f636b7360d81b6064820152608401610706565b600b55565b6005546001600160a01b031633146111da5760405162461bcd60e51b8152600401610706906121fc565b6001600160a01b03811661123f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610706565b61077a816119c2565b804710156112985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610706565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146112e5576040519150601f19603f3d011682016040523d82523d6000602084013e6112ea565b606091505b5050905080610d5b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610706565b6001600160a01b0383166113c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610706565b6001600160a01b0382166114245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610706565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114e75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610706565b6001600160a01b03831660009081526017602052604090205460ff1615801561152957506001600160a01b03821660009081526017602052604090205460ff16155b1561157d57600754600160b01b900460ff1661157d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610706565b6007546001600160a01b0384811691161480156115b357506001600160a01b03821660009081526017602052604090205460ff16155b1561163357600954816115db846001600160a01b031660009081526020819052604090205490565b6115e5919061229c565b11156116335760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610706565b6007546001600160a01b0384811691161480159061166a57506001600160a01b03821660009081526017602052604090205460ff16155b801561168f57506001600160a01b03831660009081526017602052604090205460ff16155b15611724576007546001600160a01b0383811691161461172457600954816116cc846001600160a01b031660009081526020819052604090205490565b6116d6919061229c565b11156117245760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610706565b60008061174b60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03861660009081526017602052604081205460ff1615801561178d57506001600160a01b03861660009081526017602052604090205460ff16155b80156117a75750600b54600a546117a4919061229c565b43105b6001600160a01b03881660009081526017602052604090205490915060ff16806117e957506001600160a01b03861660009081526017602052604090205460ff165b156117f757600092506118ed565b6007546001600160a01b038781169116148015611812575080155b1561185f5760145460125460135461182a919061229c565b611834919061229c565b60408051606081018252601254815260135460208201526014549181019190915290945091506118ed565b6007546001600160a01b03888116911614801561188a57506006546001600160a01b03878116911614155b8015611894575080155b156118e157601154600f546010546118ac919061229c565b6118b6919061229c565b60408051606081018252600f54815260105460208201526011549181019190915290945091506118ed565b80156118ed57600c5493505b60646118f985876123d8565b61190391906123ef565b6007549093506001600160a01b0388811691161480159061193257506007546001600160a01b03878116911614155b1561193c57600092505b600754600160a81b900460ff16801561196357506007546001600160a01b03888116911614155b15611972576119728483611a14565b61198687876119818689612247565b611b8e565b82156119b95783156119b957600060646119a086886123d8565b6119aa91906123ef565b90506119b7883083611b8e565b505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16611b8a576007805460ff60a01b1916600160a01b1790558115611b7c57306000908152602081905260409020546008548110611b7a5760016008541115611a6757506008545b6000611a748460026123d8565b9050600081846020015184611a8991906123d8565b611a9391906123ef565b90506000611aa18285612247565b905047611aad82611d66565b6000611ab98247612247565b90506000876020015186611acd9190612247565b611ad790836123ef565b90506000886020015182611aeb91906123d8565b90508015611afd57611afd8682611ee0565b8851600090611b0d8460026123d8565b611b1791906123d8565b90508015611b3557600d54611b35906001600160a01b031682611248565b60408a0151600090611b488560026123d8565b611b5291906123d8565b90508015611b7057600e54611b70906001600160a01b031682611248565b5050505050505050505b505b6007805460ff60a01b191690555b5050565b6001600160a01b038316611bf25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610706565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610706565b6001600160a01b03831660009081526020819052604090205481811015611ccc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610706565b611cd68282612247565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d0c90849061229c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5891815260200190565b60405180910390a350505050565b60008111611d865760405162461bcd60e51b815260040161070690612180565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611dbb57611dbb612411565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e389190612427565b81600181518110611e4b57611e4b612411565b6001600160a01b039283166020918202929092010152600654611e719130911684611361565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611eaa908590600090869030904290600401612444565b600060405180830381600087803b158015611ec457600080fd5b505af1158015611ed8573d6000803e3d6000fd5b505050505050565b600654611ef89030906001600160a01b031684611361565b6006546001600160a01b031663f305d719823085600080611f216005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611f89573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fae91906124b5565b5050505050565b600060208083528351808285015260005b81811015611fe257858101830151858201604001528201611fc6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461077a57600080fd5b6000806040838503121561202b57600080fd5b823561203681612003565b946020939093013593505050565b801515811461077a57600080fd5b6000806040838503121561206557600080fd5b823561207081612003565b9150602083013561208081612044565b809150509250929050565b60006020828403121561209d57600080fd5b81356120a881612044565b9392505050565b6000806000606084860312156120c457600080fd5b83356120cf81612003565b925060208401356120df81612003565b929592945050506040919091013590565b60006020828403121561210257600080fd5b81356120a881612003565b60008060006060848603121561212257600080fd5b505081359360208301359350604090920135919050565b60006020828403121561214b57600080fd5b5035919050565b6000806040838503121561216557600080fd5b823561217081612003565b9150602083013561208081612003565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b600181811c908216806121d657607f821691505b6020821081036121f657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561082057610820612231565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b8082018082111561082057610820612231565b6000602082840312156122c157600080fd5b5051919050565b6000602082840312156122da57600080fd5b81516120a881612044565b600181815b8085111561232057816000190482111561230657612306612231565b8085161561231357918102915b93841c93908002906122ea565b509250929050565b60008261233757506001610820565b8161234457506000610820565b816001811461235a576002811461236457612380565b6001915050610820565b60ff84111561237557612375612231565b50506001821b610820565b5060208310610133831016604e8410600b84101617156123a3575081810a610820565b6123ad83836122e5565b80600019048211156123c1576123c1612231565b029392505050565b60006120a860ff841683612328565b808202811582820484141761082057610820612231565b60008261240c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561243957600080fd5b81516120a881612003565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124945784516001600160a01b03168352938301939183019160010161246f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124ca57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206f9e019df77584310560a6201ff50ee34ca3ea42f7c1a6f4335b78c35c70f79a64736f6c63430008130033

Deployed Bytecode Sourcemap

11959:11418:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22576:328;;;;;;;;;;;;;:::i;:::-;;2502:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14321:161;;;;;;;;;;-1:-1:-1;14321:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;14321:161:0;1023:187:1;22154:194:0;;;;;;;;;;-1:-1:-1;22154:194:0;;;;;:::i;:::-;;:::i;20405:102::-;;;;;;;;;;-1:-1:-1;20405:102:0;;;;;:::i;:::-;;:::i;3622:108::-;;;;;;;;;;-1:-1:-1;3710:12:0;;3622:108;;;2117:25:1;;;2105:2;2090:18;3622:108:0;1971:177:1;21041:211:0;;;;;;;;;;;;;:::i;14490:448::-;;;;;;;;;;-1:-1:-1;14490:448:0;;;;;:::i;:::-;;:::i;3464:93::-;;;;;;;;;;-1:-1:-1;3464:93:0;;3547:2;2756:36:1;;2744:2;2729:18;3464:93:0;2614:184:1;21518:308:0;;;;;;;;;;-1:-1:-1;21518:308:0;;;;;:::i;:::-;;:::i;14946:248::-;;;;;;;;;;-1:-1:-1;14946:248:0;;;;;:::i;:::-;;:::i;22912:407::-;;;;;;;;;;-1:-1:-1;22912:407:0;;;;;:::i;:::-;;:::i;20669:177::-;;;;;;;;;;-1:-1:-1;20669:177:0;;;;;:::i;:::-;;:::i;12176:34::-;;;;;;;;;;-1:-1:-1;12176:34:0;;;;-1:-1:-1;;;12176:34:0;;;;;;12219:45;;;;;;;;;;;;;;;;20854:179;;;;;;;;;;-1:-1:-1;20854:179:0;;;;;:::i;:::-;;:::i;12271:44::-;;;;;;;;;;;;;;;;3793:127;;;;;;;;;;-1:-1:-1;3793:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3894:18:0;3867:7;3894:18;;;;;;;;;;;;3793:127;10622:94;;;;;;;;;;;;;:::i;12432:75::-;;;;;;;;;;-1:-1:-1;12432:75:0;;;;-1:-1:-1;;;;;12432:75:0;;;;;;-1:-1:-1;;;;;3540:32:1;;;3522:51;;3510:2;3495:18;12432:75:0;3376:203:1;12891:91:0;;;;;;;;;;;;;;;;22356:208;;;;;;;;;;-1:-1:-1;22356:208:0;;;;;:::i;:::-;;:::i;10399:87::-;;;;;;;;;;-1:-1:-1;10472:6:0;;-1:-1:-1;;;;;10472:6:0;10399:87;;2721:104;;;;;;;;;;;;;:::i;15202:410::-;;;;;;;;;;-1:-1:-1;15202:410:0;;;;;:::i;:::-;;:::i;12076:19::-;;;;;;;;;;-1:-1:-1;12076:19:0;;;;-1:-1:-1;;;;;12076:19:0;;;15620:165;;;;;;;;;;-1:-1:-1;15620:165:0;;;;;:::i;:::-;;:::i;12139:30::-;;;;;;;;;;-1:-1:-1;12139:30:0;;;;-1:-1:-1;;;12139:30:0;;;;;;13092:41;;;;;;;;;;-1:-1:-1;13092:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21834:312;;;;;;;;;;-1:-1:-1;21834:312:0;;;;;:::i;:::-;;:::i;20515:146::-;;;;;;;;;;-1:-1:-1;20515:146:0;;;;;:::i;:::-;;:::i;21260:250::-;;;;;;;;;;-1:-1:-1;21260:250:0;;;;;:::i;:::-;;:::i;12988:95::-;;;;;;;;;;;;;;;;4412:201;;;;;;;;;;-1:-1:-1;4412:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4578:18:0;;;4546:7;4578:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4412:201;12596:77;;;;;;;;;;;;12631:42;12596:77;;10724:192;;;;;;;;;;-1:-1:-1;10724:192:0;;;;;:::i;:::-;;:::i;12048:21::-;;;;;;;;;;-1:-1:-1;12048:21:0;;;;-1:-1:-1;;;;;12048:21:0;;;22576:328;22652:21;22692:22;22684:69;;;;-1:-1:-1;;;22684:69:0;;;;;;;:::i;:::-;;;;;;;;;22794:21;22772:18;:43;;22764:75;;;;-1:-1:-1;;;22764:75:0;;4990:2:1;22764:75:0;;;4972:21:1;5029:2;5009:18;;;5002:30;-1:-1:-1;;;5048:18:1;;;5041:49;5107:18;;22764:75:0;4788:343:1;22764:75:0;22850:46;22877:18;22858:7;10472:6;;-1:-1:-1;;;;;10472:6:0;;10399:87;22858:7;-1:-1:-1;;;;;22850:26:0;;;:46::i;:::-;22612:292;22576:328::o;2502:100::-;2556:13;2589:5;2582:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2502:100;:::o;14321:161::-;14396:4;14413:39;304:10;14436:7;14445:6;14413:8;:39::i;:::-;-1:-1:-1;14470:4:0;14321:161;;;;;:::o;22154:194::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22241:22:0;::::1;22233:69;;;::::0;-1:-1:-1;;;22233:69:0;;6084:2:1;22233:69:0::1;::::0;::::1;6066:21:1::0;6123:2;6103:18;;;6096:30;6162:34;6142:18;;;6135:62;-1:-1:-1;;;6213:18:1;;;6206:32;6255:19;;22233:69:0::1;5882:398:1::0;22233:69:0::1;-1:-1:-1::0;;;;;22313:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;22313:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22154:194::o;20405:102::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;20480:10:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;20480:19:0::1;-1:-1:-1::0;;;;20480:19:0;;::::1;::::0;;;::::1;::::0;;20405:102::o;21041:211::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;21105:14:::1;::::0;-1:-1:-1;;;21105:14:0;::::1;;;21104:15;21096:52;;;::::0;-1:-1:-1;;;21096:52:0;;6487:2:1;21096:52:0::1;::::0;::::1;6469:21:1::0;6526:2;6506:18;;;6499:30;6565:26;6545:18;;;6538:54;6609:18;;21096:52:0::1;6285:348:1::0;21096:52:0::1;21159:14;:21:::0;;-1:-1:-1;;;;21191:17:0;-1:-1:-1;;;21191:17:0;;;21232:12:::1;21219:10;:25:::0;21041:211::o;14490:448::-;14622:4;14639:36;14649:6;14657:9;14668:6;14639:9;:36::i;:::-;-1:-1:-1;;;;;14715:19:0;;14688:24;14715:19;;;:11;:19;;;;;;;;304:10;14715:33;;;;;;;;14767:26;;;;14759:79;;;;-1:-1:-1;;;14759:79:0;;6840:2:1;14759:79:0;;;6822:21:1;6879:2;6859:18;;;6852:30;6918:34;6898:18;;;6891:62;-1:-1:-1;;;6969:18:1;;;6962:38;7017:19;;14759:79:0;6638:404:1;14759:79:0;14849:57;14858:6;304:10;14880:25;14899:6;14880:16;:25;:::i;:::-;14849:8;:57::i;:::-;-1:-1:-1;14926:4:0;;14490:448;-1:-1:-1;;;;14490:448:0:o;21518:308::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21607:24:0;::::1;21599:70;;;;-1:-1:-1::0;;;21599:70:0::1;;;;;;;:::i;:::-;21710:4;-1:-1:-1::0;;;;;21688:27:0;::::1;::::0;21680:60:::1;;;::::0;-1:-1:-1;;;21680:60:0;;7917:2:1;21680:60:0::1;::::0;::::1;7899:21:1::0;7956:2;7936:18;;;7929:30;-1:-1:-1;;;7975:18:1;;;7968:51;8036:18;;21680:60:0::1;7715:345:1::0;21680:60:0::1;21751:15;:28:::0;;-1:-1:-1;;;;;21751:28:0;;::::1;-1:-1:-1::0;;;;;;21751:28:0;;::::1;::::0;::::1;::::0;;:15:::1;21790:21:::0;;;:9:::1;:21;::::0;;;;:28;;-1:-1:-1;;21790:28:0::1;21751::::0;21790::::1;::::0;;21518:308::o;14946:248::-;304:10;15062:4;15116:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15116:34:0;;;;;;;;;;15062:4;;15084:80;;15107:7;;15116:47;;15153:10;;15116:47;:::i;22912:407::-;23025:4;-1:-1:-1;;;;;23003:27:0;;;22995:94;;;;-1:-1:-1;;;22995:94:0;;8397:2:1;22995:94:0;;;8379:21:1;8436:2;8416:18;;;8409:30;8475:34;8455:18;;;8448:62;-1:-1:-1;;;8526:18:1;;;8519:52;8588:19;;22995:94:0;8195:418:1;22995:94:0;23118:1;23108:7;:11;23100:58;;;;-1:-1:-1;;;23100:58:0;;;;;;;:::i;:::-;23188:43;;-1:-1:-1;;;23188:43:0;;23225:4;23188:43;;;3522:51:1;-1:-1:-1;;;;;23188:28:0;;;;;3495:18:1;;23188:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23177:7;:54;;23169:86;;;;-1:-1:-1;;;23169:86:0;;4990:2:1;23169:86:0;;;4972:21:1;5029:2;5009:18;;;5002:30;-1:-1:-1;;;5048:18:1;;;5041:49;5107:18;;23169:86:0;4788:343:1;23169:86:0;23273:10;-1:-1:-1;;;;;23266:27:0;;23294:7;10472:6;;-1:-1:-1;;;;;10472:6:0;;10399:87;23294:7;23266:45;;-1:-1:-1;;;;;;23266:45:0;;;;;;;-1:-1:-1;;;;;8999:32:1;;;23266:45:0;;;8981:51:1;9048:18;;;9041:34;;;8954:18;;23266:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22912:407;;:::o;20669:177::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;20795:43:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;20784:8:::1;:54:::0;;;;;;;;20669:177::o;20854:179::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;20982:43:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;20970:9:::1;:55:::0;;;;;;;;20854:179::o;10622:94::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;10687:21:::1;10705:1;10687:9;:21::i;:::-;10622:94::o:0;22356:208::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;22449:3:::1;22436:9;:16;;22428:73;;;::::0;-1:-1:-1;;;22428:73:0;;9538:2:1;22428:73:0::1;::::0;::::1;9520:21:1::0;9577:2;9557:18;;;9550:30;9616:34;9596:18;;;9589:62;-1:-1:-1;;;9667:18:1;;;9660:42;9719:19;;22428:73:0::1;9336:408:1::0;22428:73:0::1;22541:14;3547:2:::0;22541::::1;:14;:::i;:::-;22529:26;::::0;:9;:26:::1;:::i;:::-;22512:14;:43:::0;-1:-1:-1;22356:208:0:o;2721:104::-;2777:13;2810:7;2803:14;;;;;:::i;15202:410::-;304:10;15323:4;15372:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15372:34:0;;;;;;;;;;15425:35;;;;15417:85;;;;-1:-1:-1;;;15417:85:0;;11507:2:1;15417:85:0;;;11489:21:1;11546:2;11526:18;;;11519:30;11585:34;11565:18;;;11558:62;-1:-1:-1;;;11636:18:1;;;11629:35;11681:19;;15417:85:0;11305:401:1;15417:85:0;15513:67;304:10;15536:7;15545:34;15564:15;15545:16;:34;:::i;15513:67::-;-1:-1:-1;15600:4:0;;15202:410;-1:-1:-1;;;15202:410:0:o;15620:165::-;15698:4;15715:40;15725:10;15737:9;15748:6;15715:9;:40::i;21834:312::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21925:24:0;::::1;21917:70;;;;-1:-1:-1::0;;;21917:70:0::1;;;;;;;:::i;:::-;22028:4;-1:-1:-1::0;;;;;22006:27:0;::::1;::::0;21998:60:::1;;;::::0;-1:-1:-1;;;21998:60:0;;7917:2:1;21998:60:0::1;::::0;::::1;7899:21:1::0;7956:2;7936:18;;;7929:30;-1:-1:-1;;;7975:18:1;;;7968:51;8036:18;;21998:60:0::1;7715:345:1::0;21998:60:0::1;22069:17;:30:::0;;-1:-1:-1;;;;;22069:30:0;;::::1;-1:-1:-1::0;;;;;;22069:30:0;;::::1;::::0;::::1;::::0;;:17:::1;22110:21:::0;;;:9:::1;:21;::::0;;;;:28;;-1:-1:-1;;22110:28:0::1;22069:30:::0;22110:28:::1;::::0;;21834:312::o;20515:146::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;20639:14:::1;3547:2:::0;20639::::1;:14;:::i;:::-;20617:36;::::0;:19;:36:::1;:::i;:::-;20599:15;:54:::0;-1:-1:-1;20515:146:0:o;21260:250::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;21342:14:::1;::::0;-1:-1:-1;;;21342:14:0;::::1;;;21341:15;21333:65;;;::::0;-1:-1:-1;;;21333:65:0;;11913:2:1;21333:65:0::1;::::0;::::1;11895:21:1::0;11952:2;11932:18;;;11925:30;11991:34;11971:18;;;11964:62;-1:-1:-1;;;12042:18:1;;;12035:35;12087:19;;21333:65:0::1;11711:401:1::0;21333:65:0::1;21429:1;21417:9;:13;21409:62;;;::::0;-1:-1:-1;;;21409:62:0;;12319:2:1;21409:62:0::1;::::0;::::1;12301:21:1::0;12358:2;12338:18;;;12331:30;12397:34;12377:18;;;12370:62;-1:-1:-1;;;12448:18:1;;;12441:35;12493:19;;21409:62:0::1;12117:401:1::0;21409:62:0::1;21482:8;:20:::0;21260:250::o;10724:192::-;10472:6;;-1:-1:-1;;;;;10472:6:0;304:10;10534:23;10526:68;;;;-1:-1:-1;;;10526:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10813:22:0;::::1;10805:73;;;::::0;-1:-1:-1;;;10805:73:0;;12725:2:1;10805:73:0::1;::::0;::::1;12707:21:1::0;12764:2;12744:18;;;12737:30;12803:34;12783:18;;;12776:62;-1:-1:-1;;;12854:18:1;;;12847:36;12900:19;;10805:73:0::1;12523:402:1::0;10805:73:0::1;10889:19;10899:8;10889:9;:19::i;9842:319::-:0;9957:6;9932:21;:31;;9924:73;;;;-1:-1:-1;;;9924:73:0;;13132:2:1;9924:73:0;;;13114:21:1;13171:2;13151:18;;;13144:30;13210:31;13190:18;;;13183:59;13259:18;;9924:73:0;12930:353:1;9924:73:0;10011:12;10029:9;-1:-1:-1;;;;;10029:14:0;10052:6;10029:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10010:54;;;10083:7;10075:78;;;;-1:-1:-1;;;10075:78:0;;13700:2:1;10075:78:0;;;13682:21:1;13739:2;13719:18;;;13712:30;13778:34;13758:18;;;13751:62;13849:28;13829:18;;;13822:56;13895:19;;10075:78:0;13498:422:1;9432:380:0;-1:-1:-1;;;;;9568:19:0;;9560:68;;;;-1:-1:-1;;;9560:68:0;;14127:2:1;9560:68:0;;;14109:21:1;14166:2;14146:18;;;14139:30;14205:34;14185:18;;;14178:62;-1:-1:-1;;;14256:18:1;;;14249:34;14300:19;;9560:68:0;13925:400:1;9560:68:0;-1:-1:-1;;;;;9647:21:0;;9639:68;;;;-1:-1:-1;;;9639:68:0;;14532:2:1;9639:68:0;;;14514:21:1;14571:2;14551:18;;;14544:30;14610:34;14590:18;;;14583:62;-1:-1:-1;;;14661:18:1;;;14654:32;14703:19;;9639:68:0;14330:398:1;9639:68:0;-1:-1:-1;;;;;9720:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9772:32;;2117:25:1;;;9772:32:0;;2090:18:1;9772:32:0;;;;;;;9432:380;;;:::o;15793:2160::-;15943:1;15934:6;:10;15926:64;;;;-1:-1:-1;;;15926:64:0;;14935:2:1;15926:64:0;;;14917:21:1;14974:2;14954:18;;;14947:30;15013:34;14993:18;;;14986:62;-1:-1:-1;;;15064:18:1;;;15057:39;15113:19;;15926:64:0;14733:405:1;15926:64:0;-1:-1:-1;;;;;16008:17:0;;;;;;:9;:17;;;;;;;;16007:18;:43;;;;-1:-1:-1;;;;;;16030:20:0;;;;;;:9;:20;;;;;;;;16029:21;16007:43;16003:122;;;16075:14;;-1:-1:-1;;;16075:14:0;;;;16067:46;;;;-1:-1:-1;;;16067:46:0;;15345:2:1;16067:46:0;;;15327:21:1;15384:2;15364:18;;;15357:30;-1:-1:-1;;;15403:18:1;;;15396:49;15462:18;;16067:46:0;15143:343:1;16067:46:0;16151:4;;-1:-1:-1;;;;;16141:14:0;;;16151:4;;16141:14;:39;;;;-1:-1:-1;;;;;;16160:20:0;;;;;;:9;:20;;;;;;;;16159:21;16141:39;16137:195;;;16238:14;;16228:6;16205:20;16215:9;-1:-1:-1;;;;;3894:18:0;3867:7;3894:18;;;;;;;;;;;;3793:127;16205:20;:29;;;;:::i;:::-;:47;;16197:123;;;;-1:-1:-1;;;16197:123:0;;15693:2:1;16197:123:0;;;15675:21:1;;;15712:18;;;15705:30;15771:34;15751:18;;;15744:62;15823:18;;16197:123:0;15491:356:1;16197:123:0;16358:4;;-1:-1:-1;;;;;16348:14:0;;;16358:4;;16348:14;;;;:39;;-1:-1:-1;;;;;;16367:20:0;;;;;;:9;:20;;;;;;;;16366:21;16348:39;:61;;;;-1:-1:-1;;;;;;16392:17:0;;;;;;:9;:17;;;;;;;;16391:18;16348:61;16344:295;;;16456:4;;-1:-1:-1;;;;;16443:17:0;;;16456:4;;16443:17;16439:189;;16522:14;;16512:6;16489:20;16499:9;-1:-1:-1;;;;;3894:18:0;3867:7;3894:18;;;;;;;;;;;;3793:127;16489:20;:29;;;;:::i;:::-;:47;;16481:131;;;;-1:-1:-1;;;16481:131:0;;15693:2:1;16481:131:0;;;15675:21:1;;;15712:18;;;15705:30;15771:34;15751:18;;;15744:62;15823:18;;16481:131:0;15491:356:1;16481:131:0;16658:15;16684:11;16706:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16706:25:0;-1:-1:-1;;;;;16764:17:0;;16744:16;16764:17;;;:9;:17;;;;;;;;16763:18;:56;;;;-1:-1:-1;;;;;;16799:20:0;;;;;;:9;:20;;;;;;;;16798:21;16763:56;:109;;;;;16864:8;;16851:10;;:21;;;;:::i;:::-;16836:12;:36;16763:109;-1:-1:-1;;;;;16889:17:0;;;;;;:9;:17;;;;;;16744:128;;-1:-1:-1;16889:17:0;;;:41;;-1:-1:-1;;;;;;16910:20:0;;;;;;:9;:20;;;;;;;;16889:41;16885:568;;;16951:1;16945:7;;16885:568;;;16987:4;;-1:-1:-1;;;;;16974:17:0;;;16987:4;;16974:17;:33;;;;;16996:11;16995:12;16974:33;16970:483;;;17079:21;;:9;17057:19;17035;;:41;;17057:19;17035:41;:::i;:::-;:65;;;;:::i;:::-;17115:24;;;;;;;;17130:9;17115:24;;;;;;;;;;;;;;;;;;17025:75;;-1:-1:-1;17115:24:0;-1:-1:-1;16970:483:0;;;17181:4;;-1:-1:-1;;;;;17171:14:0;;;17181:4;;17171:14;:46;;;;-1:-1:-1;17210:6:0;;-1:-1:-1;;;;;17189:28:0;;;17210:6;;17189:28;;17171:46;:62;;;;;17222:11;17221:12;17171:62;17167:286;;;17303:20;;:8;17282:18;17261;;:39;;17282:18;17261:39;:::i;:::-;:62;;;;:::i;:::-;17338:23;;;;;;;;17353:8;17338:23;;;;;;;;;;;;;;;;;;17251:72;;-1:-1:-1;17338:23:0;-1:-1:-1;17167:286:0;;;17393:11;17389:64;;;17431:10;;17421:20;;17389:64;17492:3;17472:16;17481:7;17472:6;:16;:::i;:::-;17471:24;;;;:::i;:::-;17520:4;;17465:30;;-1:-1:-1;;;;;;17510:14:0;;;17520:4;;17510:14;;;;:35;;-1:-1:-1;17541:4:0;;-1:-1:-1;;;;;17528:17:0;;;17541:4;;17528:17;;17510:35;17507:72;;;17567:1;17561:7;;17507:72;17603:10;;-1:-1:-1;;;17603:10:0;;;;:28;;;;-1:-1:-1;17627:4:0;;-1:-1:-1;;;;;17617:14:0;;;17627:4;;17617:14;;17603:28;17599:64;;;17633:30;17641:7;17650:12;17633:7;:30::i;:::-;17676:48;17692:6;17700:9;17711:12;17720:3;17711:6;:12;:::i;:::-;17676:15;:48::i;:::-;17739:7;;17735:211;;17773:11;;17769:164;;17805:17;17846:3;17826:16;17835:7;17826:6;:16;:::i;:::-;17825:24;;;;:::i;:::-;17805:44;;17868:49;17884:6;17900:4;17907:9;17868:15;:49::i;:::-;17786:147;17769:164;15915:2038;;;;15793:2160;;;:::o;10924:173::-;10999:6;;;-1:-1:-1;;;;;11016:17:0;;;-1:-1:-1;;;;;;11016:17:0;;;;;;;11049:40;;10999:6;;;11016:17;10999:6;;11049:40;;10980:16;;11049:40;10969:128;10924:173;:::o;17961:1469::-;13181:7;;-1:-1:-1;;;13181:7:0;;;;13176:101;;13205:7;:14;;-1:-1:-1;;;;13205:14:0;-1:-1:-1;;;13205:14:0;;;18052:49;;18083:7:::1;18052:49;18157:4;18113:23;3894:18:::0;;;;;;;;;;;18197:15:::1;::::0;18178:34;::::1;18174:1249;;18251:1;18233:15;;:19;18229:93;;;-1:-1:-1::0;18291:15:0::1;::::0;18229:93:::1;18338:19;18360:11;:7:::0;18370:1:::1;18360:11;:::i;:::-;18338:33;;18386:23;18454:11;18431:9;:19;;;18413:15;:37;;;;:::i;:::-;18412:53;;;;:::i;:::-;18386:79:::0;-1:-1:-1;18480:20:0::1;18503:33;18386:79:::0;18503:15;:33:::1;:::i;:::-;18480:56:::0;-1:-1:-1;18578:21:0::1;18616:30;18480:56:::0;18616:16:::1;:30::i;:::-;18663:20;18686:38;18710:14:::0;18686:21:::1;:38;:::i;:::-;18663:61;;18739:19;18791:9;:19;;;18777:11;:33;;;;:::i;:::-;18761:50;::::0;:12;:50:::1;:::i;:::-;18739:72;;18826:20;18863:9;:19;;;18849:11;:33;;;;:::i;:::-;18826:56:::0;-1:-1:-1;18903:17:0;;18899:101:::1;;18941:43;18954:15;18971:12;18941;:43::i;:::-;19057:19:::0;;19016:20:::1;::::0;19039:15:::1;:11:::0;19053:1:::1;19039:15;:::i;:::-;:37;;;;:::i;:::-;19016:60:::0;-1:-1:-1;19095:16:0;;19091:105:::1;;19140:15;::::0;19132:48:::1;::::0;-1:-1:-1;;;;;19140:15:0::1;19167:12:::0;19132:34:::1;:48::i;:::-;19255:21;::::0;::::1;::::0;19212:22:::1;::::0;19237:15:::1;:11:::0;19251:1:::1;19237:15;:::i;:::-;:39;;;;:::i;:::-;19212:64:::0;-1:-1:-1;19295:18:0;;19291:111:::1;;19342:17;::::0;19334:52:::1;::::0;-1:-1:-1;;;;;19342:17:0::1;19371:14:::0;19334:36:::1;:52::i;:::-;18214:1209;;;;;;;;;18174:1249;18039:1391;13234:1;13250:7:::0;:15;;-1:-1:-1;;;;13250:15:0;;;13176:101;17961:1469;;:::o;7933:578::-;-1:-1:-1;;;;;8073:20:0;;8065:70;;;;-1:-1:-1;;;8065:70:0;;16276:2:1;8065:70:0;;;16258:21:1;16315:2;16295:18;;;16288:30;16354:34;16334:18;;;16327:62;-1:-1:-1;;;16405:18:1;;;16398:35;16450:19;;8065:70:0;16074:401:1;8065:70:0;-1:-1:-1;;;;;8154:23:0;;8146:71;;;;-1:-1:-1;;;8146:71:0;;16682:2:1;8146:71:0;;;16664:21:1;16721:2;16701:18;;;16694:30;16760:34;16740:18;;;16733:62;-1:-1:-1;;;16811:18:1;;;16804:33;16854:19;;8146:71:0;16480:399:1;8146:71:0;-1:-1:-1;;;;;8254:17:0;;8230:21;8254:17;;;;;;;;;;;8290:23;;;;8282:74;;;;-1:-1:-1;;;8282:74:0;;17086:2:1;8282:74:0;;;17068:21:1;17125:2;17105:18;;;17098:30;17164:34;17144:18;;;17137:62;-1:-1:-1;;;17215:18:1;;;17208:36;17261:19;;8282:74:0;16884:402:1;8282:74:0;8387:22;8403:6;8387:13;:22;:::i;:::-;-1:-1:-1;;;;;8367:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8420:20;;;;;;;;:30;;8444:6;;8367:9;8420:30;;8444:6;;8420:30;:::i;:::-;;;;;;;;8485:9;-1:-1:-1;;;;;8468:35:0;8477:6;-1:-1:-1;;;;;8468:35:0;;8496:6;8468:35;;;;2117:25:1;;2105:2;2090:18;;1971:177;8468:35:0;;;;;;;;8054:457;7933:578;;;:::o;19438:521::-;19526:1;19512:11;:15;19504:62;;;;-1:-1:-1;;;19504:62:0;;;;;;;:::i;:::-;19601:16;;;19615:1;19601:16;;;;;;;;19577:21;;19601:16;;;;;;;;;;-1:-1:-1;19601:16:0;19577:40;;19646:4;19628;19633:1;19628:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19628:23:0;;;:7;;;;;;;;;;:23;;;;19672:6;;:13;;;-1:-1:-1;;;19672:13:0;;;;:6;;;;;:11;;:13;;;;;19628:7;;19672:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19662:4;19667:1;19662:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19662:23:0;;;:7;;;;;;;;;:23;19730:6;;19698:53;;19715:4;;19730:6;19739:11;19698:8;:53::i;:::-;19764:6;;:187;;-1:-1:-1;;;19764:187:0;;-1:-1:-1;;;;;19764:6:0;;;;:57;;:187;;19836:11;;19764:6;;19878:4;;19905;;19925:15;;19764:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19493:466;19438:521;:::o;19967:430::-;20080:6;;20048:53;;20065:4;;-1:-1:-1;;;;;20080:6:0;20089:11;20048:8;:53::i;:::-;20144:6;;-1:-1:-1;;;;;20144:6:0;:22;20175:9;20209:4;20229:11;20144:6;;20341:7;10472:6;;-1:-1:-1;;;;;10472:6:0;;10399:87;20341:7;20144:245;;;;;;-1:-1:-1;;;;;;20144:245:0;;;-1:-1:-1;;;;;19155:15:1;;;20144:245:0;;;19137:34:1;19187:18;;;19180:34;;;;19230:18;;;19223:34;;;;19273:18;;;19266:34;19337:15;;;19316:19;;;19309:44;20363:15:0;19369:19:1;;;19362:35;19071:19;;20144:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19967:430;;:::o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:382;1403:6;1411;1464:2;1452:9;1443:7;1439:23;1435:32;1432:52;;;1480:1;1477;1470:12;1432:52;1519:9;1506:23;1538:31;1563:5;1538:31;:::i;:::-;1588:5;-1:-1:-1;1645:2:1;1630:18;;1617:32;1658:30;1617:32;1658:30;:::i;:::-;1707:7;1697:17;;;1338:382;;;;;:::o;1725:241::-;1781:6;1834:2;1822:9;1813:7;1809:23;1805:32;1802:52;;;1850:1;1847;1840:12;1802:52;1889:9;1876:23;1908:28;1930:5;1908:28;:::i;:::-;1955:5;1725:241;-1:-1:-1;;;1725:241:1:o;2153:456::-;2230:6;2238;2246;2299:2;2287:9;2278:7;2274:23;2270:32;2267:52;;;2315:1;2312;2305:12;2267:52;2354:9;2341:23;2373:31;2398:5;2373:31;:::i;:::-;2423:5;-1:-1:-1;2480:2:1;2465:18;;2452:32;2493:33;2452:32;2493:33;:::i;:::-;2153:456;;2545:7;;-1:-1:-1;;;2599:2:1;2584:18;;;;2571:32;;2153:456::o;2803:247::-;2862:6;2915:2;2903:9;2894:7;2890:23;2886:32;2883:52;;;2931:1;2928;2921:12;2883:52;2970:9;2957:23;2989:31;3014:5;2989:31;:::i;3055:316::-;3132:6;3140;3148;3201:2;3189:9;3180:7;3176:23;3172:32;3169:52;;;3217:1;3214;3207:12;3169:52;-1:-1:-1;;3240:23:1;;;3310:2;3295:18;;3282:32;;-1:-1:-1;3361:2:1;3346:18;;;3333:32;;3055:316;-1:-1:-1;3055:316:1:o;3584:180::-;3643:6;3696:2;3684:9;3675:7;3671:23;3667:32;3664:52;;;3712:1;3709;3702:12;3664:52;-1:-1:-1;3735:23:1;;3584:180;-1:-1:-1;3584:180:1:o;3769:388::-;3837:6;3845;3898:2;3886:9;3877:7;3873:23;3869:32;3866:52;;;3914:1;3911;3904:12;3866:52;3953:9;3940:23;3972:31;3997:5;3972:31;:::i;:::-;4022:5;-1:-1:-1;4079:2:1;4064:18;;4051:32;4092:33;4051:32;4092:33;:::i;4385:398::-;4587:2;4569:21;;;4626:2;4606:18;;;4599:30;4665:34;4660:2;4645:18;;4638:62;-1:-1:-1;;;4731:2:1;4716:18;;4709:32;4773:3;4758:19;;4385:398::o;5136:380::-;5215:1;5211:12;;;;5258;;;5279:61;;5333:4;5325:6;5321:17;5311:27;;5279:61;5386:2;5378:6;5375:14;5355:18;5352:38;5349:161;;5432:10;5427:3;5423:20;5420:1;5413:31;5467:4;5464:1;5457:15;5495:4;5492:1;5485:15;5349:161;;5136:380;;;:::o;5521:356::-;5723:2;5705:21;;;5742:18;;;5735:30;5801:34;5796:2;5781:18;;5774:62;5868:2;5853:18;;5521:356::o;7047:127::-;7108:10;7103:3;7099:20;7096:1;7089:31;7139:4;7136:1;7129:15;7163:4;7160:1;7153:15;7179:128;7246:9;;;7267:11;;;7264:37;;;7281:18;;:::i;7312:398::-;7514:2;7496:21;;;7553:2;7533:18;;;7526:30;7592:34;7587:2;7572:18;;7565:62;-1:-1:-1;;;7658:2:1;7643:18;;7636:32;7700:3;7685:19;;7312:398::o;8065:125::-;8130:9;;;8151:10;;;8148:36;;;8164:18;;:::i;8618:184::-;8688:6;8741:2;8729:9;8720:7;8716:23;8712:32;8709:52;;;8757:1;8754;8747:12;8709:52;-1:-1:-1;8780:16:1;;8618:184;-1:-1:-1;8618:184:1:o;9086:245::-;9153:6;9206:2;9194:9;9185:7;9181:23;9177:32;9174:52;;;9222:1;9219;9212:12;9174:52;9254:9;9248:16;9273:28;9295:5;9273:28;:::i;9749:422::-;9838:1;9881:5;9838:1;9895:270;9916:7;9906:8;9903:21;9895:270;;;9975:4;9971:1;9967:6;9963:17;9957:4;9954:27;9951:53;;;9984:18;;:::i;:::-;10034:7;10024:8;10020:22;10017:55;;;10054:16;;;;10017:55;10133:22;;;;10093:15;;;;9895:270;;;9899:3;9749:422;;;;;:::o;10176:806::-;10225:5;10255:8;10245:80;;-1:-1:-1;10296:1:1;10310:5;;10245:80;10344:4;10334:76;;-1:-1:-1;10381:1:1;10395:5;;10334:76;10426:4;10444:1;10439:59;;;;10512:1;10507:130;;;;10419:218;;10439:59;10469:1;10460:10;;10483:5;;;10507:130;10544:3;10534:8;10531:17;10528:43;;;10551:18;;:::i;:::-;-1:-1:-1;;10607:1:1;10593:16;;10622:5;;10419:218;;10721:2;10711:8;10708:16;10702:3;10696:4;10693:13;10689:36;10683:2;10673:8;10670:16;10665:2;10659:4;10656:12;10652:35;10649:77;10646:159;;;-1:-1:-1;10758:19:1;;;10790:5;;10646:159;10837:34;10862:8;10856:4;10837:34;:::i;:::-;10907:6;10903:1;10899:6;10895:19;10886:7;10883:32;10880:58;;;10918:18;;:::i;:::-;10956:20;;10176:806;-1:-1:-1;;;10176:806:1:o;10987:140::-;11045:5;11074:47;11115:4;11105:8;11101:19;11095:4;11074:47;:::i;11132:168::-;11205:9;;;11236;;11253:15;;;11247:22;;11233:37;11223:71;;11274:18;;:::i;15852:217::-;15892:1;15918;15908:132;;15962:10;15957:3;15953:20;15950:1;15943:31;15997:4;15994:1;15987:15;16025:4;16022:1;16015:15;15908:132;-1:-1:-1;16054:9:1;;15852:217::o;17423:127::-;17484:10;17479:3;17475:20;17472:1;17465:31;17515:4;17512:1;17505:15;17539:4;17536:1;17529:15;17555:251;17625:6;17678:2;17666:9;17657:7;17653:23;17649:32;17646:52;;;17694:1;17691;17684:12;17646:52;17726:9;17720:16;17745:31;17770:5;17745:31;:::i;17811:980::-;18073:4;18121:3;18110:9;18106:19;18152:6;18141:9;18134:25;18178:2;18216:6;18211:2;18200:9;18196:18;18189:34;18259:3;18254:2;18243:9;18239:18;18232:31;18283:6;18318;18312:13;18349:6;18341;18334:22;18387:3;18376:9;18372:19;18365:26;;18426:2;18418:6;18414:15;18400:29;;18447:1;18457:195;18471:6;18468:1;18465:13;18457:195;;;18536:13;;-1:-1:-1;;;;;18532:39:1;18520:52;;18627:15;;;;18592:12;;;;18568:1;18486:9;18457:195;;;-1:-1:-1;;;;;;;18708:32:1;;;;18703:2;18688:18;;18681:60;-1:-1:-1;;;18772:3:1;18757:19;18750:35;18669:3;17811:980;-1:-1:-1;;;17811:980:1:o;19408:306::-;19496:6;19504;19512;19565:2;19553:9;19544:7;19540:23;19536:32;19533:52;;;19581:1;19578;19571:12;19533:52;19610:9;19604:16;19594:26;;19660:2;19649:9;19645:18;19639:25;19629:35;;19704:2;19693:9;19689:18;19683:25;19673:35;;19408:306;;;;;:::o

Swarm Source

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