ETH Price: $3,269.29 (-4.14%)
Gas: 10 Gwei

Token

ETF The Token (ETF)
 

Overview

Max Total Supply

21,000,000 ETF

Holders

1,536 ( 0.065%)

Market

Price

$0.01 @ 0.000002 ETH (-2.47%)

Onchain Market Cap

$145,630.80

Circulating Supply Market Cap

$145,631.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 ETF

Value
$0.00 ( ~0 Eth) [0.0000%]
0xF044C55D213F1D8e57C059005F65627fd5b81E1B
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

$ETF stands as the bridge between memetic value and one of the most pivotal catalysts crypto has ever seen.

Market

Volume (24H):$137.99
Market Capitalization:$145,631.00
Circulating Supply:21,000,000.00 ETF
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BETETF

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// https://etf.live/
// https://twitter.com/bet_etf
// https://t.me/bet_etf

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.21;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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 Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

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


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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

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

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

interface IETFReflections {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit(uint256 newRewards) external;
    function process(uint256 gas) external;
    function gibTokens(address shareholder) external;
}


contract ETFreflections is IETFReflections {

    using SafeMath for uint256;
    address _token;

    address public ETFLP;

    IDEXRouter router;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 0 * (10 ** 9);

    uint256 public currentIndex;
    bool initialized;

    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor () {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    }
    
    receive() external payable {}

    function _setETFLP(address rewardsAddress) external onlyToken {
        ETFLP = rewardsAddress;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit(uint256 newRewards) external override onlyToken {
        totalDividends = totalDividends.add(newRewards);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(newRewards).div(totalShares));
    }
    
    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) public view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            IERC20(ETFLP).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function gibTokens(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract BETETF is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address public ETFLP;

    string private constant _name = "ETF The Token";
    string private constant _symbol = "ETF";
    uint8 private constant _decimals = 18;
    
    uint256 private _totalSupply = 21000000 * (10 ** _decimals);

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => uint256) private cooldown;

    address private WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    bool public antiBot = true;

    mapping (address => bool) private bots; 
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;
    address public lpWallet;

    uint256 public buyFee = 900;
    uint256 public sellFee = 990; //tax divisor 1000

    uint256 public toLpReflections = 50;
    uint256 public toDev = 50;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public devWallet = payable(0xD21140A5Ba25520b5487E3761290dA1D95153bB0);

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    ETFreflections public etfReflections;
    uint256 public etfReflectionsGas = 0;

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

    uint256 public maxTx = _totalSupply.div(50);
    uint256 public maxWallet = _totalSupply.div(50);
    uint256 public swapThreshold = _totalSupply.div(400);

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

        etfReflections = new ETFreflections();
        
        isFeeExempt[owner()] = true;
        isFeeExempt[devWallet] = true;            

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;    

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[devWallet] = true;  


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

    receive() external payable { }


    function setBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setETFLP(address rewardsAddress) external onlyOwner {
        ETFLP = rewardsAddress;
        etfReflections._setETFLP(rewardsAddress);
    }

    function setLPWallet(address lpReceiver) external onlyOwner {
        lpWallet = lpReceiver;
    }

    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }      

    function changeBuyFees(uint256 newBuyFee) external onlyOwner {
        require (newBuyFee <= 1000, "must keep fees below 10%");
        buyFee = newBuyFee;
    }

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 1000, "must keep fees below 10%"); 
        require(newSellFee <= 1000, "must keep fees below 10%");
        buyFee = newBuyFee;
        sellFee = newSellFee;
    } 
    
    function changeFeeAllocation(uint256 newRewardFee, uint256 newDevFee) external onlyOwner {
        toLpReflections = newRewardFee;
        toDev = newDevFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        maxWallet  = newLimit;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner {      
        isTxLimitExempt[holder] = exempt;
    }

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

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }     

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        etfReflections.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            etfReflections.setShare(holder, 0);
        }else{
            etfReflections.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function changeEtfReflectionsGas(uint256 newGas) external onlyOwner {
        etfReflectionsGas = newGas;
    }           

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

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    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 _transfer(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 _transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner() && recipient!= owner()) require(tradingOpen, "pump the breaks."); //transfers disabled before tradingActive
        require(!bots[sender] && !bots[recipient]);

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && antiBot)
        {
            require(_balances[recipient].add(amount) <= maxWallet, "wallet");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try etfReflections.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try etfReflections.setShare(recipient, _balances[recipient]) {} catch {} 
        }

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }  
    
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(1000);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

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

        approve(address(this), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLpRewards(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
    
        uint256 tokenBalance = _balances[address(this)]; 
        uint256 tokensForLpRewards = tokenBalance.mul(toLpReflections).div(100).div(2);     
        uint256 amountToSwap = tokenBalance.sub(tokensForLpRewards);

        swapTokensForEth(amountToSwap);

        uint256 rewardBalanceBefore = IERC20(ETFLP).balanceOf(address(etfReflections));
        uint256 totalEthBalance = address(this).balance;
        uint256 ethForLpRewards = totalEthBalance.mul(toLpReflections).div(100).div(2);

        if (tokensForLpRewards > 0){
            addLpRewards(tokensForLpRewards, ethForLpRewards);
        }

        uint256 newRewards = IERC20(ETFLP).balanceOf(address(etfReflections)).sub(rewardBalanceBefore);
        
        etfReflections.deposit(newRewards);
      
        if (totalEthBalance > 0){
            payable(devWallet).transfer(address(this).balance);
        }
    }

    function manualSwapBack() external onlyOwner {
        swapBack();
    }

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0){          
            payable(devWallet).transfer(contractETHBalance);
        }
    }

    function manualDeposit() external {
        uint256 newRewards = IERC20(ETFLP).balanceOf(address(this));
        etfReflections.deposit(newRewards);
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        etfReflections.process(manualGas);
    }

    function checkPendingReflections(address shareholder) external view returns (uint256) {
        return etfReflections.getUnpaidEarnings(shareholder);
    }

    function getRewards() external {
        etfReflections.gibTokens(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ETFLP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"}],"name":"changeBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeEtfReflectionsGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"etfReflections","outputs":[{"internalType":"contract ETFreflections","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"etfReflectionsGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"getRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","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":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardsAddress","type":"address"}],"name":"setETFLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpReceiver","type":"address"}],"name":"setLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"pure","type":"function"},{"inputs":[],"name":"toDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toLpReflections","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":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620005d6565b62000022906301406f40620005e6565b6002819055600780546001600160a01b03191661dead179055600880546001600160a81b031916600160a01b179055610384600f556103de601055603260118190556012819055606460135560188054600162ffff0160a01b031916750100d21140a5ba25520b5487e3761290da1d95153bb01790555f601a55620000a8919062000426565b601b55600254620000bb90603262000426565b601c55600254620000cf9061019062000426565b601d55348015620000de575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000182573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a8919062000600565b600680546001600160a01b0319166001600160a01b039283161790556014546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000205573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022b919062000600565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af11580156200027a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a0919062000600565b601580546001600160a01b0319166001600160a01b03928316179055305f90815260046020908152604080832060145490941683529290528190205f19905551620002eb90620004bb565b604051809103905ff08015801562000305573d5f803e3d5ffd5b50601980546001600160a01b0319166001600160a01b039283161790555f805482168152600a60209081526040808320805460ff199081166001908117909255601880548716865283862080548316841790556015805488168752600c86528487208054841685179055308752848720805484168517905560078054891688528588208054851686179055875489168852600b8752858820805485168617905590548816875284872080548416851790555487168652838620805483168417905554861685528285208054909116909117905560025483548516845260038352818420819055835491519081529316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200069c565b5f6200046f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200047860201b60201c565b90505b92915050565b5f8183620004a45760405162461bcd60e51b81526004016200049b91906200062f565b60405180910390fd5b505f620004b284866200067c565b95945050505050565b610dae8062002e6483390190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200051d57815f1904821115620005015762000501620004c9565b808516156200050f57918102915b93841c9390800290620004e2565b509250929050565b5f82620005355750600162000472565b816200054357505f62000472565b81600181146200055c5760028114620005675762000587565b600191505062000472565b60ff8411156200057b576200057b620004c9565b50506001821b62000472565b5060208310610133831016604e8410600b8410161715620005ac575081810a62000472565b620005b88383620004dd565b805f1904821115620005ce57620005ce620004c9565b029392505050565b5f6200046f60ff84168362000525565b8082028115828204841417620004725762000472620004c9565b5f6020828403121562000611575f80fd5b81516001600160a01b038116811462000628575f80fd5b9392505050565b5f6020808352835180828501525f5b818110156200065c578581018301518582016040015282016200063e565b505f604082860101526040601f19601f8301168501019250505092915050565b5f826200069757634e487b7160e01b5f52601260045260245ffd5b500490565b6127ba80620006aa5f395ff3fe6080604052600436106103a0575f3560e01c80637dfcbe34116101de578063bb542ef011610108578063f27889e61161009d578063f8b45b051161006d578063f8b45b0514610aaa578063fa05db0f14610abf578063fabe628314610ade578063ffb54a9914610afd575f80fd5b8063f27889e614610a2e578063f2fde38b14610a4d578063f708a64f14610a6c578063f887ea4014610a8b575f80fd5b8063ca19e830116100d8578063ca19e8301461098d578063d920334e146109ac578063dd62ed3e146109cb578063edd104ff14610a0f575f80fd5b8063bb542ef014610926578063bf56b37114610945578063c45a01551461095a578063c9567bf914610979575f80fd5b80638da5cb5b1161017e578063a3f22a421161014e578063a3f22a42146108aa578063a8aa1b31146108c9578063a9059cbb146108e8578063b515566a14610907575f80fd5b80638da5cb5b146107e25780638ea5220f1461084157806395d89b4114610860578063a3a2e89e1461088b575f80fd5b806389291a8f116101b957806389291a8f146107ce578063893d20e8146107e25780638b42507f146107fe5780638c23e23e1461082c575f80fd5b80637dfcbe341461077a578063819340311461079a57806389215317146107b9575f80fd5b80633f4218e0116102ca5780636303516c1161025f578063715018a61161022f578063715018a6146107135780637437681e1461072757806377359aa71461073c5780637db1342c1461075b575f80fd5b80636303516c1461068057806366eb3785146106b75780636ab86dc1146106cb57806370a08231146106df575f80fd5b80634a74bb021161029a5780634a74bb021461060d5780634bb8d2031461062d5780634c43f93514610642578063571ac8b014610661575f80fd5b80633f4218e0146105875780634355855a146105b557806345434377146105e357806347062402146105f8575f80fd5b8063273123b71161034057806330ca34ee1161031057806330ca34ee1461050f578063313ce5671461052e5780633b0aacbc146105495780633dab526914610568575f80fd5b8063273123b7146104a85780632b112e49146104c75780632b14ca56146104db5780632d48e896146104f0575f80fd5b8063095ea7b31161037b578063095ea7b31461042757806318160ddd146104565780631f53ac021461046a57806323b872dd14610489575f80fd5b80630445b667146103ab5780630572b0cc146103d357806306fdde03146103e9575f80fd5b366103a757005b5f80fd5b3480156103b6575f80fd5b506103c0601d5481565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610b1d565b005b3480156103f4575f80fd5b5060408051808201909152600d81526c22aa23102a3432902a37b5b2b760991b60208201525b6040516103ca9190612320565b348015610432575f80fd5b5061044661044136600461238f565b610b77565b60405190151581526020016103ca565b348015610461575f80fd5b506002546103c0565b348015610475575f80fd5b506103e76104843660046123b9565b610be3565b348015610494575f80fd5b506104466104a33660046123d4565b610c37565b3480156104b3575f80fd5b506103e76104c23660046123b9565b610cf5565b3480156104d2575f80fd5b506103c0610d3e565b3480156104e6575f80fd5b506103c060105481565b3480156104fb575f80fd5b506103e761050a366004612412565b610d8e565b34801561051a575f80fd5b506103e7610529366004612412565b610e1c565b348015610539575f80fd5b50604051601281526020016103ca565b348015610554575f80fd5b506103e76105633660046123b9565b610e94565b348015610573575f80fd5b506103e7610582366004612441565b610edf565b348015610592575f80fd5b506104466105a13660046123b9565b600a6020525f908152604090205460ff1681565b3480156105c0575f80fd5b506104466105cf3660046123b9565b600c6020525f908152604090205460ff1681565b3480156105ee575f80fd5b506103c060135481565b348015610603575f80fd5b506103c0600f5481565b348015610618575f80fd5b5060185461044690600160a81b900460ff1681565b348015610638575f80fd5b506103c060115481565b34801561064d575f80fd5b506103e761065c3660046123b9565b610f2a565b34801561066c575f80fd5b5061044661067b3660046123b9565b610fc8565b34801561068b575f80fd5b50600e5461069f906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b3480156106c2575f80fd5b506103e7610fd4565b3480156106d6575f80fd5b506103e7611007565b3480156106ea575f80fd5b506103c06106f93660046123b9565b6001600160a01b03165f9081526003602052604090205490565b34801561071e575f80fd5b506103e76110a3565b348015610732575f80fd5b506103c0601b5481565b348015610747575f80fd5b506103c06107563660046123b9565b611114565b348015610766575f80fd5b506103e761077536600461245b565b611180565b348015610785575f80fd5b5060085461044690600160a01b900460ff1681565b3480156107a5575f80fd5b506103e76107b436600461245b565b6111ae565b3480156107c4575f80fd5b506103c060125481565b3480156107d9575f80fd5b506103e761120b565b3480156107ed575f80fd5b505f546001600160a01b031661069f565b348015610809575f80fd5b506104466108183660046123b9565b600b6020525f908152604090205460ff1681565b348015610837575f80fd5b506103c0601a5481565b34801561084c575f80fd5b5060185461069f906001600160a01b031681565b34801561086b575f80fd5b5060408051808201909152600381526222aa2360e91b602082015261041a565b348015610896575f80fd5b506103e76108a5366004612472565b611277565b3480156108b5575f80fd5b506103e76108c436600461245b565b6112ca565b3480156108d4575f80fd5b5060155461069f906001600160a01b031681565b3480156108f3575f80fd5b5061044661090236600461238f565b6112f8565b348015610912575f80fd5b506103e76109213660046124b9565b611304565b348015610931575f80fd5b506103e76109403660046123b9565b611392565b348015610950575f80fd5b506103c0600d5481565b348015610965575f80fd5b5060165461069f906001600160a01b031681565b348015610984575f80fd5b506103e76113dd565b348015610998575f80fd5b506103e76109a7366004612412565b61141f565b3480156109b7575f80fd5b506103e76109c636600461245b565b611453565b3480156109d6575f80fd5b506103c06109e5366004612579565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610a1a575f80fd5b5060195461069f906001600160a01b031681565b348015610a39575f80fd5b5060015461069f906001600160a01b031681565b348015610a58575f80fd5b506103e7610a673660046123b9565b611481565b348015610a77575f80fd5b506103e7610a86366004612472565b611568565b348015610a96575f80fd5b5060145461069f906001600160a01b031681565b348015610ab5575f80fd5b506103c0601c5481565b348015610aca575f80fd5b506103e7610ad936600461245b565b61159b565b348015610ae9575f80fd5b506103e7610af8366004612472565b6115eb565b348015610b08575f80fd5b5060185461044690600160b01b900460ff1681565b60195460405163bd14ae2760e01b81523360048201526001600160a01b039091169063bd14ae27906024015f604051808303815f87803b158015610b5f575f80fd5b505af1158015610b71573d5f803e3d5ffd5b50505050565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bd19086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610c155760405162461bcd60e51b8152600401610c0c906125b0565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610ce0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610cbc91849061163e565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610ceb848484611676565b90505b9392505050565b5f546001600160a01b03163314610d1e5760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03165f908152600960205260409020805460ff19169055565b6008546001600160a01b03165f90815260036020526040812054610d89906007546001600160a01b03165f90815260036020526040902054610d839060025490611b08565b90611b08565b905090565b5f546001600160a01b03163314610db75760405162461bcd60e51b8152600401610c0c906125b0565b6019546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610e02575f80fd5b505af1158015610e14573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610e455760405162461bcd60e51b8152600401610c0c906125b0565b6103e8821115610e675760405162461bcd60e51b8152600401610c0c906125e5565b6103e8811115610e895760405162461bcd60e51b8152600401610c0c906125e5565b600f91909155601055565b5f546001600160a01b03163314610ebd5760405162461bcd60e51b8152600401610c0c906125b0565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610f085760405162461bcd60e51b8152600401610c0c906125b0565b60188054921515600160a81b0260ff60a81b1990931692909217909155601d55565b5f546001600160a01b03163314610f535760405162461bcd60e51b8152600401610c0c906125b0565b600180546001600160a01b0319166001600160a01b0383811691821790925560195460405163882d518560e01b815260048101929092529091169063882d5185906024015b5f604051808303815f87803b158015610faf575f80fd5b505af1158015610fc1573d5f803e3d5ffd5b5050505050565b5f610bdd825f19610b77565b5f546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610c0c906125b0565b611005611b49565b565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561104d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611071919061261c565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f2590602401610f98565b5f546001600160a01b031633146110cc5760405162461bcd60e51b8152600401610c0c906125b0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60195460405163051fa63360e31b81526001600160a01b0383811660048301525f9216906328fd319890602401602060405180830381865afa15801561115c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdd919061261c565b5f546001600160a01b031633146111a95760405162461bcd60e51b8152600401610c0c906125b0565b601c55565b5f546001600160a01b031633146111d75760405162461bcd60e51b8152600401610c0c906125b0565b6019546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401610f98565b5f546001600160a01b031633146112345760405162461bcd60e51b8152600401610c0c906125b0565b478015611274576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611272573d5f803e3d5ffd5b505b50565b5f546001600160a01b031633146112a05760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112f35760405162461bcd60e51b8152600401610c0c906125b0565b601a55565b5f610cee338484611676565b5f546001600160a01b0316331461132d5760405162461bcd60e51b8152600401610c0c906125b0565b5f5b815181101561127257600160095f84848151811061134f5761134f612633565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061138a8161265b565b91505061132f565b5f546001600160a01b031633146113bb5760405162461bcd60e51b8152600401610c0c906125b0565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146114065760405162461bcd60e51b8152600401610c0c906125b0565b43600d556018805460ff60b01b1916600160b01b179055565b5f546001600160a01b031633146114485760405162461bcd60e51b8152600401610c0c906125b0565b601191909155601255565b5f546001600160a01b0316331461147c5760405162461bcd60e51b8152600401610c0c906125b0565b601b55565b5f546001600160a01b031633146114aa5760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03811661150f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115915760405162461bcd60e51b8152600401610c0c906125b0565b6112728282611d76565b5f546001600160a01b031633146115c45760405162461bcd60e51b8152600401610c0c906125b0565b6103e88111156115e65760405162461bcd60e51b8152600401610c0c906125e5565b600f55565b5f546001600160a01b031633146116145760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f81848411156116615760405162461bcd60e51b8152600401610c0c9190612320565b505f61166d8486612673565b95945050505050565b5f80546001600160a01b038581169116148015906116a157505f546001600160a01b03848116911614155b156116f257601854600160b01b900460ff166116f25760405162461bcd60e51b815260206004820152601060248201526f383ab6b8103a343290313932b0b5b99760811b6044820152606401610c0c565b6001600160a01b0384165f9081526009602052604090205460ff1615801561173257506001600160a01b0383165f9081526009602052604090205460ff16155b61173a575f80fd5b601854600160a01b900460ff161561175e57611757848484611e7e565b9050610cee565b601b548211158061178657506001600160a01b0384165f908152600b602052604090205460ff165b6117b75760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610c0c565b6001600160a01b0383165f908152600b602052604090205460ff161580156117e85750600854600160a01b900460ff165b1561184957601c546001600160a01b0384165f908152600360205260409020546118129084611f61565b11156118495760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610c0c565b6015546001600160a01b0316331480159061186e5750601854600160a01b900460ff16155b80156118835750601854600160a81b900460ff165b801561189f5750601d54305f9081526003602052604090205410155b156118ac576118ac611b49565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600390915291909120546118fd91849061163e565b6001600160a01b0385165f90815260036020908152604080832093909355600a90529081205460ff1615801561194b57506001600160a01b0384165f908152600a602052604090205460ff16155b6119555782611960565b611960858585611fbf565b6001600160a01b0385165f908152600360205260409020549091506119859082611f61565b6001600160a01b038086165f908152600360209081526040808320949094559188168152600c909152205460ff16611a24576019546001600160a01b038681165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a11575f80fd5b505af1925050508015611a22575060015b505b6001600160a01b0384165f908152600c602052604090205460ff16611ab0576019546001600160a01b038581165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a9d575f80fd5b505af1925050508015611aae575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611af591815260200190565b60405180910390a3506001949350505050565b5f610cee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061163e565b6018805460ff60a01b1916600160a01b179055305f90815260036020526040812054601154909190611b8e90600290611b88906064908290879061207f565b906120fd565b90505f611b9b8383611b08565b9050611ba68161213e565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f9291909116906370a0823190602401602060405180830381865afa158015611bf4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c18919061261c565b90505f4790505f611c3e6002611b886064611b886011548761207f90919063ffffffff16565b90508415611c5057611c508582612262565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f92611cc69287929116906370a0823190602401602060405180830381865afa158015611ca2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d83919061261c565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f25906024015f604051808303815f87803b158015611d0a575f80fd5b505af1158015611d1c573d5f803e3d5ffd5b505050505f831115611d60576018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611d5e573d5f803e3d5ffd5b505b50506018805460ff60a01b191690555050505050565b6001600160a01b0382163014801590611d9d57506015546001600160a01b03838116911614155b611da5575f80fd5b6001600160a01b0382165f908152600c60205260409020805460ff19168215801591909117909155611e3657601954604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015611e1b575f80fd5b505af1158015611e2d573d5f803e3d5ffd5b50505050611272565b6019546001600160a01b038381165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610deb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054611ece91849061163e565b6001600160a01b038086165f908152600360205260408082209390935590851681522054611efc9083611f61565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f4f9086815260200190565b60405180910390a35060019392505050565b5f80611f6d8385612686565b905083811015610cee5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c0c565b6015545f9081906001600160a01b03858116911614611fe057600f54611fe4565b6010545b90505f611ff76103e8611b88868561207f565b305f908152600360205260409020549091506120139082611f61565b305f81815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120639085815260200190565b60405180910390a36120758482611b08565b9695505050505050565b5f825f0361208e57505f610bdd565b5f6120998385612699565b9050826120a685836126b0565b14610cee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c0c565b5f610cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122f4565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061217157612171612633565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ec91906126cf565b816001815181106121ff576121ff612633565b60200260200101906001600160a01b031690816001600160a01b0316815250506122293083610b77565b5060145460405163791ac94760e01b81526001600160a01b039091169063791ac94790610deb9085905f908690309042906004016126ea565b601454600e5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156122cf573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc19190612759565b5f81836123145760405162461bcd60e51b8152600401610c0c9190612320565b505f61166d84866126b0565b5f6020808352835180828501525f5b8181101561234b5785810183015185820160400152820161232f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611274575f80fd5b803561238a8161236b565b919050565b5f80604083850312156123a0575f80fd5b82356123ab8161236b565b946020939093013593505050565b5f602082840312156123c9575f80fd5b8135610cee8161236b565b5f805f606084860312156123e6575f80fd5b83356123f18161236b565b925060208401356124018161236b565b929592945050506040919091013590565b5f8060408385031215612423575f80fd5b50508035926020909101359150565b8035801515811461238a575f80fd5b5f8060408385031215612452575f80fd5b6123ab83612432565b5f6020828403121561246b575f80fd5b5035919050565b5f8060408385031215612483575f80fd5b823561248e8161236b565b915061249c60208401612432565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156124ca575f80fd5b823567ffffffffffffffff808211156124e1575f80fd5b818501915085601f8301126124f4575f80fd5b813581811115612506576125066124a5565b8060051b604051601f19603f8301168101818110858211171561252b5761252b6124a5565b604052918252848201925083810185019188831115612548575f80fd5b938501935b8285101561256d5761255e8561237f565b8452938501939285019261254d565b98975050505050505050565b5f806040838503121561258a575f80fd5b82356125958161236b565b915060208301356125a58161236b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f6d757374206b65657020666565732062656c6f77203130250000000000000000604082015260600190565b5f6020828403121561262c575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161266c5761266c612647565b5060010190565b81810381811115610bdd57610bdd612647565b80820180821115610bdd57610bdd612647565b8082028115828204841417610bdd57610bdd612647565b5f826126ca57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156126df575f80fd5b8151610cee8161236b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127385784516001600160a01b031683529383019391830191600101612713565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561276b575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122039dc76005bae8646904bfc33b08dd7b2ce8bf36c83a6b7711cc1a90700b4eb7d64736f6c6343000815003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c555f600d5534801561002c575f80fd5b505f80546001600160a01b0319908116331790915560028054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055610d418061006d5f395ff3fe608060405260043610610108575f3560e01c8063997664d711610092578063e2d2e21911610062578063e2d2e219146102cf578063efca2eed146102e4578063f27889e6146102f9578063ffb2c47914610330578063ffd49c841461034f575f80fd5b8063997664d714610227578063b6b55f251461023c578063bd14ae271461025b578063ce7c2ac21461027a575f80fd5b80632d48e896116100d85780632d48e896146101905780633a98ef39146101af5780634fab0ae8146101c4578063882d5185146101d95780638c21cd52146101f8575f80fd5b806311ce023d1461011357806314b6ca961461013b57806326987b601461015c57806328fd319814610171575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b50610128600b5481565b6040519081526020015b60405180910390f35b348015610146575f80fd5b5061015a610155366004610b79565b610364565b005b348015610167575f80fd5b50610128600e5481565b34801561017c575f80fd5b5061012861018b366004610ba1565b6104d2565b34801561019b575f80fd5b5061015a6101aa366004610bba565b610558565b3480156101ba575f80fd5b5061012860075481565b3480156101cf575f80fd5b50610128600d5481565b3480156101e4575f80fd5b5061015a6101f3366004610ba1565b610578565b348015610203575f80fd5b50610217610212366004610ba1565b6105af565b6040519015158152602001610132565b348015610232575f80fd5b5061012860085481565b348015610247575f80fd5b5061015a610256366004610bda565b6105f4565b348015610266575f80fd5b5061015a610275366004610ba1565b610646565b348015610285575f80fd5b506102b4610294366004610ba1565b60066020525f908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610132565b3480156102da575f80fd5b50610128600a5481565b3480156102ef575f80fd5b5061012860095481565b348015610304575f80fd5b50600154610318906001600160a01b031681565b6040516001600160a01b039091168152602001610132565b34801561033b575f80fd5b5061015a61034a366004610bda565b610667565b34801561035a575f80fd5b50610128600c5481565b5f546001600160a01b03163314610379575f80fd5b6001600160a01b0382165f908152600660205260409020541561039f5761039f8261074d565b5f811180156103c357506001600160a01b0382165f90815260066020526040902054155b1561042857600380546001600160a01b0384165f818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909117905561045a565b8015801561044c57506001600160a01b0382165f9081526006602052604090205415155b1561045a5761045a82610864565b6001600160a01b0382165f9081526006602052604090205460075461048a91839161048491610974565b906109bc565b6007556001600160a01b0382165f9081526006602052604090208190556104b081610a1f565b6001600160a01b039092165f9081526006602052604090206001019190915550565b6001600160a01b0381165f9081526006602052604081205481036104f757505f919050565b6001600160a01b0382165f9081526006602052604081205461051890610a1f565b6001600160a01b0384165f9081526006602052604090206001015490915080821161054657505f9392505050565b6105508282610974565b949350505050565b5f546001600160a01b0316331461056d575f80fd5b600c91909155600d55565b5f546001600160a01b0316331461058d575f80fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b0382165f90815260056020526040812054909142916105d89190610c05565b1080156105ee5750600d546105ec836104d2565b115b92915050565b5f546001600160a01b03163314610609575f80fd5b60085461061690826109bc565b600855600754600b5461064091610637916106319085610a3b565b90610ab9565b600a54906109bc565b600a5550565b5f546001600160a01b0316331461065b575f80fd5b6106648161074d565b50565b6003545f819003610676575050565b5f805f5a90505b848210801561068b57508383105b156107465783600e541061069e575f600e555b6106cf6003600e54815481106106b6576106b6610c18565b5f918252602090912001546001600160a01b03166105af565b15610705576107056003600e54815481106106ec576106ec610c18565b5f918252602090912001546001600160a01b031661074d565b61071a6107135a8390610974565b83906109bc565b91505a600e80549192505f61072e83610c2c565b9190505550828061073e90610c2c565b93505061067d565b5050505050565b6001600160a01b0381165f90815260066020526040812054900361076e5750565b5f610778826104d2565b905080156108605760095461078d90826109bc565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af11580156107e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108049190610c44565b506001600160a01b0382165f908152600560209081526040808320429055600690915290206002015461083790826109bc565b6001600160a01b0383165f9081526006602052604090206002810191909155546104b090610a1f565b5050565b6003805461087490600190610c63565b8154811061088457610884610c18565b5f9182526020808320909101546001600160a01b03848116845260049092526040909220546003805492909316929181106108c1576108c1610c18565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812054600380549193929161090c90600190610c63565b8154811061091c5761091c610c18565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055600380548061095157610951610c76565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f6109b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610afa565b9392505050565b5f806109c88385610c05565b9050838110156109b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b5f6105ee600b54610631600a5485610a3b90919063ffffffff16565b5f825f03610a4a57505f6105ee565b5f610a558385610c8a565b905082610a628583610ca1565b146109b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a16565b5f6109b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b32565b5f8184841115610b1d5760405162461bcd60e51b8152600401610a169190610cc0565b505f610b298486610c63565b95945050505050565b5f8183610b525760405162461bcd60e51b8152600401610a169190610cc0565b505f610b298486610ca1565b80356001600160a01b0381168114610b74575f80fd5b919050565b5f8060408385031215610b8a575f80fd5b610b9383610b5e565b946020939093013593505050565b5f60208284031215610bb1575f80fd5b6109b582610b5e565b5f8060408385031215610bcb575f80fd5b50508035926020909101359150565b5f60208284031215610bea575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105ee576105ee610bf1565b634e487b7160e01b5f52603260045260245ffd5b5f60018201610c3d57610c3d610bf1565b5060010190565b5f60208284031215610c54575f80fd5b815180151581146109b5575f80fd5b818103818111156105ee576105ee610bf1565b634e487b7160e01b5f52603160045260245ffd5b80820281158282048414176105ee576105ee610bf1565b5f82610cbb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b81811015610ceb57858101830151858201604001528201610ccf565b505f604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220045fced69a23baf70935e4233de0b55c1c194901e4b33f8a46de8256b72f112664736f6c63430008150033

Deployed Bytecode

0x6080604052600436106103a0575f3560e01c80637dfcbe34116101de578063bb542ef011610108578063f27889e61161009d578063f8b45b051161006d578063f8b45b0514610aaa578063fa05db0f14610abf578063fabe628314610ade578063ffb54a9914610afd575f80fd5b8063f27889e614610a2e578063f2fde38b14610a4d578063f708a64f14610a6c578063f887ea4014610a8b575f80fd5b8063ca19e830116100d8578063ca19e8301461098d578063d920334e146109ac578063dd62ed3e146109cb578063edd104ff14610a0f575f80fd5b8063bb542ef014610926578063bf56b37114610945578063c45a01551461095a578063c9567bf914610979575f80fd5b80638da5cb5b1161017e578063a3f22a421161014e578063a3f22a42146108aa578063a8aa1b31146108c9578063a9059cbb146108e8578063b515566a14610907575f80fd5b80638da5cb5b146107e25780638ea5220f1461084157806395d89b4114610860578063a3a2e89e1461088b575f80fd5b806389291a8f116101b957806389291a8f146107ce578063893d20e8146107e25780638b42507f146107fe5780638c23e23e1461082c575f80fd5b80637dfcbe341461077a578063819340311461079a57806389215317146107b9575f80fd5b80633f4218e0116102ca5780636303516c1161025f578063715018a61161022f578063715018a6146107135780637437681e1461072757806377359aa71461073c5780637db1342c1461075b575f80fd5b80636303516c1461068057806366eb3785146106b75780636ab86dc1146106cb57806370a08231146106df575f80fd5b80634a74bb021161029a5780634a74bb021461060d5780634bb8d2031461062d5780634c43f93514610642578063571ac8b014610661575f80fd5b80633f4218e0146105875780634355855a146105b557806345434377146105e357806347062402146105f8575f80fd5b8063273123b71161034057806330ca34ee1161031057806330ca34ee1461050f578063313ce5671461052e5780633b0aacbc146105495780633dab526914610568575f80fd5b8063273123b7146104a85780632b112e49146104c75780632b14ca56146104db5780632d48e896146104f0575f80fd5b8063095ea7b31161037b578063095ea7b31461042757806318160ddd146104565780631f53ac021461046a57806323b872dd14610489575f80fd5b80630445b667146103ab5780630572b0cc146103d357806306fdde03146103e9575f80fd5b366103a757005b5f80fd5b3480156103b6575f80fd5b506103c0601d5481565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610b1d565b005b3480156103f4575f80fd5b5060408051808201909152600d81526c22aa23102a3432902a37b5b2b760991b60208201525b6040516103ca9190612320565b348015610432575f80fd5b5061044661044136600461238f565b610b77565b60405190151581526020016103ca565b348015610461575f80fd5b506002546103c0565b348015610475575f80fd5b506103e76104843660046123b9565b610be3565b348015610494575f80fd5b506104466104a33660046123d4565b610c37565b3480156104b3575f80fd5b506103e76104c23660046123b9565b610cf5565b3480156104d2575f80fd5b506103c0610d3e565b3480156104e6575f80fd5b506103c060105481565b3480156104fb575f80fd5b506103e761050a366004612412565b610d8e565b34801561051a575f80fd5b506103e7610529366004612412565b610e1c565b348015610539575f80fd5b50604051601281526020016103ca565b348015610554575f80fd5b506103e76105633660046123b9565b610e94565b348015610573575f80fd5b506103e7610582366004612441565b610edf565b348015610592575f80fd5b506104466105a13660046123b9565b600a6020525f908152604090205460ff1681565b3480156105c0575f80fd5b506104466105cf3660046123b9565b600c6020525f908152604090205460ff1681565b3480156105ee575f80fd5b506103c060135481565b348015610603575f80fd5b506103c0600f5481565b348015610618575f80fd5b5060185461044690600160a81b900460ff1681565b348015610638575f80fd5b506103c060115481565b34801561064d575f80fd5b506103e761065c3660046123b9565b610f2a565b34801561066c575f80fd5b5061044661067b3660046123b9565b610fc8565b34801561068b575f80fd5b50600e5461069f906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b3480156106c2575f80fd5b506103e7610fd4565b3480156106d6575f80fd5b506103e7611007565b3480156106ea575f80fd5b506103c06106f93660046123b9565b6001600160a01b03165f9081526003602052604090205490565b34801561071e575f80fd5b506103e76110a3565b348015610732575f80fd5b506103c0601b5481565b348015610747575f80fd5b506103c06107563660046123b9565b611114565b348015610766575f80fd5b506103e761077536600461245b565b611180565b348015610785575f80fd5b5060085461044690600160a01b900460ff1681565b3480156107a5575f80fd5b506103e76107b436600461245b565b6111ae565b3480156107c4575f80fd5b506103c060125481565b3480156107d9575f80fd5b506103e761120b565b3480156107ed575f80fd5b505f546001600160a01b031661069f565b348015610809575f80fd5b506104466108183660046123b9565b600b6020525f908152604090205460ff1681565b348015610837575f80fd5b506103c0601a5481565b34801561084c575f80fd5b5060185461069f906001600160a01b031681565b34801561086b575f80fd5b5060408051808201909152600381526222aa2360e91b602082015261041a565b348015610896575f80fd5b506103e76108a5366004612472565b611277565b3480156108b5575f80fd5b506103e76108c436600461245b565b6112ca565b3480156108d4575f80fd5b5060155461069f906001600160a01b031681565b3480156108f3575f80fd5b5061044661090236600461238f565b6112f8565b348015610912575f80fd5b506103e76109213660046124b9565b611304565b348015610931575f80fd5b506103e76109403660046123b9565b611392565b348015610950575f80fd5b506103c0600d5481565b348015610965575f80fd5b5060165461069f906001600160a01b031681565b348015610984575f80fd5b506103e76113dd565b348015610998575f80fd5b506103e76109a7366004612412565b61141f565b3480156109b7575f80fd5b506103e76109c636600461245b565b611453565b3480156109d6575f80fd5b506103c06109e5366004612579565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610a1a575f80fd5b5060195461069f906001600160a01b031681565b348015610a39575f80fd5b5060015461069f906001600160a01b031681565b348015610a58575f80fd5b506103e7610a673660046123b9565b611481565b348015610a77575f80fd5b506103e7610a86366004612472565b611568565b348015610a96575f80fd5b5060145461069f906001600160a01b031681565b348015610ab5575f80fd5b506103c0601c5481565b348015610aca575f80fd5b506103e7610ad936600461245b565b61159b565b348015610ae9575f80fd5b506103e7610af8366004612472565b6115eb565b348015610b08575f80fd5b5060185461044690600160b01b900460ff1681565b60195460405163bd14ae2760e01b81523360048201526001600160a01b039091169063bd14ae27906024015f604051808303815f87803b158015610b5f575f80fd5b505af1158015610b71573d5f803e3d5ffd5b50505050565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bd19086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610c155760405162461bcd60e51b8152600401610c0c906125b0565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610ce0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610cbc91849061163e565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610ceb848484611676565b90505b9392505050565b5f546001600160a01b03163314610d1e5760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03165f908152600960205260409020805460ff19169055565b6008546001600160a01b03165f90815260036020526040812054610d89906007546001600160a01b03165f90815260036020526040902054610d839060025490611b08565b90611b08565b905090565b5f546001600160a01b03163314610db75760405162461bcd60e51b8152600401610c0c906125b0565b6019546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610e02575f80fd5b505af1158015610e14573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610e455760405162461bcd60e51b8152600401610c0c906125b0565b6103e8821115610e675760405162461bcd60e51b8152600401610c0c906125e5565b6103e8811115610e895760405162461bcd60e51b8152600401610c0c906125e5565b600f91909155601055565b5f546001600160a01b03163314610ebd5760405162461bcd60e51b8152600401610c0c906125b0565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610f085760405162461bcd60e51b8152600401610c0c906125b0565b60188054921515600160a81b0260ff60a81b1990931692909217909155601d55565b5f546001600160a01b03163314610f535760405162461bcd60e51b8152600401610c0c906125b0565b600180546001600160a01b0319166001600160a01b0383811691821790925560195460405163882d518560e01b815260048101929092529091169063882d5185906024015b5f604051808303815f87803b158015610faf575f80fd5b505af1158015610fc1573d5f803e3d5ffd5b5050505050565b5f610bdd825f19610b77565b5f546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610c0c906125b0565b611005611b49565b565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561104d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611071919061261c565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f2590602401610f98565b5f546001600160a01b031633146110cc5760405162461bcd60e51b8152600401610c0c906125b0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60195460405163051fa63360e31b81526001600160a01b0383811660048301525f9216906328fd319890602401602060405180830381865afa15801561115c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdd919061261c565b5f546001600160a01b031633146111a95760405162461bcd60e51b8152600401610c0c906125b0565b601c55565b5f546001600160a01b031633146111d75760405162461bcd60e51b8152600401610c0c906125b0565b6019546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401610f98565b5f546001600160a01b031633146112345760405162461bcd60e51b8152600401610c0c906125b0565b478015611274576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611272573d5f803e3d5ffd5b505b50565b5f546001600160a01b031633146112a05760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112f35760405162461bcd60e51b8152600401610c0c906125b0565b601a55565b5f610cee338484611676565b5f546001600160a01b0316331461132d5760405162461bcd60e51b8152600401610c0c906125b0565b5f5b815181101561127257600160095f84848151811061134f5761134f612633565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061138a8161265b565b91505061132f565b5f546001600160a01b031633146113bb5760405162461bcd60e51b8152600401610c0c906125b0565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146114065760405162461bcd60e51b8152600401610c0c906125b0565b43600d556018805460ff60b01b1916600160b01b179055565b5f546001600160a01b031633146114485760405162461bcd60e51b8152600401610c0c906125b0565b601191909155601255565b5f546001600160a01b0316331461147c5760405162461bcd60e51b8152600401610c0c906125b0565b601b55565b5f546001600160a01b031633146114aa5760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03811661150f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115915760405162461bcd60e51b8152600401610c0c906125b0565b6112728282611d76565b5f546001600160a01b031633146115c45760405162461bcd60e51b8152600401610c0c906125b0565b6103e88111156115e65760405162461bcd60e51b8152600401610c0c906125e5565b600f55565b5f546001600160a01b031633146116145760405162461bcd60e51b8152600401610c0c906125b0565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f81848411156116615760405162461bcd60e51b8152600401610c0c9190612320565b505f61166d8486612673565b95945050505050565b5f80546001600160a01b038581169116148015906116a157505f546001600160a01b03848116911614155b156116f257601854600160b01b900460ff166116f25760405162461bcd60e51b815260206004820152601060248201526f383ab6b8103a343290313932b0b5b99760811b6044820152606401610c0c565b6001600160a01b0384165f9081526009602052604090205460ff1615801561173257506001600160a01b0383165f9081526009602052604090205460ff16155b61173a575f80fd5b601854600160a01b900460ff161561175e57611757848484611e7e565b9050610cee565b601b548211158061178657506001600160a01b0384165f908152600b602052604090205460ff165b6117b75760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610c0c565b6001600160a01b0383165f908152600b602052604090205460ff161580156117e85750600854600160a01b900460ff165b1561184957601c546001600160a01b0384165f908152600360205260409020546118129084611f61565b11156118495760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610c0c565b6015546001600160a01b0316331480159061186e5750601854600160a01b900460ff16155b80156118835750601854600160a81b900460ff165b801561189f5750601d54305f9081526003602052604090205410155b156118ac576118ac611b49565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600390915291909120546118fd91849061163e565b6001600160a01b0385165f90815260036020908152604080832093909355600a90529081205460ff1615801561194b57506001600160a01b0384165f908152600a602052604090205460ff16155b6119555782611960565b611960858585611fbf565b6001600160a01b0385165f908152600360205260409020549091506119859082611f61565b6001600160a01b038086165f908152600360209081526040808320949094559188168152600c909152205460ff16611a24576019546001600160a01b038681165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a11575f80fd5b505af1925050508015611a22575060015b505b6001600160a01b0384165f908152600c602052604090205460ff16611ab0576019546001600160a01b038581165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a9d575f80fd5b505af1925050508015611aae575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611af591815260200190565b60405180910390a3506001949350505050565b5f610cee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061163e565b6018805460ff60a01b1916600160a01b179055305f90815260036020526040812054601154909190611b8e90600290611b88906064908290879061207f565b906120fd565b90505f611b9b8383611b08565b9050611ba68161213e565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f9291909116906370a0823190602401602060405180830381865afa158015611bf4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c18919061261c565b90505f4790505f611c3e6002611b886064611b886011548761207f90919063ffffffff16565b90508415611c5057611c508582612262565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f92611cc69287929116906370a0823190602401602060405180830381865afa158015611ca2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d83919061261c565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f25906024015f604051808303815f87803b158015611d0a575f80fd5b505af1158015611d1c573d5f803e3d5ffd5b505050505f831115611d60576018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611d5e573d5f803e3d5ffd5b505b50506018805460ff60a01b191690555050505050565b6001600160a01b0382163014801590611d9d57506015546001600160a01b03838116911614155b611da5575f80fd5b6001600160a01b0382165f908152600c60205260409020805460ff19168215801591909117909155611e3657601954604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015611e1b575f80fd5b505af1158015611e2d573d5f803e3d5ffd5b50505050611272565b6019546001600160a01b038381165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610deb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054611ece91849061163e565b6001600160a01b038086165f908152600360205260408082209390935590851681522054611efc9083611f61565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f4f9086815260200190565b60405180910390a35060019392505050565b5f80611f6d8385612686565b905083811015610cee5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c0c565b6015545f9081906001600160a01b03858116911614611fe057600f54611fe4565b6010545b90505f611ff76103e8611b88868561207f565b305f908152600360205260409020549091506120139082611f61565b305f81815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120639085815260200190565b60405180910390a36120758482611b08565b9695505050505050565b5f825f0361208e57505f610bdd565b5f6120998385612699565b9050826120a685836126b0565b14610cee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c0c565b5f610cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122f4565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061217157612171612633565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ec91906126cf565b816001815181106121ff576121ff612633565b60200260200101906001600160a01b031690816001600160a01b0316815250506122293083610b77565b5060145460405163791ac94760e01b81526001600160a01b039091169063791ac94790610deb9085905f908690309042906004016126ea565b601454600e5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156122cf573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc19190612759565b5f81836123145760405162461bcd60e51b8152600401610c0c9190612320565b505f61166d84866126b0565b5f6020808352835180828501525f5b8181101561234b5785810183015185820160400152820161232f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611274575f80fd5b803561238a8161236b565b919050565b5f80604083850312156123a0575f80fd5b82356123ab8161236b565b946020939093013593505050565b5f602082840312156123c9575f80fd5b8135610cee8161236b565b5f805f606084860312156123e6575f80fd5b83356123f18161236b565b925060208401356124018161236b565b929592945050506040919091013590565b5f8060408385031215612423575f80fd5b50508035926020909101359150565b8035801515811461238a575f80fd5b5f8060408385031215612452575f80fd5b6123ab83612432565b5f6020828403121561246b575f80fd5b5035919050565b5f8060408385031215612483575f80fd5b823561248e8161236b565b915061249c60208401612432565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156124ca575f80fd5b823567ffffffffffffffff808211156124e1575f80fd5b818501915085601f8301126124f4575f80fd5b813581811115612506576125066124a5565b8060051b604051601f19603f8301168101818110858211171561252b5761252b6124a5565b604052918252848201925083810185019188831115612548575f80fd5b938501935b8285101561256d5761255e8561237f565b8452938501939285019261254d565b98975050505050505050565b5f806040838503121561258a575f80fd5b82356125958161236b565b915060208301356125a58161236b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f6d757374206b65657020666565732062656c6f77203130250000000000000000604082015260600190565b5f6020828403121561262c575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161266c5761266c612647565b5060010190565b81810381811115610bdd57610bdd612647565b80820180821115610bdd57610bdd612647565b8082028115828204841417610bdd57610bdd612647565b5f826126ca57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156126df575f80fd5b8151610cee8161236b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127385784516001600160a01b031683529383019391830191600101612713565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561276b575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122039dc76005bae8646904bfc33b08dd7b2ce8bf36c83a6b7711cc1a90700b4eb7d64736f6c63430008150033

Deployed Bytecode Sourcemap

10769:12501:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12592:52;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;12592:52:0;;;;;;;;23181:86;;;;;;;;;;;;;:::i;:::-;;17151:80;;;;;;;;;;-1:-1:-1;17223:5:0;;;;;;;;;;;;-1:-1:-1;;;17223:5:0;;;;17151:80;;;;;;;:::i;17579:216::-;;;;;;;;;;-1:-1:-1;17579:216:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;17579:216:0;1344:187:1;16881:88:0;;;;;;;;;;-1:-1:-1;16954:12:0;;16881:88;;15329:123;;;;;;;;;;-1:-1:-1;15329:123:0;;;;;:::i;:::-;;:::i;18093:366::-;;;;;;;;;;-1:-1:-1;18093:366:0;;;;;:::i;:::-;;:::i;16010:90::-;;;;;;;;;;-1:-1:-1;16010:90:0;;;;;:::i;:::-;;:::i;16731:142::-;;;;;;;;;;;;;:::i;11782:28::-;;;;;;;;;;;;;;;;15801:201;;;;;;;;;;-1:-1:-1;15801:201:0;;;;;:::i;:::-;;:::i;14366:283::-;;;;;;;;;;-1:-1:-1;14366:283:0;;;;;:::i;:::-;;:::i;16975:80::-;;;;;;;;;;-1:-1:-1;16975:80:0;;11019:2;2904:36:1;;2892:2;2877:18;16975:80:0;2762:184:1;13917:100:0;;;;;;;;;;-1:-1:-1;13917:100:0;;;;;:::i;:::-;;:::i;15594:199::-;;;;;;;;;;-1:-1:-1;15594:199:0;;;;;:::i;:::-;;:::i;11520:44::-;;;;;;;;;;-1:-1:-1;11520:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11626:49;;;;;;;;;;-1:-1:-1;11626:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11914:34;;;;;;;;;;;;;;;;11748:27;;;;;;;;;;;;;;;;12191:40;;;;;;;;;;-1:-1:-1;12191:40:0;;;;-1:-1:-1;;;12191:40:0;;;;;;11838:35;;;;;;;;;;;;;;;;13756:153;;;;;;;;;;-1:-1:-1;13756:153:0;;;;;:::i;:::-;;:::i;17803:122::-;;;;;;;;;;-1:-1:-1;17803:122:0;;;;;:::i;:::-;;:::i;11716:23::-;;;;;;;;;;-1:-1:-1;11716:23:0;;;;-1:-1:-1;;;;;11716:23:0;;;;;;-1:-1:-1;;;;;3533:32:1;;;3515:51;;3503:2;3488:18;11716:23:0;3369:203:1;22404:74:0;;;;;;;;;;;;;:::i;22727:157::-;;;;;;;;;;;;;:::i;17323:105::-;;;;;;;;;;-1:-1:-1;17323:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;17407:18:0;17389:7;17407:18;;;:9;:18;;;;;;;17323:105;3258:148;;;;;;;;;;;;;:::i;12488:43::-;;;;;;;;;;;;;;;;23016:157;;;;;;;;;;-1:-1:-1;23016:157:0;;;;;:::i;:::-;;:::i;14939:104::-;;;;;;;;;;-1:-1:-1;14939:104:0;;;;;:::i;:::-;;:::i;11439:26::-;;;;;;;;;;-1:-1:-1;11439:26:0;;;;-1:-1:-1;;;11439:26:0;;;;;;22892:116;;;;;;;;;;-1:-1:-1;22892:116:0;;;;;:::i;:::-;;:::i;11880:25::-;;;;;;;;;;;;;;;;22486:233;;;;;;;;;;;;;:::i;17237:80::-;;;;;;;;;;-1:-1:-1;17289:7:0;3109:6;-1:-1:-1;;;;;3109:6:0;17237:80;16731:142;11571:48;;;;;;;;;;-1:-1:-1;11571:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12325:36;;;;;;;;;;;;;;;;12076:78;;;;;;;;;;-1:-1:-1;12076:78:0;;;;-1:-1:-1;;;;;12076:78:0;;;17061:84;;;;;;;;;;-1:-1:-1;17135:7:0;;;;;;;;;;;;-1:-1:-1;;;17135:7:0;;;;17061:84;;15055:122;;;;;;;;;;-1:-1:-1;15055:122:0;;;;;:::i;:::-;;:::i;16599:113::-;;;;;;;;;;-1:-1:-1;16599:113:0;;;;;:::i;:::-;;:::i;11988:19::-;;;;;;;;;;-1:-1:-1;11988:19:0;;;;-1:-1:-1;;;;;11988:19:0;;;17933:152;;;;;;;;;;-1:-1:-1;17933:152:0;;;;;:::i;:::-;;:::i;13582:166::-;;;;;;;;;;-1:-1:-1;13582:166:0;;;;;:::i;:::-;;:::i;15460:121::-;;;;;;;;;;-1:-1:-1;15460:121:0;;;;;:::i;:::-;;:::i;11684:25::-;;;;;;;;;;;;;;;;12014:22;;;;;;;;;;-1:-1:-1;12014:22:0;;;;-1:-1:-1;;;;;12014:22:0;;;14065:115;;;;;;;;;;;;;:::i;14662:166::-;;;;;;;;;;-1:-1:-1;14662:166:0;;;;;:::i;:::-;;:::i;14836:95::-;;;;;;;;;;-1:-1:-1;14836:95:0;;;;;:::i;:::-;;:::i;17434:133::-;;;;;;;;;;-1:-1:-1;17434:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17536:19:0;;;17518:7;17536:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17434:133;12282:36;;;;;;;;;;-1:-1:-1;12282:36:0;;;;-1:-1:-1;;;;;12282:36:0;;;10855:20;;;;;;;;;;-1:-1:-1;10855:20:0;;;;-1:-1:-1;;;;;10855:20:0;;;3414:244;;;;;;;;;;-1:-1:-1;3414:244:0;;;;;:::i;:::-;;:::i;16459:132::-;;;;;;;;;;-1:-1:-1;16459:132:0;;;;;:::i;:::-;;:::i;11957:24::-;;;;;;;;;;-1:-1:-1;11957:24:0;;;;-1:-1:-1;;;;;11957:24:0;;;12538:47;;;;;;;;;;;;;;;;14194:164;;;;;;;;;;-1:-1:-1;14194:164:0;;;;;:::i;:::-;;:::i;15185:136::-;;;;;;;;;;-1:-1:-1;15185:136:0;;;;;:::i;:::-;;:::i;12238:31::-;;;;;;;;;;-1:-1:-1;12238:31:0;;;;-1:-1:-1;;;12238:31:0;;;;;;23181:86;23223:14;;:36;;-1:-1:-1;;;23223:36:0;;23248:10;23223:36;;;3515:51:1;-1:-1:-1;;;;;23223:14:0;;;;:24;;3488:18:1;;23223:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23181:86::o;17579:216::-;17683:10;17654:4;17671:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17671:32:0;;;;;;;;;;:41;;;17728:37;17654:4;;17671:32;;17728:37;;;;17706:6;160:25:1;;148:2;133:18;;14:177;17728:37:0;;;;;;;;-1:-1:-1;17783:4:0;17579:216;;;;;:::o;15329:123::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;;;;;;;;;15411:9:::1;:33:::0;;-1:-1:-1;;;;;;15411:33:0::1;-1:-1:-1::0;;;;;15411:33:0;;;::::1;::::0;;;::::1;::::0;;15329:123::o;18093:366::-;-1:-1:-1;;;;;18213:19:0;;18193:4;18213:19;;;:11;:19;;;;;;;;18233:10;18213:31;;;;;;;;-1:-1:-1;;18213:52:0;18210:186;;18315:69;;;;;;;;;;;-1:-1:-1;;;18315:69:0;;;;;;;;-1:-1:-1;;;;;18315:19:0;;-1:-1:-1;18315:19:0;;;:11;:19;;;;;18335:10;18315:31;;;;;;;;;;:69;;18351:6;;18315:35;:69::i;:::-;-1:-1:-1;;;;;18281:19:0;;;;;;:11;:19;;;;;;;;18301:10;18281:31;;;;;;;:103;18210:186;18415:36;18425:6;18433:9;18444:6;18415:9;:36::i;:::-;18408:43;;18093:366;;;;;;:::o;16010:90::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16072:12:0::1;16087:5;16072:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;16072:20:0::1;::::0;;16010:90::o;16731:142::-;16859:4;;-1:-1:-1;;;;;16859:4:0;16784:7;17407:18;;;:9;:18;;;;;;16811:54;;16838:4;;-1:-1:-1;;;;;16838:4:0;17389:7;17407:18;;;:9;:18;;;;;;16811:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;16804:61;;16731:142;:::o;15801:201::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;15914:14:::1;::::0;:72:::1;::::0;-1:-1:-1;;;15914:72:0;;::::1;::::0;::::1;6733:25:1::0;;;6774:18;;;6767:34;;;-1:-1:-1;;;;;15914:14:0;;::::1;::::0;:38:::1;::::0;6706:18:1;;15914:72:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15801:201:::0;;:::o;14366:283::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;14481:4:::1;14468:9;:17;;14460:54;;;;-1:-1:-1::0;;;14460:54:0::1;;;;;;;:::i;:::-;14548:4;14534:10;:18;;14526:55;;;;-1:-1:-1::0;;;14526:55:0::1;;;;;;;:::i;:::-;14592:6;:18:::0;;;;14621:7:::1;:20:::0;14366:283::o;13917:100::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;13988:8:::1;:21:::0;;-1:-1:-1;;;;;;13988:21:0::1;-1:-1:-1::0;;;;;13988:21:0;;;::::1;::::0;;;::::1;::::0;;13917:100::o;15594:199::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;15703:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;15703:39:0::1;-1:-1:-1::0;;;;15703:39:0;;::::1;::::0;;;::::1;::::0;;;15753:13:::1;:32:::0;15594:199::o;13756:153::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;13828:5:::1;:22:::0;;-1:-1:-1;;;;;;13828:22:0::1;-1:-1:-1::0;;;;;13828:22:0;;::::1;::::0;;::::1;::::0;;;13861:14:::1;::::0;:40:::1;::::0;-1:-1:-1;;;13861:40:0;;::::1;::::0;::::1;3515:51:1::0;;;;13861:14:0;;::::1;::::0;:24:::1;::::0;3488:18:1;;13861:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13756:153:::0;:::o;17803:122::-;17858:4;17882:35;17890:7;-1:-1:-1;;17882:7:0;:35::i;22404:74::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;22460:10:::1;:8;:10::i;:::-;22404:74::o:0;22727:157::-;22800:5;;22793:38;;-1:-1:-1;;;22793:38:0;;22825:4;22793:38;;;3515:51:1;22772:18:0;;-1:-1:-1;;;;;22800:5:0;;22793:23;;3488:18:1;;22793:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22842:14;;:34;;-1:-1:-1;;;22842:34:0;;;;;160:25:1;;;22772:59:0;;-1:-1:-1;;;;;;22842:14:0;;:22;;133:18:1;;22842:34:0;14:177:1;3258:148:0;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;3365:1:::1;3349:6:::0;;3328:40:::1;::::0;-1:-1:-1;;;;;3349:6:0;;::::1;::::0;3328:40:::1;::::0;3365:1;;3328:40:::1;3396:1;3379:19:::0;;-1:-1:-1;;;;;;3379:19:0::1;::::0;;3258:148::o;23016:157::-;23120:14;;:45;;-1:-1:-1;;;23120:45:0;;-1:-1:-1;;;;;3533:32:1;;;23120:45:0;;;3515:51:1;23093:7:0;;23120:14;;:32;;3488:18:1;;23120:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14939:104::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;15014:9:::1;:21:::0;14939:104::o;22892:116::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;22967:14:::1;::::0;:33:::1;::::0;-1:-1:-1;;;;;;22967:33:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;22967:14:0;;::::1;::::0;:22:::1;::::0;133:18:1;;22967:33:0::1;14:177:1::0;22486:233:0;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;22570:21:::1;22605:22:::0;;22602:110:::1;;22661:9;::::0;22653:47:::1;::::0;-1:-1:-1;;;;;22661:9:0;;::::1;::::0;22653:47;::::1;;;::::0;22681:18;;22661:9:::1;22653:47:::0;22661:9;22653:47;22681:18;22661:9;22653:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22602:110;22530:189;22486:233::o:0;15055:122::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15141:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15141:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15055:122::o;16599:113::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;16678:17:::1;:26:::0;16599:113::o;17933:152::-;18013:4;18037:40;18047:10;18059:9;18070:6;18037:9;:40::i;13582:166::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;13658:6:::1;13653:88;13674:5;:12;13670:1;:16;13653:88;;;13725:4;13708;:14;13713:5;13719:1;13713:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13708:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13708:14:0;:21;;-1:-1:-1;;13708:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13688:3;::::1;::::0;::::1;:::i;:::-;;;;13653:88;;15460:121:::0;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;15546:10:::1;:27:::0;;-1:-1:-1;;;;;;15546:27:0::1;-1:-1:-1::0;;;;;15546:27:0;;;::::1;::::0;;;::::1;::::0;;15460:121::o;14065:115::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;14131:12:::1;14118:10;:25:::0;14154:11:::1;:18:::0;;-1:-1:-1;;;;14154:18:0::1;-1:-1:-1::0;;;14154:18:0::1;::::0;;14065:115::o;14662:166::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;14762:15:::1;:30:::0;;;;14803:5:::1;:17:::0;14662:166::o;14836:95::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;14907:5:::1;:16:::0;14836:95::o;3414:244::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3503:22:0;::::1;3495:73;;;::::0;-1:-1:-1;;;3495:73:0;;7960:2:1;3495:73:0::1;::::0;::::1;7942:21:1::0;7999:2;7979:18;;;7972:30;8038:34;8018:18;;;8011:62;-1:-1:-1;;;8089:18:1;;;8082:36;8135:19;;3495:73:0::1;7758:402:1::0;3495:73:0::1;3605:6;::::0;;3584:38:::1;::::0;-1:-1:-1;;;;;3584:38:0;;::::1;::::0;3605:6;::::1;::::0;3584:38:::1;::::0;::::1;3633:6;:17:::0;;-1:-1:-1;;;;;;3633:17:0::1;-1:-1:-1::0;;;;;3633:17:0;;;::::1;::::0;;;::::1;::::0;;3414:244::o;16459:132::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;16547:36:::1;16568:6;16576;16547:20;:36::i;14194:164::-:0;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;14288:4:::1;14275:9;:17;;14266:55;;;;-1:-1:-1::0;;;14266:55:0::1;;;;;;;:::i;:::-;14332:6;:18:::0;14194:164::o;15185:136::-;3171:6;;-1:-1:-1;;;;;3171:6:0;2588:10;3171:22;3163:67;;;;-1:-1:-1;;;3163:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15281:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15281:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15185:136::o;574:192::-;660:7;696:12;688:6;;;;680:29;;;;-1:-1:-1;;;680:29:0;;;;;;;;:::i;:::-;-1:-1:-1;720:9:0;732:5;736:1;732;:5;:::i;:::-;720:17;574:192;-1:-1:-1;;;;;574:192:0:o;18467:1423::-;18555:4;3109:6;;-1:-1:-1;;;;;18576:16:0;;;3109:6;;18576:16;;;;:39;;-1:-1:-1;3082:7:0;3109:6;-1:-1:-1;;;;;18596:19:0;;;3109:6;;18596:19;;18576:39;18572:85;;;18625:11;;-1:-1:-1;;;18625:11:0;;;;18617:40;;;;-1:-1:-1;;;18617:40:0;;8500:2:1;18617:40:0;;;8482:21:1;8539:2;8519:18;;;8512:30;-1:-1:-1;;;8558:18:1;;;8551:46;8614:18;;18617:40:0;8298:340:1;18617:40:0;-1:-1:-1;;;;;18719:12:0;;;;;;:4;:12;;;;;;;;18718:13;:33;;;;-1:-1:-1;;;;;;18736:15:0;;;;;;:4;:15;;;;;;;;18735:16;18718:33;18710:42;;;;;;18768:16;;-1:-1:-1;;;18768:16:0;;;;18765:73;;;18794:41;18809:6;18817:9;18828:6;18794:14;:41::i;:::-;18787:48;;;;18765:73;18868:5;;18858:6;:15;;:42;;;-1:-1:-1;;;;;;18877:23:0;;;;;;:15;:23;;;;;;;;18858:42;18850:57;;;;-1:-1:-1;;;18850:57:0;;8845:2:1;18850:57:0;;;8827:21:1;8884:1;8864:18;;;8857:29;-1:-1:-1;;;8902:18:1;;;8895:32;8944:18;;18850:57:0;8643:325:1;18850:57:0;-1:-1:-1;;;;;18924:26:0;;;;;;:15;:26;;;;;;;;18923:27;:38;;;;-1:-1:-1;18954:7:0;;-1:-1:-1;;;18954:7:0;;;;18923:38;18920:143;;;19031:9;;-1:-1:-1;;;;;18995:20:0;;;;;;:9;:20;;;;;;:32;;19020:6;18995:24;:32::i;:::-;:45;;18987:64;;;;-1:-1:-1;;;18987:64:0;;9175:2:1;18987:64:0;;;9157:21:1;9214:1;9194:18;;;9187:29;-1:-1:-1;;;9232:18:1;;;9225:36;9278:18;;18987:64:0;8973:329:1;18987:64:0;19092:4;;-1:-1:-1;;;;;19092:4:0;19078:10;:18;;;;:39;;-1:-1:-1;19101:16:0;;-1:-1:-1;;;19101:16:0;;;;19100:17;19078:39;:64;;;;-1:-1:-1;19121:21:0;;-1:-1:-1;;;19121:21:0;;;;19078:64;:109;;;;-1:-1:-1;19174:13:0;;19164:4;19146:24;;;;:9;:24;;;;;;:41;;19078:109;19075:128;;;19190:10;:8;:10::i;:::-;19235:53;;;;;;;;;;;-1:-1:-1;;;19235:53:0;;;;;;;;-1:-1:-1;;;;;19235:17:0;;-1:-1:-1;19235:17:0;;;:9;:17;;;;;;;;:53;;19257:6;;19235:21;:53::i;:::-;-1:-1:-1;;;;;19215:17:0;;;;;;:9;:17;;;;;;;;:73;;;;19332:11;:19;;;;;;;;19331:20;:47;;;;-1:-1:-1;;;;;;19356:22:0;;;;;;:11;:22;;;;;;;;19355:23;19331:47;:93;;19418:6;19331:93;;;19381:34;19389:6;19397:9;19408:6;19381:7;:34::i;:::-;-1:-1:-1;;;;;19458:20:0;;;;;;:9;:20;;;;;;19309:115;;-1:-1:-1;19458:37:0;;19309:115;19458:24;:37::i;:::-;-1:-1:-1;;;;;19435:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;19541:24;;;;;:16;:24;;;;;;;19537:122;;19586:14;;-1:-1:-1;;;;;19618:17:0;;;19586:14;19618:17;;;:9;:17;;;;;;;;19586:50;;-1:-1:-1;;;19586:50:0;;;;;9481:51:1;;;;9548:18;;;9541:34;19586:14:0;;;:23;;9454:18:1;;19586:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19582:66;;-1:-1:-1;;;;;19675:27:0;;;;;;:16;:27;;;;;;;;19671:132;;19723:14;;-1:-1:-1;;;;;19758:20:0;;;19723:14;19758:20;;;:9;:20;;;;;;;;19723:56;;-1:-1:-1;;;19723:56:0;;;;;9481:51:1;;;;9548:18;;;9541:34;19723:14:0;;;:23;;9454:18:1;;19723:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19719:72;;19837:9;-1:-1:-1;;;;;19820:40:0;19829:6;-1:-1:-1;;;;;19820:40:0;;19848:11;19820:40;;;;160:25:1;;148:2;133:18;;14:177;19820:40:0;;;;;;;;-1:-1:-1;19878:4:0;;18467:1423;-1:-1:-1;;;;18467:1423:0:o;432:136::-;490:7;517:43;521:1;524;517:43;;;;;;;;;;;;;;;;;:3;:43::i;21441:955::-;12402:16;:23;;-1:-1:-1;;;;12402:23:0;-1:-1:-1;;;12402:23:0;;;21540:4:::1;12402:23:::0;21522:24;;;:9:::1;:24;::::0;;;;;21604:15:::1;::::0;21522:24;;12402:23;21587:49:::1;::::0;21634:1:::1;::::0;21587:42:::1;::::0;21625:3:::1;::::0;21587:42;;21522:24;;21587:16:::1;:33::i;:::-;:37:::0;::::1;:42::i;:49::-;21558:78:::0;-1:-1:-1;21652:20:0::1;21675:36;:12:::0;21558:78;21675:16:::1;:36::i;:::-;21652:59;;21724:30;21741:12;21724:16;:30::i;:::-;21804:5;::::0;21829:14:::1;::::0;21797:48:::1;::::0;-1:-1:-1;;;21797:48:0;;-1:-1:-1;;;;;21829:14:0;;::::1;21797:48;::::0;::::1;3515:51:1::0;21767:27:0::1;::::0;21804:5;;;::::1;::::0;21797:23:::1;::::0;3488:18:1;;21797:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21767:78;;21856:23;21882:21;21856:47;;21914:23;21940:52;21990:1;21940:45;21981:3;21940:36;21960:15;;21940;:19;;:36;;;;:::i;:52::-;21914:78:::0;-1:-1:-1;22009:22:0;;22005:103:::1;;22047:49;22060:18;22080:15;22047:12;:49::i;:::-;22148:5;::::0;22173:14:::1;::::0;22141:48:::1;::::0;-1:-1:-1;;;22141:48:0;;-1:-1:-1;;;;;22173:14:0;;::::1;22141:48;::::0;::::1;3515:51:1::0;22120:18:0::1;::::0;22141:73:::1;::::0;22194:19;;22148:5;::::1;::::0;22141:23:::1;::::0;3488:18:1;;22141:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:73::-;22235:14;::::0;:34:::1;::::0;-1:-1:-1;;;22235:34:0;;::::1;::::0;::::1;160:25:1::0;;;22120:94:0;;-1:-1:-1;;;;;;22235:14:0::1;::::0;:22:::1;::::0;133:18:1;;22235:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22310:1;22292:15;:19;22288:101;;;22335:9;::::0;22327:50:::1;::::0;-1:-1:-1;;;;;22335:9:0;;::::1;::::0;22355:21:::1;22327:50:::0;::::1;;;::::0;22335:9:::1;22327:50:::0;22335:9;22327:50;22355:21;22335:9;22327:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22288:101;-1:-1:-1::0;;12448:16:0;:24;;-1:-1:-1;;;;12448:24:0;;;-1:-1:-1;;;;;21441:955:0:o;16108:343::-;-1:-1:-1;;;;;16195:23:0;;16213:4;16195:23;;;;:41;;-1:-1:-1;16232:4:0;;-1:-1:-1;;;;;16222:14:0;;;16232:4;;16222:14;;16195:41;16187:50;;;;;;-1:-1:-1;;;;;16248:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;16248:33:0;;;;;;;;;;;;16292:152;;16317:14;;:34;;-1:-1:-1;;;16317:34:0;;-1:-1:-1;;;;;9499:32:1;;;16317:34:0;;;9481:51:1;16317:14:0;9548:18:1;;;9541:34;16317:14:0;;;;:23;;9454:18:1;;16317:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16292:152;;;16382:14;;-1:-1:-1;;;;;16414:17:0;;;16382:14;16414:17;;;:9;:17;;;;;;;;16382:50;;-1:-1:-1;;;16382:50:0;;;;;9481:51:1;;;;9548:18;;;9541:34;16382:14:0;;;:23;;9454:18:1;;16382:50:0;9307:274:1;19902:330:0;20032:53;;;;;;;;;;;-1:-1:-1;;;20032:53:0;;;;;;;;-1:-1:-1;;;;;20032:17:0;;19995:4;20032:17;;;:9;:17;;;;;;;:53;;20054:6;;20032:21;:53::i;:::-;-1:-1:-1;;;;;20012:17:0;;;;;;;:9;:17;;;;;;:73;;;;20119:20;;;;;;;:32;;20144:6;20119:24;:32::i;:::-;-1:-1:-1;;;;;20096:20:0;;;;;;;:9;:20;;;;;;;:55;;;;20167:35;;;;;;;;;;20195:6;160:25:1;;148:2;133:18;;14:177;20167:35:0;;;;;;;;-1:-1:-1;20220:4:0;19902:330;;;;;:::o;245:181::-;303:7;;335:5;339:1;335;:5;:::i;:::-;323:17;;364:1;359;:6;;351:46;;;;-1:-1:-1;;;351:46:0;;10205:2:1;351:46:0;;;10187:21:1;10244:2;10224:18;;;10217:30;10283:29;10263:18;;;10256:57;10330:18;;351:46:0;10003:351:1;20246:428:0;20386:4;;20332:7;;;;-1:-1:-1;;;;;20386:17:0;;;:4;;:17;:36;;20416:6;;20386:36;;;20406:7;;20386:36;20362:60;-1:-1:-1;20433:17:0;20453:35;20483:4;20453:25;:6;20362:60;20453:10;:25::i;:35::-;20546:4;20528:24;;;;:9;:24;;;;;;20433:55;;-1:-1:-1;20528:39:0;;20433:55;20528:28;:39::i;:::-;20519:4;20501:24;;;;:9;:24;;;;;;;:66;;;;20583:42;;-1:-1:-1;;;;;20583:42:0;;;;;;;20615:9;160:25:1;;148:2;133:18;;14:177;20583:42:0;;;;;;;;20645:21;:6;20656:9;20645:10;:21::i;:::-;20638:28;20246:428;-1:-1:-1;;;;;;20246:428:0:o;772:250::-;830:7;854:1;859;854:6;850:47;;-1:-1:-1;884:1:0;877:8;;850:47;909:9;921:5;925:1;921;:5;:::i;:::-;909:17;-1:-1:-1;954:1:0;945:5;949:1;909:17;945:5;:::i;:::-;:10;937:56;;;;-1:-1:-1;;;937:56:0;;10956:2:1;937:56:0;;;10938:21:1;10995:2;10975:18;;;10968:30;11034:34;11014:18;;;11007:62;-1:-1:-1;;;11085:18:1;;;11078:31;11126:19;;937:56:0;10754:397:1;1028:132:0;1086:7;1113:39;1117:1;1120;1113:39;;;;;;;;;;;;;;;;;:3;:39::i;20686:460::-;20778:16;;;20792:1;20778:16;;;;;;;;20754:21;;20778:16;;;;;;;;;;-1:-1:-1;20778:16:0;20754:40;;20823:4;20805;20810:1;20805:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20805:23:0;;;:7;;;;;;;;;;:23;;;;20849:6;;:13;;;-1:-1:-1;;;20849:13:0;;;;:6;;;;;:11;;:13;;;;;20805:7;;20849:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20839:4;20844:1;20839:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20839:23:0;;;-1:-1:-1;;;;;20839:23:0;;;;;20875:35;20891:4;20898:11;20875:7;:35::i;:::-;-1:-1:-1;20923:6:0;;:215;;-1:-1:-1;;;20923:215:0;;-1:-1:-1;;;;;20923:6:0;;;;:57;;:215;;20995:11;;20923:6;;21065:4;;21092;;21112:15;;20923:215;;;:::i;21154:279::-;21235:6;;21376:8;;21235:190;;-1:-1:-1;;;21235:190:0;;21298:4;21235:190;;;12738:34:1;12788:18;;;12781:34;;;21235:6:0;12831:18:1;;;12824:34;;;12874:18;;;12867:34;-1:-1:-1;;;;;21376:8:0;;;12917:19:1;;;12910:44;21399:15:0;12970:19:1;;;12963:35;21235:6:0;;;:22;;21265:9;;12672:19:1;;21235:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1166:345::-;1252:7;1354:12;1347:5;1339:28;;;;-1:-1:-1;;;1339:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1378:9:0;1390:5;1394:1;1390;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:255::-;1603:6;1656:2;1644:9;1635:7;1631:23;1627:32;1624:52;;;1672:1;1669;1662:12;1624:52;1711:9;1698:23;1730:31;1755:5;1730:31;:::i;1796:456::-;1873:6;1881;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:52;;;1958:1;1955;1948:12;1910:52;1997:9;1984:23;2016:31;2041:5;2016:31;:::i;:::-;2066:5;-1:-1:-1;2123:2:1;2108:18;;2095:32;2136:33;2095:32;2136:33;:::i;:::-;1796:456;;2188:7;;-1:-1:-1;;;2242:2:1;2227:18;;;;2214:32;;1796:456::o;2509:248::-;2577:6;2585;2638:2;2626:9;2617:7;2613:23;2609:32;2606:52;;;2654:1;2651;2644:12;2606:52;-1:-1:-1;;2677:23:1;;;2747:2;2732:18;;;2719:32;;-1:-1:-1;2509:248:1:o;2951:160::-;3016:20;;3072:13;;3065:21;3055:32;;3045:60;;3101:1;3098;3091:12;3116:248;3181:6;3189;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3281:26;3297:9;3281:26;:::i;3577:180::-;3636:6;3689:2;3677:9;3668:7;3664:23;3660:32;3657:52;;;3705:1;3702;3695:12;3657:52;-1:-1:-1;3728:23:1;;3577:180;-1:-1:-1;3577:180:1:o;3762:315::-;3827:6;3835;3888:2;3876:9;3867:7;3863:23;3859:32;3856:52;;;3904:1;3901;3894:12;3856:52;3943:9;3930:23;3962:31;3987:5;3962:31;:::i;:::-;4012:5;-1:-1:-1;4036:35:1;4067:2;4052:18;;4036:35;:::i;:::-;4026:45;;3762:315;;;;;:::o;4082:127::-;4143:10;4138:3;4134:20;4131:1;4124:31;4174:4;4171:1;4164:15;4198:4;4195:1;4188:15;4214:1121;4298:6;4329:2;4372;4360:9;4351:7;4347:23;4343:32;4340:52;;;4388:1;4385;4378:12;4340:52;4428:9;4415:23;4457:18;4498:2;4490:6;4487:14;4484:34;;;4514:1;4511;4504:12;4484:34;4552:6;4541:9;4537:22;4527:32;;4597:7;4590:4;4586:2;4582:13;4578:27;4568:55;;4619:1;4616;4609:12;4568:55;4655:2;4642:16;4677:2;4673;4670:10;4667:36;;;4683:18;;:::i;:::-;4729:2;4726:1;4722:10;4761:2;4755:9;4824:2;4820:7;4815:2;4811;4807:11;4803:25;4795:6;4791:38;4879:6;4867:10;4864:22;4859:2;4847:10;4844:18;4841:46;4838:72;;;4890:18;;:::i;:::-;4926:2;4919:22;4976:18;;;5010:15;;;;-1:-1:-1;5052:11:1;;;5048:20;;;5080:19;;;5077:39;;;5112:1;5109;5102:12;5077:39;5136:11;;;;5156:148;5172:6;5167:3;5164:15;5156:148;;;5238:23;5257:3;5238:23;:::i;:::-;5226:36;;5189:12;;;;5282;;;;5156:148;;;5323:6;4214:1121;-1:-1:-1;;;;;;;;4214:1121:1:o;5340:388::-;5408:6;5416;5469:2;5457:9;5448:7;5444:23;5440:32;5437:52;;;5485:1;5482;5475:12;5437:52;5524:9;5511:23;5543:31;5568:5;5543:31;:::i;:::-;5593:5;-1:-1:-1;5650:2:1;5635:18;;5622:32;5663:33;5622:32;5663:33;:::i;:::-;5715:7;5705:17;;;5340:388;;;;;:::o;6198:356::-;6400:2;6382:21;;;6419:18;;;6412:30;6478:34;6473:2;6458:18;;6451:62;6545:2;6530:18;;6198:356::o;6812:348::-;7014:2;6996:21;;;7053:2;7033:18;;;7026:30;7092:26;7087:2;7072:18;;7065:54;7151:2;7136:18;;6812:348::o;7165:184::-;7235:6;7288:2;7276:9;7267:7;7263:23;7259:32;7256:52;;;7304:1;7301;7294:12;7256:52;-1:-1:-1;7327:16:1;;7165:184;-1:-1:-1;7165:184:1:o;7354:127::-;7415:10;7410:3;7406:20;7403:1;7396:31;7446:4;7443:1;7436:15;7470:4;7467:1;7460:15;7486:127;7547:10;7542:3;7538:20;7535:1;7528:31;7578:4;7575:1;7568:15;7602:4;7599:1;7592:15;7618:135;7657:3;7678:17;;;7675:43;;7698:18;;:::i;:::-;-1:-1:-1;7745:1:1;7734:13;;7618:135::o;8165:128::-;8232:9;;;8253:11;;;8250:37;;;8267:18;;:::i;9873:125::-;9938:9;;;9959:10;;;9956:36;;;9972:18;;:::i;10359:168::-;10432:9;;;10463;;10480:15;;;10474:22;;10460:37;10450:71;;10501:18;;:::i;10532:217::-;10572:1;10598;10588:132;;10642:10;10637:3;10633:20;10630:1;10623:31;10677:4;10674:1;10667:15;10705:4;10702:1;10695:15;10588:132;-1:-1:-1;10734:9:1;;10532:217::o;11156:251::-;11226:6;11279:2;11267:9;11258:7;11254:23;11250:32;11247:52;;;11295:1;11292;11285:12;11247:52;11327:9;11321:16;11346:31;11371:5;11346:31;:::i;11412:980::-;11674:4;11722:3;11711:9;11707:19;11753:6;11742:9;11735:25;11779:2;11817:6;11812:2;11801:9;11797:18;11790:34;11860:3;11855:2;11844:9;11840:18;11833:31;11884:6;11919;11913:13;11950:6;11942;11935:22;11988:3;11977:9;11973:19;11966:26;;12027:2;12019:6;12015:15;12001:29;;12048:1;12058:195;12072:6;12069:1;12066:13;12058:195;;;12137:13;;-1:-1:-1;;;;;12133:39:1;12121:52;;12228:15;;;;12193:12;;;;12169:1;12087:9;12058:195;;;-1:-1:-1;;;;;;;12309:32:1;;;;12304:2;12289:18;;12282:60;-1:-1:-1;;;12373:3:1;12358:19;12351:35;12270:3;11412:980;-1:-1:-1;;;11412:980:1:o;13009:306::-;13097:6;13105;13113;13166:2;13154:9;13145:7;13141:23;13137:32;13134:52;;;13182:1;13179;13172:12;13134:52;13211:9;13205:16;13195:26;;13261:2;13250:9;13246:18;13240:25;13230:35;;13305:2;13294:9;13290:18;13284:25;13274:35;;13009:306;;;;;:::o

Swarm Source

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