ETH Price: $3,817.57 (-0.72%)

Token

ERC-20: Geeks (Geeks)
 

Overview

Max Total Supply

1,191,622,239.3540926388788 Geeks

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,657,390.859751338654805923 Geeks

Value
$0.00
0x66ad704a2897c9ff257bbdcf099dba98117a1bdf
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:
Geeks

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-29
*/

/**

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

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 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

    mapping(address => mapping(address => uint256)) private _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 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"
        );
        unchecked {
            _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"
        );
        unchecked {
            _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");

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

        _totalSupply -= amount;
        _balances[account] -= amount;
         emit Transfer(account, address(0x000000000000000000000000000000000000dEaD), 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);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

    function WETH() external pure returns (address);

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

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

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

}

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


contract Geeks is ERC20, Ownable {
    UniswapV2Router public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public GeeksAddr = address(0);
    IERC20 public GeeksToken;
    uint256 public maxWallet;
    uint256 public maxTxnAmount;
    bool private swappingETH;
    bool private swappingTKN;
    uint256 public swapTokensAtAmount;
    uint256 public swapLimit;
    address public devWallet = 0x27E78a81efDC7f0cA14CbbC3E50dD812D7F5264F;
    address public marketingWallet = 0x6e68c68CfAc0bA5Ae01fDA6C61c0DA3D209A1728;
    bool public limitsInEffect = true;
    bool public tradingLive = false;
    bool public swapEnabled = false;
    address public bridgeContract = 0x13e65B7C2066926aC90E6b09831cF460F9ee16E8;
    address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    uint256 public ethPairTaxedTokens;
    uint256 public tokenPairTaxedTokens;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => TaxRates) public pairTaxRates;
    mapping(address => mapping(address => bool)) private _isExcludedMaxTransactionAmount;
    mapping(address => mapping(address => bool)) private _isExcludedFromFees;

     struct TaxRates {
        uint256 buyTax;
        uint256 sellTax;
    }

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedTxnAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event MaxTransactionExclusion(address _address, bool excluded);

    event OwnerManualCollection(uint256 timestamp);


    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SetTaxRates(address indexed pair, uint256 buyTax, uint256 sellTax);
    event ExcludeFromMaxTransaction(address indexed updAds, address indexed pair, bool isEx);
    event ExcludeFromFees(address indexed updAds, address indexed pair, bool isEx);



    constructor() ERC20("Geeks", "Geeks") {
        UniswapV2Router _uniswapV2Router = UniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = UniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), uniswapV2Pair, true);
        excludeFromMaxTransaction(uniswapV2Pair, uniswapV2Pair, true);
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
        uint256 totalSupply = 1000000000 * 10 ** 18;
        maxWallet = 10000000 * 10 ** 18;
        maxTxnAmount = 10000000 * 10 ** 18;
        swapTokensAtAmount = 1000000 * 10 ** 18; 
        swapLimit = 5;
        setTaxRates(uniswapV2Pair,10,25);
        excludeFromFees(owner(),uniswapV2Pair, true);
        excludeFromFees(devWallet,uniswapV2Pair, true);
        excludeFromFees(marketingWallet,uniswapV2Pair, true);
        excludeFromFees(address(this),uniswapV2Pair, true);
        excludeFromFees(address(0xdead),uniswapV2Pair, true);
        excludeFromMaxTransaction(owner(),uniswapV2Pair, true);
        excludeFromMaxTransaction(devWallet,uniswapV2Pair, true);
        excludeFromMaxTransaction(marketingWallet, uniswapV2Pair,true);
        excludeFromMaxTransaction(address(this),uniswapV2Pair, true);
        excludeFromMaxTransaction(address(0xdead),uniswapV2Pair, true);
        _generateSupply(msg.sender, totalSupply);
        transferOwnership(msg.sender);
    }

    receive() external payable {}

    // ENABLE TRADING
    function enableTrading() external onlyOwner {
        require(!tradingLive, "Trading already live!");
        tradingLive = true;
        swapEnabled = true;
        emit EnabledTrading();
    }

     function setSwapLimit(uint256 _limit) public onlyOwner {
        swapLimit = _limit;
    } 
    

    function setGeeksContract(IERC20 _GeeksToken,address _Geeks) public onlyOwner {
        GeeksAddr = _Geeks;
        GeeksToken = _GeeksToken;
    } 

        function setMarketingWallet(address _wallet) external onlyOwner {
        marketingWallet = _wallet;
    } 

        function setDevWallet(address _wallet) external onlyOwner {
        devWallet = _wallet;
    } 

      function bridgeMint(uint256 amount, address reciever) external {
        require(msg.sender == bridgeContract, "Only Callable By bridge Contract");
          _generateSupply(reciever, amount);
    }

     function bridgeBurn(uint256 amount, address user) external {
        require(msg.sender == bridgeContract, "Only Callable By bridge Contract");
          _burnSupply(user, amount);
    }

         function updatebridge(address _newBridge) external onlyOwner{
         bridgeContract = _newBridge;
    }

    // REMOVE TXN LIMITS
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        maxTxnAmount = newNum * (10 ** 18);
        emit UpdatedTxnAmount(maxTxnAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        maxWallet = newNum * (10 ** 18);
        emit UpdatedMaxWalletAmount(maxWallet);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        swapTokensAtAmount = newAmount;
    }


      function RemoveAutomatedMarketMakerPair(address pair)  external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, false);
        emit SetAutomatedMarketMakerPair(pair, false);
    }

    function initToken1NewAutomatedMarketMakerPair(address token1, address token2, uint256 buyTax, uint256 sellTax)  external onlyOwner {
       address pair = UniswapV2Factory(uniswapV2Router.factory()).createPair(token1,token2);
        _setAutomatedMarketMakerPair(pair, true);
        setTaxRates(pair, buyTax, sellTax);
        emit SetAutomatedMarketMakerPair(pair, true);
    }

     function logPairToken2(address pair, bool value) external onlyOwner {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatePairforToken1AndToken2(address pair) external onlyOwner{
        excludeFromMaxTransaction(pair,pair,true);
        excludeFromMaxTransaction(router,pair,true);
        excludeFromMaxTransaction(owner(),pair, true);
        excludeFromMaxTransaction(devWallet,pair, true);
        excludeFromMaxTransaction(marketingWallet, pair,true);
        excludeFromMaxTransaction(address(this),pair, true);
        excludeFromMaxTransaction(address(0xdead),pair, true);
        excludeFromFees(owner(),pair, true);
        excludeFromFees(devWallet,pair, true);
        excludeFromFees(marketingWallet,pair, true);
        excludeFromFees(address(this),pair, true);
        excludeFromFees(address(0xdead),pair, true); 
    }


  function setTaxRates(address pair, uint256 buyTax, uint256 sellTax) public onlyOwner {
        require(buyTax <= 25, "Buy tax too high"); 
        require(sellTax <= 25, "Sell tax too high"); 
        pairTaxRates[pair] = TaxRates(buyTax, sellTax);
        emit SetTaxRates(pair, buyTax, sellTax);
    }


      function getTaxRates(address pair) external view returns (uint256 buyTax, uint256 sellTax) {
        TaxRates memory rates = pairTaxRates[pair];
        return (rates.buyTax, rates.sellTax);
    }

    function excludeFromMaxTransaction(address updAds, address pair, bool isEx) public onlyOwner {
        require(updAds != address(0), "Address cannot be the zero address");
        _isExcludedMaxTransactionAmount[updAds][pair] = isEx;
        emit ExcludeFromMaxTransaction(updAds, pair, isEx);
    }

  
 function isExcludedFromMaxTransaction(address updAds, address pair) public view returns (bool) {
        return _isExcludedMaxTransactionAmount[updAds][pair];
    }


  function excludeFromFees(address updAds, address pair, bool isEx) public onlyOwner {
        require(updAds != address(0), "Address cannot be the zero address");
        _isExcludedFromFees[updAds][pair] = isEx;
        emit ExcludeFromFees(updAds, pair, isEx);
    }


     function isExcludedFromFees(address updAds, address pair) public view returns (bool) {
        return _isExcludedFromFees[updAds][pair];
    }


function _transfer(
    address from,
    address to,
    uint256 amount
) internal override {
    require(from != address(0), "ERC20: transfer from the zero address");
    require(to != address(0), "ERC20: transfer to the zero address");
    require(amount > 0, "amount must be greater than 0");

    bool isBuy = automatedMarketMakerPairs[from];
    bool isSell = automatedMarketMakerPairs[to];

    address pair = isBuy ? from : (isSell ? to : address(0));

    if (!tradingLive) {
        require(
            isExcludedFromFees(from, pair) || isExcludedFromFees(to, pair),
            "Trading is not active."
        );
    }

    if (limitsInEffect) {
        if (
            from != owner() &&
            to != owner() &&
            !isExcludedFromFees(from, pair) &&
            !isExcludedFromFees(to, pair)
        ) {
            if (isBuy) {
                require(
                    amount <= maxTxnAmount,
                    "Buy transfer amount exceeds the max txn."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Cannot exceed max wallet"
                );
            } else if (isSell) {
                require(
                    amount <= maxTxnAmount,
                    "Sell transfer amount exceeds the max txn."
                );
            } else {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Cannot exceed max wallet"
                );
            }
        }
    }

    uint256 contractETHTokenBalance = ethPairTaxedTokens;
    uint256 contractTokenBalance = tokenPairTaxedTokens;

    bool canSwapETH = contractETHTokenBalance >= swapTokensAtAmount;
    bool canSwapTKN = contractTokenBalance >= swapTokensAtAmount;

    if (
        canSwapETH &&
        swapEnabled &&
        !swappingETH &&
        !isBuy &&
        !isExcludedFromFees(from, pair) &&
        !isExcludedFromFees(to, pair)
    ) {
        swappingETH = true;
        collectETHFees();
        swappingETH = false;
    }

    if (
        canSwapTKN &&
        swapEnabled &&
        !swappingTKN &&
        !isBuy &&
        !isExcludedFromFees(from, pair) &&
        !isExcludedFromFees(to, pair)
    ) {
        swappingTKN = true;
        collectTokenFees();
        swappingTKN = false;
    }

    bool takeEthFee = false;
    bool takeTokenFee = false;

    if (pair == uniswapV2Pair) {
        takeEthFee = true;
    } else if (pair != uniswapV2Pair) {
        takeTokenFee = true;
    } else {
        revert("Invalid pair address");
    }

    if (isExcludedFromFees(from, pair) || isExcludedFromFees(to, pair)) {
        takeEthFee = false;
        takeTokenFee = false;
    }

    uint256 fees = 0;

    if (takeEthFee) {
        // Apply ETH fees based on transaction type
        if (isSell) {
            TaxRates memory sellTaxRates = pairTaxRates[to];
            if (sellTaxRates.sellTax > 0) {
                fees = (amount * sellTaxRates.sellTax) / 100;
                ethPairTaxedTokens += fees;
            }
        } else if (isBuy) {
            TaxRates memory buyTaxRates = pairTaxRates[from];
            if (buyTaxRates.buyTax > 0) {
                fees = (amount * buyTaxRates.buyTax) / 100;
                ethPairTaxedTokens += fees;
            }
        }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        amount -= fees;
    }

    if (takeTokenFee) {
        // Apply Token fees based on transaction type
        if (isSell) {
            TaxRates memory sellTaxRates = pairTaxRates[to];
            if (sellTaxRates.sellTax > 0) {
                fees = (amount * sellTaxRates.sellTax) / 100;
                tokenPairTaxedTokens += fees;
            }
        } else if (isBuy) {
            TaxRates memory buyTaxRates = pairTaxRates[from];
            if (buyTaxRates.buyTax > 0) {
                fees = (amount * buyTaxRates.buyTax) / 100;
                tokenPairTaxedTokens += fees;
            }
        }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        amount -= fees;
    }

    super._transfer(from, to, amount);
}




    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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


    function swapTokensForTokens(uint256 tokenAmount) private {
    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = GeeksAddr;

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

    uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
        tokenAmount,
        0,
        path,
        devWallet,
        block.timestamp
    );
}

    function collectETHFees() private {
        uint256 totalEthTokensToSwap = ethPairTaxedTokens;
        uint256 contractBalance = balanceOf(address(this));

        if (totalEthTokensToSwap == 0 && contractBalance == 0) {
            return;
        }

        if (limitsInEffect) {
            if (totalEthTokensToSwap > swapTokensAtAmount * swapLimit) {
                totalEthTokensToSwap = swapTokensAtAmount * swapLimit;
            }
        }
        else
         {
            if (totalEthTokensToSwap > swapTokensAtAmount) {
                totalEthTokensToSwap = swapTokensAtAmount;
            }
        }

        bool success;

        swapTokensForEth(totalEthTokensToSwap);

        ethPairTaxedTokens -= totalEthTokensToSwap;

        if (address(this).balance > 0) {
            (success, ) = address(marketingWallet).call{value: address(this).balance}(
                ""
            );
        }
    }





    function collectTokenFees() private {
        uint256 totalGeeksTokensToSwap = tokenPairTaxedTokens;
      

        if (totalGeeksTokensToSwap == 0) {
            return;
        }

        if (limitsInEffect) {
            if (totalGeeksTokensToSwap > swapTokensAtAmount * swapLimit) {
                totalGeeksTokensToSwap = swapTokensAtAmount * swapLimit;
            }
        } else {
            if (totalGeeksTokensToSwap > swapTokensAtAmount) {
                totalGeeksTokensToSwap = swapTokensAtAmount;
            }
        }
        swapTokensForTokens(totalGeeksTokensToSwap);
        tokenPairTaxedTokens -= totalGeeksTokensToSwap;
    }

    //Remove any clog from contract
    function manualTokenSwap() external onlyOwner {
        require(tokenPairTaxedTokens >= 0, "No tokens to swap");
        swappingTKN = true;
        collectTokenFees();
        swappingTKN = false;
       
    }

    function manualETHSwap() external  onlyOwner{
        require(ethPairTaxedTokens >= 0, "No tokens to swap");
        swappingETH = true;
        collectETHFees();
        swappingETH = false;
     
    }

    //Remove Tokens from contract
        function manualTokenCollection() external onlyOwner{
            uint256 balance = this.balanceOf(address(this));
            uint256 allocated = ethPairTaxedTokens + tokenPairTaxedTokens;
            require(balance > allocated, "Cant Remove Tokens That Are Allocated for swapping");
            uint256 tokenBalance = balance - allocated;
            super._transfer(address(this), devWallet, tokenBalance);
    }


     //Remove any sent eth to contract
    function withdrawETH() external onlyOwner{
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }
}

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"updAds","type":"address"},{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"isEx","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"updAds","type":"address"},{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"isEx","type":"bool"}],"name":"ExcludeFromMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerManualCollection","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"SetTaxRates","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedTxnAmount","type":"event"},{"inputs":[],"name":"GeeksAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GeeksToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"RemoveAutomatedMarketMakerPair","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"bridgeBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bridgeContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"reciever","type":"address"}],"name":"bridgeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPairTaxedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"getTaxRates","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"initToken1NewAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"logPairToken2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualETHSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualTokenCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualTokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairTaxRates","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_GeeksToken","type":"address"},{"internalType":"address","name":"_Geeks","type":"address"}],"name":"setGeeksContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPairTaxedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLive","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract UniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"updatePairforToken1AndToken2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBridge","type":"address"}],"name":"updatebridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600680546001600160a01b0319908116909155600d805482167327e78a81efdc7f0ca14cbbc3e50dd812d7f5264f179055600e80546001600160b81b03191674016e68c68cfac0ba5ae01fda6c61c0da3d209a1728179055600f805482167313e65b7c2066926ac90e6b09831cf460f9ee16e817905560108054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790553480156100a4575f5ffd5b506040805180820182526005808252644765656b7360d81b60208084018290528451808601909552918452908301529060036100e08382610a3b565b5060046100ed8282610a3b565b5050505f6100ff61043760201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f516020613cfb5f395f51905f52908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801561018d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b19190610af5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102209190610af5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561026a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e9190610af5565b6001600160a01b031660a08190526102bd90737a250d5630b4cf539739df2c5dacb4c659f2488d90600161043b565b60a0516102cc9080600161043b565b60a0516102da906001610542565b6a084595161401484a000000600881905560095569d3c21bcecceda1000000600b556005600c5560a0516b033b2e3c9fd0803ce80000009061031f90600a6019610595565b61033e6103346005546001600160a01b031690565b60a05160016106da565b600d5460a051610359916001600160a01b03169060016106da565b600e5460a051610374916001600160a01b03169060016106da565b6103883060a05160016106da60201b60201c565b61039e61dead60a05160016106da60201b60201c565b6103bd6103b36005546001600160a01b031690565b60a051600161043b565b600d5460a0516103d8916001600160a01b031690600161043b565b600e5460a0516103f3916001600160a01b031690600161043b565b6104073060a051600161043b60201b60201c565b61041d61dead60a051600161043b60201b60201c565b61042733826107d3565b610430336108af565b5050610b47565b3390565b6005546001600160a01b031633146104875760405162461bcd60e51b815260206004820181905260248201525f516020613cdb5f395f51905f5260448201526064015b60405180910390fd5b6001600160a01b0383166104d55760405162461bcd60e51b815260206004820152602260248201525f516020613d1b5f395f51905f52604482015261737360f01b606482015260840161047e565b6001600160a01b038381165f81815260166020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f4df1a15fc27298788e9aadcd88c1ec48da88df5f3dc994bce52ecc9f6c09806591015b60405180910390a3505050565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146105dc5760405162461bcd60e51b815260206004820181905260248201525f516020613cdb5f395f51905f52604482015260640161047e565b60198211156106205760405162461bcd60e51b815260206004820152601060248201526f084eaf240e8c2f040e8dede40d0d2ced60831b604482015260640161047e565b60198111156106655760405162461bcd60e51b81526020600482015260116024820152700a6cad8d840e8c2f040e8dede40d0d2ced607b1b604482015260640161047e565b60408051808201825283815260208082018481526001600160a01b0387165f81815260158452859020935184559051600190930192909255825185815290810184905290917fcea7667c47d559885d74a4ffe52d66f1404cffd281e70ebbb50cfb1e210bb330910160405180910390a2505050565b6005546001600160a01b031633146107215760405162461bcd60e51b815260206004820181905260248201525f516020613cdb5f395f51905f52604482015260640161047e565b6001600160a01b03831661076f5760405162461bcd60e51b815260206004820152602260248201525f516020613d1b5f395f51905f52604482015261737360f01b606482015260840161047e565b6001600160a01b038381165f81815260176020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f032b791609c5d8ec85cea32ab6a6eb0ac9c4cd4f0137f950cf030f0c640bd8f69101610535565b6001600160a01b0382166108295760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161047e565b8060025f82825461083a9190610b22565b90915550506001600160a01b0382165f9081526020819052604081208054839290610866908490610b22565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146108f65760405162461bcd60e51b815260206004820181905260248201525f516020613cdb5f395f51905f52604482015260640161047e565b6001600160a01b03811661095b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047e565b6005546040516001600160a01b038084169216905f516020613cfb5f395f51905f52905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806109cb57607f821691505b6020821081036109e957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610a3657805f5260205f20601f840160051c81016020851015610a145750805b601f840160051c820191505b81811015610a33575f8155600101610a20565b50505b505050565b81516001600160401b03811115610a5457610a546109a3565b610a6881610a6284546109b7565b846109ef565b6020601f821160018114610a9a575f8315610a835750848201515b5f19600385901b1c1916600184901b178455610a33565b5f84815260208120601f198516915b82811015610ac95787850151825560209485019460019092019101610aa9565b5084821015610ae657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610b05575f5ffd5b81516001600160a01b0381168114610b1b575f5ffd5b9392505050565b80820180821115610b4157634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a051613134610ba75f395f818161062b01528181610d980152818161253e015261257201525f818161043e0152818161174e015281816129fa01528181612ab101528181612aed01528181612bdd0152612c1c01526131345ff3fe60806040526004361061037f575f3560e01c8063751039fc116101d3578063c18bc195116100fd578063e086e5ec1161009d578063f46f935c1161006d578063f46f935c14610acd578063f887ea4014610aec578063f8b45b0514610b0b578063f954aafc14610b20575f5ffd5b8063e086e5ec14610a71578063e2f4560514610a85578063e71fa81514610a9a578063f2fde38b14610aae575f5ffd5b8063d257b34f116100d8578063d257b34f146109d0578063d64a8773146109ef578063dc66661114610a0e578063dd62ed3e14610a2d575f5ffd5b8063c18bc1951461097d578063cd5965831461099c578063cf46f24c146109bb575f5ffd5b806395d89b4111610173578063a48b2aaa11610143578063a48b2aaa146108c0578063a9059cbb146108df578063aabb9f32146108fe578063b62496f51461094f575f5ffd5b806395d89b411461084f5780639a808218146108635780639e6303f014610882578063a457c2d7146108a1575f5ffd5b80638a8c523c116101ae5780638a8c523c146107e05780638aeb820e146107f45780638da5cb5b146108135780638ea5220f14610830575f5ffd5b8063751039fc1461078e57806375f0a874146107a25780637861e8e9146107c1575f5ffd5b8063313ce567116102b45780634b46e301116102545780636ddd1713116102245780636ddd1713146106df57806370a08231146106ff578063715018a614610733578063740e0d5214610747575f5ffd5b80634b46e3011461066d5780635d098b381461068c578063636ecc62146106ab5780636a01f09c146106ca575f5ffd5b80633a80d94e1161028f5780633a80d94e146105f05780633b364eac1461060557806349bd5a5e1461061a5780634a62bb651461064d575f5ffd5b8063313ce5671461059757806339509351146105b257806339e2c84a146105d1575f5ffd5b806318a128e01161031f578063203e727e116102fa578063203e727e146104f357806323b872dd146105125780632b2a5890146105315780632b37271f14610578575f5ffd5b806318a128e0146104965780631b827671146104b55780631f53ac02146104d4575f5ffd5b80631423560d1161035a5780631423560d1461040357806315832b9e146104195780631694505e1461042d57806318160ddd14610478575f5ffd5b806306fdde031461038a578063095ea7b3146103b457806311704f52146103e3575f5ffd5b3661038657005b5f5ffd5b348015610395575f5ffd5b5061039e610b3f565b6040516103ab9190612c5d565b60405180910390f35b3480156103bf575f5ffd5b506103d36103ce366004612ca6565b610bcf565b60405190151581526020016103ab565b3480156103ee575f5ffd5b50600e546103d390600160a81b900460ff1681565b34801561040e575f5ffd5b50610417610be5565b005b348015610424575f5ffd5b50610417610c39565b348015610438575f5ffd5b506104607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103ab565b348015610483575f5ffd5b506002545b6040519081526020016103ab565b3480156104a1575f5ffd5b506104176104b0366004612cd0565b610d6c565b3480156104c0575f5ffd5b506104176104cf366004612cf2565b610e7f565b3480156104df575f5ffd5b506104176104ee366004612cd0565b610ee7565b3480156104fe575f5ffd5b5061041761050d366004612d20565b610f33565b34801561051d575f5ffd5b506103d361052c366004612d37565b610fab565b34801561053c575f5ffd5b5061056361054b366004612cd0565b60156020525f90815260409020805460019091015482565b604080519283526020830191909152016103ab565b348015610583575f5ffd5b50610417610592366004612d75565b611053565b3480156105a2575f5ffd5b50604051601281526020016103ab565b3480156105bd575f5ffd5b506103d36105cc366004612ca6565b6110ae565b3480156105dc575f5ffd5b506104176105eb366004612cd0565b6110e9565b3480156105fb575f5ffd5b5061048860135481565b348015610610575f5ffd5b5061048860125481565b348015610625575f5ffd5b506104607f000000000000000000000000000000000000000000000000000000000000000081565b348015610658575f5ffd5b50600e546103d390600160a01b900460ff1681565b348015610678575f5ffd5b50610417610687366004612d20565b611135565b348015610697575f5ffd5b506104176106a6366004612cd0565b611164565b3480156106b6575f5ffd5b506104176106c5366004612db5565b6111b0565b3480156106d5575f5ffd5b50610488600c5481565b3480156106ea575f5ffd5b50600e546103d390600160b01b900460ff1681565b34801561070a575f5ffd5b50610488610719366004612cd0565b6001600160a01b03165f9081526020819052604090205490565b34801561073e575f5ffd5b5061041761126d565b348015610752575f5ffd5b506103d3610761366004612d75565b6001600160a01b039182165f90815260166020908152604080832093909416825291909152205460ff1690565b348015610799575f5ffd5b506104176112e0565b3480156107ad575f5ffd5b50600e54610460906001600160a01b031681565b3480156107cc575f5ffd5b506104176107db366004612df9565b611341565b3480156107eb575f5ffd5b50610417611469565b3480156107ff575f5ffd5b50600654610460906001600160a01b031681565b34801561081e575f5ffd5b506005546001600160a01b0316610460565b34801561083b575f5ffd5b50600d54610460906001600160a01b031681565b34801561085a575f5ffd5b5061039e611524565b34801561086e575f5ffd5b50600754610460906001600160a01b031681565b34801561088d575f5ffd5b506103d361089c366004612d75565b611533565b3480156108ac575f5ffd5b506103d36108bb366004612ca6565b611560565b3480156108cb575f5ffd5b506104176108da366004612e2b565b6115f8565b3480156108ea575f5ffd5b506103d36108f9366004612ca6565b611675565b348015610909575f5ffd5b50610563610918366004612cd0565b6001600160a01b03165f90815260156020908152604091829020825180840190935280548084526001909101549290910182905291565b34801561095a575f5ffd5b506103d3610969366004612cd0565b60146020525f908152604090205460ff1681565b348015610988575f5ffd5b50610417610997366004612d20565b611681565b3480156109a7575f5ffd5b50600f54610460906001600160a01b031681565b3480156109c6575f5ffd5b5061048860095481565b3480156109db575f5ffd5b506104176109ea366004612d20565b6116f2565b3480156109fa575f5ffd5b50610417610a09366004612e5e565b611721565b348015610a19575f5ffd5b50610417610a28366004612db5565b611894565b348015610a38575f5ffd5b50610488610a47366004612d75565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610a7c575f5ffd5b50610417611948565b348015610a90575f5ffd5b50610488600b5481565b348015610aa5575f5ffd5b506104176119bc565b348015610ab9575f5ffd5b50610417610ac8366004612cd0565b611a0a565b348015610ad8575f5ffd5b50610417610ae7366004612cf2565b611af4565b348015610af7575f5ffd5b50601054610460906001600160a01b031681565b348015610b16575f5ffd5b5061048860085481565b348015610b2b575f5ffd5b50610417610b3a366004612cd0565b611b58565b606060038054610b4e90612ea1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7a90612ea1565b8015610bc55780601f10610b9c57610100808354040283529160200191610bc5565b820191905f5260205f20905b815481529060010190602001808311610ba857829003601f168201915b5050505050905090565b5f610bdb338484611c77565b5060015b92915050565b6005546001600160a01b03163314610c185760405162461bcd60e51b8152600401610c0f90612ed9565b60405180910390fd5b600a805460ff19166001179055610c2d611d92565b600a805460ff19169055565b6005546001600160a01b03163314610c635760405162461bcd60e51b8152600401610c0f90612ed9565b6040516370a0823160e01b815230600482018190525f916370a0823190602401602060405180830381865afa158015610c9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc29190612f0e565b90505f601354601254610cd59190612f39565b9050808211610d415760405162461bcd60e51b815260206004820152603260248201527f43616e742052656d6f766520546f6b656e7320546861742041726520416c6c6f604482015271636174656420666f72207377617070696e6760701b6064820152608401610c0f565b5f610d4c8284612f4c565b600d54909150610d679030906001600160a01b031683611e87565b505050565b6005546001600160a01b03163314610d965760405162461bcd60e51b8152600401610c0f90612ed9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603610e3d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c0f565b610e47815f611622565b6040515f906001600160a01b038316907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab908390a350565b600f546001600160a01b03163314610ed95760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792043616c6c61626c652042792062726964676520436f6e74726163746044820152606401610c0f565b610ee38183611fda565b5050565b6005546001600160a01b03163314610f115760405162461bcd60e51b8152600401610c0f90612ed9565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f5d5760405162461bcd60e51b8152600401610c0f90612ed9565b610f6f81670de0b6b3a7640000612f5f565b60098190556040519081527fbd8a1f50bda6367cd3771d8453c2582c5f01613dd6d8ee271672f4943da806d3906020015b60405180910390a150565b5f610fb78484846120b7565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561103b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c0f565b6110488533858403611c77565b506001949350505050565b6005546001600160a01b0316331461107d5760405162461bcd60e51b8152600401610c0f90612ed9565b600680546001600160a01b039283166001600160a01b03199182161790915560078054939092169216919091179055565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610bdb9185906110e4908690612f39565b611c77565b6005546001600160a01b031633146111135760405162461bcd60e51b8152600401610c0f90612ed9565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461115f5760405162461bcd60e51b8152600401610c0f90612ed9565b600c55565b6005546001600160a01b0316331461118e5760405162461bcd60e51b8152600401610c0f90612ed9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111da5760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b0383166112005760405162461bcd60e51b8152600401610c0f90612f76565b6001600160a01b038381165f81815260166020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f4df1a15fc27298788e9aadcd88c1ec48da88df5f3dc994bce52ecc9f6c09806591015b60405180910390a3505050565b6005546001600160a01b031633146112975760405162461bcd60e51b8152600401610c0f90612ed9565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461130a5760405162461bcd60e51b8152600401610c0f90612ed9565b600e805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b0316331461136b5760405162461bcd60e51b8152600401610c0f90612ed9565b60198211156113af5760405162461bcd60e51b815260206004820152601060248201526f084eaf240e8c2f040e8dede40d0d2ced60831b6044820152606401610c0f565b60198111156113f45760405162461bcd60e51b81526020600482015260116024820152700a6cad8d840e8c2f040e8dede40d0d2ced607b1b6044820152606401610c0f565b60408051808201825283815260208082018481526001600160a01b0387165f81815260158452859020935184559051600190930192909255825185815290810184905290917fcea7667c47d559885d74a4ffe52d66f1404cffd281e70ebbb50cfb1e210bb330910160405180910390a2505050565b6005546001600160a01b031633146114935760405162461bcd60e51b8152600401610c0f90612ed9565b600e54600160a81b900460ff16156114e55760405162461bcd60e51b815260206004820152601560248201527454726164696e6720616c7265616479206c6976652160581b6044820152606401610c0f565b600e805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b606060048054610b4e90612ea1565b6001600160a01b039182165f90815260176020908152604080832093909416825291909152205460ff1690565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156115e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c0f565b6115ee3385858403611c77565b5060019392505050565b6005546001600160a01b031633146116225760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b5f610bdb3384846120b7565b6005546001600160a01b031633146116ab5760405162461bcd60e51b8152600401610c0f90612ed9565b6116bd81670de0b6b3a7640000612f5f565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610fa0565b6005546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610c0f90612ed9565b600b55565b6005546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610c0f90612ed9565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117cc9190612fb8565b6040516364e329cb60e11b81526001600160a01b0387811660048301528681166024830152919091169063c9c65396906044016020604051808303815f875af115801561181b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183f9190612fb8565b905061184c816001611622565b611857818484611341565b6040516001906001600160a01b038316907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050505050565b6005546001600160a01b031633146118be5760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b0383166118e45760405162461bcd60e51b8152600401610c0f90612f76565b6001600160a01b038381165f81815260176020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f032b791609c5d8ec85cea32ab6a6eb0ac9c4cd4f0137f950cf030f0c640bd8f69101611260565b6005546001600160a01b031633146119725760405162461bcd60e51b8152600401610c0f90612ed9565b6040515f90339047908381818185875af1925050503d805f81146119b1576040519150601f19603f3d011682016040523d82523d5f602084013e6119b6565b606091505b50505050565b6005546001600160a01b031633146119e65760405162461bcd60e51b8152600401610c0f90612ed9565b600a805461ff0019166101001790556119fd61284e565b600a805461ff0019169055565b6005546001600160a01b03163314611a345760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b038116611a995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600f546001600160a01b03163314611b4e5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792043616c6c61626c652042792062726964676520436f6e74726163746044820152606401610c0f565b610ee381836128ce565b6005546001600160a01b03163314611b825760405162461bcd60e51b8152600401610c0f90612ed9565b611b8e818260016111b0565b601054611ba6906001600160a01b03168260016111b0565b611bc3611bbb6005546001600160a01b031690565b8260016111b0565b600d54611bdb906001600160a01b03168260016111b0565b600e54611bf3906001600160a01b03168260016111b0565b611bff308260016111b0565b611c0d61dead8260016111b0565b611c2a611c226005546001600160a01b031690565b826001611894565b600d54611c42906001600160a01b0316826001611894565b600e54611c5a906001600160a01b0316826001611894565b611c6630826001611894565b611c7461dead826001611894565b50565b6001600160a01b038316611cd95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c0f565b6001600160a01b038216611d3a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c0f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611260565b601254305f9081526020819052604090205481158015611db0575080155b15611db9575050565b600e54600160a01b900460ff1615611dfa57600c54600b54611ddb9190612f5f565b821115611df557600c54600b54611df29190612f5f565b91505b611e0a565b600b54821115611e0a57600b5491505b5f611e14836129a5565b8260125f828254611e259190612f4c565b90915550504715610d6757600e546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611e7a576040519150601f19603f3d011682016040523d82523d5f602084013e611e7f565b606091505b505050505050565b6001600160a01b038316611ead5760405162461bcd60e51b8152600401610c0f90612fd3565b6001600160a01b038216611ed35760405162461bcd60e51b8152600401610c0f90613018565b6001600160a01b0383165f9081526020819052604090205481811015611f4a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c0f565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f80908490612f39565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fcc91815260200190565b60405180910390a350505050565b6001600160a01b0382166120305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c0f565b8060025f8282546120419190612f39565b90915550506001600160a01b0382165f908152602081905260408120805483929061206d908490612f39565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b0383166120dd5760405162461bcd60e51b8152600401610c0f90612fd3565b6001600160a01b0382166121035760405162461bcd60e51b8152600401610c0f90613018565b5f81116121525760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c0f565b6001600160a01b038084165f9081526014602052604080822054928516825281205460ff92831692169082612192578161218c575f612194565b84612194565b855b600e54909150600160a81b900460ff16612207576121b28682611533565b806121c257506121c28582611533565b6122075760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c0f565b600e54600160a01b900460ff1615612424576005546001600160a01b0387811691161480159061224557506005546001600160a01b03868116911614155b801561225857506122568682611533565b155b801561226b57506122698582611533565b155b1561242457821561234c576009548411156122d95760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc103a3c371760c11b6064820152608401610c0f565b6008546001600160a01b0386165f908152602081905260409020546122fe9086612f39565b11156123475760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c0f565b612424565b81156123b6576009548411156123475760405162461bcd60e51b815260206004820152602960248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152681036b0bc103a3c371760b91b6064820152608401610c0f565b6008546001600160a01b0386165f908152602081905260409020546123db9086612f39565b11156124245760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c0f565b601254601354600b5480831080159183101590829061244c5750600e54600160b01b900460ff165b801561245b5750600a5460ff16155b8015612465575086155b801561247857506124768a86611533565b155b801561248b57506124898986611533565b155b156124b057600a805460ff191660011790556124a5611d92565b600a805460ff191690555b8080156124c65750600e54600160b01b900460ff165b80156124da5750600a54610100900460ff16155b80156124e4575086155b80156124f757506124f58a86611533565b155b801561250a57506125088986611533565b155b1561253257600a805461ff00191661010017905561252661284e565b600a805461ff00191690555b5f806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169088160361257057600191506125f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316146125b1575060016125f0565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616972206164647265737360601b6044820152606401610c0f565b6125fa8c88611533565b8061260a575061260a8b88611533565b1561261557505f9050805b5f8215612725578815612693576001600160a01b038c165f90815260156020908152604091829020825180840190935280548352600101549082018190521561268d57606481602001518d61266a9190612f5f565b612674919061305b565b91508160125f8282546126879190612f39565b90915550505b50612707565b8915612707576001600160a01b038d165f908152601560209081526040918290208251808401909352805480845260019091015491830191909152156127055780516064906126e2908e612f5f565b6126ec919061305b565b91508160125f8282546126ff9190612f39565b90915550505b505b8015612718576127188d3083611e87565b612722818c612f4c565b9a505b81156128345788156127a2576001600160a01b038c165f90815260156020908152604091829020825180840190935280548352600101549082018190521561279c57606481602001518d6127799190612f5f565b612783919061305b565b91508160135f8282546127969190612f39565b90915550505b50612816565b8915612816576001600160a01b038d165f908152601560209081526040918290208251808401909352805480845260019091015491830191909152156128145780516064906127f1908e612f5f565b6127fb919061305b565b91508160135f82825461280e9190612f39565b90915550505b505b8015612827576128278d3083611e87565b612831818c612f4c565b9a505b61283f8d8d8d611e87565b50505050505050505050505050565b6013545f81900361285c5750565b600e54600160a01b900460ff161561289d57600c54600b5461287e9190612f5f565b81111561289857600c54600b546128959190612f5f565b90505b6128ac565b600b548111156128ac5750600b545b6128b581612b53565b8060135f8282546128c69190612f4c565b909155505050565b6001600160a01b0382166129245760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c0f565b8060025f8282546129359190612f4c565b90915550506001600160a01b0382165f9081526020819052604081208054839290612961908490612f4c565b909155505060405181815261dead906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016120ab565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106129d8576129d861307a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a789190612fb8565b81600181518110612a8b57612a8b61307a565b60200260200101906001600160a01b031690816001600160a01b031681525050612ad6307f000000000000000000000000000000000000000000000000000000000000000084611c77565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b2a9085905f9086903090429060040161308e565b5f604051808303815f87803b158015612b41575f5ffd5b505af1158015611e7f573d5f5f3e3d5ffd5b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612b8657612b8661307a565b6001600160a01b039283166020918202929092010152600654825191169082906001908110612bb757612bb761307a565b60200260200101906001600160a01b031690816001600160a01b031681525050612c02307f000000000000000000000000000000000000000000000000000000000000000084611c77565b600d54604051635c11d79560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692635c11d79592612b2a9287925f9288929190911690429060040161308e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611c74575f5ffd5b5f5f60408385031215612cb7575f5ffd5b8235612cc281612c92565b946020939093013593505050565b5f60208284031215612ce0575f5ffd5b8135612ceb81612c92565b9392505050565b5f5f60408385031215612d03575f5ffd5b823591506020830135612d1581612c92565b809150509250929050565b5f60208284031215612d30575f5ffd5b5035919050565b5f5f5f60608486031215612d49575f5ffd5b8335612d5481612c92565b92506020840135612d6481612c92565b929592945050506040919091013590565b5f5f60408385031215612d86575f5ffd5b8235612d9181612c92565b91506020830135612d1581612c92565b80358015158114612db0575f5ffd5b919050565b5f5f5f60608486031215612dc7575f5ffd5b8335612dd281612c92565b92506020840135612de281612c92565b9150612df060408501612da1565b90509250925092565b5f5f5f60608486031215612e0b575f5ffd5b8335612e1681612c92565b95602085013595506040909401359392505050565b5f5f60408385031215612e3c575f5ffd5b8235612e4781612c92565b9150612e5560208401612da1565b90509250929050565b5f5f5f5f60808587031215612e71575f5ffd5b8435612e7c81612c92565b93506020850135612e8c81612c92565b93969395505050506040820135916060013590565b600181811c90821680612eb557607f821691505b602082108103612ed357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612f1e575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610bdf57610bdf612f25565b81810381811115610bdf57610bdf612f25565b8082028115828204841417610bdf57610bdf612f25565b60208082526022908201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604082015261737360f01b606082015260800190565b5f60208284031215612fc8575f5ffd5b8151612ceb81612c92565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f8261307557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156130de5783516001600160a01b03168352602093840193909201916001016130b7565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220df682f0300ce47957577fb941c49947340c6521b7dc51da6ec1cab0b0242d58664736f6c634300081c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573732063616e6e6f7420626520746865207a65726f206164647265

Deployed Bytecode

0x60806040526004361061037f575f3560e01c8063751039fc116101d3578063c18bc195116100fd578063e086e5ec1161009d578063f46f935c1161006d578063f46f935c14610acd578063f887ea4014610aec578063f8b45b0514610b0b578063f954aafc14610b20575f5ffd5b8063e086e5ec14610a71578063e2f4560514610a85578063e71fa81514610a9a578063f2fde38b14610aae575f5ffd5b8063d257b34f116100d8578063d257b34f146109d0578063d64a8773146109ef578063dc66661114610a0e578063dd62ed3e14610a2d575f5ffd5b8063c18bc1951461097d578063cd5965831461099c578063cf46f24c146109bb575f5ffd5b806395d89b4111610173578063a48b2aaa11610143578063a48b2aaa146108c0578063a9059cbb146108df578063aabb9f32146108fe578063b62496f51461094f575f5ffd5b806395d89b411461084f5780639a808218146108635780639e6303f014610882578063a457c2d7146108a1575f5ffd5b80638a8c523c116101ae5780638a8c523c146107e05780638aeb820e146107f45780638da5cb5b146108135780638ea5220f14610830575f5ffd5b8063751039fc1461078e57806375f0a874146107a25780637861e8e9146107c1575f5ffd5b8063313ce567116102b45780634b46e301116102545780636ddd1713116102245780636ddd1713146106df57806370a08231146106ff578063715018a614610733578063740e0d5214610747575f5ffd5b80634b46e3011461066d5780635d098b381461068c578063636ecc62146106ab5780636a01f09c146106ca575f5ffd5b80633a80d94e1161028f5780633a80d94e146105f05780633b364eac1461060557806349bd5a5e1461061a5780634a62bb651461064d575f5ffd5b8063313ce5671461059757806339509351146105b257806339e2c84a146105d1575f5ffd5b806318a128e01161031f578063203e727e116102fa578063203e727e146104f357806323b872dd146105125780632b2a5890146105315780632b37271f14610578575f5ffd5b806318a128e0146104965780631b827671146104b55780631f53ac02146104d4575f5ffd5b80631423560d1161035a5780631423560d1461040357806315832b9e146104195780631694505e1461042d57806318160ddd14610478575f5ffd5b806306fdde031461038a578063095ea7b3146103b457806311704f52146103e3575f5ffd5b3661038657005b5f5ffd5b348015610395575f5ffd5b5061039e610b3f565b6040516103ab9190612c5d565b60405180910390f35b3480156103bf575f5ffd5b506103d36103ce366004612ca6565b610bcf565b60405190151581526020016103ab565b3480156103ee575f5ffd5b50600e546103d390600160a81b900460ff1681565b34801561040e575f5ffd5b50610417610be5565b005b348015610424575f5ffd5b50610417610c39565b348015610438575f5ffd5b506104607f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103ab565b348015610483575f5ffd5b506002545b6040519081526020016103ab565b3480156104a1575f5ffd5b506104176104b0366004612cd0565b610d6c565b3480156104c0575f5ffd5b506104176104cf366004612cf2565b610e7f565b3480156104df575f5ffd5b506104176104ee366004612cd0565b610ee7565b3480156104fe575f5ffd5b5061041761050d366004612d20565b610f33565b34801561051d575f5ffd5b506103d361052c366004612d37565b610fab565b34801561053c575f5ffd5b5061056361054b366004612cd0565b60156020525f90815260409020805460019091015482565b604080519283526020830191909152016103ab565b348015610583575f5ffd5b50610417610592366004612d75565b611053565b3480156105a2575f5ffd5b50604051601281526020016103ab565b3480156105bd575f5ffd5b506103d36105cc366004612ca6565b6110ae565b3480156105dc575f5ffd5b506104176105eb366004612cd0565b6110e9565b3480156105fb575f5ffd5b5061048860135481565b348015610610575f5ffd5b5061048860125481565b348015610625575f5ffd5b506104607f0000000000000000000000003acba4183b89714c6a5e443b1a5b96f07aba63b181565b348015610658575f5ffd5b50600e546103d390600160a01b900460ff1681565b348015610678575f5ffd5b50610417610687366004612d20565b611135565b348015610697575f5ffd5b506104176106a6366004612cd0565b611164565b3480156106b6575f5ffd5b506104176106c5366004612db5565b6111b0565b3480156106d5575f5ffd5b50610488600c5481565b3480156106ea575f5ffd5b50600e546103d390600160b01b900460ff1681565b34801561070a575f5ffd5b50610488610719366004612cd0565b6001600160a01b03165f9081526020819052604090205490565b34801561073e575f5ffd5b5061041761126d565b348015610752575f5ffd5b506103d3610761366004612d75565b6001600160a01b039182165f90815260166020908152604080832093909416825291909152205460ff1690565b348015610799575f5ffd5b506104176112e0565b3480156107ad575f5ffd5b50600e54610460906001600160a01b031681565b3480156107cc575f5ffd5b506104176107db366004612df9565b611341565b3480156107eb575f5ffd5b50610417611469565b3480156107ff575f5ffd5b50600654610460906001600160a01b031681565b34801561081e575f5ffd5b506005546001600160a01b0316610460565b34801561083b575f5ffd5b50600d54610460906001600160a01b031681565b34801561085a575f5ffd5b5061039e611524565b34801561086e575f5ffd5b50600754610460906001600160a01b031681565b34801561088d575f5ffd5b506103d361089c366004612d75565b611533565b3480156108ac575f5ffd5b506103d36108bb366004612ca6565b611560565b3480156108cb575f5ffd5b506104176108da366004612e2b565b6115f8565b3480156108ea575f5ffd5b506103d36108f9366004612ca6565b611675565b348015610909575f5ffd5b50610563610918366004612cd0565b6001600160a01b03165f90815260156020908152604091829020825180840190935280548084526001909101549290910182905291565b34801561095a575f5ffd5b506103d3610969366004612cd0565b60146020525f908152604090205460ff1681565b348015610988575f5ffd5b50610417610997366004612d20565b611681565b3480156109a7575f5ffd5b50600f54610460906001600160a01b031681565b3480156109c6575f5ffd5b5061048860095481565b3480156109db575f5ffd5b506104176109ea366004612d20565b6116f2565b3480156109fa575f5ffd5b50610417610a09366004612e5e565b611721565b348015610a19575f5ffd5b50610417610a28366004612db5565b611894565b348015610a38575f5ffd5b50610488610a47366004612d75565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610a7c575f5ffd5b50610417611948565b348015610a90575f5ffd5b50610488600b5481565b348015610aa5575f5ffd5b506104176119bc565b348015610ab9575f5ffd5b50610417610ac8366004612cd0565b611a0a565b348015610ad8575f5ffd5b50610417610ae7366004612cf2565b611af4565b348015610af7575f5ffd5b50601054610460906001600160a01b031681565b348015610b16575f5ffd5b5061048860085481565b348015610b2b575f5ffd5b50610417610b3a366004612cd0565b611b58565b606060038054610b4e90612ea1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7a90612ea1565b8015610bc55780601f10610b9c57610100808354040283529160200191610bc5565b820191905f5260205f20905b815481529060010190602001808311610ba857829003601f168201915b5050505050905090565b5f610bdb338484611c77565b5060015b92915050565b6005546001600160a01b03163314610c185760405162461bcd60e51b8152600401610c0f90612ed9565b60405180910390fd5b600a805460ff19166001179055610c2d611d92565b600a805460ff19169055565b6005546001600160a01b03163314610c635760405162461bcd60e51b8152600401610c0f90612ed9565b6040516370a0823160e01b815230600482018190525f916370a0823190602401602060405180830381865afa158015610c9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc29190612f0e565b90505f601354601254610cd59190612f39565b9050808211610d415760405162461bcd60e51b815260206004820152603260248201527f43616e742052656d6f766520546f6b656e7320546861742041726520416c6c6f604482015271636174656420666f72207377617070696e6760701b6064820152608401610c0f565b5f610d4c8284612f4c565b600d54909150610d679030906001600160a01b031683611e87565b505050565b6005546001600160a01b03163314610d965760405162461bcd60e51b8152600401610c0f90612ed9565b7f0000000000000000000000003acba4183b89714c6a5e443b1a5b96f07aba63b16001600160a01b0316816001600160a01b031603610e3d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c0f565b610e47815f611622565b6040515f906001600160a01b038316907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab908390a350565b600f546001600160a01b03163314610ed95760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792043616c6c61626c652042792062726964676520436f6e74726163746044820152606401610c0f565b610ee38183611fda565b5050565b6005546001600160a01b03163314610f115760405162461bcd60e51b8152600401610c0f90612ed9565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f5d5760405162461bcd60e51b8152600401610c0f90612ed9565b610f6f81670de0b6b3a7640000612f5f565b60098190556040519081527fbd8a1f50bda6367cd3771d8453c2582c5f01613dd6d8ee271672f4943da806d3906020015b60405180910390a150565b5f610fb78484846120b7565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561103b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c0f565b6110488533858403611c77565b506001949350505050565b6005546001600160a01b0316331461107d5760405162461bcd60e51b8152600401610c0f90612ed9565b600680546001600160a01b039283166001600160a01b03199182161790915560078054939092169216919091179055565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610bdb9185906110e4908690612f39565b611c77565b6005546001600160a01b031633146111135760405162461bcd60e51b8152600401610c0f90612ed9565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461115f5760405162461bcd60e51b8152600401610c0f90612ed9565b600c55565b6005546001600160a01b0316331461118e5760405162461bcd60e51b8152600401610c0f90612ed9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111da5760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b0383166112005760405162461bcd60e51b8152600401610c0f90612f76565b6001600160a01b038381165f81815260166020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f4df1a15fc27298788e9aadcd88c1ec48da88df5f3dc994bce52ecc9f6c09806591015b60405180910390a3505050565b6005546001600160a01b031633146112975760405162461bcd60e51b8152600401610c0f90612ed9565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461130a5760405162461bcd60e51b8152600401610c0f90612ed9565b600e805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b0316331461136b5760405162461bcd60e51b8152600401610c0f90612ed9565b60198211156113af5760405162461bcd60e51b815260206004820152601060248201526f084eaf240e8c2f040e8dede40d0d2ced60831b6044820152606401610c0f565b60198111156113f45760405162461bcd60e51b81526020600482015260116024820152700a6cad8d840e8c2f040e8dede40d0d2ced607b1b6044820152606401610c0f565b60408051808201825283815260208082018481526001600160a01b0387165f81815260158452859020935184559051600190930192909255825185815290810184905290917fcea7667c47d559885d74a4ffe52d66f1404cffd281e70ebbb50cfb1e210bb330910160405180910390a2505050565b6005546001600160a01b031633146114935760405162461bcd60e51b8152600401610c0f90612ed9565b600e54600160a81b900460ff16156114e55760405162461bcd60e51b815260206004820152601560248201527454726164696e6720616c7265616479206c6976652160581b6044820152606401610c0f565b600e805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b606060048054610b4e90612ea1565b6001600160a01b039182165f90815260176020908152604080832093909416825291909152205460ff1690565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156115e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c0f565b6115ee3385858403611c77565b5060019392505050565b6005546001600160a01b031633146116225760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b5f610bdb3384846120b7565b6005546001600160a01b031633146116ab5760405162461bcd60e51b8152600401610c0f90612ed9565b6116bd81670de0b6b3a7640000612f5f565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610fa0565b6005546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610c0f90612ed9565b600b55565b6005546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610c0f90612ed9565b5f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117cc9190612fb8565b6040516364e329cb60e11b81526001600160a01b0387811660048301528681166024830152919091169063c9c65396906044016020604051808303815f875af115801561181b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183f9190612fb8565b905061184c816001611622565b611857818484611341565b6040516001906001600160a01b038316907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050505050565b6005546001600160a01b031633146118be5760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b0383166118e45760405162461bcd60e51b8152600401610c0f90612f76565b6001600160a01b038381165f81815260176020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f032b791609c5d8ec85cea32ab6a6eb0ac9c4cd4f0137f950cf030f0c640bd8f69101611260565b6005546001600160a01b031633146119725760405162461bcd60e51b8152600401610c0f90612ed9565b6040515f90339047908381818185875af1925050503d805f81146119b1576040519150601f19603f3d011682016040523d82523d5f602084013e6119b6565b606091505b50505050565b6005546001600160a01b031633146119e65760405162461bcd60e51b8152600401610c0f90612ed9565b600a805461ff0019166101001790556119fd61284e565b600a805461ff0019169055565b6005546001600160a01b03163314611a345760405162461bcd60e51b8152600401610c0f90612ed9565b6001600160a01b038116611a995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600f546001600160a01b03163314611b4e5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792043616c6c61626c652042792062726964676520436f6e74726163746044820152606401610c0f565b610ee381836128ce565b6005546001600160a01b03163314611b825760405162461bcd60e51b8152600401610c0f90612ed9565b611b8e818260016111b0565b601054611ba6906001600160a01b03168260016111b0565b611bc3611bbb6005546001600160a01b031690565b8260016111b0565b600d54611bdb906001600160a01b03168260016111b0565b600e54611bf3906001600160a01b03168260016111b0565b611bff308260016111b0565b611c0d61dead8260016111b0565b611c2a611c226005546001600160a01b031690565b826001611894565b600d54611c42906001600160a01b0316826001611894565b600e54611c5a906001600160a01b0316826001611894565b611c6630826001611894565b611c7461dead826001611894565b50565b6001600160a01b038316611cd95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c0f565b6001600160a01b038216611d3a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c0f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611260565b601254305f9081526020819052604090205481158015611db0575080155b15611db9575050565b600e54600160a01b900460ff1615611dfa57600c54600b54611ddb9190612f5f565b821115611df557600c54600b54611df29190612f5f565b91505b611e0a565b600b54821115611e0a57600b5491505b5f611e14836129a5565b8260125f828254611e259190612f4c565b90915550504715610d6757600e546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611e7a576040519150601f19603f3d011682016040523d82523d5f602084013e611e7f565b606091505b505050505050565b6001600160a01b038316611ead5760405162461bcd60e51b8152600401610c0f90612fd3565b6001600160a01b038216611ed35760405162461bcd60e51b8152600401610c0f90613018565b6001600160a01b0383165f9081526020819052604090205481811015611f4a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c0f565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f80908490612f39565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fcc91815260200190565b60405180910390a350505050565b6001600160a01b0382166120305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c0f565b8060025f8282546120419190612f39565b90915550506001600160a01b0382165f908152602081905260408120805483929061206d908490612f39565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b0383166120dd5760405162461bcd60e51b8152600401610c0f90612fd3565b6001600160a01b0382166121035760405162461bcd60e51b8152600401610c0f90613018565b5f81116121525760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c0f565b6001600160a01b038084165f9081526014602052604080822054928516825281205460ff92831692169082612192578161218c575f612194565b84612194565b855b600e54909150600160a81b900460ff16612207576121b28682611533565b806121c257506121c28582611533565b6122075760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c0f565b600e54600160a01b900460ff1615612424576005546001600160a01b0387811691161480159061224557506005546001600160a01b03868116911614155b801561225857506122568682611533565b155b801561226b57506122698582611533565b155b1561242457821561234c576009548411156122d95760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc103a3c371760c11b6064820152608401610c0f565b6008546001600160a01b0386165f908152602081905260409020546122fe9086612f39565b11156123475760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c0f565b612424565b81156123b6576009548411156123475760405162461bcd60e51b815260206004820152602960248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152681036b0bc103a3c371760b91b6064820152608401610c0f565b6008546001600160a01b0386165f908152602081905260409020546123db9086612f39565b11156124245760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c0f565b601254601354600b5480831080159183101590829061244c5750600e54600160b01b900460ff165b801561245b5750600a5460ff16155b8015612465575086155b801561247857506124768a86611533565b155b801561248b57506124898986611533565b155b156124b057600a805460ff191660011790556124a5611d92565b600a805460ff191690555b8080156124c65750600e54600160b01b900460ff165b80156124da5750600a54610100900460ff16155b80156124e4575086155b80156124f757506124f58a86611533565b155b801561250a57506125088986611533565b155b1561253257600a805461ff00191661010017905561252661284e565b600a805461ff00191690555b5f806001600160a01b037f0000000000000000000000003acba4183b89714c6a5e443b1a5b96f07aba63b181169088160361257057600191506125f0565b7f0000000000000000000000003acba4183b89714c6a5e443b1a5b96f07aba63b16001600160a01b0316876001600160a01b0316146125b1575060016125f0565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616972206164647265737360601b6044820152606401610c0f565b6125fa8c88611533565b8061260a575061260a8b88611533565b1561261557505f9050805b5f8215612725578815612693576001600160a01b038c165f90815260156020908152604091829020825180840190935280548352600101549082018190521561268d57606481602001518d61266a9190612f5f565b612674919061305b565b91508160125f8282546126879190612f39565b90915550505b50612707565b8915612707576001600160a01b038d165f908152601560209081526040918290208251808401909352805480845260019091015491830191909152156127055780516064906126e2908e612f5f565b6126ec919061305b565b91508160125f8282546126ff9190612f39565b90915550505b505b8015612718576127188d3083611e87565b612722818c612f4c565b9a505b81156128345788156127a2576001600160a01b038c165f90815260156020908152604091829020825180840190935280548352600101549082018190521561279c57606481602001518d6127799190612f5f565b612783919061305b565b91508160135f8282546127969190612f39565b90915550505b50612816565b8915612816576001600160a01b038d165f908152601560209081526040918290208251808401909352805480845260019091015491830191909152156128145780516064906127f1908e612f5f565b6127fb919061305b565b91508160135f82825461280e9190612f39565b90915550505b505b8015612827576128278d3083611e87565b612831818c612f4c565b9a505b61283f8d8d8d611e87565b50505050505050505050505050565b6013545f81900361285c5750565b600e54600160a01b900460ff161561289d57600c54600b5461287e9190612f5f565b81111561289857600c54600b546128959190612f5f565b90505b6128ac565b600b548111156128ac5750600b545b6128b581612b53565b8060135f8282546128c69190612f4c565b909155505050565b6001600160a01b0382166129245760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c0f565b8060025f8282546129359190612f4c565b90915550506001600160a01b0382165f9081526020819052604081208054839290612961908490612f4c565b909155505060405181815261dead906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016120ab565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106129d8576129d861307a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a789190612fb8565b81600181518110612a8b57612a8b61307a565b60200260200101906001600160a01b031690816001600160a01b031681525050612ad6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c77565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b2a9085905f9086903090429060040161308e565b5f604051808303815f87803b158015612b41575f5ffd5b505af1158015611e7f573d5f5f3e3d5ffd5b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612b8657612b8661307a565b6001600160a01b039283166020918202929092010152600654825191169082906001908110612bb757612bb761307a565b60200260200101906001600160a01b031690816001600160a01b031681525050612c02307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c77565b600d54604051635c11d79560e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811692635c11d79592612b2a9287925f9288929190911690429060040161308e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611c74575f5ffd5b5f5f60408385031215612cb7575f5ffd5b8235612cc281612c92565b946020939093013593505050565b5f60208284031215612ce0575f5ffd5b8135612ceb81612c92565b9392505050565b5f5f60408385031215612d03575f5ffd5b823591506020830135612d1581612c92565b809150509250929050565b5f60208284031215612d30575f5ffd5b5035919050565b5f5f5f60608486031215612d49575f5ffd5b8335612d5481612c92565b92506020840135612d6481612c92565b929592945050506040919091013590565b5f5f60408385031215612d86575f5ffd5b8235612d9181612c92565b91506020830135612d1581612c92565b80358015158114612db0575f5ffd5b919050565b5f5f5f60608486031215612dc7575f5ffd5b8335612dd281612c92565b92506020840135612de281612c92565b9150612df060408501612da1565b90509250925092565b5f5f5f60608486031215612e0b575f5ffd5b8335612e1681612c92565b95602085013595506040909401359392505050565b5f5f60408385031215612e3c575f5ffd5b8235612e4781612c92565b9150612e5560208401612da1565b90509250929050565b5f5f5f5f60808587031215612e71575f5ffd5b8435612e7c81612c92565b93506020850135612e8c81612c92565b93969395505050506040820135916060013590565b600181811c90821680612eb557607f821691505b602082108103612ed357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612f1e575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610bdf57610bdf612f25565b81810381811115610bdf57610bdf612f25565b8082028115828204841417610bdf57610bdf612f25565b60208082526022908201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604082015261737360f01b606082015260800190565b5f60208284031215612fc8575f5ffd5b8151612ceb81612c92565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f8261307557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156130de5783516001600160a01b03168352602093840193909201916001016130b7565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220df682f0300ce47957577fb941c49947340c6521b7dc51da6ec1cab0b0242d58664736f6c634300081c0033

Deployed Bytecode Sourcemap

8013:16947:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1895:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2875:194;;;;;;;;;;-1:-1:-1;2875:194:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;2875:194:0;945:187:1;8624:31:0;;;;;;;;;;-1:-1:-1;8624:31:0;;;;-1:-1:-1;;;8624:31:0;;;;;;24051:209;;;;;;;;;;;;;:::i;:::-;;24307:421;;;;;;;;;;;;;:::i;8053:48::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1324:32:1;;;1306:51;;1294:2;1279:18;8053:48:0;1137:226:1;2216:108:0;;;;;;;;;;-1:-1:-1;2304:12:0;;2216:108;;;1514:25:1;;;1502:2;1487:18;2216:108:0;1368:177:1;13580:292:0;;;;;;;;;;-1:-1:-1;13580:292:0;;;;;:::i;:::-;;:::i;12428:201::-;;;;;;;;;;-1:-1:-1;12428:201:0;;;;;:::i;:::-;;:::i;12321:96::-;;;;;;;;;;-1:-1:-1;12321:96:0;;;;;:::i;:::-;;:::i;13104:162::-;;;;;;;;;;-1:-1:-1;13104:162:0;;;;;:::i;:::-;;:::i;3077:529::-;;;;;;;;;;-1:-1:-1;3077:529:0;;;;;:::i;:::-;;:::i;9071:48::-;;;;;;;;;;-1:-1:-1;9071:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3092:25:1;;;3148:2;3133:18;;3126:34;;;;3065:18;9071:48:0;2918:248:1;12037:150:0;;;;;;;;;;-1:-1:-1;12037:150:0;;;;;:::i;:::-;;:::i;2115:93::-;;;;;;;;;;-1:-1:-1;2115:93:0;;2198:2;3719:36:1;;3707:2;3692:18;2115:93:0;3577:184:1;3614:290:0;;;;;;;;;;-1:-1:-1;3614:290:0;;;;;:::i;:::-;;:::i;12840:107::-;;;;;;;;;;-1:-1:-1;12840:107:0;;;;;:::i;:::-;;:::i;8965:35::-;;;;;;;;;;;;;;;;8925:33;;;;;;;;;;;;;;;;8108:38;;;;;;;;;;;;;;;8584:33;;;;;;;;;;-1:-1:-1;8584:33:0;;;;-1:-1:-1;;;8584:33:0;;;;;;11930:92;;;;;;;;;;-1:-1:-1;11930:92:0;;;;;:::i;:::-;;:::i;12200:108::-;;;;;;;;;;-1:-1:-1;12200:108:0;;;;;:::i;:::-;;:::i;15936:303::-;;;;;;;;;;-1:-1:-1;15936:303:0;;;;;:::i;:::-;;:::i;8395:24::-;;;;;;;;;;;;;;;;8662:31;;;;;;;;;;-1:-1:-1;8662:31:0;;;;-1:-1:-1;;;8662:31:0;;;;;;2332:143;;;;;;;;;;-1:-1:-1;2332:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;2449:18:0;2422:7;2449:18;;;;;;;;;;;;2332:143;6633:150;;;;;;;;;;;;;:::i;16248:166::-;;;;;;;;;;-1:-1:-1;16248:166:0;;;;;:::i;:::-;-1:-1:-1;;;;;16361:39:0;;;16337:4;16361:39;;;:31;:39;;;;;;;;:45;;;;;;;;;;;;;;;16248:166;12981:115;;;;;;;;;;;;;:::i;8502:75::-;;;;;;;;;;-1:-1:-1;8502:75:0;;;;-1:-1:-1;;;;;8502:75:0;;;15409:308;;;;;;;;;;-1:-1:-1;15409:308:0;;;;;:::i;:::-;;:::i;11722:199::-;;;;;;;;;;;;;:::i;8153:37::-;;;;;;;;;;-1:-1:-1;8153:37:0;;;;-1:-1:-1;;;;;8153:37:0;;;6419:79;;;;;;;;;;-1:-1:-1;6484:6:0;;-1:-1:-1;;;;;6484:6:0;6419:79;;8426:69;;;;;;;;;;-1:-1:-1;8426:69:0;;;;-1:-1:-1;;;;;8426:69:0;;;2003:104;;;;;;;;;;;;;:::i;8197:24::-;;;;;;;;;;-1:-1:-1;8197:24:0;;;;-1:-1:-1;;;;;8197:24:0;;;16704:144;;;;;;;;;;-1:-1:-1;16704:144:0;;;;;:::i;:::-;;:::i;3912:475::-;;;;;;;;;;-1:-1:-1;3912:475:0;;;;;:::i;:::-;;:::i;14274:182::-;;;;;;;;;;-1:-1:-1;14274:182:0;;;;;:::i;:::-;;:::i;2483:200::-;;;;;;;;;;-1:-1:-1;2483:200:0;;;;;:::i;:::-;;:::i;15729:199::-;;;;;;;;;;-1:-1:-1;15729:199:0;;;;;:::i;:::-;-1:-1:-1;;;;;15855:18:0;15787:14;15855:18;;;:12;:18;;;;;;;;;15831:42;;;;;;;;;;;;;;;;;;;;;;;;;;15729:199;9007:57;;;;;;;;;;-1:-1:-1;9007:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13274:165;;;;;;;;;;-1:-1:-1;13274:165:0;;;;;:::i;:::-;;:::i;8700:74::-;;;;;;;;;;-1:-1:-1;8700:74:0;;;;-1:-1:-1;;;;;8700:74:0;;;8259:27;;;;;;;;;;;;;;;;13447:121;;;;;;;;;;-1:-1:-1;13447:121:0;;;;;:::i;:::-;;:::i;13880:385::-;;;;;;;;;;-1:-1:-1;13880:385:0;;;;;:::i;:::-;;:::i;16422:271::-;;;;;;;;;;-1:-1:-1;16422:271:0;;;;;:::i;:::-;;:::i;2691:176::-;;;;;;;;;;-1:-1:-1;2691:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;2832:18:0;;;2805:7;2832:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2691:176;24778:179;;;;;;;;;;;;;:::i;8355:33::-;;;;;;;;;;;;;;;;23826:217;;;;;;;;;;;;;:::i;6791:281::-;;;;;;;;;;-1:-1:-1;6791:281:0;;;;;:::i;:::-;;:::i;12638:189::-;;;;;;;;;;-1:-1:-1;12638:189:0;;;;;:::i;:::-;;:::i;8781:66::-;;;;;;;;;;-1:-1:-1;8781:66:0;;;;-1:-1:-1;;;;;8781:66:0;;;8228:24;;;;;;;;;;;;;;;;14658:743;;;;;;;;;;-1:-1:-1;14658:743:0;;;;;:::i;:::-;;:::i;1895:100::-;1949:13;1982:5;1975:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1895:100;:::o;2875:194::-;2983:4;3000:39;189:10;3023:7;3032:6;3000:8;:39::i;:::-;-1:-1:-1;3057:4:0;2875:194;;;;;:::o;24051:209::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;;;;;;;;;24170:11:::1;:18:::0;;-1:-1:-1;;24170:18:0::1;24184:4;24170:18;::::0;;24199:16:::1;:14;:16::i;:::-;24226:11;:19:::0;;-1:-1:-1;;24226:19:0::1;::::0;;24051:209::o;24307:421::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;24391:29:::1;::::0;-1:-1:-1;;;24391:29:0;;:4:::1;:29;::::0;::::1;1306:51:1::0;;;24373:15:0::1;::::0;24391:14:::1;::::0;1279:18:1;;24391:29:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24373:47;;24435:17;24476:20;;24455:18;;:41;;;;:::i;:::-;24435:61;;24529:9;24519:7;:19;24511:82;;;::::0;-1:-1:-1;;;24511:82:0;;8405:2:1;24511:82:0::1;::::0;::::1;8387:21:1::0;8444:2;8424:18;;;8417:30;8483:34;8463:18;;;8456:62;-1:-1:-1;;;8534:18:1;;;8527:48;8592:19;;24511:82:0::1;8203:414:1::0;24511:82:0::1;24608:20;24631:19;24641:9:::0;24631:7;:19:::1;:::i;:::-;24696:9;::::0;24608:42;;-1:-1:-1;24665:55:0::1;::::0;24689:4:::1;::::0;-1:-1:-1;;;;;24696:9:0::1;24608:42:::0;24665:15:::1;:55::i;:::-;24358:370;;;24307:421::o:0;13580:292::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;13681:13:::1;-1:-1:-1::0;;;;;13673:21:0::1;:4;-1:-1:-1::0;;;;;13673:21:0::1;::::0;13665:91:::1;;;::::0;-1:-1:-1;;;13665:91:0;;8957:2:1;13665:91:0::1;::::0;::::1;8939:21:1::0;8996:2;8976:18;;;8969:30;9035:34;9015:18;;;9008:62;9106:27;9086:18;;;9079:55;9151:19;;13665:91:0::1;8755:421:1::0;13665:91:0::1;13767:41;13796:4;13802:5;13767:28;:41::i;:::-;13824:40;::::0;13858:5:::1;::::0;-1:-1:-1;;;;;13824:40:0;::::1;::::0;::::1;::::0;13858:5;;13824:40:::1;13580:292:::0;:::o;12428:201::-;12524:14;;-1:-1:-1;;;;;12524:14:0;12510:10;:28;12502:73;;;;-1:-1:-1;;;12502:73:0;;9383:2:1;12502:73:0;;;9365:21:1;;;9402:18;;;9395:30;9461:34;9441:18;;;9434:62;9513:18;;12502:73:0;9181:356:1;12502:73:0;12588:33;12604:8;12614:6;12588:15;:33::i;:::-;12428:201;;:::o;12321:96::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;12390:9:::1;:19:::0;;-1:-1:-1;;;;;;12390:19:0::1;-1:-1:-1::0;;;;;12390:19:0;;;::::1;::::0;;;::::1;::::0;;12321:96::o;13104:162::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;13193:19:::1;:6:::0;13203:8:::1;13193:19;:::i;:::-;13178:12;:34:::0;;;13228:30:::1;::::0;1514:25:1;;;13228:30:0::1;::::0;1502:2:1;1487:18;13228:30:0::1;;;;;;;;13104:162:::0;:::o;3077:529::-;3217:4;3234:36;3244:6;3252:9;3263:6;3234:9;:36::i;:::-;-1:-1:-1;;;;;3310:19:0;;3283:24;3310:19;;;:11;:19;;;;;;;;189:10;3310:33;;;;;;;;3376:26;;;;3354:116;;;;-1:-1:-1;;;3354:116:0;;9917:2:1;3354:116:0;;;9899:21:1;9956:2;9936:18;;;9929:30;9995:34;9975:18;;;9968:62;-1:-1:-1;;;10046:18:1;;;10039:38;10094:19;;3354:116:0;9715:404:1;3354:116:0;3506:57;3515:6;189:10;3556:6;3537:16;:25;3506:8;:57::i;:::-;-1:-1:-1;3594:4:0;;3077:529;-1:-1:-1;;;;3077:529:0:o;12037:150::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;12126:9:::1;:18:::0;;-1:-1:-1;;;;;12126:18:0;;::::1;-1:-1:-1::0;;;;;;12126:18:0;;::::1;;::::0;;;12155:10:::1;:24:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12037:150::o;3614:290::-;189:10;3727:4;3816:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3816:34:0;;;;;;;;;;3727:4;;3744:130;;3794:7;;3816:47;;3853:10;;3816:47;:::i;:::-;3744:8;:130::i;12840:107::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;12912:14:::1;:27:::0;;-1:-1:-1;;;;;;12912:27:0::1;-1:-1:-1::0;;;;;12912:27:0;;;::::1;::::0;;;::::1;::::0;;12840:107::o;11930:92::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;11996:9:::1;:18:::0;11930:92::o;12200:108::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;12275:15:::1;:25:::0;;-1:-1:-1;;;;;;12275:25:0::1;-1:-1:-1::0;;;;;12275:25:0;;;::::1;::::0;;;::::1;::::0;;12200:108::o;15936:303::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16048:20:0;::::1;16040:67;;;;-1:-1:-1::0;;;16040:67:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16118:39:0;;::::1;;::::0;;;:31:::1;:39;::::0;;;;;;;:45;;::::1;::::0;;;;;;;;;;:52;;-1:-1:-1;;16118:52:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16186:45;;1085:41:1;;;16186:45:0::1;::::0;1058:18:1;16186:45:0::1;;;;;;;;15936:303:::0;;;:::o;6633:150::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;6726:6:::1;::::0;6705:40:::1;::::0;6742:1:::1;::::0;-1:-1:-1;;;;;6726:6:0::1;::::0;6705:40:::1;::::0;6742:1;;6705:40:::1;6756:6;:19:::0;;-1:-1:-1;;;;;;6756:19:0::1;::::0;;6633:150::o;12981:115::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;13035:14:::1;:22:::0;;-1:-1:-1;;;;13035:22:0::1;::::0;;13073:15:::1;::::0;::::1;::::0;13052:5:::1;::::0;13073:15:::1;12981:115::o:0;15409:308::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;15523:2:::1;15513:6;:12;;15505:41;;;::::0;-1:-1:-1;;;15505:41:0;;10729:2:1;15505:41:0::1;::::0;::::1;10711:21:1::0;10768:2;10748:18;;;10741:30;-1:-1:-1;;;10787:18:1;;;10780:46;10843:18;;15505:41:0::1;10527:340:1::0;15505:41:0::1;15577:2;15566:7;:13;;15558:43;;;::::0;-1:-1:-1;;;15558:43:0;;11074:2:1;15558:43:0::1;::::0;::::1;11056:21:1::0;11113:2;11093:18;;;11086:30;-1:-1:-1;;;11132:18:1;;;11125:47;11189:18;;15558:43:0::1;10872:341:1::0;15558:43:0::1;15634:25;::::0;;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;15613:18:0;::::1;-1:-1:-1::0;15613:18:0;;;:12:::1;:18:::0;;;;;:46;;;;;;::::1;::::0;;::::1;::::0;;;;15675:34;;3092:25:1;;;3133:18;;;3126:34;;;15613:18:0;;15675:34:::1;::::0;3065:18:1;15675:34:0::1;;;;;;;15409:308:::0;;;:::o;11722:199::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;11786:11:::1;::::0;-1:-1:-1;;;11786:11:0;::::1;;;11785:12;11777:46;;;::::0;-1:-1:-1;;;11777:46:0;;11420:2:1;11777:46:0::1;::::0;::::1;11402:21:1::0;11459:2;11439:18;;;11432:30;-1:-1:-1;;;11478:18:1;;;11471:51;11539:18;;11777:46:0::1;11218:345:1::0;11777:46:0::1;11834:11;:18:::0;;-1:-1:-1;;;;11863:18:0;-1:-1:-1;;;11863:18:0;;;11897:16:::1;::::0;::::1;::::0;-1:-1:-1;;11897:16:0::1;11722:199::o:0;2003:104::-;2059:13;2092:7;2085:14;;;;;:::i;16704:144::-;-1:-1:-1;;;;;16807:27:0;;;16783:4;16807:27;;;:19;:27;;;;;;;;:33;;;;;;;;;;;;;;;16704:144::o;3912:475::-;189:10;4030:4;4074:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4074:34:0;;;;;;;;;;4141:35;;;;4119:122;;;;-1:-1:-1;;;4119:122:0;;11770:2:1;4119:122:0;;;11752:21:1;11809:2;11789:18;;;11782:30;11848:34;11828:18;;;11821:62;-1:-1:-1;;;11899:18:1;;;11892:35;11944:19;;4119:122:0;11568:401:1;4119:122:0;4277:67;189:10;4300:7;4328:15;4309:16;:34;4277:8;:67::i;:::-;-1:-1:-1;4375:4:0;;3912:475;-1:-1:-1;;;3912:475:0:o;14274:182::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14353:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:39;;-1:-1:-1;;14353:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14408:40;;14353:39;;:31;14408:40:::1;::::0;::::1;14274:182:::0;;:::o;2483:200::-;2594:4;2611:42;189:10;2635:9;2646:6;2611:9;:42::i;13274:165::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;13363:19:::1;:6:::0;13373:8:::1;13363:19;:::i;:::-;13351:9;:31:::0;;;13398:33:::1;::::0;1514:25:1;;;13398:33:0::1;::::0;1502:2:1;1487:18;13398:33:0::1;1368:177:1::0;13447:121:0;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;13530:18:::1;:30:::0;13447:121::o;13880:385::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;14022:12:::1;14054:15;-1:-1:-1::0;;;;;14054:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14037:69;::::0;-1:-1:-1;;;14037:69:0;;-1:-1:-1;;;;;12422:32:1;;;14037:69:0::1;::::0;::::1;12404:51:1::0;12491:32;;;12471:18;;;12464:60;14037:54:0;;;::::1;::::0;::::1;::::0;12377:18:1;;14037:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14022:84;;14117:40;14146:4;14152;14117:28;:40::i;:::-;14168:34;14180:4;14186:6;14194:7;14168:11;:34::i;:::-;14218:39;::::0;14252:4:::1;::::0;-1:-1:-1;;;;;14218:39:0;::::1;::::0;::::1;::::0;;;::::1;14012:253;13880:385:::0;;;;:::o;16422:271::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16524:20:0;::::1;16516:67;;;;-1:-1:-1::0;;;16516:67:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16594:27:0;;::::1;;::::0;;;:19:::1;:27;::::0;;;;;;;:33;;::::1;::::0;;;;;;;;;;:40;;-1:-1:-1;;16594:40:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16650:35;;1085:41:1;;;16650:35:0::1;::::0;1058:18:1;16650:35:0::1;945:187:1::0;24778:179:0;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;24867:82:::1;::::0;24830:12:::1;::::0;24875:10:::1;::::0;24899:21:::1;::::0;24830:12;24867:82;24830:12;24867:82;24899:21;24875:10;24867:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;24778:179:0:o;23826:217::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;23949:11:::1;:18:::0;;-1:-1:-1;;23949:18:0::1;;;::::0;;23978::::1;:16;:18::i;:::-;24007:11;:19:::0;;-1:-1:-1;;24007:19:0::1;::::0;;23826:217::o;6791:281::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6894:22:0;::::1;6872:110;;;::::0;-1:-1:-1;;;6872:110:0;;12947:2:1;6872:110:0::1;::::0;::::1;12929:21:1::0;12986:2;12966:18;;;12959:30;13025:34;13005:18;;;12998:62;-1:-1:-1;;;13076:18:1;;;13069:36;13122:19;;6872:110:0::1;12745:402:1::0;6872:110:0::1;7019:6;::::0;6998:38:::1;::::0;-1:-1:-1;;;;;6998:38:0;;::::1;::::0;7019:6:::1;::::0;6998:38:::1;::::0;7019:6:::1;::::0;6998:38:::1;7047:6;:17:::0;;-1:-1:-1;;;;;;7047:17:0::1;-1:-1:-1::0;;;;;7047:17:0;;;::::1;::::0;;;::::1;::::0;;6791:281::o;12638:189::-;12730:14;;-1:-1:-1;;;;;12730:14:0;12716:10;:28;12708:73;;;;-1:-1:-1;;;12708:73:0;;9383:2:1;12708:73:0;;;9365:21:1;;;9402:18;;;9395:30;9461:34;9441:18;;;9434:62;9513:18;;12708:73:0;9181:356:1;12708:73:0;12794:25;12806:4;12812:6;12794:11;:25::i;14658:743::-;6546:6;;-1:-1:-1;;;;;6546:6:0;189:10;6546:22;6538:67;;;;-1:-1:-1;;;6538:67:0;;;;;;;:::i;:::-;14739:41:::1;14765:4;14770;14775;14739:25;:41::i;:::-;14817:6;::::0;14791:43:::1;::::0;-1:-1:-1;;;;;14817:6:0::1;14824:4:::0;14817:6;14791:25:::1;:43::i;:::-;14845:45;14871:7;6484:6:::0;;-1:-1:-1;;;;;6484:6:0;;6419:79;14871:7:::1;14879:4;14885;14845:25;:45::i;:::-;14927:9;::::0;14901:47:::1;::::0;-1:-1:-1;;;;;14927:9:0::1;14937:4:::0;14927:9;14901:25:::1;:47::i;:::-;14985:15;::::0;14959:53:::1;::::0;-1:-1:-1;;;;;14985:15:0::1;15002:4:::0;14985:15;14959:25:::1;:53::i;:::-;15023:51;15057:4;15063;15069;15023:25;:51::i;:::-;15085:53;15119:6;15127:4;15133;15085:25;:53::i;:::-;15149:35;15165:7;6484:6:::0;;-1:-1:-1;;;;;6484:6:0;;6419:79;15165:7:::1;15173:4;15179;15149:15;:35::i;:::-;15211:9;::::0;15195:37:::1;::::0;-1:-1:-1;;;;;15211:9:0::1;15221:4:::0;15211:9;15195:15:::1;:37::i;:::-;15259:15;::::0;15243:43:::1;::::0;-1:-1:-1;;;;;15259:15:0::1;15275:4:::0;15259:15;15243::::1;:43::i;:::-;15297:41;15321:4;15327;15333;15297:15;:41::i;:::-;15349:43;15373:6;15381:4;15387;15349:15;:43::i;:::-;14658:743:::0;:::o;5688:380::-;-1:-1:-1;;;;;5824:19:0;;5816:68;;;;-1:-1:-1;;;5816:68:0;;13354:2:1;5816:68:0;;;13336:21:1;13393:2;13373:18;;;13366:30;13432:34;13412:18;;;13405:62;-1:-1:-1;;;13483:18:1;;;13476:34;13527:19;;5816:68:0;13152:400:1;5816:68:0;-1:-1:-1;;;;;5903:21:0;;5895:68;;;;-1:-1:-1;;;5895:68:0;;13759:2:1;5895:68:0;;;13741:21:1;13798:2;13778:18;;;13771:30;13837:34;13817:18;;;13810:62;-1:-1:-1;;;13888:18:1;;;13881:32;13930:19;;5895:68:0;13557:398:1;5895:68:0;-1:-1:-1;;;;;5976:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6028:32;;1514:25:1;;;6028:32:0;;1487:18:1;6028:32:0;1368:177:1;22140:952:0;22216:18;;22289:4;22185:28;2449:18;;;;;;;;;;;22312:25;;:49;;;;-1:-1:-1;22341:20:0;;22312:49;22308:88;;;22378:7;;22140:952::o;22308:88::-;22412:14;;-1:-1:-1;;;22412:14:0;;;;22408:367;;;22491:9;;22470:18;;:30;;;;:::i;:::-;22447:20;:53;22443:147;;;22565:9;;22544:18;;:30;;;;:::i;:::-;22521:53;;22443:147;22408:367;;;22668:18;;22645:20;:41;22641:123;;;22730:18;;22707:41;;22641:123;22787:12;22812:38;22829:20;22812:16;:38::i;:::-;22885:20;22863:18;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;22922:21:0;:25;22918:167;;22986:15;;22978:95;;-1:-1:-1;;;;;22986:15:0;;;;23015:21;;22978:95;;;;23015:21;22986:15;22978:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22140:952:0:o;4395:651::-;-1:-1:-1;;;;;4535:20:0;;4527:70;;;;-1:-1:-1;;;4527:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4616:23:0;;4608:71;;;;-1:-1:-1;;;4608:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4716:17:0;;4692:21;4716:17;;;;;;;;;;;4766:23;;;;4744:111;;;;-1:-1:-1;;;4744:111:0;;14972:2:1;4744:111:0;;;14954:21:1;15011:2;14991:18;;;14984:30;15050:34;15030:18;;;15023:62;-1:-1:-1;;;15101:18:1;;;15094:36;15147:19;;4744:111:0;14770:402:1;4744:111:0;-1:-1:-1;;;;;4891:17:0;;;:9;:17;;;;;;;;;;;4911:22;;;4891:42;;4955:20;;;;;;;;:30;;4927:6;;4891:9;4955:30;;4927:6;;4955:30;:::i;:::-;;;;;;;;5020:9;-1:-1:-1;;;;;5003:35:0;5012:6;-1:-1:-1;;;;;5003:35:0;;5031:6;5003:35;;;;1514:25:1;;1502:2;1487:18;;1368:177;5003:35:0;;;;;;;;4516:530;4395:651;;;:::o;5054:286::-;-1:-1:-1;;;;;5148:21:0;;5140:65;;;;-1:-1:-1;;;5140:65:0;;15379:2:1;5140:65:0;;;15361:21:1;15418:2;15398:18;;;15391:30;15457:33;15437:18;;;15430:61;15508:18;;5140:65:0;15177:355:1;5140:65:0;5234:6;5218:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5251:18:0;;:9;:18;;;;;;;;;;:28;;5273:6;;5251:9;:28;;5273:6;;5251:28;:::i;:::-;;;;-1:-1:-1;;5295:37:0;;1514:25:1;;;-1:-1:-1;;;;;5295:37:0;;;5312:1;;5295:37;;1502:2:1;1487:18;5295:37:0;;;;;;;;5054:286;;:::o;16854:4358::-;-1:-1:-1;;;;;16966:18:0;;16958:68;;;;-1:-1:-1;;;16958:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17041:16:0;;17033:64;;;;-1:-1:-1;;;17033:64:0;;;;;;;:::i;:::-;17121:1;17112:6;:10;17104:52;;;;-1:-1:-1;;;17104:52:0;;15739:2:1;17104:52:0;;;15721:21:1;15778:2;15758:18;;;15751:30;15817:31;15797:18;;;15790:59;15866:18;;17104:52:0;15537:353:1;17104:52:0;-1:-1:-1;;;;;17178:31:0;;;17165:10;17178:31;;;:25;:31;;;;;;;17230:29;;;;;;;;17178:31;;;;;17230:29;;17178:31;17283:41;;17299:6;:24;;17321:1;17283:41;;17299:24;17308:2;17283:41;;;17291:4;17283:41;17338:11;;17268:56;;-1:-1:-1;;;;17338:11:0;;;;17333:171;;17384:30;17403:4;17409;17384:18;:30::i;:::-;:62;;;;17418:28;17437:2;17441:4;17418:18;:28::i;:::-;17362:134;;;;-1:-1:-1;;;17362:134:0;;16097:2:1;17362:134:0;;;16079:21:1;16136:2;16116:18;;;16109:30;-1:-1:-1;;;16155:18:1;;;16148:52;16217:18;;17362:134:0;15895:346:1;17362:134:0;17516:14;;-1:-1:-1;;;17516:14:0;;;;17512:931;;;6484:6;;-1:-1:-1;;;;;17561:15:0;;;6484:6;;17561:15;;;;:45;;-1:-1:-1;6484:6:0;;-1:-1:-1;;;;;17593:13:0;;;6484:6;;17593:13;;17561:45;:93;;;;;17624:30;17643:4;17649;17624:18;:30::i;:::-;17623:31;17561:93;:139;;;;;17672:28;17691:2;17695:4;17672:18;:28::i;:::-;17671:29;17561:139;17543:893;;;17731:5;17727:698;;;17797:12;;17787:6;:22;;17757:136;;;;-1:-1:-1;;;17757:136:0;;16448:2:1;17757:136:0;;;16430:21:1;16487:2;16467:18;;;16460:30;16526:34;16506:18;;;16499:62;-1:-1:-1;;;16577:18:1;;;16570:38;16625:19;;17757:136:0;16246:404:1;17757:136:0;17968:9;;-1:-1:-1;;;;;2449:18:0;;2422:7;2449:18;;;;;;;;;;;17942:22;;:6;:22;:::i;:::-;:35;;17912:133;;;;-1:-1:-1;;;17912:133:0;;16857:2:1;17912:133:0;;;16839:21:1;16896:2;16876:18;;;16869:30;-1:-1:-1;;;16915:18:1;;;16908:54;16979:18;;17912:133:0;16655:348:1;17912:133:0;17727:698;;;18071:6;18067:358;;;18138:12;;18128:6;:22;;18098:137;;;;-1:-1:-1;;;18098:137:0;;17210:2:1;18098:137:0;;;17192:21:1;17249:2;17229:18;;;17222:30;17288:34;17268:18;;;17261:62;-1:-1:-1;;;17339:18:1;;;17332:39;17388:19;;18098:137:0;17008:405:1;18067:358:0;18332:9;;-1:-1:-1;;;;;2449:18:0;;2422:7;2449:18;;;;;;;;;;;18306:22;;:6;:22;:::i;:::-;:35;;18276:133;;;;-1:-1:-1;;;18276:133:0;;16857:2:1;18276:133:0;;;16839:21:1;16896:2;16876:18;;;16869:30;-1:-1:-1;;;16915:18:1;;;16908:54;16979:18;;18276:133:0;16655:348:1;18276:133:0;18485:18;;18541:20;;18615:18;;18588:45;;;;;;18658:42;;;;18588:45;;18723:34;;-1:-1:-1;18746:11:0;;-1:-1:-1;;;18746:11:0;;;;18723:34;:59;;;;-1:-1:-1;18771:11:0;;;;18770:12;18723:59;:78;;;;;18796:5;18795:6;18723:78;:122;;;;;18815:30;18834:4;18840;18815:18;:30::i;:::-;18814:31;18723:122;:164;;;;;18859:28;18878:2;18882:4;18859:18;:28::i;:::-;18858:29;18723:164;18709:280;;;18906:11;:18;;-1:-1:-1;;18906:18:0;18920:4;18906:18;;;18935:16;:14;:16::i;:::-;18962:11;:19;;-1:-1:-1;;18962:19:0;;;18709:280;19011:10;:34;;;;-1:-1:-1;19034:11:0;;-1:-1:-1;;;19034:11:0;;;;19011:34;:59;;;;-1:-1:-1;19059:11:0;;;;;;;19058:12;19011:59;:78;;;;;19084:5;19083:6;19011:78;:122;;;;;19103:30;19122:4;19128;19103:18;:30::i;:::-;19102:31;19011:122;:164;;;;;19147:28;19166:2;19170:4;19147:18;:28::i;:::-;19146:29;19011:164;18997:282;;;19194:11;:18;;-1:-1:-1;;19194:18:0;;;;;19223;:16;:18::i;:::-;19252:11;:19;;-1:-1:-1;;19252:19:0;;;18997:282;19287:15;;-1:-1:-1;;;;;19363:13:0;19355:21;;;;;;19351:189;;19402:4;19389:17;;19351:189;;;19432:13;-1:-1:-1;;;;;19424:21:0;:4;-1:-1:-1;;;;;19424:21:0;;19420:120;;-1:-1:-1;19473:4:0;19420:120;;;19502:30;;-1:-1:-1;;;19502:30:0;;17620:2:1;19502:30:0;;;17602:21:1;17659:2;17639:18;;;17632:30;-1:-1:-1;;;17678:18:1;;;17671:50;17738:18;;19502:30:0;17418:344:1;19420:120:0;19552:30;19571:4;19577;19552:18;:30::i;:::-;:62;;;;19586:28;19605:2;19609:4;19586:18;:28::i;:::-;19548:136;;;-1:-1:-1;19640:5:0;;-1:-1:-1;19640:5:0;19548:136;19692:12;19717:717;;;;19801:6;19797:510;;;-1:-1:-1;;;;;19855:16:0;;19824:28;19855:16;;;:12;:16;;;;;;;;;19824:47;;;;;;;;;;;;;;;;;;;;;19890:24;19886:154;;19976:3;19952:12;:20;;;19943:6;:29;;;;:::i;:::-;19942:37;;;;:::i;:::-;19935:44;;20020:4;19998:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;19886:154:0;19809:242;19797:510;;;20061:5;20057:250;;;-1:-1:-1;;;;;20113:18:0;;20083:27;20113:18;;;:12;:18;;;;;;;;;20083:48;;;;;;;;;;;;;;;;;;;;;;;;;20150:22;20146:150;;20210:18;;20232:3;;20201:27;;:6;:27;:::i;:::-;20200:35;;;;:::i;:::-;20193:42;;20276:4;20254:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;20146:150:0;20068:239;20057:250;20323:8;;20319:83;;20348:42;20364:4;20378;20385;20348:15;:42::i;:::-;20412:14;20422:4;20412:14;;:::i;:::-;;;19717:717;20446:12;20442:725;;;20530:6;20526:514;;;-1:-1:-1;;;;;20584:16:0;;20553:28;20584:16;;;:12;:16;;;;;;;;;20553:47;;;;;;;;;;;;;;;;;;;;;20619:24;20615:156;;20705:3;20681:12;:20;;;20672:6;:29;;;;:::i;:::-;20671:37;;;;:::i;:::-;20664:44;;20751:4;20727:20;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;20615:156:0;20538:244;20526:514;;;20792:5;20788:252;;;-1:-1:-1;;;;;20844:18:0;;20814:27;20844:18;;;:12;:18;;;;;;;;;20814:48;;;;;;;;;;;;;;;;;;;;;;;;;20881:22;20877:152;;20941:18;;20963:3;;20932:27;;:6;:27;:::i;:::-;20931:35;;;;:::i;:::-;20924:42;;21009:4;20985:20;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;20877:152:0;20799:241;20788:252;21056:8;;21052:83;;21081:42;21097:4;21111;21118;21081:15;:42::i;:::-;21145:14;21155:4;21145:14;;:::i;:::-;;;20442:725;21175:33;21191:4;21197:2;21201:6;21175:15;:33::i;:::-;16951:4261;;;;;;;;;;16854:4358;;;:::o;23108:673::-;23188:20;;23155:30;23233:27;;;23229:66;;23277:7;23108:673::o;23229:66::-;23311:14;;-1:-1:-1;;;23311:14:0;;;;23307:356;;;23392:9;;23371:18;;:30;;;;:::i;:::-;23346:22;:55;23342:151;;;23468:9;;23447:18;;:30;;;;:::i;:::-;23422:55;;23342:151;23307:356;;;23554:18;;23529:22;:43;23525:127;;;-1:-1:-1;23618:18:0;;23525:127;23673:43;23693:22;23673:19;:43::i;:::-;23751:22;23727:20;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;;23108:673:0:o;5349:331::-;-1:-1:-1;;;;;5439:21:0;;5431:65;;;;-1:-1:-1;;;5431:65:0;;15379:2:1;5431:65:0;;;15361:21:1;15418:2;15398:18;;;15391:30;15457:33;15437:18;;;15430:61;15508:18;;5431:65:0;15177:355:1;5431:65:0;5525:6;5509:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5542:18:0;;:9;:18;;;;;;;;;;:28;;5564:6;;5542:9;:28;;5564:6;;5542:28;:::i;:::-;;;;-1:-1:-1;;5587:78:0;;1514:25:1;;;5613:42:0;;-1:-1:-1;;;;;5587:78:0;;;;;1502:2:1;1487:18;5587:78:0;1368:177:1;21226:475:0;21316:16;;;21330:1;21316:16;;;;;;;;21292:21;;21316:16;;;;;;;;;;-1:-1:-1;21316:16:0;21292:40;;21361:4;21343;21348:1;21343:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21343:23:0;;;-1:-1:-1;;;;;21343:23:0;;;;;21387:15;-1:-1:-1;;;;;21387:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21377:4;21382:1;21377:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21377:32:0;;;-1:-1:-1;;;;;21377:32:0;;;;;21422:62;21439:4;21454:15;21472:11;21422:8;:62::i;:::-;21497:196;;-1:-1:-1;;;21497:196:0;;-1:-1:-1;;;;;21497:15:0;:66;;;;:196;;21578:11;;21604:1;;21620:4;;21647;;21667:15;;21497:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21711:421;21800:16;;;21814:1;21800:16;;;;;;;;21776:21;;21800:16;;;;;;;;;;-1:-1:-1;21800:16:0;21776:40;;21841:4;21823;21828:1;21823:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21823:23:0;;;:7;;;;;;;;;:23;21863:9;;21853:7;;21863:9;;;21853:4;;21863:9;;21853:7;;;;;;:::i;:::-;;;;;;:19;-1:-1:-1;;;;;21853:19:0;;;-1:-1:-1;;;;;21853:19:0;;;;;21886:62;21903:4;21918:15;21936:11;21886:8;:62::i;:::-;22086:9;;21957:171;;-1:-1:-1;;;21957:171:0;;-1:-1:-1;;;;;21957:15:0;:69;;;;;:171;;22037:11;;22059:1;;22071:4;;22086:9;;;;;22106:15;;21957:171;;;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1550:247::-;1609:6;1662:2;1650:9;1641:7;1637:23;1633:32;1630:52;;;1678:1;1675;1668:12;1630:52;1717:9;1704:23;1736:31;1761:5;1736:31;:::i;:::-;1786:5;1550:247;-1:-1:-1;;;1550:247:1:o;1802:367::-;1870:6;1878;1931:2;1919:9;1910:7;1906:23;1902:32;1899:52;;;1947:1;1944;1937:12;1899:52;1992:23;;;-1:-1:-1;2091:2:1;2076:18;;2063:32;2104:33;2063:32;2104:33;:::i;:::-;2156:7;2146:17;;;1802:367;;;;;:::o;2174:226::-;2233:6;2286:2;2274:9;2265:7;2261:23;2257:32;2254:52;;;2302:1;2299;2292:12;2254:52;-1:-1:-1;2347:23:1;;2174:226;-1:-1:-1;2174:226:1:o;2405:508::-;2482:6;2490;2498;2551:2;2539:9;2530:7;2526:23;2522:32;2519:52;;;2567:1;2564;2557:12;2519:52;2606:9;2593:23;2625:31;2650:5;2625:31;:::i;:::-;2675:5;-1:-1:-1;2732:2:1;2717:18;;2704:32;2745:33;2704:32;2745:33;:::i;:::-;2405:508;;2797:7;;-1:-1:-1;;;2877:2:1;2862:18;;;;2849:32;;2405:508::o;3171:401::-;3252:6;3260;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;3368:9;3355:23;3387:31;3412:5;3387:31;:::i;:::-;3437:5;-1:-1:-1;3494:2:1;3479:18;;3466:32;3507:33;3466:32;3507:33;:::i;3974:160::-;4039:20;;4095:13;;4088:21;4078:32;;4068:60;;4124:1;4121;4114:12;4068:60;3974:160;;;:::o;4139:456::-;4213:6;4221;4229;4282:2;4270:9;4261:7;4257:23;4253:32;4250:52;;;4298:1;4295;4288:12;4250:52;4337:9;4324:23;4356:31;4381:5;4356:31;:::i;:::-;4406:5;-1:-1:-1;4463:2:1;4448:18;;4435:32;4476:33;4435:32;4476:33;:::i;:::-;4528:7;-1:-1:-1;4554:35:1;4585:2;4570:18;;4554:35;:::i;:::-;4544:45;;4139:456;;;;;:::o;4993:487::-;5070:6;5078;5086;5139:2;5127:9;5118:7;5114:23;5110:32;5107:52;;;5155:1;5152;5145:12;5107:52;5194:9;5181:23;5213:31;5238:5;5213:31;:::i;:::-;5263:5;5341:2;5326:18;;5313:32;;-1:-1:-1;5444:2:1;5429:18;;;5416:32;;4993:487;-1:-1:-1;;;4993:487:1:o;5706:315::-;5771:6;5779;5832:2;5820:9;5811:7;5807:23;5803:32;5800:52;;;5848:1;5845;5838:12;5800:52;5887:9;5874:23;5906:31;5931:5;5906:31;:::i;:::-;5956:5;-1:-1:-1;5980:35:1;6011:2;5996:18;;5980:35;:::i;:::-;5970:45;;5706:315;;;;;:::o;6026:629::-;6112:6;6120;6128;6136;6189:3;6177:9;6168:7;6164:23;6160:33;6157:53;;;6206:1;6203;6196:12;6157:53;6245:9;6232:23;6264:31;6289:5;6264:31;:::i;:::-;6314:5;-1:-1:-1;6371:2:1;6356:18;;6343:32;6384:33;6343:32;6384:33;:::i;:::-;6026:629;;6436:7;;-1:-1:-1;;;;6516:2:1;6501:18;;6488:32;;6619:2;6604:18;6591:32;;6026:629::o;6660:380::-;6739:1;6735:12;;;;6782;;;6803:61;;6857:4;6849:6;6845:17;6835:27;;6803:61;6910:2;6902:6;6899:14;6879:18;6876:38;6873:161;;6956:10;6951:3;6947:20;6944:1;6937:31;6991:4;6988:1;6981:15;7019:4;7016:1;7009:15;6873:161;;6660:380;;;:::o;7045:356::-;7247:2;7229:21;;;7266:18;;;7259:30;7325:34;7320:2;7305:18;;7298:62;7392:2;7377:18;;7045:356::o;7752:184::-;7822:6;7875:2;7863:9;7854:7;7850:23;7846:32;7843:52;;;7891:1;7888;7881:12;7843:52;-1:-1:-1;7914:16:1;;7752:184;-1:-1:-1;7752:184:1:o;7941:127::-;8002:10;7997:3;7993:20;7990:1;7983:31;8033:4;8030:1;8023:15;8057:4;8054:1;8047:15;8073:125;8138:9;;;8159:10;;;8156:36;;;8172:18;;:::i;8622:128::-;8689:9;;;8710:11;;;8707:37;;;8724:18;;:::i;9542:168::-;9615:9;;;9646;;9663:15;;;9657:22;;9643:37;9633:71;;9684:18;;:::i;10124:398::-;10326:2;10308:21;;;10365:2;10345:18;;;10338:30;10404:34;10399:2;10384:18;;10377:62;-1:-1:-1;;;10470:2:1;10455:18;;10448:32;10512:3;10497:19;;10124:398::o;11974:251::-;12044:6;12097:2;12085:9;12076:7;12072:23;12068:32;12065:52;;;12113:1;12110;12103:12;12065:52;12145:9;12139:16;12164:31;12189:5;12164:31;:::i;13960:401::-;14162:2;14144:21;;;14201:2;14181:18;;;14174:30;14240:34;14235:2;14220:18;;14213:62;-1:-1:-1;;;14306:2:1;14291:18;;14284:35;14351:3;14336:19;;13960:401::o;14366:399::-;14568:2;14550:21;;;14607:2;14587:18;;;14580:30;14646:34;14641:2;14626:18;;14619:62;-1:-1:-1;;;14712:2:1;14697:18;;14690:33;14755:3;14740:19;;14366:399::o;17767:217::-;17807:1;17833;17823:132;;17877:10;17872:3;17868:20;17865:1;17858:31;17912:4;17909:1;17902:15;17940:4;17937:1;17930:15;17823:132;-1:-1:-1;17969:9:1;;17767:217::o;18121:127::-;18182:10;18177:3;18173:20;18170:1;18163:31;18213:4;18210:1;18203:15;18237:4;18234:1;18227:15;18253:959;18515:4;18563:3;18552:9;18548:19;18594:6;18583:9;18576:25;18637:6;18632:2;18621:9;18617:18;18610:34;18680:3;18675:2;18664:9;18660:18;18653:31;18704:6;18739;18733:13;18770:6;18762;18755:22;18808:3;18797:9;18793:19;18786:26;;18847:2;18839:6;18835:15;18821:29;;18868:1;18878:195;18892:6;18889:1;18886:13;18878:195;;;18957:13;;-1:-1:-1;;;;;18953:39:1;18941:52;;19022:2;19048:15;;;;19013:12;;;;18989:1;18907:9;18878:195;;;-1:-1:-1;;;;;;;19129:32:1;;;;19124:2;19109:18;;19102:60;-1:-1:-1;;19193:3:1;19178:19;19171:35;19090:3;18253:959;-1:-1:-1;;;18253:959:1:o

Swarm Source

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