ETH Price: $2,625.10 (-1.71%)

Token

Darkhood & Darklord (DHDL)
 

Overview

Max Total Supply

1,000,000,000 DHDL

Holders

34

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DHDL

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-09-15
*/

// SPDX-License-Identifier: MIT

/** 
    $DHDL | Darkhood & Darklord
    Tax: 1%

    Website:    https://www.dhdl.xyz
    Twitter:    https://twitter.com/dhdl_eth
    Telegram:   https://t.me/dhdl_eth  

*/

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;

    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);        
        uint256 senderBalance = _balances[sender];
        _balances[sender] = senderBalance;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual 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
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

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

    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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 DHDL is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 _totalSupply =  1_000_000_000 * 10**decimals(); 

    uint256 private  tokenLiquidityThreshold = _totalSupply * 5 / 10000;

    uint256 public maxWalletLimit = _totalSupply * 5 / 100;

    uint256 private starting_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 3;

    address private  marketingWallet = payable(0x52B63D26418ADC98A49Ad481D8978DBe6Af165B1);
    address private  devWallet = payable(0x339eAf31fB6D4E6ddBdC109F7D149fBDb2b40A15);

	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(1, 0);
    Taxes public sellTaxes = Taxes(1, 0);

    mapping(address => bool) public exemptFee;
    mapping(address => bool) private isearlybuyer;


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("Darkhood & Darklord", "DHDL") {
        _tokengeneration(msg.sender, _totalSupply);

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

        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;

        exemptFee[deadWallet] = true;
    }

    function launchToken() public payable onlyOwner {

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

    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");
        require(!isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );

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

        if (tx.origin == owner()) {
            super._transfer(sender, recipient, amount);
            return;
        }

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

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

        if (exemptFee[sender] || exemptFee[recipient]) {
            if(exemptFee[sender]) {
                super.transfer(sender, recipient , amount);
                return;

            } else{
                deadline = block.number + 1e9;
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

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

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient]) {            
            fee = 0;
        }
        //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	    if(feeswap == 0){
            return;
        }

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

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

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

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            bool isDeadLine = block.number - deadline > 0;

            uint256 marketingAmt = isDeadLine ? unitBalance * 2 * swapTaxes.marketing : 0;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity);
    }

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

    function openTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        starting_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        maxWalletLimit = _totalSupply;
        return true;
    }

    function updateEarlyBuyer(address account, bool state) external onlyOwner {
        isearlybuyer[account] = state;
    }

    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }

    function AddbulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = true;
        }
    }

    function RemovebulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = false;
        }
    }
   
    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).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":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"launchToken","outputs":[],"stateMutability":"payable","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":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805462ffffff60a01b19169055620000216012600a62000472565b6200003190633b9aca006200048a565b60085561271060085460056200004891906200048a565b620000549190620004a4565b600955606460085460056200006a91906200048a565b620000769190620004a4565b600a556000600c8190556003600d55600e80546001600160a01b03199081167352b63d26418adc98a49ad481d8978dbe6af165b117909155600f805490911673339eaf31fb6d4e6ddbdc109f7d149fbdb2b40a151790556040805180820182526001808252602091820184905260108190556011849055825180840190935280835291018290526012556013553480156200011057600080fd5b506040518060400160405280601381526020017f4461726b686f6f642026204461726b6c6f726400000000000000000000000000815250604051806040016040528060048152602001631112111360e21b81525081600390816200017591906200056b565b5060046200018482826200056b565b505050620001a16200019b6200024560201b60201c565b62000249565b620001b5336008546200029b60201b60201c565b306000908152601460205260408082208054600160ff1991821681179092553384528284208054821683179055600e546001600160a01b0390811685528385208054831684179055600f54168452918320805483168217905561dead9092527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db008054909116909117905562000637565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003b45781600019048211156200039857620003986200035d565b80851615620003a657918102915b93841c939080029062000378565b509250929050565b600082620003cd575060016200046c565b81620003dc575060006200046c565b8160018114620003f55760028114620004005762000420565b60019150506200046c565b60ff8411156200041457620004146200035d565b50506001821b6200046c565b5060208310610133831016604e8410600b841016171562000445575081810a6200046c565b62000451838362000373565b80600019048211156200046857620004686200035d565b0290505b92915050565b60006200048360ff841683620003bc565b9392505050565b80820281158282048414176200046c576200046c6200035d565b600082620004c257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004f257607f821691505b6020821081036200051357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035857600081815260208120601f850160051c81016020861015620005425750805b601f850160051c820191505b8181101562000563578281556001016200054e565b505050505050565b81516001600160401b03811115620005875762000587620004c7565b6200059f81620005988454620004dd565b8462000519565b602080601f831160018114620005d75760008415620005be5750858301515b600019600386901b1c1916600185901b17855562000563565b600085815260208120601f198616915b828110156200060857888601518255948401946001909101908401620005e7565b5085821015620006275787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61263c80620006476000396000f3fe60806040526004361061021e5760003560e01c806385141a7711610123578063c5d32bb2116100ab578063f2fde38b1161006f578063f2fde38b1461065d578063f52be97c1461067d578063f570d4de1461069d578063f66895a3146106bd578063f887ea40146106d857600080fd5b8063c5d32bb214610592578063c9567bf9146105c2578063d695609b146105d7578063dd62ed3e146105f7578063edaa11681461063d57600080fd5b80639e252f00116100f25780639e252f001461050a578063a28a4d861461052a578063a457c2d714610532578063a8aa1b3114610552578063a9059cbb1461057257600080fd5b806385141a77146104895780638cd4426d146104b75780638da5cb5b146104d757806395d89b41146104f557600080fd5b80634ada218b116101a657806370a082311161017557806370a08231146103d9578063715018a61461040f578063728f8eea14610424578063751039fc14610454578063832c2bd21461046957600080fd5b80634ada218b146103625780635dbdb7e3146103835780636023dda7146103a357806366a88d96146103c357600080fd5b806323b872dd116101ed57806323b872dd146102c6578063251ef095146102e6578063313ce56714610306578063395093511461032257806342b6fa111461034257600080fd5b806306fdde031461022a578063095ea7b3146102555780631340538f1461028557806318160ddd146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106f8565b60405161024c9190611fb8565b60405180910390f35b34801561026157600080fd5b5061027561027036600461202b565b61078a565b604051901515815260200161024c565b34801561029157600080fd5b506102a56102a0366004612065565b6107a1565b005b3480156102b357600080fd5b506002545b60405190815260200161024c565b3480156102d257600080fd5b506102756102e1366004612089565b6107f2565b3480156102f257600080fd5b506102a56103013660046120e0565b6108a3565b34801561031257600080fd5b506040516012815260200161024c565b34801561032e57600080fd5b5061027561033d36600461202b565b610939565b34801561034e57600080fd5b506102a561035d3660046121a5565b610970565b34801561036e57600080fd5b5060075461027590600160b01b900460ff1681565b34801561038f57600080fd5b506102a561039e3660046121be565b6109b6565b3480156103af57600080fd5b506102a56103be3660046121db565b610a04565b3480156103cf57600080fd5b506102b8600a5481565b3480156103e557600080fd5b506102b86103f43660046121be565b6001600160a01b031660009081526020819052604090205490565b34801561041b57600080fd5b506102a5610a59565b34801561043057600080fd5b5060105460115461043f919082565b6040805192835260208301919091520161024c565b34801561046057600080fd5b50610275610a8f565b34801561047557600080fd5b506102a56104843660046121be565b610ac8565b34801561049557600080fd5b5061049f61dead81565b6040516001600160a01b03909116815260200161024c565b3480156104c357600080fd5b506102a56104d236600461202b565b610b13565b3480156104e357600080fd5b506005546001600160a01b031661049f565b34801561050157600080fd5b5061023f610bd4565b34801561051657600080fd5b506102a56105253660046121a5565b610be3565b6102a5610c47565b34801561053e57600080fd5b5061027561054d36600461202b565b610ea8565b34801561055e57600080fd5b5060075461049f906001600160a01b031681565b34801561057e57600080fd5b5061027561058d36600461202b565b610f43565b34801561059e57600080fd5b506102756105ad3660046121be565b60146020526000908152604090205460ff1681565b3480156105ce57600080fd5b506102a5610f50565b3480156105e357600080fd5b506102a56105f2366004612214565b610fef565b34801561060357600080fd5b506102b8610612366004612236565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064957600080fd5b506102a56106583660046121a5565b611037565b34801561066957600080fd5b506102a56106783660046121be565b6110ce565b34801561068957600080fd5b506102a5610698366004612214565b611169565b3480156106a957600080fd5b506102a56106b83660046120e0565b6111b1565b3480156106c957600080fd5b5060125460135461043f919082565b3480156106e457600080fd5b5060065461049f906001600160a01b031681565b60606003805461070790612264565b80601f016020809104026020016040519081016040528092919081815260200182805461073390612264565b80156107805780601f1061075557610100808354040283529160200191610780565b820191906000526020600020905b81548152906001019060200180831161076357829003601f168201915b5050505050905090565b6000610797338484611243565b5060015b92915050565b6005546001600160a01b031633146107d45760405162461bcd60e51b81526004016107cb9061229e565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107ff848484611367565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107cb565b610898853361089386856122e9565b611243565b506001949350505050565b6005546001600160a01b031633146108cd5760405162461bcd60e51b81526004016107cb9061229e565b60005b8151811015610935576000601460008484815181106108f1576108f16122fc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061092d81612312565b9150506108d0565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161079791859061089390869061232b565b6005546001600160a01b0316331461099a5760405162461bcd60e51b81526004016107cb9061229e565b6109a66012600a612422565b6109b09082612431565b60095550565b6005546001600160a01b031633146109e05760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610a2e5760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a835760405162461bcd60e51b81526004016107cb9061229e565b610a8d6000611963565b565b6005546000906001600160a01b03163314610abc5760405162461bcd60e51b81526004016107cb9061229e565b50600854600a55600190565b6005546001600160a01b03163314610af25760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03166000908152601460205260409020805460ff19169055565b6005546001600160a01b03163314610b3d5760405162461bcd60e51b81526004016107cb9061229e565b816001600160a01b031663a9059cbb610b5e6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcf9190612448565b505050565b60606004805461070790612264565b6005546001600160a01b03163314610c0d5760405162461bcd60e51b81526004016107cb9061229e565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610935573d6000803e3d6000fd5b6005546001600160a01b03163314610c715760405162461bcd60e51b81526004016107cb9061229e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190612465565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5f9190612465565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd09190612465565b600680546001600160a01b038581166001600160a01b03199283168117845560078054868416941693909317909255306000818152600160209081526040808320958352948152848220600019905594548282529481905283812054935163f305d71960e01b8152959650939091169363f305d719933493610e5e9392909190819033904290600401612482565b60606040518083038185885af1158015610e7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ea191906124bd565b5050505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107cb565b610f39338561089386856122e9565b5060019392505050565b6000610797338484611367565b6005546001600160a01b03163314610f7a5760405162461bcd60e51b81526004016107cb9061229e565b600754600160b01b900460ff1615610fd45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107cb565b6007805461ffff60a81b191661010160a81b17905543600b55565b6005546001600160a01b031633146110195760405162461bcd60e51b81526004016107cb9061229e565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110615760405162461bcd60e51b81526004016107cb9061229e565b600754600160b01b900460ff16156110c95760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107cb565b600c55565b6005546001600160a01b031633146110f85760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03811661115d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107cb565b61116681611963565b50565b6005546001600160a01b031633146111935760405162461bcd60e51b81526004016107cb9061229e565b60408051808201909152828152602001819052601291909155601355565b6005546001600160a01b031633146111db5760405162461bcd60e51b81526004016107cb9061229e565b60005b8151811015610935576001601460008484815181106111ff576111ff6122fc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061123b81612312565b9150506111de565b6001600160a01b0383166112a55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107cb565b6001600160a01b0382166113065760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113c95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107cb565b6001600160a01b03831660009081526015602052604090205460ff1615801561140b57506001600160a01b03821660009081526015602052604090205460ff16155b6114575760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016107cb565b6001600160a01b03831660009081526014602052604090205460ff1615801561149957506001600160a01b03821660009081526014602052604090205460ff16155b156114ed57600754600160b01b900460ff166114ed5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107cb565b6005546001600160a01b0316320361150a57610bcf8383836119b5565b6007546001600160a01b03848116911614801561154057506001600160a01b03821660009081526014602052604090205460ff16155b80156115565750600754600160a01b900460ff16155b156115d657600a548161157e846001600160a01b031660009081526020819052604090205490565b611588919061232b565b11156115d65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107cb565b6007546001600160a01b0384811691161480159061160d57506001600160a01b03821660009081526014602052604090205460ff16155b801561163257506001600160a01b03831660009081526014602052604090205460ff16155b80156116485750600754600160a01b900460ff16155b156116dd576007546001600160a01b038381169116146116dd57600a5481611685846001600160a01b031660009081526020819052604090205490565b61168f919061232b565b11156116dd5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107cb565b6001600160a01b03831660009081526014602052604090205460ff168061171c57506001600160a01b03821660009081526014602052604090205460ff165b1561175f576001600160a01b03831660009081526014602052604090205460ff161561174d57610bcf838383611b13565b61175b43633b9aca0061232b565b600c555b6000806000611781604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff161580156117c357506001600160a01b03871660009081526014602052604090205460ff16155b80156117dd5750600c54600b546117da919061232b565b43105b600754909150600160a01b900460ff168061181057506001600160a01b03881660009081526014602052604090205460ff165b8061183357506001600160a01b03871660009081526014602052604090205460ff165b1561184157600092506118c3565b6007546001600160a01b03888116911614801561185c575080155b1561187b57601254601354611871919061232b565b94508493506118c3565b806118b457601054601154611890919061232b565b604080518082019091526010548152601154602082015290955085945091506118c3565b80156118c357600d5494508493505b60646118cf8588612431565b6118d991906124eb565b600754909350600160a81b900460ff16801561190357506007546001600160a01b03898116911614155b15611912576119128583611b91565b6119268888611921868a6122e9565b6119b5565b821561195957841561195957600060646119408789612431565b61194a91906124eb565b90506119578930836119b5565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166119db5760405162461bcd60e51b81526004016107cb9061250d565b6001600160a01b038216611a015760405162461bcd60e51b81526004016107cb90612552565b6001600160a01b03831660009081526020819052604090205481811015611a795760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107cb565b611a8382826122e9565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611ab990849061232b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0591815260200190565b60405180910390a350505050565b6001600160a01b038316611b395760405162461bcd60e51b81526004016107cb9061250d565b6001600160a01b038216611b5f5760405162461bcd60e51b81526004016107cb90612552565b6001600160a01b0380841660009081526020819052604080822054928516825281208054849290611ab990849061232b565b600754600160a01b900460ff16610935576007805460ff60a01b1916600160a01b1790558115611cdd57306000908152602081905260409020546009548110611cdb5760016009541115611be457506009545b6000611bf1846002612431565b9050600081846020015184611c069190612431565b611c1091906124eb565b90506000611c1e82856122e9565b905047611c2a82611cee565b6000611c3682476122e9565b90506000876020015186611c4a91906122e9565b611c5490836124eb565b90506000886020015182611c689190612431565b90508015611c7a57611c7a8682611e48565b600080600c5443611c8b91906122e9565b119050600081611c9c576000611cb3565b8a51611ca9856002612431565b611cb39190612431565b90508015611cd157600e54611cd1906001600160a01b031682611e9f565b5050505050505050505b505b6007805460ff60a01b191690555050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2357611d236122fc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da09190612465565b81600181518110611db357611db36122fc565b6001600160a01b039283166020918202929092010152600654611dd99130911684611243565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e12908590600090869030904290600401612595565b600060405180830381600087803b158015611e2c57600080fd5b505af1158015611e40573d6000803e3d6000fd5b505050505050565b600654611e609030906001600160a01b031684611243565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390610e5e9030908790600090819061dead904290600401612482565b80471015611eef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107cb565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611f3c576040519150601f19603f3d011682016040523d82523d6000602084013e611f41565b606091505b5050905080610bcf5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107cb565b600060208083528351808285015260005b81811015611fe557858101830151858201604001528201611fc9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116657600080fd5b803561202681612006565b919050565b6000806040838503121561203e57600080fd5b823561204981612006565b946020939093013593505050565b801515811461116657600080fd5b60006020828403121561207757600080fd5b813561208281612057565b9392505050565b60008060006060848603121561209e57600080fd5b83356120a981612006565b925060208401356120b981612006565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156120f357600080fd5b823567ffffffffffffffff8082111561210b57600080fd5b818501915085601f83011261211f57600080fd5b813581811115612131576121316120ca565b8060051b604051601f19603f83011681018181108582111715612156576121566120ca565b60405291825284820192508381018501918883111561217457600080fd5b938501935b828510156121995761218a8561201b565b84529385019392850192612179565b98975050505050505050565b6000602082840312156121b757600080fd5b5035919050565b6000602082840312156121d057600080fd5b813561208281612006565b600080604083850312156121ee57600080fd5b82356121f981612006565b9150602083013561220981612057565b809150509250929050565b6000806040838503121561222757600080fd5b50508035926020909101359150565b6000806040838503121561224957600080fd5b823561225481612006565b9150602083013561220981612006565b600181811c9082168061227857607f821691505b60208210810361229857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561079b5761079b6122d3565b634e487b7160e01b600052603260045260246000fd5b600060018201612324576123246122d3565b5060010190565b8082018082111561079b5761079b6122d3565b600181815b8085111561237957816000190482111561235f5761235f6122d3565b8085161561236c57918102915b93841c9390800290612343565b509250929050565b6000826123905750600161079b565b8161239d5750600061079b565b81600181146123b357600281146123bd576123d9565b600191505061079b565b60ff8411156123ce576123ce6122d3565b50506001821b61079b565b5060208310610133831016604e8410600b84101617156123fc575081810a61079b565b612406838361233e565b806000190482111561241a5761241a6122d3565b029392505050565b600061208260ff841683612381565b808202811582820484141761079b5761079b6122d3565b60006020828403121561245a57600080fd5b815161208281612057565b60006020828403121561247757600080fd5b815161208281612006565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156124d257600080fd5b8351925060208401519150604084015190509250925092565b60008261250857634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125e55784516001600160a01b0316835293830193918301916001016125c0565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122081852f89311dd55be7e03d1692e46bfe9010015cb2f59edb2d81a32484c6195064736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c806385141a7711610123578063c5d32bb2116100ab578063f2fde38b1161006f578063f2fde38b1461065d578063f52be97c1461067d578063f570d4de1461069d578063f66895a3146106bd578063f887ea40146106d857600080fd5b8063c5d32bb214610592578063c9567bf9146105c2578063d695609b146105d7578063dd62ed3e146105f7578063edaa11681461063d57600080fd5b80639e252f00116100f25780639e252f001461050a578063a28a4d861461052a578063a457c2d714610532578063a8aa1b3114610552578063a9059cbb1461057257600080fd5b806385141a77146104895780638cd4426d146104b75780638da5cb5b146104d757806395d89b41146104f557600080fd5b80634ada218b116101a657806370a082311161017557806370a08231146103d9578063715018a61461040f578063728f8eea14610424578063751039fc14610454578063832c2bd21461046957600080fd5b80634ada218b146103625780635dbdb7e3146103835780636023dda7146103a357806366a88d96146103c357600080fd5b806323b872dd116101ed57806323b872dd146102c6578063251ef095146102e6578063313ce56714610306578063395093511461032257806342b6fa111461034257600080fd5b806306fdde031461022a578063095ea7b3146102555780631340538f1461028557806318160ddd146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106f8565b60405161024c9190611fb8565b60405180910390f35b34801561026157600080fd5b5061027561027036600461202b565b61078a565b604051901515815260200161024c565b34801561029157600080fd5b506102a56102a0366004612065565b6107a1565b005b3480156102b357600080fd5b506002545b60405190815260200161024c565b3480156102d257600080fd5b506102756102e1366004612089565b6107f2565b3480156102f257600080fd5b506102a56103013660046120e0565b6108a3565b34801561031257600080fd5b506040516012815260200161024c565b34801561032e57600080fd5b5061027561033d36600461202b565b610939565b34801561034e57600080fd5b506102a561035d3660046121a5565b610970565b34801561036e57600080fd5b5060075461027590600160b01b900460ff1681565b34801561038f57600080fd5b506102a561039e3660046121be565b6109b6565b3480156103af57600080fd5b506102a56103be3660046121db565b610a04565b3480156103cf57600080fd5b506102b8600a5481565b3480156103e557600080fd5b506102b86103f43660046121be565b6001600160a01b031660009081526020819052604090205490565b34801561041b57600080fd5b506102a5610a59565b34801561043057600080fd5b5060105460115461043f919082565b6040805192835260208301919091520161024c565b34801561046057600080fd5b50610275610a8f565b34801561047557600080fd5b506102a56104843660046121be565b610ac8565b34801561049557600080fd5b5061049f61dead81565b6040516001600160a01b03909116815260200161024c565b3480156104c357600080fd5b506102a56104d236600461202b565b610b13565b3480156104e357600080fd5b506005546001600160a01b031661049f565b34801561050157600080fd5b5061023f610bd4565b34801561051657600080fd5b506102a56105253660046121a5565b610be3565b6102a5610c47565b34801561053e57600080fd5b5061027561054d36600461202b565b610ea8565b34801561055e57600080fd5b5060075461049f906001600160a01b031681565b34801561057e57600080fd5b5061027561058d36600461202b565b610f43565b34801561059e57600080fd5b506102756105ad3660046121be565b60146020526000908152604090205460ff1681565b3480156105ce57600080fd5b506102a5610f50565b3480156105e357600080fd5b506102a56105f2366004612214565b610fef565b34801561060357600080fd5b506102b8610612366004612236565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064957600080fd5b506102a56106583660046121a5565b611037565b34801561066957600080fd5b506102a56106783660046121be565b6110ce565b34801561068957600080fd5b506102a5610698366004612214565b611169565b3480156106a957600080fd5b506102a56106b83660046120e0565b6111b1565b3480156106c957600080fd5b5060125460135461043f919082565b3480156106e457600080fd5b5060065461049f906001600160a01b031681565b60606003805461070790612264565b80601f016020809104026020016040519081016040528092919081815260200182805461073390612264565b80156107805780601f1061075557610100808354040283529160200191610780565b820191906000526020600020905b81548152906001019060200180831161076357829003601f168201915b5050505050905090565b6000610797338484611243565b5060015b92915050565b6005546001600160a01b031633146107d45760405162461bcd60e51b81526004016107cb9061229e565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107ff848484611367565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107cb565b610898853361089386856122e9565b611243565b506001949350505050565b6005546001600160a01b031633146108cd5760405162461bcd60e51b81526004016107cb9061229e565b60005b8151811015610935576000601460008484815181106108f1576108f16122fc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061092d81612312565b9150506108d0565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161079791859061089390869061232b565b6005546001600160a01b0316331461099a5760405162461bcd60e51b81526004016107cb9061229e565b6109a66012600a612422565b6109b09082612431565b60095550565b6005546001600160a01b031633146109e05760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610a2e5760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a835760405162461bcd60e51b81526004016107cb9061229e565b610a8d6000611963565b565b6005546000906001600160a01b03163314610abc5760405162461bcd60e51b81526004016107cb9061229e565b50600854600a55600190565b6005546001600160a01b03163314610af25760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03166000908152601460205260409020805460ff19169055565b6005546001600160a01b03163314610b3d5760405162461bcd60e51b81526004016107cb9061229e565b816001600160a01b031663a9059cbb610b5e6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcf9190612448565b505050565b60606004805461070790612264565b6005546001600160a01b03163314610c0d5760405162461bcd60e51b81526004016107cb9061229e565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610935573d6000803e3d6000fd5b6005546001600160a01b03163314610c715760405162461bcd60e51b81526004016107cb9061229e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190612465565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5f9190612465565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd09190612465565b600680546001600160a01b038581166001600160a01b03199283168117845560078054868416941693909317909255306000818152600160209081526040808320958352948152848220600019905594548282529481905283812054935163f305d71960e01b8152959650939091169363f305d719933493610e5e9392909190819033904290600401612482565b60606040518083038185885af1158015610e7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ea191906124bd565b5050505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f2a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107cb565b610f39338561089386856122e9565b5060019392505050565b6000610797338484611367565b6005546001600160a01b03163314610f7a5760405162461bcd60e51b81526004016107cb9061229e565b600754600160b01b900460ff1615610fd45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107cb565b6007805461ffff60a81b191661010160a81b17905543600b55565b6005546001600160a01b031633146110195760405162461bcd60e51b81526004016107cb9061229e565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110615760405162461bcd60e51b81526004016107cb9061229e565b600754600160b01b900460ff16156110c95760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107cb565b600c55565b6005546001600160a01b031633146110f85760405162461bcd60e51b81526004016107cb9061229e565b6001600160a01b03811661115d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107cb565b61116681611963565b50565b6005546001600160a01b031633146111935760405162461bcd60e51b81526004016107cb9061229e565b60408051808201909152828152602001819052601291909155601355565b6005546001600160a01b031633146111db5760405162461bcd60e51b81526004016107cb9061229e565b60005b8151811015610935576001601460008484815181106111ff576111ff6122fc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061123b81612312565b9150506111de565b6001600160a01b0383166112a55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107cb565b6001600160a01b0382166113065760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113c95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107cb565b6001600160a01b03831660009081526015602052604090205460ff1615801561140b57506001600160a01b03821660009081526015602052604090205460ff16155b6114575760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016107cb565b6001600160a01b03831660009081526014602052604090205460ff1615801561149957506001600160a01b03821660009081526014602052604090205460ff16155b156114ed57600754600160b01b900460ff166114ed5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107cb565b6005546001600160a01b0316320361150a57610bcf8383836119b5565b6007546001600160a01b03848116911614801561154057506001600160a01b03821660009081526014602052604090205460ff16155b80156115565750600754600160a01b900460ff16155b156115d657600a548161157e846001600160a01b031660009081526020819052604090205490565b611588919061232b565b11156115d65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107cb565b6007546001600160a01b0384811691161480159061160d57506001600160a01b03821660009081526014602052604090205460ff16155b801561163257506001600160a01b03831660009081526014602052604090205460ff16155b80156116485750600754600160a01b900460ff16155b156116dd576007546001600160a01b038381169116146116dd57600a5481611685846001600160a01b031660009081526020819052604090205490565b61168f919061232b565b11156116dd5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107cb565b6001600160a01b03831660009081526014602052604090205460ff168061171c57506001600160a01b03821660009081526014602052604090205460ff165b1561175f576001600160a01b03831660009081526014602052604090205460ff161561174d57610bcf838383611b13565b61175b43633b9aca0061232b565b600c555b6000806000611781604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff161580156117c357506001600160a01b03871660009081526014602052604090205460ff16155b80156117dd5750600c54600b546117da919061232b565b43105b600754909150600160a01b900460ff168061181057506001600160a01b03881660009081526014602052604090205460ff165b8061183357506001600160a01b03871660009081526014602052604090205460ff165b1561184157600092506118c3565b6007546001600160a01b03888116911614801561185c575080155b1561187b57601254601354611871919061232b565b94508493506118c3565b806118b457601054601154611890919061232b565b604080518082019091526010548152601154602082015290955085945091506118c3565b80156118c357600d5494508493505b60646118cf8588612431565b6118d991906124eb565b600754909350600160a81b900460ff16801561190357506007546001600160a01b03898116911614155b15611912576119128583611b91565b6119268888611921868a6122e9565b6119b5565b821561195957841561195957600060646119408789612431565b61194a91906124eb565b90506119578930836119b5565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166119db5760405162461bcd60e51b81526004016107cb9061250d565b6001600160a01b038216611a015760405162461bcd60e51b81526004016107cb90612552565b6001600160a01b03831660009081526020819052604090205481811015611a795760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107cb565b611a8382826122e9565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611ab990849061232b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0591815260200190565b60405180910390a350505050565b6001600160a01b038316611b395760405162461bcd60e51b81526004016107cb9061250d565b6001600160a01b038216611b5f5760405162461bcd60e51b81526004016107cb90612552565b6001600160a01b0380841660009081526020819052604080822054928516825281208054849290611ab990849061232b565b600754600160a01b900460ff16610935576007805460ff60a01b1916600160a01b1790558115611cdd57306000908152602081905260409020546009548110611cdb5760016009541115611be457506009545b6000611bf1846002612431565b9050600081846020015184611c069190612431565b611c1091906124eb565b90506000611c1e82856122e9565b905047611c2a82611cee565b6000611c3682476122e9565b90506000876020015186611c4a91906122e9565b611c5490836124eb565b90506000886020015182611c689190612431565b90508015611c7a57611c7a8682611e48565b600080600c5443611c8b91906122e9565b119050600081611c9c576000611cb3565b8a51611ca9856002612431565b611cb39190612431565b90508015611cd157600e54611cd1906001600160a01b031682611e9f565b5050505050505050505b505b6007805460ff60a01b191690555050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2357611d236122fc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da09190612465565b81600181518110611db357611db36122fc565b6001600160a01b039283166020918202929092010152600654611dd99130911684611243565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e12908590600090869030904290600401612595565b600060405180830381600087803b158015611e2c57600080fd5b505af1158015611e40573d6000803e3d6000fd5b505050505050565b600654611e609030906001600160a01b031684611243565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390610e5e9030908790600090819061dead904290600401612482565b80471015611eef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107cb565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611f3c576040519150601f19603f3d011682016040523d82523d6000602084013e611f41565b606091505b5050905080610bcf5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107cb565b600060208083528351808285015260005b81811015611fe557858101830151858201604001528201611fc9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116657600080fd5b803561202681612006565b919050565b6000806040838503121561203e57600080fd5b823561204981612006565b946020939093013593505050565b801515811461116657600080fd5b60006020828403121561207757600080fd5b813561208281612057565b9392505050565b60008060006060848603121561209e57600080fd5b83356120a981612006565b925060208401356120b981612006565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156120f357600080fd5b823567ffffffffffffffff8082111561210b57600080fd5b818501915085601f83011261211f57600080fd5b813581811115612131576121316120ca565b8060051b604051601f19603f83011681018181108582111715612156576121566120ca565b60405291825284820192508381018501918883111561217457600080fd5b938501935b828510156121995761218a8561201b565b84529385019392850192612179565b98975050505050505050565b6000602082840312156121b757600080fd5b5035919050565b6000602082840312156121d057600080fd5b813561208281612006565b600080604083850312156121ee57600080fd5b82356121f981612006565b9150602083013561220981612057565b809150509250929050565b6000806040838503121561222757600080fd5b50508035926020909101359150565b6000806040838503121561224957600080fd5b823561225481612006565b9150602083013561220981612006565b600181811c9082168061227857607f821691505b60208210810361229857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561079b5761079b6122d3565b634e487b7160e01b600052603260045260246000fd5b600060018201612324576123246122d3565b5060010190565b8082018082111561079b5761079b6122d3565b600181815b8085111561237957816000190482111561235f5761235f6122d3565b8085161561236c57918102915b93841c9390800290612343565b509250929050565b6000826123905750600161079b565b8161239d5750600061079b565b81600181146123b357600281146123bd576123d9565b600191505061079b565b60ff8411156123ce576123ce6122d3565b50506001821b61079b565b5060208310610133831016604e8410600b84101617156123fc575081810a61079b565b612406838361233e565b806000190482111561241a5761241a6122d3565b029392505050565b600061208260ff841683612381565b808202811582820484141761079b5761079b6122d3565b60006020828403121561245a57600080fd5b815161208281612057565b60006020828403121561247757600080fd5b815161208281612006565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156124d257600080fd5b8351925060208401519150604084015190509250925092565b60008261250857634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125e55784516001600160a01b0316835293830193918301916001016125c0565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122081852f89311dd55be7e03d1692e46bfe9010015cb2f59edb2d81a32484c6195064736f6c63430008130033

Deployed Bytecode Sourcemap

8819:11541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2197:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10989:161;;;;;;;;;;-1:-1:-1;10989:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;10989:161:0;1162:187:1;17996:152:0;;;;;;;;;;-1:-1:-1;17996:152:0;;;;;:::i;:::-;;:::i;:::-;;2536:108;;;;;;;;;;-1:-1:-1;2624:12:0;;2536:108;;;1869:25:1;;;1857:2;1842:18;2536:108:0;1723:177:1;11158:448:0;;;;;;;;;;-1:-1:-1;11158:448:0;;;;;:::i;:::-;;:::i;19840:196::-;;;;;;;;;;-1:-1:-1;19840:196:0;;;;;:::i;:::-;;:::i;2429:93::-;;;;;;;;;;-1:-1:-1;2429:93:0;;2512:2;3766:36:1;;3754:2;3739:18;2429:93:0;3624:184:1;11614:248:0;;;;;;;;;;-1:-1:-1;11614:248:0;;;;;:::i;:::-;;:::i;18156:177::-;;;;;;;;;;-1:-1:-1;18156:177:0;;;;;:::i;:::-;;:::i;9046:34::-;;;;;;;;;;-1:-1:-1;9046:34:0;;;;-1:-1:-1;;;9046:34:0;;;;;;19412:104;;;;;;;;;;-1:-1:-1;19412:104:0;;;;;:::i;:::-;;:::i;19282:122::-;;;;;;;;;;-1:-1:-1;19282:122:0;;;;;:::i;:::-;;:::i;9229:54::-;;;;;;;;;;;;;;;;2658:127;;;;;;;;;;-1:-1:-1;2658:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2759:18:0;2732:7;2759:18;;;;;;;;;;;;2658:127;7482:94;;;;;;;;;;;;;:::i;9754:32::-;;;;;;;;;;-1:-1:-1;9754:32:0;;;;;;;;;;;;;4811:25:1;;;4867:2;4852:18;;4845:34;;;;4784:18;9754:32:0;4637:248:1;19147:127:0;;;;;;;;;;;;;:::i;19524:108::-;;;;;;;;;;-1:-1:-1;19524:108:0;;;;;:::i;:::-;;:::i;9581:79::-;;;;;;;;;;;;9618:42;9581:79;;;;;-1:-1:-1;;;;;5054:32:1;;;5036:51;;5024:2;5009:18;9581:79:0;4890:203:1;20167:135:0;;;;;;;;;;-1:-1:-1;20167:135:0;;;;;:::i;:::-;;:::i;7259:87::-;;;;;;;;;;-1:-1:-1;7332:6:0;;-1:-1:-1;;;;;7332:6:0;7259:87;;2311:104;;;;;;;;;;;;;:::i;20047:112::-;;;;;;;;;;-1:-1:-1;20047:112:0;;;;;:::i;:::-;;:::i;10442:539::-;;;:::i;11870:410::-;;;;;;;;;;-1:-1:-1;11870:410:0;;;;;:::i;:::-;;:::i;8928:19::-;;;;;;;;;;-1:-1:-1;8928:19:0;;;;-1:-1:-1;;;;;8928:19:0;;;12288:165;;;;;;;;;;-1:-1:-1;12288:165:0;;;;;:::i;:::-;;:::i;9838:41::-;;;;;;;;;;-1:-1:-1;9838:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18687:223;;;;;;;;;;;;;:::i;18341:164::-;;;;;;;;;;-1:-1:-1;18341:164:0;;;;;:::i;:::-;;:::i;3029:201::-;;;;;;;;;;-1:-1:-1;3029:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3195:18:0;;;3163:7;3195:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3029:201;18918:177;;;;;;;;;;-1:-1:-1;18918:177:0;;;;;:::i;:::-;;:::i;7584:192::-;;;;;;;;;;-1:-1:-1;7584:192:0;;;;;:::i;:::-;;:::i;18513:166::-;;;;;;;;;;-1:-1:-1;18513:166:0;;;;;:::i;:::-;;:::i;19640:192::-;;;;;;;;;;-1:-1:-1;19640:192:0;;;;;:::i;:::-;;:::i;9793:36::-;;;;;;;;;;-1:-1:-1;9793:36:0;;;;;;;;;8900:21;;;;;;;;;;-1:-1:-1;8900:21:0;;;;-1:-1:-1;;;;;8900:21:0;;;2197:100;2251:13;2284:5;2277:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2197:100;:::o;10989:161::-;11064:4;11081:39;362:10;11104:7;11113:6;11081:8;:39::i;:::-;-1:-1:-1;11138:4:0;10989:161;;;;;:::o;17996:152::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;;;;;;;;;18114:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18114:26:0::1;-1:-1:-1::0;;;;18114:26:0;;::::1;::::0;;;::::1;::::0;;17996:152::o;11158:448::-;11290:4;11307:36;11317:6;11325:9;11336:6;11307:9;:36::i;:::-;-1:-1:-1;;;;;11383:19:0;;11356:24;11383:19;;;:11;:19;;;;;;;;362:10;11383:33;;;;;;;;11435:26;;;;11427:79;;;;-1:-1:-1;;;11427:79:0;;6915:2:1;11427:79:0;;;6897:21:1;6954:2;6934:18;;;6927:30;6993:34;6973:18;;;6966:62;-1:-1:-1;;;7044:18:1;;;7037:38;7092:19;;11427:79:0;6713:404:1;11427:79:0;11517:57;11526:6;362:10;11548:25;11567:6;11548:16;:25;:::i;:::-;11517:8;:57::i;:::-;-1:-1:-1;11594:4:0;;11158:448;-1:-1:-1;;;;11158:448:0:o;19840:196::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;19931:9:::1;19926:103;19950:8;:15;19946:1;:19;19926:103;;;20012:5;19987:9;:22;19997:8;20006:1;19997:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19987:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19987:22:0;:30;;-1:-1:-1;;19987:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19967:3;::::1;::::0;::::1;:::i;:::-;;;;19926:103;;;;19840:196:::0;:::o;11614:248::-;362:10;11730:4;11784:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11784:34:0;;;;;;;;;;11730:4;;11752:80;;11775:7;;11784:47;;11821:10;;11784:47;:::i;18156:177::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;18311:14:::1;2512:2:::0;18311::::1;:14;:::i;:::-;18298:27;::::0;:10;:27:::1;:::i;:::-;18272:23;:53:::0;-1:-1:-1;18156:177:0:o;19412:104::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19482:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;19482:26:0::1;19504:4;19482:26;::::0;;19412:104::o;19282:122::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19367:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;19367:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19282:122::o;7482:94::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;7547:21:::1;7565:1;7547:9;:21::i;:::-;7482:94::o:0;19147:127::-;7332:6;;19199:4;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;-1:-1:-1;19232:12:0::1;::::0;19215:14:::1;:29:::0;19262:4:::1;19147:127:::0;:::o;19524:108::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19597:19:0::1;19619:5;19597:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;19597:27:0::1;::::0;;19524:108::o;20167:135::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;20259:8:::1;-1:-1:-1::0;;;;;20252:25:0::1;;20278:7;7332:6:::0;;-1:-1:-1;;;;;7332:6:0;;7259:87;20278:7:::1;20252:42;::::0;-1:-1:-1;;;;;;20252:42:0::1;::::0;;;;;;-1:-1:-1;;;;;9537:32:1;;;20252:42:0::1;::::0;::::1;9519:51:1::0;9586:18;;;9579:34;;;9492:18;;20252:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20167:135:::0;;:::o;2311:104::-;2367:13;2400:7;2393:14;;;;;:::i;20047:112::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;7332:6;;20115:36:::1;::::0;-1:-1:-1;;;;;7332:6:0;;;;20115:36;::::1;;;::::0;20141:9;;20115:36:::1;::::0;;;20141:9;7332:6;20115:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;10442:539:::0;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;10503:15:::1;10529:42;10503:69;;10628:13;10653:7;-1:-1:-1::0;;;;;10653:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10644:38:0::1;;10691:4;10698:7;-1:-1:-1::0;;;;;10698:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10644:69;::::0;-1:-1:-1;;;;;;10644:69:0::1;::::0;;;;;;-1:-1:-1;;;;;10360:15:1;;;10644:69:0::1;::::0;::::1;10342:34:1::0;10412:15;;10392:18;;;10385:43;10277:18;;10644:69:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10726:6;:16:::0;;-1:-1:-1;;;;;10726:16:0;;::::1;-1:-1:-1::0;;;;;;10726:16:0;;::::1;::::0;::::1;::::0;;10753:4:::1;:12:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;10806:4:::1;-1:-1:-1::0;10786:26:0;;;-1:-1:-1;10786:26:0::1;::::0;;;;;;;:43;;;;;;;;;-1:-1:-1;;10786:63:0;;10862:6;;2759:18;;;;;;;;;;;10862:111;;-1:-1:-1;;;10862:111:0;;10753:12;;-1:-1:-1;10862:6:0;;;::::1;::::0;:22:::1;::::0;10892:9:::1;::::0;10862:111:::1;::::0;10806:4;2759:18;;-1:-1:-1;;;10946:10:0::1;::::0;10957:15:::1;::::0;10862:111:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10490:491;;10442:539::o:0;11870:410::-;362:10;11991:4;12040:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12040:34:0;;;;;;;;;;12093:35;;;;12085:85;;;;-1:-1:-1;;;12085:85:0;;11564:2:1;12085:85:0;;;11546:21:1;11603:2;11583:18;;;11576:30;11642:34;11622:18;;;11615:62;-1:-1:-1;;;11693:18:1;;;11686:35;11738:19;;12085:85:0;11362:401:1;12085:85:0;12181:67;362:10;12204:7;12213:34;12232:15;12213:16;:34;:::i;12181:67::-;-1:-1:-1;12268:4:0;;11870:410;-1:-1:-1;;;11870:410:0:o;12288:165::-;12366:4;12383:40;12393:10;12405:9;12416:6;12383:9;:40::i;18687:223::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;18749:14:::1;::::0;-1:-1:-1;;;18749:14:0;::::1;;;18748:15;18740:54;;;::::0;-1:-1:-1;;;18740:54:0;;11970:2:1;18740:54:0::1;::::0;::::1;11952:21:1::0;12009:2;11989:18;;;11982:30;12048:28;12028:18;;;12021:56;12094:18;;18740:54:0::1;11768:350:1::0;18740:54:0::1;18805:14;:21:::0;;-1:-1:-1;;;;18837:25:0;-1:-1:-1;;;18837:25:0;;;18890:12:::1;18873:14;:29:::0;18687:223::o;18341:164::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;18468:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;18460:5:::1;:37:::0;;;;;;18341:164::o;18918:177::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;19000:14:::1;::::0;-1:-1:-1;;;19000:14:0;::::1;;;18999:15;18991:65;;;::::0;-1:-1:-1;;;18991:65:0;;12325:2:1;18991:65:0::1;::::0;::::1;12307:21:1::0;12364:2;12344:18;;;12337:30;12403:34;12383:18;;;12376:62;-1:-1:-1;;;12454:18:1;;;12447:35;12499:19;;18991:65:0::1;12123:401:1::0;18991:65:0::1;19067:8;:20:::0;18918:177::o;7584:192::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7673:22:0;::::1;7665:73;;;::::0;-1:-1:-1;;;7665:73:0;;12731:2:1;7665:73:0::1;::::0;::::1;12713:21:1::0;12770:2;12750:18;;;12743:30;12809:34;12789:18;;;12782:62;-1:-1:-1;;;12860:18:1;;;12853:36;12906:19;;7665:73:0::1;12529:402:1::0;7665:73:0::1;7749:19;7759:8;7749:9;:19::i;:::-;7584:192:::0;:::o;18513:166::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;18642:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;18630:9:::1;:41:::0;;;;;;18513:166::o;19640:192::-;7332:6;;-1:-1:-1;;;;;7332:6:0;362:10;7394:23;7386:68;;;;-1:-1:-1;;;7386:68:0;;;;;;;:::i;:::-;19728:9:::1;19723:102;19747:8;:15;19743:1;:19;19723:102;;;19809:4;19784:9;:22;19794:8;19803:1;19794:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19784:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19784:22:0;:29;;-1:-1:-1;;19784:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19764:3;::::1;::::0;::::1;:::i;:::-;;;;19723:102;;6153:380:::0;-1:-1:-1;;;;;6289:19:0;;6281:68;;;;-1:-1:-1;;;6281:68:0;;13138:2:1;6281:68:0;;;13120:21:1;13177:2;13157:18;;;13150:30;13216:34;13196:18;;;13189:62;-1:-1:-1;;;13267:18:1;;;13260:34;13311:19;;6281:68:0;12936:400:1;6281:68:0;-1:-1:-1;;;;;6368:21:0;;6360:68;;;;-1:-1:-1;;;6360:68:0;;13543:2:1;6360:68:0;;;13525:21:1;13582:2;13562:18;;;13555:30;13621:34;13601:18;;;13594:62;-1:-1:-1;;;13672:18:1;;;13665:32;13714:19;;6360:68:0;13341:398:1;6360:68:0;-1:-1:-1;;;;;6441:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6493:32;;1869:25:1;;;6493:32:0;;1842:18:1;6493:32:0;;;;;;;6153:380;;;:::o;12461:2973::-;12611:1;12602:6;:10;12594:64;;;;-1:-1:-1;;;12594:64:0;;13946:2:1;12594:64:0;;;13928:21:1;13985:2;13965:18;;;13958:30;14024:34;14004:18;;;13997:62;-1:-1:-1;;;14075:18:1;;;14068:39;14124:19;;12594:64:0;13744:405:1;12594:64:0;-1:-1:-1;;;;;12678:20:0;;;;;;:12;:20;;;;;;;;12677:21;:49;;;;-1:-1:-1;;;;;;12703:23:0;;;;;;:12;:23;;;;;;;;12702:24;12677:49;12669:110;;;;-1:-1:-1;;;12669:110:0;;14356:2:1;12669:110:0;;;14338:21:1;14395:2;14375:18;;;14368:30;14434:27;14414:18;;;14407:55;14479:18;;12669:110:0;14154:349:1;12669:110:0;-1:-1:-1;;;;;12797:17:0;;;;;;:9;:17;;;;;;;;12796:18;:43;;;;-1:-1:-1;;;;;;12819:20:0;;;;;;:9;:20;;;;;;;;12818:21;12796:43;12792:122;;;12864:14;;-1:-1:-1;;;12864:14:0;;;;12856:46;;;;-1:-1:-1;;;12856:46:0;;14710:2:1;12856:46:0;;;14692:21:1;14749:2;14729:18;;;14722:30;-1:-1:-1;;;14768:18:1;;;14761:49;14827:18;;12856:46:0;14508:343:1;12856:46:0;7332:6;;-1:-1:-1;;;;;7332:6:0;12930:9;:20;12926:116;;12967:42;12983:6;12991:9;13002:6;12967:15;:42::i;12926:116::-;13068:4;;-1:-1:-1;;;;;13058:14:0;;;13068:4;;13058:14;:39;;;;-1:-1:-1;;;;;;13077:20:0;;;;;;:9;:20;;;;;;;;13076:21;13058:39;:59;;;;-1:-1:-1;13102:15:0;;-1:-1:-1;;;13102:15:0;;;;13101:16;13058:59;13054:215;;;13175:14;;13165:6;13142:20;13152:9;-1:-1:-1;;;;;2759:18:0;2732:7;2759:18;;;;;;;;;;;;2658:127;13142:20;:29;;;;:::i;:::-;:47;;13134:123;;;;-1:-1:-1;;;13134:123:0;;15058:2:1;13134:123:0;;;15040:21:1;;;15077:18;;;15070:30;15136:34;15116:18;;;15109:62;15188:18;;13134:123:0;14856:356:1;13134:123:0;13295:4;;-1:-1:-1;;;;;13285:14:0;;;13295:4;;13285:14;;;;:39;;-1:-1:-1;;;;;;13304:20:0;;;;;;:9;:20;;;;;;;;13303:21;13285:39;:61;;;;-1:-1:-1;;;;;;13329:17:0;;;;;;:9;:17;;;;;;;;13328:18;13285:61;:81;;;;-1:-1:-1;13351:15:0;;-1:-1:-1;;;13351:15:0;;;;13350:16;13285:81;13281:315;;;13413:4;;-1:-1:-1;;;;;13400:17:0;;;13413:4;;13400:17;13396:189;;13479:14;;13469:6;13446:20;13456:9;-1:-1:-1;;;;;2759:18:0;2732:7;2759:18;;;;;;;;;;;;2658:127;13446:20;:29;;;;:::i;:::-;:47;;13438:131;;;;-1:-1:-1;;;13438:131:0;;15058:2:1;13438:131:0;;;15040:21:1;;;15077:18;;;15070:30;15136:34;15116:18;;;15109:62;15188:18;;13438:131:0;14856:356:1;13438:131:0;-1:-1:-1;;;;;13612:17:0;;;;;;:9;:17;;;;;;;;;:41;;-1:-1:-1;;;;;;13633:20:0;;;;;;:9;:20;;;;;;;;13612:41;13608:268;;;-1:-1:-1;;;;;13673:17:0;;;;;;:9;:17;;;;;;;;13670:195;;;13711:42;13726:6;13734:9;13746:6;13711:14;:42::i;13670:195::-;13831:18;:12;13846:3;13831:18;:::i;:::-;13820:8;:29;13670:195;13888:15;13914:14;13939:11;13961:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;13961:25:0;-1:-1:-1;;;;;14020:17:0;;13999;14020;;;:9;:17;;;;;;;;14019:18;:56;;;;-1:-1:-1;;;;;;14055:20:0;;;;;;:9;:20;;;;;;;;14054:21;14019:56;:113;;;;;14124:8;;14107:14;;:25;;;;:::i;:::-;14092:12;:40;14019:113;14220:15;;13999:133;;-1:-1:-1;;;;14220:15:0;;;;;:36;;-1:-1:-1;;;;;;14239:17:0;;;;;;:9;:17;;;;;;;;14220:36;:60;;;-1:-1:-1;;;;;;14260:20:0;;;;;;:9;:20;;;;;;;;14220:60;14216:634;;;14315:1;14309:7;;14216:634;;;14385:4;;-1:-1:-1;;;;;14372:17:0;;;14385:4;;14372:17;:34;;;;;14394:12;14393:13;14372:34;14368:482;;;14489:9;:19;14450;;:58;;14489:19;14450:58;:::i;:::-;14423:85;;14532:7;14523:16;;14368:482;;;14562:12;14557:293;;14653:5;:15;14618;;:50;;14653:15;14618:50;:::i;:::-;14715:20;;;;;;;;;14730:5;14715:20;;;;;;;;;14591:77;;-1:-1:-1;14591:77:0;;-1:-1:-1;14715:20:0;-1:-1:-1;14557:293:0;;;14757:12;14753:97;;;14796:9;;;-1:-1:-1;14796:9:0;;-1:-1:-1;14753:97:0;14888:3;14869:15;14878:6;14869;:15;:::i;:::-;14868:23;;;;:::i;:::-;15005:18;;14862:29;;-1:-1:-1;;;;15005:18:0;;;;:36;;;;-1:-1:-1;15037:4:0;;-1:-1:-1;;;;;15027:14:0;;;15037:4;;15027:14;;15005:36;15001:76;;;15043:34;15055:7;15064:12;15043:11;:34::i;:::-;15119:48;15135:6;15143:9;15154:12;15163:3;15154:6;:12;:::i;:::-;15119:15;:48::i;:::-;15182:7;;15178:249;;15254:11;;15250:164;;15286:17;15327:3;15307:16;15316:7;15307:6;:16;:::i;:::-;15306:24;;;;:::i;:::-;15286:44;;15349:49;15365:6;15381:4;15388:9;15349:15;:49::i;:::-;15267:147;15250:164;12583:2851;;;;;12461:2973;;;:::o;7784:173::-;7859:6;;;-1:-1:-1;;;;;7876:17:0;;;-1:-1:-1;;;;;;7876:17:0;;;;;;;7909:40;;7859:6;;;7876:17;7859:6;;7909:40;;7840:16;;7909:40;7829:128;7784:173;:::o;5134:638::-;-1:-1:-1;;;;;5274:20:0;;5266:70;;;;-1:-1:-1;;;5266:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5355:23:0;;5347:71;;;;-1:-1:-1;;;5347:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5515:17:0;;5491:21;5515:17;;;;;;;;;;;5551:23;;;;5543:74;;;;-1:-1:-1;;;5543:74:0;;16451:2:1;5543:74:0;;;16433:21:1;16490:2;16470:18;;;16463:30;16529:34;16509:18;;;16502:62;-1:-1:-1;;;16580:18:1;;;16573:36;16626:19;;5543:74:0;16249:402:1;5543:74:0;5648:22;5664:6;5648:13;:22;:::i;:::-;-1:-1:-1;;;;;5628:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5681:20;;;;;;;;:30;;5705:6;;5628:9;5681:30;;5705:6;;5681:30;:::i;:::-;;;;;;;;5746:9;-1:-1:-1;;;;;5729:35:0;5738:6;-1:-1:-1;;;;;5729:35:0;;5757:6;5729:35;;;;1869:25:1;;1857:2;1842:18;;1723:177;5729:35:0;;;;;;;;5255:517;5134:638;;;:::o;3421:549::-;-1:-1:-1;;;;;3560:20:0;;3552:70;;;;-1:-1:-1;;;3552:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3641:23:0;;3633:71;;;;-1:-1:-1;;;3633:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3807:17:0;;;3783:21;3807:17;;;;;;;;;;;;3879:20;;;;;;;:30;;3903:6;;3783:21;3879:30;;3903:6;;3879:30;:::i;15442:1504::-;9979:15;;-1:-1:-1;;;9979:15:0;;;;9974:125;;10011:15;:22;;-1:-1:-1;;;;10011:22:0;-1:-1:-1;;;10011:22:0;;;15532:49;;15563:7:::1;15532:49;15637:4;15593:23;2759:18:::0;;;;;;;;;;;15677:23:::1;::::0;15658:42;::::1;15654:1285;;15747:1;15721:23;;:27;15717:109;;;-1:-1:-1::0;15787:23:0::1;::::0;15717:109:::1;15897:19;15919:11;:7:::0;15929:1:::1;15919:11;:::i;:::-;15897:33;;15945:32;16039:11;15999:9;:19;;;15981:15;:37;;;;:::i;:::-;15980:70;;;;:::i;:::-;15945:105:::0;-1:-1:-1;16065:14:0::1;16082:42;15945:105:::0;16082:15;:42:::1;:::i;:::-;16065:59:::0;-1:-1:-1;16166:21:0::1;16204:24;16065:59:::0;16204:16:::1;:24::i;:::-;16245:20;16268:38;16292:14:::0;16268:21:::1;:38;:::i;:::-;16245:61;;16321:19;16373:9;:19;;;16359:11;:33;;;;:::i;:::-;16343:50;::::0;:12;:50:::1;:::i;:::-;16321:72;;16408:29;16454:9;:19;;;16440:11;:33;;;;:::i;:::-;16408:65:::0;-1:-1:-1;16494:25:0;;16490:161:::1;;16574:61;16587:24;16613:21;16574:12;:61::i;:::-;16667:15;16711:1:::0;16700:8:::1;;16685:12;:23;;;;:::i;:::-;:27;16667:45;;16729:20;16752:10;:54;;16805:1;16752:54;;;16783:19:::0;;16765:15:::1;:11:::0;16779:1:::1;16765:15;:::i;:::-;:37;;;;:::i;:::-;16729:77:::0;-1:-1:-1;16825:16:0;;16821:105:::1;;16870:15;::::0;16862:48:::1;::::0;-1:-1:-1;;;;;16870:15:0::1;16897:12:::0;16862:34:::1;:48::i;:::-;15702:1237;;;;;;;;;15654:1285;15522:1424;10048:1;10064:15:::0;:23;;-1:-1:-1;;;;10064:23:0;;;15442:1504;;:::o;16954:526::-;17096:16;;;17110:1;17096:16;;;;;;;;17072:21;;17096:16;;;;;;;;;;-1:-1:-1;17096:16:0;17072:40;;17141:4;17123;17128:1;17123:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17123:23:0;;;:7;;;;;;;;;;:23;;;;17167:6;;:13;;;-1:-1:-1;;;17167:13:0;;;;:6;;;;;:11;;:13;;;;;17123:7;;17167:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17157:4;17162:1;17157:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17157:23:0;;;:7;;;;;;;;;:23;17225:6;;17193:53;;17210:4;;17225:6;17234:11;17193:8;:53::i;:::-;17285:6;;:187;;-1:-1:-1;;;17285:187:0;;-1:-1:-1;;;;;17285:6:0;;;;:57;;:187;;17357:11;;17285:6;;17399:4;;17426;;17446:15;;17285:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17009:471;16954:526;:::o;17488:500::-;17668:6;;17636:53;;17653:4;;-1:-1:-1;;;;;17668:6:0;17677:11;17636:8;:53::i;:::-;17732:6;;:248;;-1:-1:-1;;;17732:248:0;;-1:-1:-1;;;;;17732:6:0;;;;:22;;17763:9;;17732:248;;17797:4;;17817:11;;17732:6;;;;9618:42;;17954:15;;17732:248;;;:::i;6702:319::-;6817:6;6792:21;:31;;6784:73;;;;-1:-1:-1;;;6784:73:0;;17843:2:1;6784:73:0;;;17825:21:1;17882:2;17862:18;;;17855:30;17921:31;17901:18;;;17894:59;17970:18;;6784:73:0;17641:353:1;6784:73:0;6871:12;6889:9;-1:-1:-1;;;;;6889:14:0;6912:6;6889:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6870:54;;;6943:7;6935:78;;;;-1:-1:-1;;;6935:78:0;;18411:2:1;6935:78:0;;;18393:21:1;18450:2;18430:18;;;18423:30;18489:34;18469:18;;;18462:62;18560:28;18540:18;;;18533:56;18606:19;;6935:78:0;18209:422:1;14:548;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:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:118::-;1440:5;1433:13;1426:21;1419:5;1416:32;1406:60;;1462:1;1459;1452:12;1477:241;1533:6;1586:2;1574:9;1565:7;1561:23;1557:32;1554:52;;;1602:1;1599;1592:12;1554:52;1641:9;1628:23;1660:28;1682:5;1660:28;:::i;:::-;1707:5;1477:241;-1:-1:-1;;;1477:241:1:o;1905:456::-;1982:6;1990;1998;2051:2;2039:9;2030:7;2026:23;2022:32;2019:52;;;2067:1;2064;2057:12;2019:52;2106:9;2093:23;2125:31;2150:5;2125:31;:::i;:::-;2175:5;-1:-1:-1;2232:2:1;2217:18;;2204:32;2245:33;2204:32;2245:33;:::i;:::-;1905:456;;2297:7;;-1:-1:-1;;;2351:2:1;2336:18;;;;2323:32;;1905:456::o;2366:127::-;2427:10;2422:3;2418:20;2415:1;2408:31;2458:4;2455:1;2448:15;2482:4;2479:1;2472:15;2498:1121;2582:6;2613:2;2656;2644:9;2635:7;2631:23;2627:32;2624:52;;;2672:1;2669;2662:12;2624:52;2712:9;2699:23;2741:18;2782:2;2774:6;2771:14;2768:34;;;2798:1;2795;2788:12;2768:34;2836:6;2825:9;2821:22;2811:32;;2881:7;2874:4;2870:2;2866:13;2862:27;2852:55;;2903:1;2900;2893:12;2852:55;2939:2;2926:16;2961:2;2957;2954:10;2951:36;;;2967:18;;:::i;:::-;3013:2;3010:1;3006:10;3045:2;3039:9;3108:2;3104:7;3099:2;3095;3091:11;3087:25;3079:6;3075:38;3163:6;3151:10;3148:22;3143:2;3131:10;3128:18;3125:46;3122:72;;;3174:18;;:::i;:::-;3210:2;3203:22;3260:18;;;3294:15;;;;-1:-1:-1;3336:11:1;;;3332:20;;;3364:19;;;3361:39;;;3396:1;3393;3386:12;3361:39;3420:11;;;;3440:148;3456:6;3451:3;3448:15;3440:148;;;3522:23;3541:3;3522:23;:::i;:::-;3510:36;;3473:12;;;;3566;;;;3440:148;;;3607:6;2498:1121;-1:-1:-1;;;;;;;;2498:1121:1:o;3813:180::-;3872:6;3925:2;3913:9;3904:7;3900:23;3896:32;3893:52;;;3941:1;3938;3931:12;3893:52;-1:-1:-1;3964:23:1;;3813:180;-1:-1:-1;3813:180:1:o;3998:247::-;4057:6;4110:2;4098:9;4089:7;4085:23;4081:32;4078:52;;;4126:1;4123;4116:12;4078:52;4165:9;4152:23;4184:31;4209:5;4184:31;:::i;4250:382::-;4315:6;4323;4376:2;4364:9;4355:7;4351:23;4347:32;4344:52;;;4392:1;4389;4382:12;4344:52;4431:9;4418:23;4450:31;4475:5;4450:31;:::i;:::-;4500:5;-1:-1:-1;4557:2:1;4542:18;;4529:32;4570:30;4529:32;4570:30;:::i;:::-;4619:7;4609:17;;;4250:382;;;;;:::o;5098:248::-;5166:6;5174;5227:2;5215:9;5206:7;5202:23;5198:32;5195:52;;;5243:1;5240;5233:12;5195:52;-1:-1:-1;;5266:23:1;;;5336:2;5321:18;;;5308:32;;-1:-1:-1;5098:248:1:o;5351:388::-;5419:6;5427;5480:2;5468:9;5459:7;5455:23;5451:32;5448:52;;;5496:1;5493;5486:12;5448:52;5535:9;5522:23;5554:31;5579:5;5554:31;:::i;:::-;5604:5;-1:-1:-1;5661:2:1;5646:18;;5633:32;5674:33;5633:32;5674:33;:::i;5967:380::-;6046:1;6042:12;;;;6089;;;6110:61;;6164:4;6156:6;6152:17;6142:27;;6110:61;6217:2;6209:6;6206:14;6186:18;6183:38;6180:161;;6263:10;6258:3;6254:20;6251:1;6244:31;6298:4;6295:1;6288:15;6326:4;6323:1;6316:15;6180:161;;5967:380;;;:::o;6352:356::-;6554:2;6536:21;;;6573:18;;;6566:30;6632:34;6627:2;6612:18;;6605:62;6699:2;6684:18;;6352:356::o;7122:127::-;7183:10;7178:3;7174:20;7171:1;7164:31;7214:4;7211:1;7204:15;7238:4;7235:1;7228:15;7254:128;7321:9;;;7342:11;;;7339:37;;;7356:18;;:::i;7387:127::-;7448:10;7443:3;7439:20;7436:1;7429:31;7479:4;7476:1;7469:15;7503:4;7500:1;7493:15;7519:135;7558:3;7579:17;;;7576:43;;7599:18;;:::i;:::-;-1:-1:-1;7646:1:1;7635:13;;7519:135::o;7659:125::-;7724:9;;;7745:10;;;7742:36;;;7758:18;;:::i;7789:422::-;7878:1;7921:5;7878:1;7935:270;7956:7;7946:8;7943:21;7935:270;;;8015:4;8011:1;8007:6;8003:17;7997:4;7994:27;7991:53;;;8024:18;;:::i;:::-;8074:7;8064:8;8060:22;8057:55;;;8094:16;;;;8057:55;8173:22;;;;8133:15;;;;7935:270;;;7939:3;7789:422;;;;;:::o;8216:806::-;8265:5;8295:8;8285:80;;-1:-1:-1;8336:1:1;8350:5;;8285:80;8384:4;8374:76;;-1:-1:-1;8421:1:1;8435:5;;8374:76;8466:4;8484:1;8479:59;;;;8552:1;8547:130;;;;8459:218;;8479:59;8509:1;8500:10;;8523:5;;;8547:130;8584:3;8574:8;8571:17;8568:43;;;8591:18;;:::i;:::-;-1:-1:-1;;8647:1:1;8633:16;;8662:5;;8459:218;;8761:2;8751:8;8748:16;8742:3;8736:4;8733:13;8729:36;8723:2;8713:8;8710:16;8705:2;8699:4;8696:12;8692:35;8689:77;8686:159;;;-1:-1:-1;8798:19:1;;;8830:5;;8686:159;8877:34;8902:8;8896:4;8877:34;:::i;:::-;8947:6;8943:1;8939:6;8935:19;8926:7;8923:32;8920:58;;;8958:18;;:::i;:::-;8996:20;;8216:806;-1:-1:-1;;;8216:806:1:o;9027:140::-;9085:5;9114:47;9155:4;9145:8;9141:19;9135:4;9114:47;:::i;9172:168::-;9245:9;;;9276;;9293:15;;;9287:22;;9273:37;9263:71;;9314:18;;:::i;9624:245::-;9691:6;9744:2;9732:9;9723:7;9719:23;9715:32;9712:52;;;9760:1;9757;9750:12;9712:52;9792:9;9786:16;9811:28;9833:5;9811:28;:::i;9874:251::-;9944:6;9997:2;9985:9;9976:7;9972:23;9968:32;9965:52;;;10013:1;10010;10003:12;9965:52;10045:9;10039:16;10064:31;10089:5;10064:31;:::i;10439:607::-;-1:-1:-1;;;;;10798:15:1;;;10780:34;;10845:2;10830:18;;10823:34;;;;10888:2;10873:18;;10866:34;;;;10931:2;10916:18;;10909:34;;;;10980:15;;;10974:3;10959:19;;10952:44;10760:3;11012:19;;11005:35;;;;10729:3;10714:19;;10439:607::o;11051:306::-;11139:6;11147;11155;11208:2;11196:9;11187:7;11183:23;11179:32;11176:52;;;11224:1;11221;11214:12;11176:52;11253:9;11247:16;11237:26;;11303:2;11292:9;11288:18;11282:25;11272:35;;11347:2;11336:9;11332:18;11326:25;11316:35;;11051:306;;;;;:::o;15217:217::-;15257:1;15283;15273:132;;15327:10;15322:3;15318:20;15315:1;15308:31;15362:4;15359:1;15352:15;15390:4;15387:1;15380:15;15273:132;-1:-1:-1;15419:9:1;;15217:217::o;15439:401::-;15641:2;15623:21;;;15680:2;15660:18;;;15653:30;15719:34;15714:2;15699:18;;15692:62;-1:-1:-1;;;15785:2:1;15770:18;;15763:35;15830:3;15815:19;;15439:401::o;15845:399::-;16047:2;16029:21;;;16086:2;16066:18;;;16059:30;16125:34;16120:2;16105:18;;16098:62;-1:-1:-1;;;16191:2:1;16176:18;;16169:33;16234:3;16219:19;;15845:399::o;16656:980::-;16918:4;16966:3;16955:9;16951:19;16997:6;16986:9;16979:25;17023:2;17061:6;17056:2;17045:9;17041:18;17034:34;17104:3;17099:2;17088:9;17084:18;17077:31;17128:6;17163;17157:13;17194:6;17186;17179:22;17232:3;17221:9;17217:19;17210:26;;17271:2;17263:6;17259:15;17245:29;;17292:1;17302:195;17316:6;17313:1;17310:13;17302:195;;;17381:13;;-1:-1:-1;;;;;17377:39:1;17365:52;;17472:15;;;;17437:12;;;;17413:1;17331:9;17302:195;;;-1:-1:-1;;;;;;;17553:32:1;;;;17548:2;17533:18;;17526:60;-1:-1:-1;;;17617:3:1;17602:19;17595:35;17514:3;16656:980;-1:-1:-1;;;16656:980:1:o

Swarm Source

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