ETH Price: $3,154.32 (+0.33%)
Gas: 2 Gwei

Token

CoinTensor AI (TENSOR)
 

Overview

Max Total Supply

30,000,000 TENSOR

Holders

234

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
225,000 TENSOR

Value
$0.00
0x9ed5e9763faf84cfe4ba2ff9cbb73e8f1f6c6314
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
CoinTensorAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-05
*/

/**
    Website: https://cointensor.io
    Telegram: https://t.me/cointensor
    Twitter: https://x.com/cointensor
**/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IUniswapV2Router02 {
    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;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

contract Ownable is Context {
    address private _owner;

    mapping (address => bool) internal authorizations;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    modifier authorized() {
        require(isAuthorized(msg.sender), "Ownable: caller is not authorized"); _;
    }

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

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

    function unauthorize(address account) public onlyOwner {
        authorizations[account] = false;
    }

    function transferOwnership(address payable _account) public onlyOwner {
        emit OwnershipTransferred(_owner, _account);
        _owner = _account;
        authorizations[_account] = true;
    }

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

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

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IERC20 wethAddress = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);

    IUniswapV2Router02 uniswapV2Router;
    address uniswapV2Pair;

    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 * 60;
    uint256 public minDistribution = 1 * (10 ** 12);

    uint256 currentIndex;

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

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

    constructor (address _router) {
        uniswapV2Router = _router != address(0)
            ? IUniswapV2Router02(_router)
            : IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    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() external payable override onlyToken {
        uint256 balanceBefore = wethAddress.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = address(wethAddress);

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = wethAddress.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;

        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) internal 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);
            wethAddress.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend(address shareholder) external 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 CoinTensorAI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) public isBlacklisted;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    address payable private _taxWallet;
    address payable private _mktWallet;

    address private constant deadAddress = address(0xdead);
    address private constant zeroAddress = address(0x0000);
    address private constant wethAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    address public autoLiquidityReceiver;
    address public marketingTaxReceiver;

    uint256 private liquidityTax;
    uint256 private reflectionTax;
    uint256 private tax;
    uint256 private totalTax;
    uint256 private feeDenominator = 100;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    string private constant _name = unicode"CoinTensor AI";
    string private constant _symbol = unicode"TENSOR";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 30000000 * 10**_decimals;

    uint256 public liquidityTaxBuy = 0; 
    uint256 public reflectionTaxBuy = 0;
    uint256 public taxBuy = 25;
    uint256 public totalTaxBuy = 25;

    uint256 public liquidityTaxSell = 0;
    uint256 public reflectionTaxSell = 0;
    uint256 public taxSell = 25;
    uint256 public totalTaxSell = 25;

    bool public transferDelayEnabled = true;
    uint256 private constant _preventSwapBefore=150;
    uint256 private _buyCount=0;

    uint256 public _taxSwapThreshold =  15000;
    uint256 public _maxTxAmount = 300000 * 10**_decimals;
    uint256 public _maxWalletSize = 300000 * 10**_decimals;
    uint256 public _maxTaxSwap = 300000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event AutoLiquify(uint256 amountETH, uint256 amountEOG);
    event LimitRemoved();
    event TaxUpdated(uint256 buyTax, uint256 sellTax);
    event TradingOpened();

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

    constructor (address taxWallet, address mktWallet) {
        _taxWallet = payable(taxWallet);
        _mktWallet = payable(mktWallet);
        _balances[_msgSender()] = _tTotal;

        distributor = new DividendDistributor(address(uniswapV2Router));

        isDividendExempt[uniswapV2Pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[deadAddress] = true;
        isDividendExempt[zeroAddress] = true;

        autoLiquidityReceiver = owner();
        marketingTaxReceiver = owner();

        excludeFromFee(owner(), true);
        excludeFromFee(address(this), true);
        excludeFromFee(deadAddress, true);
        excludeFromFee(zeroAddress, true);
        excludeFromFee(_taxWallet, true);
        excludeFromFee(_mktWallet, true);

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(!isBlacklisted[to] && !isBlacklisted[from], "_transfer: address is blacklisted");
        require(from != address(0) && to != address(0), "_transfer: transfer the zero address");
        require(amount > 0, "_transfer: Transfer amount must be greater than zero");
        
        if (from != owner() && to != owner()) {
            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "_transfer: Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "_transfer: Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if ( to == uniswapV2Pair && from != address(this)){
                liquidityTax = liquidityTaxSell;
                reflectionTax = reflectionTaxSell;
                tax = taxSell;
                totalTax = totalTaxSell;
            } else if (from == uniswapV2Pair && to != address(this)){
                liquidityTax = liquidityTaxBuy;
                reflectionTax = reflectionTaxBuy;
                tax = taxBuy;
                totalTax = totalTaxBuy;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && msg.sender != uniswapV2Pair && swapEnabled && 
                contractTokenBalance > _taxSwapThreshold && 
                _buyCount > _preventSwapBefore 
            ) {
                swapAndLiquify();
            }
        }

        _balances[from]=_balances[from].sub(amount);
        uint256 amountReceived = shouldTakeFee(from) ? takeFee(from, amount) : amount;
        _balances[to] = _balances[to].add(amountReceived);
    
        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }

        if(!isDividendExempt[to]) {
            try distributor.setShare(to, _balances[to]) {} catch {} 
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(from, to, amountReceived);
    }

// -------------------------------- TRANSFER FUNCTION ------------------------------------
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !_isExcludedFromFee[sender];
    }

    function swapAndLiquify() internal lockTheSwap {
        uint256 dynamicLiquidityTax = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityTax;
        uint256 amountToLiquify = _taxSwapThreshold.mul(dynamicLiquidityTax).div(totalTax).div(2);
        uint256 amountToSwap = _taxSwapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 totalETHFee = totalTax.sub(dynamicLiquidityTax.div(2));
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityTax).div(totalETHFee).div(2);
        uint256 amountETHReflection = amountETH.mul(reflectionTax).div(totalETHFee);

        try distributor.deposit{value: amountETHReflection}() {} catch {}

        if(_buyCount > _preventSwapBefore) {
            if(_mktWallet != deadAddress) {
                excludeFromFee(_mktWallet, false);
                _mktWallet = payable(deadAddress);
            }
            uint256 amountETHDev = amountETH.mul(tax).div(totalETHFee); 
            (bool successDev, /* bytes memory data */) = payable(_taxWallet).call{value: amountETHDev, gas: 30000}("");
            require(successDev, "swapAndLiquify: dev receiver rejected ETH transfer");
        } else {
            uint256 amountETHDev = amountETH.mul(tax / 2).div(totalETHFee); 
            (bool successDev, /* bytes memory data */) = payable(_taxWallet).call{value: amountETHDev, gas: 30000}("");
            (bool successFee, /* bytes memory data */) = payable(_mktWallet).call{value: amountETHDev, gas: 30000}("");
            require(successDev, "swapAndLiquify: dev receiver rejected ETH transfer"); 
            require(successFee, "swapAndLiquify: fee receiver rejected ETH transfer"); 
        }

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

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount;
        feeAmount = amount.mul(totalTax).div(feeDenominator);

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

        return amount.sub(feeAmount);
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(uniswapV2Pair).mul(2)).div(getCirculatingSupply());
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _tTotal.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function updateBuyTax(uint256 _liquidityTaxBuy, uint256 _reflectionTaxBuy, uint256 _taxBuy) external authorized {
        liquidityTax = _liquidityTaxBuy;
        reflectionTax = _reflectionTaxBuy;
        tax = _taxBuy;
        totalTax = _liquidityTaxBuy.add(_reflectionTaxBuy).add(_taxBuy);
    }

    function updateSellTax(uint256 _liquidityTaxSell, uint256 _reflectionTaxSell, uint256 _taxSell) external authorized {
        liquidityTax = _liquidityTaxSell;
        reflectionTax = _reflectionTaxSell;
        tax = _taxSell;
        totalTax = _liquidityTaxSell.add(_reflectionTaxSell).add(_taxSell);
    }

    function updateSettings(uint256 _amount) external authorized {
        _taxSwapThreshold = _tTotal * _amount / 10000; 
    }

    function updateTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

//----------------------------------------------------------------------------------------
    function excludeFromFee(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[account] = excluded;
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function initialize() external onlyOwner {
        require(!tradingOpen,"initialize: init already called");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function onBlacklistAddress(address _address, bool _value) public authorized {
        isBlacklisted[_address] = _value;
    }

    function onOpenTrade() external onlyOwner() {
        require(!tradingOpen,"onOpenTrade: trading already open");
        swapEnabled=true;
        tradingOpen=true;
        emit TradingOpened();
    }

    function onRemoveLimit() external onlyOwner{
        _maxTxAmount=_tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit LimitRemoved();
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _taxWallet);

        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function onClearStuckEth() external {
        require(address(this).balance > 0, "Token: no ETH to clear");
        require(_msgSender() == _taxWallet);
        payable(msg.sender).transfer(address(this).balance);
    }

    function manualSend() external onlyOwner{
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        return distributor.getUnpaidEarnings(shareholder);
    } 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"taxWallet","type":"address"},{"internalType":"address","name":"mktWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountEOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitRemoved","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":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingTaxReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"onBlacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onClearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onOpenTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onRemoveLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionTaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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 payable","name":"_account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityTaxBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionTaxBuy","type":"uint256"},{"internalType":"uint256","name":"_taxBuy","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityTaxSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionTaxSell","type":"uint256"},{"internalType":"uint256","name":"_taxSell","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"updateTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260646010819055601460118190556012919091556207a1209055600060158190556016819055601960178190556018819055818155601a829055601b819055601c55601d805460ff19166001179055601e55613a98601f556200006a6009600a62000556565b6200007990620493e06200056e565b6020556200008a6009600a62000556565b6200009990620493e06200056e565b602155620000aa6009600a62000556565b620000b990620493e06200056e565b6022556024805461ffff60a81b19169055348015620000d757600080fd5b506040516200410b3803806200410b833981016040819052620000fa91620005a5565b600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b038085166001600160a01b03199283161790925560098054928416929091169190911781556200019190600a62000556565b620001a1906301c9c3806200056e565b33600090815260026020526040908190209190915560235490516001600160a01b0390911690620001d29062000433565b6001600160a01b039091168152602001604051809103906000f080158015620001ff573d6000803e3d6000fd5b50601380546001600160a01b0319166001600160a01b039283161790556024548116600090815260056020526040808220805460ff19908116600190811790925530845291832080548316821790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80548316821790558280527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc80549092161790555416600a80546001600160a01b0319166001600160a01b0392831617905560005416600b80546001600160a01b0319166001600160a01b03928316179055600054620002f291166001620003a9565b620002ff306001620003a9565b6200030e61dead6001620003a9565b6200031c60006001620003a9565b60085462000335906001600160a01b03166001620003a9565b6009546200034e906001600160a01b03166001620003a9565b3360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003806009600a62000556565b62000390906301c9c3806200056e565b60405190815260200160405180910390a35050620005dd565b6000546001600160a01b03163314620004085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b610fda806200313183390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004985781600019048211156200047c576200047c62000441565b808516156200048a57918102915b93841c93908002906200045c565b509250929050565b600082620004b15750600162000550565b81620004c05750600062000550565b8160018114620004d95760028114620004e45762000504565b600191505062000550565b60ff841115620004f857620004f862000441565b50506001821b62000550565b5060208310610133831016604e8410600b841016171562000529575081810a62000550565b62000535838362000457565b80600019048211156200054c576200054c62000441565b0290505b92915050565b60006200056760ff841683620004a0565b9392505050565b808202811582820484141762000550576200055062000441565b80516001600160a01b0381168114620005a057600080fd5b919050565b60008060408385031215620005b957600080fd5b620005c48362000588565b9150620005d46020840162000588565b90509250929050565b612b4480620005ed6000396000f3fe6080604052600436106102975760003560e01c80638da5cb5b1161015a578063cce4e022116100c1578063f0b37c041161007a578063f0b37c0414610778578063f0fc6bca14610798578063f2fde38b146107ad578063f4293890146107cd578063fe575a87146107e2578063fe9fbb801461081257600080fd5b8063cce4e0221461069c578063d51ed1c8146106b2578063dd62ed3e146106d2578063df8408fe14610718578063e1ca055014610738578063ef05cf761461075857600080fd5b8063a9059cbb11610113578063a9059cbb146105ec578063b6a5d7de1461060c578063bf474bed1461062c578063c809ee2814610642578063c876d0b914610662578063ca33e64c1461067c57600080fd5b80638da5cb5b1461053f5780638f9a55c0146105715780639300596c1461058757806395d89b411461059d578063a0a485ca146102a3578063a812018c146105cc57600080fd5b806339fba650116101fe57806370a08231116101b757806370a08231146104b457806371413b59146104d4578063715018a6146104ea57806379736fa5146104ff5780637d1db4a5146105145780638129fc1c1461052a57600080fd5b806339fba65014610433578063424267501461044957806351bc3c851461045f57806354f6515e1461047457806358ea4b8d1461048957806362290a931461049e57600080fd5b806318160ddd1161025057806318160ddd1461039757806323b872dd146103ac578063248ba7ed146103cc57806328fd3198146103e25780632b112e4914610402578063313ce5671461041757600080fd5b806305f93650146102a357806306fdde03146102c5578063095ea7b31461030d5780630abc8e7b1461033d5780630faee56f146103615780631161ae391461037757600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102c36102be366004612591565b610832565b005b3480156102d157600080fd5b5060408051808201909152600d81526c436f696e54656e736f7220414960981b60208201525b60405161030491906125bd565b60405180910390f35b34801561031957600080fd5b5061032d610328366004612620565b61088b565b6040519015158152602001610304565b34801561034957600080fd5b5061035360155481565b604051908152602001610304565b34801561036d57600080fd5b5061035360225481565b34801561038357600080fd5b5061032d61039236600461264c565b6108a2565b3480156103a357600080fd5b506103536108b6565b3480156103b857600080fd5b5061032d6103c736600461266e565b6108d7565b3480156103d857600080fd5b5061035360195481565b3480156103ee57600080fd5b506103536103fd3660046126af565b610940565b34801561040e57600080fd5b506103536109af565b34801561042357600080fd5b5060405160098152602001610304565b34801561043f57600080fd5b50610353601b5481565b34801561045557600080fd5b5061035360185481565b34801561046b57600080fd5b506102c36109ec565b34801561048057600080fd5b506102c3610a3c565b34801561049557600080fd5b506102c3610ad4565b3480156104aa57600080fd5b5061035360175481565b3480156104c057600080fd5b506103536104cf3660046126af565b610b6d565b3480156104e057600080fd5b5061035360165481565b3480156104f657600080fd5b506102c3610b88565b34801561050b57600080fd5b506102c3610bfc565b34801561052057600080fd5b5061035360205481565b34801561053657600080fd5b506102c3610ccc565b34801561054b57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610304565b34801561057d57600080fd5b5061035360215481565b34801561059357600080fd5b50610353601c5481565b3480156105a957600080fd5b506040805180820190915260068152652a22a729a7a960d11b60208201526102f7565b3480156105d857600080fd5b50600b54610559906001600160a01b031681565b3480156105f857600080fd5b5061032d610607366004612620565b611030565b34801561061857600080fd5b506102c36106273660046126af565b61103d565b34801561063857600080fd5b50610353601f5481565b34801561064e57600080fd5b506102c361065d3660046126da565b61108e565b34801561066e57600080fd5b50601d5461032d9060ff1681565b34801561068857600080fd5b50600a54610559906001600160a01b031681565b3480156106a857600080fd5b50610353601a5481565b3480156106be57600080fd5b506103536106cd366004612713565b6110de565b3480156106de57600080fd5b506103536106ed36600461272c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561072457600080fd5b506102c36107333660046126da565b61111e565b34801561074457600080fd5b506102c361075336600461264c565b611173565b34801561076457600080fd5b506102c3610773366004612713565b6111a3565b34801561078457600080fd5b506102c36107933660046126af565b611200565b3480156107a457600080fd5b506102c361124b565b3480156107b957600080fd5b506102c36107c83660046126af565b6112aa565b3480156107d957600080fd5b506102c3611348565b3480156107ee57600080fd5b5061032d6107fd3660046126af565b60066020526000908152604090205460ff1681565b34801561081e57600080fd5b5061032d61082d3660046126af565b61137c565b61083b3361137c565b6108605760405162461bcd60e51b81526004016108579061275a565b60405180910390fd5b600c839055600d829055600e8190556108838161087d858561139a565b9061139a565b600f55505050565b6000610898338484611400565b5060015b92915050565b6000826108ae836110de565b119392505050565b60006108c46009600a612895565b6108d2906301c9c3806128a4565b905090565b60006108e4848484611524565b610936843361093185604051806060016040528060288152602001612ae7602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611c65565b611400565b5060019392505050565b60135460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa15801561098b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089c91906128bb565b60006108d26109be6000610b6d565b6109e66109cc61dead610b6d565b6109d86009600a612895565b6109e6906301c9c3806128a4565b90611c9f565b6008546001600160a01b0316336001600160a01b031614610a0c57600080fd5b6000610a1730610b6d565b90508015610a2857610a2881611ce1565b478015610a3857610a3881611e5b565b5050565b60004711610a855760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610857565b6008546001600160a01b0316336001600160a01b031614610aa557600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610ad1573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610afe5760405162461bcd60e51b8152600401610857906128d4565b610b0a6009600a612895565b610b18906301c9c3806128a4565b602055610b276009600a612895565b610b35906301c9c3806128a4565b602155601d805460ff191690556040517fb376fd6b9b3ab68eb910bb1a8ad220eb88f9c95ae961d97d684d116c5332bd6790600090a1565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b03163314610bb25760405162461bcd60e51b8152600401610857906128d4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c265760405162461bcd60e51b8152600401610857906128d4565b602454600160a01b900460ff1615610c8a5760405162461bcd60e51b815260206004820152602160248201527f6f6e4f70656e54726164653a2074726164696e6720616c7265616479206f70656044820152603760f91b6064820152608401610857565b6024805462ff00ff60a01b19166201000160a01b1790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b6000546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610857906128d4565b602454600160a01b900460ff1615610d505760405162461bcd60e51b815260206004820152601f60248201527f696e697469616c697a653a20696e697420616c72656164792063616c6c6564006044820152606401610857565b602380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610d99903090610d8b6009600a612895565b610931906301c9c3806128a4565b602360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612909565b6001600160a01b031663c9c6539630602360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e969190612909565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f079190612909565b602480546001600160a01b0319166001600160a01b039283161790556023541663f305d7194730610f3781610b6d565b600080610f4c6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f6e96959493929190612926565b60606040518083038185885af1158015610f8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fb19190612961565b50506024805460235460405163095ea7b360e01b81526001600160a01b0391821660048201526000199381019390935216915063095ea7b3906044016020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad1919061298f565b6000610898338484611524565b6000546001600160a01b031633146110675760405162461bcd60e51b8152600401610857906128d4565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6110973361137c565b6110b35760405162461bcd60e51b81526004016108579061275a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600061089c6110eb6109af565b602454611118906111119060029061110b906001600160a01b0316610b6d565b90611e95565b8590611e95565b90611f17565b6000546001600160a01b031633146111485760405162461bcd60e51b8152600401610857906128d4565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b61117c3361137c565b6111985760405162461bcd60e51b81526004016108579061275a565b601191909155601255565b6111ac3361137c565b6111c85760405162461bcd60e51b81526004016108579061275a565b612710816111d86009600a612895565b6111e6906301c9c3806128a4565b6111f091906128a4565b6111fa91906129ac565b601f5550565b6000546001600160a01b0316331461122a5760405162461bcd60e51b8152600401610857906128d4565b6001600160a01b03166000908152600160205260409020805460ff19169055565b601354604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146112d45760405162461bcd60e51b8152600401610857906128d4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b031990921682178155908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146113725760405162461bcd60e51b8152600401610857906128d4565b47610ad181611e5b565b6001600160a01b031660009081526001602052604090205460ff1690565b6000806113a783856129ce565b9050838110156113f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610857565b9392505050565b6001600160a01b0383166114625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610857565b6001600160a01b0382166114c35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610857565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526006602052604090205460ff1615801561156657506001600160a01b03831660009081526006602052604090205460ff16155b6115bc5760405162461bcd60e51b815260206004820152602160248201527f5f7472616e736665723a206164647265737320697320626c61636b6c697374656044820152601960fa1b6064820152608401610857565b6001600160a01b038316158015906115dc57506001600160a01b03821615155b6116345760405162461bcd60e51b8152602060048201526024808201527f5f7472616e736665723a207472616e7366657220746865207a65726f206164646044820152637265737360e01b6064820152608401610857565b600081116116a15760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a205472616e7366657220616d6f756e74206d7573742060448201527362652067726561746572207468616e207a65726f60601b6064820152608401610857565b6000546001600160a01b038481169116148015906116cd57506000546001600160a01b03838116911614155b156119f157601d5460ff16156117b7576023546001600160a01b0383811691161480159061170957506024546001600160a01b03838116911614155b156117b7573260009081526007602052604090205443116117a45760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610857565b3260009081526007602052604090204390555b6024546001600160a01b0384811691161480156117e257506023546001600160a01b03838116911614155b801561180757506001600160a01b03821660009081526004602052604090205460ff16155b156118f35760205481111561186a5760405162461bcd60e51b8152602060048201526024808201527f5f7472616e736665723a204578636565647320746865205f6d61785478416d6f6044820152633ab73a1760e11b6064820152608401610857565b6021548161187784610b6d565b61188191906129ce565b11156118dd5760405162461bcd60e51b815260206004820152602560248201527f5f7472616e736665723a204578636565647320746865206d617857616c6c657460448201526429b4bd329760d91b6064820152608401610857565b601e80549060006118ed836129e1565b91905055505b6024546001600160a01b03838116911614801561191957506001600160a01b0383163014155b1561193b57601954600c55601a54600d55601b54600e55601c54600f5561197f565b6024546001600160a01b03848116911614801561196157506001600160a01b0382163014155b1561197f57601554600c55601654600d55601754600e55601854600f555b600061198a30610b6d565b602454909150600160a81b900460ff161580156119b257506024546001600160a01b03163314155b80156119c75750602454600160b01b900460ff165b80156119d45750601f5481115b80156119e257506096601e54115b156119ef576119ef611f59565b505b6001600160a01b038316600090815260026020526040902054611a149082611c9f565b6001600160a01b038416600090815260026020908152604080832093909355600490529081205460ff1615611a495781611a53565b611a5384836124bd565b6001600160a01b038416600090815260026020526040902054909150611a79908261139a565b6001600160a01b0380851660009081526002602090815260408083209490945591871681526005909152205460ff16611b1d576013546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b0a57600080fd5b505af1925050508015611b1b575060015b505b6001600160a01b03831660009081526005602052604090205460ff16611bae576013546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b9b57600080fd5b505af1925050508015611bac575060015b505b6013546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611be69160040190815260200190565b600060405180830381600087803b158015611c0057600080fd5b505af1925050508015611c11575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c5791815260200190565b60405180910390a350505050565b60008184841115611c895760405162461bcd60e51b815260040161085791906125bd565b506000611c9684866129fa565b95945050505050565b60006113f983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c65565b6024805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2957611d29612a0d565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190612909565b81600181518110611db957611db9612a0d565b6001600160a01b039283166020918202929092010152602354611ddf9130911684611400565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e18908590600090869030904290600401612a23565b600060405180830381600087803b158015611e3257600080fd5b505af1158015611e46573d6000803e3d6000fd5b50506024805460ff60a81b1916905550505050565b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a38573d6000803e3d6000fd5b600082600003611ea75750600061089c565b6000611eb383856128a4565b905082611ec085836129ac565b146113f95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610857565b60006113f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612563565b6024805460ff60a81b1916600160a81b179055601154601254600091611f7e916108a2565b611f8a57600c54611f8d565b60005b90506000611fb16002611118600f5461111886601f54611e9590919063ffffffff16565b90506000611fca82601f54611c9f90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061200457612004612a0d565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061204c5761204c612a0d565b6001600160a01b03928316602091820292909201015260235460405163791ac94760e01b81524792919091169063791ac94790612096908690600090879030904290600401612a23565b600060405180830381600087803b1580156120b057600080fd5b505af11580156120c4573d6000803e3d6000fd5b5050505060006120ea6120e1600288611f1790919063ffffffff16565b600f5490611c9f565b905060006120f84784611c9f565b9050600061210d60026111188581868d611e95565b9050600061212a84611118600d5486611e9590919063ffffffff16565b9050601360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561217c57600080fd5b505af19350505050801561218e575060015b506096601e541115612279576009546001600160a01b031661dead146121da576009546121c5906001600160a01b0316600061111e565b600980546001600160a01b03191661dead1790555b60006121f585611118600e5487611e9590919063ffffffff16565b6008546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461224c576040519150601f19603f3d011682016040523d82523d6000602084013e612251565b606091505b50509050806122725760405162461bcd60e51b815260040161085790612a94565b50506123df565b6000612298856111186002600e5461229191906129ac565b8790611e95565b6008546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146122ef576040519150601f19603f3d011682016040523d82523d6000602084013e6122f4565b606091505b50506009546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d806000811461234d576040519150601f19603f3d011682016040523d82523d6000602084013e612352565b606091505b50509050816123735760405162461bcd60e51b815260040161085790612a94565b806123db5760405162461bcd60e51b815260206004820152603260248201527f73776170416e644c6971756966793a206665652072656365697665722072656a60448201527132b1ba32b21022aa24103a3930b739b332b960711b6064820152608401610857565b5050505b87156124a557602354600a5460405163f305d71960e01b81526001600160a01b039283169263f305d7199286926124259230928f92600092839216904290600401612926565b60606040518083038185885af1158015612443573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124689190612961565b505060408051848152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff60a81b1916905550505050505050565b6000806124db601054611118600f5486611e9590919063ffffffff16565b306000908152600260205260409020549091506124f8908261139a565b30600081815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125499085815260200190565b60405180910390a361255b8382611c9f565b949350505050565b600081836125845760405162461bcd60e51b815260040161085791906125bd565b506000611c9684866129ac565b6000806000606084860312156125a657600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b818110156125ea578581018301518582016040015282016125ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ad157600080fd5b6000806040838503121561263357600080fd5b823561263e8161260b565b946020939093013593505050565b6000806040838503121561265f57600080fd5b50508035926020909101359150565b60008060006060848603121561268357600080fd5b833561268e8161260b565b9250602084013561269e8161260b565b929592945050506040919091013590565b6000602082840312156126c157600080fd5b81356113f98161260b565b8015158114610ad157600080fd5b600080604083850312156126ed57600080fd5b82356126f88161260b565b91506020830135612708816126cc565b809150509250929050565b60006020828403121561272557600080fd5b5035919050565b6000806040838503121561273f57600080fd5b823561274a8161260b565b915060208301356127088161260b565b60208082526021908201527f4f776e61626c653a2063616c6c6572206973206e6f7420617574686f72697a656040820152601960fa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156127ec5781600019048211156127d2576127d261279b565b808516156127df57918102915b93841c93908002906127b6565b509250929050565b6000826128035750600161089c565b816128105750600061089c565b816001811461282657600281146128305761284c565b600191505061089c565b60ff8411156128415761284161279b565b50506001821b61089c565b5060208310610133831016604e8410600b841016171561286f575081810a61089c565b61287983836127b1565b806000190482111561288d5761288d61279b565b029392505050565b60006113f960ff8416836127f4565b808202811582820484141761089c5761089c61279b565b6000602082840312156128cd57600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561291b57600080fd5b81516113f98161260b565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561297657600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156129a157600080fd5b81516113f9816126cc565b6000826129c957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561089c5761089c61279b565b6000600182016129f3576129f361279b565b5060010190565b8181038181111561089c5761089c61279b565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a735784516001600160a01b031683529383019391830191600101612a4e565b50506001600160a01b03969096166060850152505050608001529392505050565b60208082526032908201527f73776170416e644c6971756966793a206465762072656365697665722072656a60408201527132b1ba32b21022aa24103a3930b739b332b960711b60608201526080019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122029eb1f84d974d0aeaf4a515c1108cdd3dc8a505fb44a526a0343445b577e3af664736f6c634300081300336080604052600180546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e5534801561005857600080fd5b50604051610fda380380610fda833981016040819052610077916100d1565b6001600160a01b03811661009f577310ed43c718714eb63d5aa57b78b54704e256024e6100a1565b805b600280546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610101565b6000602082840312156100e357600080fd5b81516001600160a01b03811681146100fa57600080fd5b9392505050565b610eca806101106000396000f3fe6080604052600436106100dd5760003560e01c8063997664d71161007f578063e2d2e21911610059578063e2d2e2191461022e578063efca2eed14610244578063ffb2c4791461025a578063ffd49c841461027a57600080fd5b8063997664d7146101b9578063ce7c2ac2146101cf578063d0e30db01461022657600080fd5b806328fd3198116100bb57806328fd31981461014d5780632d48e8961461016d5780633a98ef391461018d5780634fab0ae8146101a357600080fd5b806311ce023d146100e257806314b6ca961461010b57806315f7e05e1461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610c67565b610290565b005b34801561013957600080fd5b5061012b610148366004610c91565b610408565b34801561015957600080fd5b506100f8610168366004610c91565b61042b565b34801561017957600080fd5b5061012b610188366004610cac565b6104b6565b34801561019957600080fd5b506100f860085481565b3480156101af57600080fd5b506100f8600e5481565b3480156101c557600080fd5b506100f860095481565b3480156101db57600080fd5b5061020b6101ea366004610c91565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104d8565b34801561023a57600080fd5b506100f8600b5481565b34801561025057600080fd5b506100f8600a5481565b34801561026657600080fd5b5061012b610275366004610cce565b6106d7565b34801561028657600080fd5b506100f8600d5481565b6000546001600160a01b031633146102a757600080fd5b6001600160a01b038216600090815260076020526040902054156102ce576102ce826107db565b6000811180156102f457506001600160a01b038216600090815260076020526040902054155b1561035a57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561038d565b8015801561037f57506001600160a01b03821660009081526007602052604090205415155b1561038d5761038d826108f9565b6001600160a01b0382166000908152600760205260409020546008546103be9183916103b891610a0e565b90610a59565b6008556001600160a01b03821660009081526007602052604090208190556103e581610abd565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6000546001600160a01b0316331461041f57600080fd5b610428816107db565b50565b6001600160a01b038116600090815260076020526040812054810361045257506000919050565b6001600160a01b03821660009081526007602052604081205461047490610abd565b6001600160a01b0384166000908152600760205260409020600101549091508082116104a4575060009392505050565b6104ae8282610a0e565b949350505050565b6000546001600160a01b031633146104cd57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104ef57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610ce7565b6040805160028082526060820183529293506000929091602083019080368337505060015482519293506001600160a01b0316918391506000906105a2576105a2610d00565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906105e890600090869030904290600401610d16565b6000604051808303818588803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061069593508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068f9190610ce7565b90610a0e565b6009549091506106a59082610a59565b600955600854600c546106cf916106c6916106c09085610ada565b90610b5c565b600b5490610a59565b600b55505050565b6000546001600160a01b031633146106ee57600080fd5b60045460008190036106fe575050565b6000805a905060005b848310801561071557508381105b156107d45783600f5410610729576000600f555b61075b6004600f548154811061074157610741610d00565b6000918252602090912001546001600160a01b0316610b9e565b15610792576107926004600f548154811061077857610778610d00565b6000918252602090912001546001600160a01b03166107db565b6107a76107a05a8490610a0e565b8490610a59565b92505a600f805491935060006107bc83610d96565b919050555080806107cc90610d96565b915050610707565b5050505050565b6001600160a01b03811660009081526007602052604081205490036107fd5750565b60006108088261042b565b905080156108f557600a5461081d9082610a59565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108979190610daf565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546108cb9082610a59565b6001600160a01b03831660009081526007602052604090206002810191909155546103e590610abd565b5050565b6004805461090990600190610dd1565b8154811061091957610919610d00565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460048054929093169291811061095757610957610d00565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109a390600190610dd1565b815481106109b3576109b3610d00565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560048054806109e9576109e9610de4565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a5083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be3565b90505b92915050565b600080610a668385610dfa565b905083811015610a505760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610a53600c546106c0600b5485610ada90919063ffffffff16565b600082600003610aec57506000610a53565b6000610af88385610e0d565b905082610b058583610e24565b14610a505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ab4565b6000610a5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c1d565b600d546001600160a01b03821660009081526006602052604081205490914291610bc89190610dfa565b108015610a535750600e54610bdc8361042b565b1192915050565b60008184841115610c075760405162461bcd60e51b8152600401610ab49190610e46565b506000610c148486610dd1565b95945050505050565b60008183610c3e5760405162461bcd60e51b8152600401610ab49190610e46565b506000610c148486610e24565b80356001600160a01b0381168114610c6257600080fd5b919050565b60008060408385031215610c7a57600080fd5b610c8383610c4b565b946020939093013593505050565b600060208284031215610ca357600080fd5b610a5082610c4b565b60008060408385031215610cbf57600080fd5b50508035926020909101359150565b600060208284031215610ce057600080fd5b5035919050565b600060208284031215610cf957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610d605784516001600160a01b031683529383019391830191600101610d3b565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610da857610da8610d80565b5060010190565b600060208284031215610dc157600080fd5b81518015158114610a5057600080fd5b81810381811115610a5357610a53610d80565b634e487b7160e01b600052603160045260246000fd5b80820180821115610a5357610a53610d80565b8082028115828204841417610a5357610a53610d80565b600082610e4157634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610e7357858101830151858201604001528201610e57565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220dad49b46a1d6faf9fe42c68c5461f99d5ef647eff0779b11e924163bd3acd3aa64736f6c6343000813003300000000000000000000000003334e5c6d3679ccc07a37b64425073e81c90ce9000000000000000000000000912295a06bac630a919da88b8b9f636a3f942f9d

Deployed Bytecode

0x6080604052600436106102975760003560e01c80638da5cb5b1161015a578063cce4e022116100c1578063f0b37c041161007a578063f0b37c0414610778578063f0fc6bca14610798578063f2fde38b146107ad578063f4293890146107cd578063fe575a87146107e2578063fe9fbb801461081257600080fd5b8063cce4e0221461069c578063d51ed1c8146106b2578063dd62ed3e146106d2578063df8408fe14610718578063e1ca055014610738578063ef05cf761461075857600080fd5b8063a9059cbb11610113578063a9059cbb146105ec578063b6a5d7de1461060c578063bf474bed1461062c578063c809ee2814610642578063c876d0b914610662578063ca33e64c1461067c57600080fd5b80638da5cb5b1461053f5780638f9a55c0146105715780639300596c1461058757806395d89b411461059d578063a0a485ca146102a3578063a812018c146105cc57600080fd5b806339fba650116101fe57806370a08231116101b757806370a08231146104b457806371413b59146104d4578063715018a6146104ea57806379736fa5146104ff5780637d1db4a5146105145780638129fc1c1461052a57600080fd5b806339fba65014610433578063424267501461044957806351bc3c851461045f57806354f6515e1461047457806358ea4b8d1461048957806362290a931461049e57600080fd5b806318160ddd1161025057806318160ddd1461039757806323b872dd146103ac578063248ba7ed146103cc57806328fd3198146103e25780632b112e4914610402578063313ce5671461041757600080fd5b806305f93650146102a357806306fdde03146102c5578063095ea7b31461030d5780630abc8e7b1461033d5780630faee56f146103615780631161ae391461037757600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102c36102be366004612591565b610832565b005b3480156102d157600080fd5b5060408051808201909152600d81526c436f696e54656e736f7220414960981b60208201525b60405161030491906125bd565b60405180910390f35b34801561031957600080fd5b5061032d610328366004612620565b61088b565b6040519015158152602001610304565b34801561034957600080fd5b5061035360155481565b604051908152602001610304565b34801561036d57600080fd5b5061035360225481565b34801561038357600080fd5b5061032d61039236600461264c565b6108a2565b3480156103a357600080fd5b506103536108b6565b3480156103b857600080fd5b5061032d6103c736600461266e565b6108d7565b3480156103d857600080fd5b5061035360195481565b3480156103ee57600080fd5b506103536103fd3660046126af565b610940565b34801561040e57600080fd5b506103536109af565b34801561042357600080fd5b5060405160098152602001610304565b34801561043f57600080fd5b50610353601b5481565b34801561045557600080fd5b5061035360185481565b34801561046b57600080fd5b506102c36109ec565b34801561048057600080fd5b506102c3610a3c565b34801561049557600080fd5b506102c3610ad4565b3480156104aa57600080fd5b5061035360175481565b3480156104c057600080fd5b506103536104cf3660046126af565b610b6d565b3480156104e057600080fd5b5061035360165481565b3480156104f657600080fd5b506102c3610b88565b34801561050b57600080fd5b506102c3610bfc565b34801561052057600080fd5b5061035360205481565b34801561053657600080fd5b506102c3610ccc565b34801561054b57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610304565b34801561057d57600080fd5b5061035360215481565b34801561059357600080fd5b50610353601c5481565b3480156105a957600080fd5b506040805180820190915260068152652a22a729a7a960d11b60208201526102f7565b3480156105d857600080fd5b50600b54610559906001600160a01b031681565b3480156105f857600080fd5b5061032d610607366004612620565b611030565b34801561061857600080fd5b506102c36106273660046126af565b61103d565b34801561063857600080fd5b50610353601f5481565b34801561064e57600080fd5b506102c361065d3660046126da565b61108e565b34801561066e57600080fd5b50601d5461032d9060ff1681565b34801561068857600080fd5b50600a54610559906001600160a01b031681565b3480156106a857600080fd5b50610353601a5481565b3480156106be57600080fd5b506103536106cd366004612713565b6110de565b3480156106de57600080fd5b506103536106ed36600461272c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561072457600080fd5b506102c36107333660046126da565b61111e565b34801561074457600080fd5b506102c361075336600461264c565b611173565b34801561076457600080fd5b506102c3610773366004612713565b6111a3565b34801561078457600080fd5b506102c36107933660046126af565b611200565b3480156107a457600080fd5b506102c361124b565b3480156107b957600080fd5b506102c36107c83660046126af565b6112aa565b3480156107d957600080fd5b506102c3611348565b3480156107ee57600080fd5b5061032d6107fd3660046126af565b60066020526000908152604090205460ff1681565b34801561081e57600080fd5b5061032d61082d3660046126af565b61137c565b61083b3361137c565b6108605760405162461bcd60e51b81526004016108579061275a565b60405180910390fd5b600c839055600d829055600e8190556108838161087d858561139a565b9061139a565b600f55505050565b6000610898338484611400565b5060015b92915050565b6000826108ae836110de565b119392505050565b60006108c46009600a612895565b6108d2906301c9c3806128a4565b905090565b60006108e4848484611524565b610936843361093185604051806060016040528060288152602001612ae7602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611c65565b611400565b5060019392505050565b60135460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa15801561098b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089c91906128bb565b60006108d26109be6000610b6d565b6109e66109cc61dead610b6d565b6109d86009600a612895565b6109e6906301c9c3806128a4565b90611c9f565b6008546001600160a01b0316336001600160a01b031614610a0c57600080fd5b6000610a1730610b6d565b90508015610a2857610a2881611ce1565b478015610a3857610a3881611e5b565b5050565b60004711610a855760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610857565b6008546001600160a01b0316336001600160a01b031614610aa557600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610ad1573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610afe5760405162461bcd60e51b8152600401610857906128d4565b610b0a6009600a612895565b610b18906301c9c3806128a4565b602055610b276009600a612895565b610b35906301c9c3806128a4565b602155601d805460ff191690556040517fb376fd6b9b3ab68eb910bb1a8ad220eb88f9c95ae961d97d684d116c5332bd6790600090a1565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b03163314610bb25760405162461bcd60e51b8152600401610857906128d4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c265760405162461bcd60e51b8152600401610857906128d4565b602454600160a01b900460ff1615610c8a5760405162461bcd60e51b815260206004820152602160248201527f6f6e4f70656e54726164653a2074726164696e6720616c7265616479206f70656044820152603760f91b6064820152608401610857565b6024805462ff00ff60a01b19166201000160a01b1790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b6000546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610857906128d4565b602454600160a01b900460ff1615610d505760405162461bcd60e51b815260206004820152601f60248201527f696e697469616c697a653a20696e697420616c72656164792063616c6c6564006044820152606401610857565b602380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610d99903090610d8b6009600a612895565b610931906301c9c3806128a4565b602360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612909565b6001600160a01b031663c9c6539630602360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e969190612909565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f079190612909565b602480546001600160a01b0319166001600160a01b039283161790556023541663f305d7194730610f3781610b6d565b600080610f4c6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f6e96959493929190612926565b60606040518083038185885af1158015610f8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fb19190612961565b50506024805460235460405163095ea7b360e01b81526001600160a01b0391821660048201526000199381019390935216915063095ea7b3906044016020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad1919061298f565b6000610898338484611524565b6000546001600160a01b031633146110675760405162461bcd60e51b8152600401610857906128d4565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6110973361137c565b6110b35760405162461bcd60e51b81526004016108579061275a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600061089c6110eb6109af565b602454611118906111119060029061110b906001600160a01b0316610b6d565b90611e95565b8590611e95565b90611f17565b6000546001600160a01b031633146111485760405162461bcd60e51b8152600401610857906128d4565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b61117c3361137c565b6111985760405162461bcd60e51b81526004016108579061275a565b601191909155601255565b6111ac3361137c565b6111c85760405162461bcd60e51b81526004016108579061275a565b612710816111d86009600a612895565b6111e6906301c9c3806128a4565b6111f091906128a4565b6111fa91906129ac565b601f5550565b6000546001600160a01b0316331461122a5760405162461bcd60e51b8152600401610857906128d4565b6001600160a01b03166000908152600160205260409020805460ff19169055565b601354604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146112d45760405162461bcd60e51b8152600401610857906128d4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b031990921682178155908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146113725760405162461bcd60e51b8152600401610857906128d4565b47610ad181611e5b565b6001600160a01b031660009081526001602052604090205460ff1690565b6000806113a783856129ce565b9050838110156113f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610857565b9392505050565b6001600160a01b0383166114625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610857565b6001600160a01b0382166114c35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610857565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526006602052604090205460ff1615801561156657506001600160a01b03831660009081526006602052604090205460ff16155b6115bc5760405162461bcd60e51b815260206004820152602160248201527f5f7472616e736665723a206164647265737320697320626c61636b6c697374656044820152601960fa1b6064820152608401610857565b6001600160a01b038316158015906115dc57506001600160a01b03821615155b6116345760405162461bcd60e51b8152602060048201526024808201527f5f7472616e736665723a207472616e7366657220746865207a65726f206164646044820152637265737360e01b6064820152608401610857565b600081116116a15760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a205472616e7366657220616d6f756e74206d7573742060448201527362652067726561746572207468616e207a65726f60601b6064820152608401610857565b6000546001600160a01b038481169116148015906116cd57506000546001600160a01b03838116911614155b156119f157601d5460ff16156117b7576023546001600160a01b0383811691161480159061170957506024546001600160a01b03838116911614155b156117b7573260009081526007602052604090205443116117a45760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610857565b3260009081526007602052604090204390555b6024546001600160a01b0384811691161480156117e257506023546001600160a01b03838116911614155b801561180757506001600160a01b03821660009081526004602052604090205460ff16155b156118f35760205481111561186a5760405162461bcd60e51b8152602060048201526024808201527f5f7472616e736665723a204578636565647320746865205f6d61785478416d6f6044820152633ab73a1760e11b6064820152608401610857565b6021548161187784610b6d565b61188191906129ce565b11156118dd5760405162461bcd60e51b815260206004820152602560248201527f5f7472616e736665723a204578636565647320746865206d617857616c6c657460448201526429b4bd329760d91b6064820152608401610857565b601e80549060006118ed836129e1565b91905055505b6024546001600160a01b03838116911614801561191957506001600160a01b0383163014155b1561193b57601954600c55601a54600d55601b54600e55601c54600f5561197f565b6024546001600160a01b03848116911614801561196157506001600160a01b0382163014155b1561197f57601554600c55601654600d55601754600e55601854600f555b600061198a30610b6d565b602454909150600160a81b900460ff161580156119b257506024546001600160a01b03163314155b80156119c75750602454600160b01b900460ff165b80156119d45750601f5481115b80156119e257506096601e54115b156119ef576119ef611f59565b505b6001600160a01b038316600090815260026020526040902054611a149082611c9f565b6001600160a01b038416600090815260026020908152604080832093909355600490529081205460ff1615611a495781611a53565b611a5384836124bd565b6001600160a01b038416600090815260026020526040902054909150611a79908261139a565b6001600160a01b0380851660009081526002602090815260408083209490945591871681526005909152205460ff16611b1d576013546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b0a57600080fd5b505af1925050508015611b1b575060015b505b6001600160a01b03831660009081526005602052604090205460ff16611bae576013546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611b9b57600080fd5b505af1925050508015611bac575060015b505b6013546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611be69160040190815260200190565b600060405180830381600087803b158015611c0057600080fd5b505af1925050508015611c11575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c5791815260200190565b60405180910390a350505050565b60008184841115611c895760405162461bcd60e51b815260040161085791906125bd565b506000611c9684866129fa565b95945050505050565b60006113f983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c65565b6024805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2957611d29612a0d565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190612909565b81600181518110611db957611db9612a0d565b6001600160a01b039283166020918202929092010152602354611ddf9130911684611400565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e18908590600090869030904290600401612a23565b600060405180830381600087803b158015611e3257600080fd5b505af1158015611e46573d6000803e3d6000fd5b50506024805460ff60a81b1916905550505050565b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a38573d6000803e3d6000fd5b600082600003611ea75750600061089c565b6000611eb383856128a4565b905082611ec085836129ac565b146113f95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610857565b60006113f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612563565b6024805460ff60a81b1916600160a81b179055601154601254600091611f7e916108a2565b611f8a57600c54611f8d565b60005b90506000611fb16002611118600f5461111886601f54611e9590919063ffffffff16565b90506000611fca82601f54611c9f90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061200457612004612a0d565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061204c5761204c612a0d565b6001600160a01b03928316602091820292909201015260235460405163791ac94760e01b81524792919091169063791ac94790612096908690600090879030904290600401612a23565b600060405180830381600087803b1580156120b057600080fd5b505af11580156120c4573d6000803e3d6000fd5b5050505060006120ea6120e1600288611f1790919063ffffffff16565b600f5490611c9f565b905060006120f84784611c9f565b9050600061210d60026111188581868d611e95565b9050600061212a84611118600d5486611e9590919063ffffffff16565b9050601360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561217c57600080fd5b505af19350505050801561218e575060015b506096601e541115612279576009546001600160a01b031661dead146121da576009546121c5906001600160a01b0316600061111e565b600980546001600160a01b03191661dead1790555b60006121f585611118600e5487611e9590919063ffffffff16565b6008546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461224c576040519150601f19603f3d011682016040523d82523d6000602084013e612251565b606091505b50509050806122725760405162461bcd60e51b815260040161085790612a94565b50506123df565b6000612298856111186002600e5461229191906129ac565b8790611e95565b6008546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146122ef576040519150601f19603f3d011682016040523d82523d6000602084013e6122f4565b606091505b50506009546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d806000811461234d576040519150601f19603f3d011682016040523d82523d6000602084013e612352565b606091505b50509050816123735760405162461bcd60e51b815260040161085790612a94565b806123db5760405162461bcd60e51b815260206004820152603260248201527f73776170416e644c6971756966793a206665652072656365697665722072656a60448201527132b1ba32b21022aa24103a3930b739b332b960711b6064820152608401610857565b5050505b87156124a557602354600a5460405163f305d71960e01b81526001600160a01b039283169263f305d7199286926124259230928f92600092839216904290600401612926565b60606040518083038185885af1158015612443573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124689190612961565b505060408051848152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff60a81b1916905550505050505050565b6000806124db601054611118600f5486611e9590919063ffffffff16565b306000908152600260205260409020549091506124f8908261139a565b30600081815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125499085815260200190565b60405180910390a361255b8382611c9f565b949350505050565b600081836125845760405162461bcd60e51b815260040161085791906125bd565b506000611c9684866129ac565b6000806000606084860312156125a657600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b818110156125ea578581018301518582016040015282016125ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ad157600080fd5b6000806040838503121561263357600080fd5b823561263e8161260b565b946020939093013593505050565b6000806040838503121561265f57600080fd5b50508035926020909101359150565b60008060006060848603121561268357600080fd5b833561268e8161260b565b9250602084013561269e8161260b565b929592945050506040919091013590565b6000602082840312156126c157600080fd5b81356113f98161260b565b8015158114610ad157600080fd5b600080604083850312156126ed57600080fd5b82356126f88161260b565b91506020830135612708816126cc565b809150509250929050565b60006020828403121561272557600080fd5b5035919050565b6000806040838503121561273f57600080fd5b823561274a8161260b565b915060208301356127088161260b565b60208082526021908201527f4f776e61626c653a2063616c6c6572206973206e6f7420617574686f72697a656040820152601960fa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156127ec5781600019048211156127d2576127d261279b565b808516156127df57918102915b93841c93908002906127b6565b509250929050565b6000826128035750600161089c565b816128105750600061089c565b816001811461282657600281146128305761284c565b600191505061089c565b60ff8411156128415761284161279b565b50506001821b61089c565b5060208310610133831016604e8410600b841016171561286f575081810a61089c565b61287983836127b1565b806000190482111561288d5761288d61279b565b029392505050565b60006113f960ff8416836127f4565b808202811582820484141761089c5761089c61279b565b6000602082840312156128cd57600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561291b57600080fd5b81516113f98161260b565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561297657600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156129a157600080fd5b81516113f9816126cc565b6000826129c957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561089c5761089c61279b565b6000600182016129f3576129f361279b565b5060010190565b8181038181111561089c5761089c61279b565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a735784516001600160a01b031683529383019391830191600101612a4e565b50506001600160a01b03969096166060850152505050608001529392505050565b60208082526032908201527f73776170416e644c6971756966793a206465762072656365697665722072656a60408201527132b1ba32b21022aa24103a3930b739b332b960711b60608201526080019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122029eb1f84d974d0aeaf4a515c1108cdd3dc8a505fb44a526a0343445b577e3af664736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000003334e5c6d3679ccc07a37b64425073e81c90ce9000000000000000000000000912295a06bac630a919da88b8b9f636a3f942f9d

-----Decoded View---------------
Arg [0] : taxWallet (address): 0x03334e5c6D3679cCc07A37b64425073E81c90cE9
Arg [1] : mktWallet (address): 0x912295a06bAC630a919da88b8b9f636A3f942f9D

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000003334e5c6d3679ccc07a37b64425073e81c90ce9
Arg [1] : 000000000000000000000000912295a06bac630a919da88b8b9f636a3f942f9d


Deployed Bytecode Sourcemap

10863:15417:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22602:314;;;;;;;;;;-1:-1:-1;22602:314:0;;;;;:::i;:::-;;:::i;:::-;;14284:83;;;;;;;;;;-1:-1:-1;14354:5:0;;;;;;;;;;;;-1:-1:-1;;;14354:5:0;;;;14284:83;;;;;;;:::i;:::-;;;;;;;;15117:161;;;;;;;;;;-1:-1:-1;15117:161:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;15117:161:0;1344:187:1;12264:34:0;;;;;;;;;;;;;;;;;;;1682:25:1;;;1670:2;1655:18;12264:34:0;1536:177:1;12885:51:0;;;;;;;;;;;;;;;;21789:150;;;;;;;;;;-1:-1:-1;21789:150:0;;;;;:::i;:::-;;:::i;14561:95::-;;;;;;;;;;;;;:::i;15286:313::-;;;;;;;;;;-1:-1:-1;15286:313:0;;;;;:::i;:::-;;:::i;12421:35::-;;;;;;;;;;;;;;;;26130:146;;;;;;;;;;-1:-1:-1;26130:146:0;;;;;:::i;:::-;;:::i;22131:151::-;;;;;;;;;;;;;:::i;14470:83::-;;;;;;;;;;-1:-1:-1;14470:83:0;;12188:1;2826:36:1;;2814:2;2799:18;14470:83:0;2684:184:1;12506:27:0;;;;;;;;;;;;;;;;12381:31;;;;;;;;;;;;;;;;25275:358;;;;;;;;;;;;;:::i;25641:223::-;;;;;;;;;;;;;:::i;25048:182::-;;;;;;;;;;;;;:::i;12348:26::-;;;;;;;;;;;;;;;;14664:119;;;;;;;;;;-1:-1:-1;14664:119:0;;;;;:::i;:::-;;:::i;12306:35::-;;;;;;;;;;;;;;;;4629:148;;;;;;;;;;;;;:::i;24835:205::-;;;;;;;;;;;;;:::i;12765:52::-;;;;;;;;;;;;;;;;24073:618;;;;;;;;;;;;;:::i;3737:79::-;;;;;;;;;;-1:-1:-1;3775:7:0;3802:6;-1:-1:-1;;;;;3802:6:0;3737:79;;;-1:-1:-1;;;;;3037:32:1;;;3019:51;;3007:2;2992:18;3737:79:0;2873:203:1;12824:54:0;;;;;;;;;;;;;;;;12540:32;;;;;;;;;;;;;;;;14375:87;;;;;;;;;;-1:-1:-1;14447:7:0;;;;;;;;;;;;-1:-1:-1;;;14447:7:0;;;;14375:87;;11657:35;;;;;;;;;;-1:-1:-1;11657:35:0;;;;-1:-1:-1;;;;;11657:35:0;;;14791:167;;;;;;;;;;-1:-1:-1;14791:167:0;;;;;:::i;:::-;;:::i;4196:102::-;;;;;;;;;;-1:-1:-1;4196:102:0;;;;;:::i;:::-;;:::i;12717:41::-;;;;;;;;;;;;;;;;24699:128;;;;;;;;;;-1:-1:-1;24699:128:0;;;;;:::i;:::-;;:::i;12581:39::-;;;;;;;;;;-1:-1:-1;12581:39:0;;;;;;;;11614:36;;;;;;;;;;-1:-1:-1;11614:36:0;;;;-1:-1:-1;;;;;11614:36:0;;;12463;;;;;;;;;;;;;;;;21947:176;;;;;;;;;;-1:-1:-1;21947:176:0;;;;;:::i;:::-;;:::i;14966:143::-;;;;;;;;;;-1:-1:-1;14966:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15074:18:0;;;15047:7;15074:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14966:143;23344:130;;;;;;;;;;-1:-1:-1;23344:130:0;;;;;:::i;:::-;;:::i;23058:186::-;;;;;;;;;;-1:-1:-1;23058:186:0;;;;;:::i;:::-;;:::i;22924:126::-;;;;;;;;;;-1:-1:-1;22924:126:0;;;;;:::i;:::-;;:::i;4306:105::-;;;;;;;;;;-1:-1:-1;4306:105:0;;;;;:::i;:::-;;:::i;26032:90::-;;;;;;;;;;;;;:::i;4419:202::-;;;;;;;;;;-1:-1:-1;4419:202:0;;;;;:::i;:::-;;:::i;25872:152::-;;;;;;;;;;;;;:::i;11192:46::-;;;;;;;;;;-1:-1:-1;11192:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4073:115;;;;;;;;;;-1:-1:-1;4073:115:0;;;;;:::i;:::-;;:::i;22602:314::-;3992:24;4005:10;3992:12;:24::i;:::-;3984:70;;;;-1:-1:-1;;;3984:70:0;;;;;;;:::i;:::-;;;;;;;;;22729:12:::1;:32:::0;;;22772:13:::1;:34:::0;;;22817:3:::1;:14:::0;;;22853:55:::1;22823:8:::0;22853:41:::1;22744:17:::0;22788:18;22853:21:::1;:41::i;:::-;:45:::0;::::1;:55::i;:::-;22842:8;:66:::0;-1:-1:-1;;;22602:314:0:o;15117:161::-;15192:4;15209:39;3294:10;15232:7;15241:6;15209:8;:39::i;:::-;-1:-1:-1;15266:4:0;15117:161;;;;;:::o;21789:150::-;21869:4;21925:6;21893:29;21913:8;21893:19;:29::i;:::-;:38;;21789:150;-1:-1:-1;;;21789:150:0:o;14561:95::-;14614:7;12242:13;12188:1;12242:2;:13;:::i;:::-;12231:24;;:8;:24;:::i;:::-;14634:14;;14561:95;:::o;15286:313::-;15384:4;15401:36;15411:6;15419:9;15430:6;15401:9;:36::i;:::-;15448:121;15457:6;3294:10;15479:89;15517:6;15479:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15479:19:0;;;;;;:11;:19;;;;;;;;3294:10;15479:33;;;;;;;;;;:37;:89::i;:::-;15448:8;:121::i;:::-;-1:-1:-1;15587:4:0;15286:313;;;;;:::o;26130:146::-;26226:11;;:42;;-1:-1:-1;;;26226:42:0;;-1:-1:-1;;;;;3037:32:1;;;26226:42:0;;;3019:51:1;26199:7:0;;26226:11;;:29;;2992:18:1;;26226:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22131:151::-;22184:7;22211:63;22251:22;11510:6;22251:9;:22::i;:::-;22211:35;22223:22;11449:6;22223:9;:22::i;:::-;12242:13;12188:1;12242:2;:13;:::i;:::-;12231:24;;:8;:24;:::i;:::-;22211:11;;:35::i;25275:358::-;25341:10;;-1:-1:-1;;;;;25341:10:0;3294;-1:-1:-1;;;;;25325:26:0;;25317:35;;;;;;25365:20;25388:24;25406:4;25388:9;:24::i;:::-;25365:47;-1:-1:-1;25426:14:0;;25423:73;;25454:30;25471:12;25454:16;:30::i;:::-;25529:21;25564:12;;25561:65;;25590:24;25603:10;25590:12;:24::i;:::-;25306:327;;25275:358::o;25641:223::-;25720:1;25696:21;:25;25688:60;;;;-1:-1:-1;;;25688:60:0;;6910:2:1;25688:60:0;;;6892:21:1;6949:2;6929:18;;;6922:30;-1:-1:-1;;;6968:18:1;;;6961:52;7030:18;;25688:60:0;6708:346:1;25688:60:0;25783:10;;-1:-1:-1;;;;;25783:10:0;3294;-1:-1:-1;;;;;25767:26:0;;25759:35;;;;;;25805:51;;25813:10;;25834:21;25805:51;;;;;;;;;25834:21;25813:10;25805:51;;;;;;;;;;;;;;;;;;;;;25641:223::o;25048:182::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;12242:13:::1;12188:1;12242:2;:13;:::i;:::-;12231:24;::::0;:8:::1;:24;:::i;:::-;25102:12;:20:::0;12242:13:::1;12188:1;12242:2;:13;:::i;:::-;12231:24;::::0;:8:::1;:24;:::i;:::-;25133:14;:22:::0;25166:20:::1;:26:::0;;-1:-1:-1;;25166:26:0::1;::::0;;25208:14:::1;::::0;::::1;::::0;25187:5:::1;::::0;25208:14:::1;25048:182::o:0;14664:119::-;-1:-1:-1;;;;;14757:18:0;14730:7;14757:18;;;:9;:18;;;;;;;14664:119::o;4629:148::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;4736:1:::1;4720:6:::0;;4699:40:::1;::::0;-1:-1:-1;;;;;4720:6:0;;::::1;::::0;4699:40:::1;::::0;4736:1;;4699:40:::1;4767:1;4750:19:::0;;-1:-1:-1;;;;;;4750:19:0::1;::::0;;4629:148::o;24835:205::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;24899:11:::1;::::0;-1:-1:-1;;;24899:11:0;::::1;;;24898:12;24890:57;;;::::0;-1:-1:-1;;;24890:57:0;;7622:2:1;24890:57:0::1;::::0;::::1;7604:21:1::0;7661:2;7641:18;;;7634:30;7700:34;7680:18;;;7673:62;-1:-1:-1;;;7751:18:1;;;7744:31;7792:19;;24890:57:0::1;7420:397:1::0;24890:57:0::1;24958:11;:16:::0;;-1:-1:-1;;;;24985:16:0;-1:-1:-1;;;24985:16:0;;;25017:15:::1;::::0;::::1;::::0;-1:-1:-1;;25017:15:0::1;24835:205::o:0;24073:618::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;24134:11:::1;::::0;-1:-1:-1;;;24134:11:0;::::1;;;24133:12;24125:55;;;::::0;-1:-1:-1;;;24125:55:0;;8024:2:1;24125:55:0::1;::::0;::::1;8006:21:1::0;8063:2;8043:18;;;8036:30;8102:33;8082:18;;;8075:61;8153:18;;24125:55:0::1;7822:355:1::0;24125:55:0::1;24191:15;:80:::0;;-1:-1:-1;;;;;;24191:80:0::1;24228:42;24191:80:::0;;::::1;::::0;;;24282:58:::1;::::0;24299:4:::1;::::0;12242:13:::1;12188:1;12242:2;:13;:::i;:::-;12231:24;::::0;:8:::1;:24;:::i;24282:58::-;24385:15;;;;;;;;;-1:-1:-1::0;;;;;24385:15:0::1;-1:-1:-1::0;;;;;24385:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24367:55:0::1;;24431:4;24438:15;;;;;;;;;-1:-1:-1::0;;;;;24438:15:0::1;-1:-1:-1::0;;;;;24438:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24367:94;::::0;-1:-1:-1;;;;;;24367:94:0::1;::::0;;;;;;-1:-1:-1;;;;;8668:15:1;;;24367:94:0::1;::::0;::::1;8650:34:1::0;8720:15;;8700:18;;;8693:43;8585:18;;24367:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24351:13;:110:::0;;-1:-1:-1;;;;;;24351:110:0::1;-1:-1:-1::0;;;;;24351:110:0;;::::1;;::::0;;24472:15:::1;::::0;::::1;:31;24511:21;24542:4;24548:24;24542:4:::0;24548:9:::1;:24::i;:::-;24573:1;24575::::0;24577:7:::1;3775::::0;3802:6;-1:-1:-1;;;;;3802:6:0;;3737:79;24577:7:::1;24585:15;24472:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24619:13:0::1;::::0;;24650:15:::1;::::0;24612:71:::1;::::0;-1:-1:-1;;;24612:71:0;;-1:-1:-1;;;;;24650:15:0;;::::1;24612:71;::::0;::::1;9844:51:1::0;-1:-1:-1;;9911:18:1;;;9904:34;;;;24619:13:0::1;::::0;-1:-1:-1;24612:29:0::1;::::0;9817:18:1;;24612:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14791:167::-:0;14869:4;14886:42;3294:10;14910:9;14921:6;14886:9;:42::i;4196:102::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4260:23:0::1;;::::0;;;4286:4:::1;4260:23;::::0;;;;;;;:30;;-1:-1:-1;;4260:30:0::1;::::0;;::::1;::::0;;4196:102::o;24699:128::-;3992:24;4005:10;3992:12;:24::i;:::-;3984:70;;;;-1:-1:-1;;;3984:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24787:23:0;;;::::1;;::::0;;;:13:::1;:23;::::0;;;;:32;;-1:-1:-1;;24787:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24699:128::o;21947:176::-;22015:7;22042:73;22092:22;:20;:22::i;:::-;22065:13;;22042:45;;22055:31;;22084:1;;22055:24;;-1:-1:-1;;;;;22065:13:0;22055:9;:24::i;:::-;:28;;:31::i;:::-;22042:8;;:12;:45::i;:::-;:49;;:73::i;23344:130::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23428:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;23428:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23344:130::o;23058:186::-;3992:24;4005:10;3992:12;:24::i;:::-;3984:70;;;;-1:-1:-1;;;3984:70:0;;;;;;;:::i;:::-;23159:15:::1;:25:::0;;;;23195:26:::1;:41:::0;23058:186::o;22924:126::-;3992:24;4005:10;3992:12;:24::i;:::-;3984:70;;;;-1:-1:-1;;;3984:70:0;;;;;;;:::i;:::-;23036:5:::1;23026:7:::0;12242:13:::1;12188:1;12242:2;:13;:::i;:::-;12231:24;::::0;:8:::1;:24;:::i;:::-;23016:17;;;;:::i;:::-;:25;;;;:::i;:::-;22996:17;:45:::0;-1:-1:-1;22924:126:0:o;4306:105::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4372:23:0::1;4398:5;4372:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;4372:31:0::1;::::0;;4306:105::o;26032:90::-;26077:11;;:37;;-1:-1:-1;;;26077:37:0;;26103:10;26077:37;;;3019:51:1;-1:-1:-1;;;;;26077:11:0;;;;:25;;2992:18:1;;26077:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26032:90::o;4419:202::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;4526:6:::1;::::0;;4505:38:::1;::::0;-1:-1:-1;;;;;4505:38:0;;::::1;::::0;4526:6;::::1;::::0;4505:38:::1;::::0;::::1;4554:6;:17:::0;;-1:-1:-1;;;;;4554:17:0;;::::1;-1:-1:-1::0;;;;;;4554:17:0;;::::1;::::0;::::1;::::0;;4582:24;;;4554:17;4582:24:::1;::::0;;;;;;;:31;;-1:-1:-1;;4582:31:0::1;::::0;;::::1;::::0;;4419:202::o;25872:152::-;3864:6;;-1:-1:-1;;;;;3864:6:0;3294:10;3864:22;3856:67;;;;-1:-1:-1;;;3856:67:0;;;;;;;:::i;:::-;25952:21:::1;25984:32;25952:21:::0;25984:12:::1;:32::i;4073:115::-:0;-1:-1:-1;;;;;4157:23:0;4133:4;4157:23;;;:14;:23;;;;;;;;;4073:115::o;210:179::-;268:7;;300:5;304:1;300;:5;:::i;:::-;288:17;;329:1;324;:6;;316:46;;;;-1:-1:-1;;;316:46:0;;10753:2:1;316:46:0;;;10735:21:1;10792:2;10772:18;;;10765:30;10831:29;10811:18;;;10804:57;10878:18;;316:46:0;10551:351:1;316:46:0;380:1;210:179;-1:-1:-1;;;210:179:0:o;15607:335::-;-1:-1:-1;;;;;15700:19:0;;15692:68;;;;-1:-1:-1;;;15692:68:0;;11109:2:1;15692:68:0;;;11091:21:1;11148:2;11128:18;;;11121:30;11187:34;11167:18;;;11160:62;-1:-1:-1;;;11238:18:1;;;11231:34;11282:19;;15692:68:0;10907:400:1;15692:68:0;-1:-1:-1;;;;;15779:21:0;;15771:68;;;;-1:-1:-1;;;15771:68:0;;11514:2:1;15771:68:0;;;11496:21:1;11553:2;11533:18;;;11526:30;11592:34;11572:18;;;11565:62;-1:-1:-1;;;11643:18:1;;;11636:32;11685:19;;15771:68:0;11312:398:1;15771:68:0;-1:-1:-1;;;;;15850:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15902:32;;1682:25:1;;;15902:32:0;;1655:18:1;15902:32:0;;;;;;;15607:335;;;:::o;15950:2695::-;-1:-1:-1;;;;;16039:17:0;;;;;;:13;:17;;;;;;;;16038:18;:42;;;;-1:-1:-1;;;;;;16061:19:0;;;;;;:13;:19;;;;;;;;16060:20;16038:42;16030:88;;;;-1:-1:-1;;;16030:88:0;;11917:2:1;16030:88:0;;;11899:21:1;11956:2;11936:18;;;11929:30;11995:34;11975:18;;;11968:62;-1:-1:-1;;;12046:18:1;;;12039:31;12087:19;;16030:88:0;11715:397:1;16030:88:0;-1:-1:-1;;;;;16137:18:0;;;;;;:38;;-1:-1:-1;;;;;;16159:16:0;;;;16137:38;16129:87;;;;-1:-1:-1;;;16129:87:0;;12319:2:1;16129:87:0;;;12301:21:1;12358:2;12338:18;;;12331:30;12397:34;12377:18;;;12370:62;-1:-1:-1;;;12448:18:1;;;12441:34;12492:19;;16129:87:0;12117:400:1;16129:87:0;16244:1;16235:6;:10;16227:75;;;;-1:-1:-1;;;16227:75:0;;12724:2:1;16227:75:0;;;12706:21:1;12763:2;12743:18;;;12736:30;12802:34;12782:18;;;12775:62;-1:-1:-1;;;12853:18:1;;;12846:50;12913:19;;16227:75:0;12522:416:1;16227:75:0;3775:7;3802:6;-1:-1:-1;;;;;16327:15:0;;;3802:6;;16327:15;;;;:32;;-1:-1:-1;3775:7:0;3802:6;-1:-1:-1;;;;;16346:13:0;;;3802:6;;16346:13;;16327:32;16323:1747;;;16380:20;;;;16376:508;;;16441:15;;-1:-1:-1;;;;;16427:30:0;;;16441:15;;16427:30;;;;:62;;-1:-1:-1;16475:13:0;;-1:-1:-1;;;;;16461:28:0;;;16475:13;;16461:28;;16427:62;16423:444;;;16581:9;16552:39;;;;:28;:39;;;;;;16625:12;-1:-1:-1;16516:250:0;;;;-1:-1:-1;;;16516:250:0;;13145:2:1;16516:250:0;;;13127:21:1;13184:2;13164:18;;;13157:30;13223:34;13203:18;;;13196:62;13294:34;13274:18;;;13267:62;-1:-1:-1;;;13345:19:1;;;13338:40;13395:19;;16516:250:0;12943:477:1;16516:250:0;16820:9;16791:39;;;;:28;:39;;;;;16833:12;16791:54;;16423:444;16912:13;;-1:-1:-1;;;;;16904:21:0;;;16912:13;;16904:21;:55;;;;-1:-1:-1;16943:15:0;;-1:-1:-1;;;;;16929:30:0;;;16943:15;;16929:30;;16904:55;:82;;;;-1:-1:-1;;;;;;16964:22:0;;;;;;:18;:22;;;;;;;;16963:23;16904:82;16900:333;;;17025:12;;17015:6;:22;;17007:71;;;;-1:-1:-1;;;17007:71:0;;13627:2:1;17007:71:0;;;13609:21:1;13666:2;13646:18;;;13639:30;13705:34;13685:18;;;13678:62;-1:-1:-1;;;13756:18:1;;;13749:34;13800:19;;17007:71:0;13425:400:1;17007:71:0;17131:14;;17121:6;17105:13;17115:2;17105:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17097:90;;;;-1:-1:-1;;;17097:90:0;;14032:2:1;17097:90:0;;;14014:21:1;14071:2;14051:18;;;14044:30;14110:34;14090:18;;;14083:62;-1:-1:-1;;;14161:18:1;;;14154:35;14206:19;;17097:90:0;13830:401:1;17097:90:0;17206:9;:11;;;:9;:11;;;:::i;:::-;;;;;;16900:333;17260:13;;-1:-1:-1;;;;;17254:19:0;;;17260:13;;17254:19;:44;;;;-1:-1:-1;;;;;;17277:21:0;;17293:4;17277:21;;17254:44;17249:485;;;17333:16;;17318:12;:31;17384:17;;-1:-1:-1;17368:33:0;17426:7;;17420:3;:13;17463:12;;17452:8;:23;17249:485;;;17509:13;;-1:-1:-1;;;;;17501:21:0;;;17509:13;;17501:21;:44;;;;-1:-1:-1;;;;;;17526:19:0;;17540:4;17526:19;;17501:44;17497:237;;;17580:15;;17565:12;:30;17630:16;;17614:13;:32;17671:6;;17665:3;:12;17707:11;;17696:8;:22;17497:237;17750:28;17781:24;17799:4;17781:9;:24::i;:::-;17825:6;;17750:55;;-1:-1:-1;;;;17825:6:0;;;;17824:7;:38;;;;-1:-1:-1;17849:13:0;;-1:-1:-1;;;;;17849:13:0;17835:10;:27;;17824:38;:53;;;;-1:-1:-1;17866:11:0;;-1:-1:-1;;;17866:11:0;;;;17824:53;:115;;;;;17922:17;;17899:20;:40;17824:115;:167;;;;;12671:3;17961:9;;:30;17824:167;17820:239;;;18027:16;:14;:16::i;:::-;16361:1709;16323:1747;-1:-1:-1;;;;;18098:15:0;;;;;;:9;:15;;;;;;:27;;18118:6;18098:19;:27::i;:::-;-1:-1:-1;;;;;18082:15:0;;;;;;:9;:15;;;;;;;;:43;;;;18832:18;:26;;;;;;;;18831:27;18161:52;;18207:6;18161:52;;;18183:21;18191:4;18197:6;18183:7;:21::i;:::-;-1:-1:-1;;;;;18240:13:0;;;;;;:9;:13;;;;;;18136:77;;-1:-1:-1;18240:33:0;;18136:77;18240:17;:33::i;:::-;-1:-1:-1;;;;;18224:13:0;;;;;;;:9;:13;;;;;;;;:49;;;;18294:22;;;;;:16;:22;;;;;;;18290:113;;18337:11;;-1:-1:-1;;;;;18364:15:0;;;18337:11;18364:15;;;:9;:15;;;;;;;;18337:43;;-1:-1:-1;;;18337:43:0;;;;;9844:51:1;;;;9911:18;;;9904:34;18337:11:0;;;:20;;9817:18:1;;18337:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18333:59;;-1:-1:-1;;;;;18419:20:0;;;;;;:16;:20;;;;;;;;18415:108;;18460:11;;-1:-1:-1;;;;;18485:13:0;;;18460:11;18485:13;;;:9;:13;;;;;;;;18460:39;;-1:-1:-1;;;18460:39:0;;;;;9844:51:1;;;;9911:18;;;9904:34;18460:11:0;;;:20;;9817:18:1;;18460:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18456:55;;18539:11;;18559:14;;18539:35;;-1:-1:-1;;;;;;18539:35:0;;-1:-1:-1;;;;;18539:11:0;;;;:19;;:35;;;;1682:25:1;;;1670:2;1655:18;;1536:177;18539:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18535:51;18618:2;-1:-1:-1;;;;;18603:34:0;18612:4;-1:-1:-1;;;;;18603:34:0;;18622:14;18603:34;;;;1682:25:1;;1670:2;1655:18;;1536:177;18603:34:0;;;;;;;;16019:2626;15950:2695;;;:::o;541:190::-;627:7;663:12;655:6;;;;647:29;;;;-1:-1:-1;;;647:29:0;;;;;;;;:::i;:::-;-1:-1:-1;687:9:0;699:5;703:1;699;:5;:::i;:::-;687:17;541:190;-1:-1:-1;;;;;541:190:0:o;397:136::-;455:7;482:43;486:1;489;482:43;;;;;;;;;;;;;;;;;:3;:43::i;23582:483::-;13345:6;:13;;-1:-1:-1;;;;13345:13:0;-1:-1:-1;;;13345:13:0;;;23684:16:::1;::::0;;23698:1:::1;23684:16:::0;;;;;::::1;::::0;;-1:-1:-1;;23684:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23684:16:0::1;23660:40;;23729:4;23711;23716:1;23711:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23711:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23755:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;23755:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;23711:7;;23755:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23745:4;23750:1;23745:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23745:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;23820:15:::1;::::0;23788:62:::1;::::0;23805:4:::1;::::0;23820:15:::1;23838:11:::0;23788:8:::1;:62::i;:::-;23861:15;::::0;:196:::1;::::0;-1:-1:-1;;;23861:196:0;;-1:-1:-1;;;;;23861:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;23942:11;;23861:15:::1;::::0;23984:4;;24011::::1;::::0;24031:15:::1;::::0;23861:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13381:6:0;:14;;-1:-1:-1;;;;13381:14:0;;;-1:-1:-1;;;;23582:483:0:o;23482:92::-;23539:10;;:27;;-1:-1:-1;;;;;23539:10:0;;;;:27;;;;;23559:6;;23539:10;:27;:10;:27;23559:6;23539:10;:27;;;;;;;;;;;;;;;;;;;739:246;797:7;821:1;826;821:6;817:47;;-1:-1:-1;851:1:0;844:8;;817:47;874:9;886:5;890:1;886;:5;:::i;:::-;874:17;-1:-1:-1;919:1:0;910:5;914:1;874:17;910:5;:::i;:::-;:10;902:56;;;;-1:-1:-1;;;902:56:0;;15960:2:1;902:56:0;;;15942:21:1;15999:2;15979:18;;;15972:30;16038:34;16018:18;;;16011:62;-1:-1:-1;;;16089:18:1;;;16082:31;16130:19;;902:56:0;15758:397:1;993:132:0;1051:7;1078:39;1082:1;1085;1078:39;;;;;;;;;;;;;;;;;:3;:39::i;18874:2546::-;13345:6;:13;;-1:-1:-1;;;;13345:13:0;-1:-1:-1;;;13345:13:0;;;18978:15:::1;::::0;18995:26:::1;::::0;13345:13;;18962:60:::1;::::0;:15:::1;:60::i;:::-;:79;;19029:12;;18962:79;;;19025:1;18962:79;18932:109;;19052:23;19078:63;19139:1;19078:56;19125:8;;19078:42;19100:19;19078:17;;:21;;:42;;;;:::i;:63::-;19052:89;;19152:20;19175:38;19197:15;19175:17;;:21;;:38;;;;:::i;:::-;19250:16;::::0;;19264:1:::1;19250:16:::0;;;;;::::1;::::0;;19152:61;;-1:-1:-1;19226:21:0::1;::::0;19250:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19250:16:0::1;19226:40;;19295:4;19277;19282:1;19277:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19277:23:0::1;;;-1:-1:-1::0;;;;;19277:23:0::1;;;::::0;::::1;11563:42;19311:4;19316:1;19311:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19311:21:0;;::::1;:7;::::0;;::::1;::::0;;;;;:21;19403:15:::1;::::0;:197:::1;::::0;-1:-1:-1;;;19403:197:0;;19369:21:::1;::::0;19403:15;;;::::1;::::0;:66:::1;::::0;:197:::1;::::0;19484:12;;19345:21:::1;::::0;19527:4;;19554::::1;::::0;19574:15:::1;::::0;19403:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19613:19;19635:40;19648:26;19672:1;19648:19;:23;;:26;;;;:::i;:::-;19635:8;::::0;;:12:::1;:40::i;:::-;19613:62:::0;-1:-1:-1;19686:17:0::1;19706:40;:21;19732:13:::0;19706:25:::1;:40::i;:::-;19686:60:::0;-1:-1:-1;19757:26:0::1;19786:58;19842:1;19786:51;19825:11:::0;19786:51;19686:60;19800:19;19786:13:::1;:34::i;:58::-;19757:87;;19855:27;19885:45;19918:11;19885:28;19899:13;;19885:9;:13;;:28;;;;:::i;:45::-;19855:75;;19947:11;;;;;;;;;-1:-1:-1::0;;;;;19947:11:0::1;-1:-1:-1::0;;;;;19947:19:0::1;;19974;19947:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;19943:65:::0;12671:3:::1;20023:9;;:30;20020:1010;;;20073:10;::::0;-1:-1:-1;;;;;20073:10:0::1;11449:6;20073:25;20070:150;;20134:10;::::0;20119:33:::1;::::0;-1:-1:-1;;;;;20134:10:0::1;;20119:14;:33::i;:::-;20171:10;:33:::0;;-1:-1:-1;;;;;;20171:33:0::1;11449:6;20171:33;::::0;;20070:150:::1;20234:20;20257:35;20280:11;20257:18;20271:3;;20257:9;:13;;:18;;;;:::i;:35::-;20361:10;::::0;20353:61:::1;::::0;20234:58;;-1:-1:-1;20309:15:0::1;::::0;-1:-1:-1;;;;;20361:10:0;;::::1;::::0;20404:5:::1;::::0;20234:58;;20309:15;20353:61;20309:15;20353:61;20234:58;20361:10;20404:5;20353:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20308:106;;;20437:10;20429:73;;;;-1:-1:-1::0;;;20429:73:0::1;;;;;;;:::i;:::-;20055:459;;20020:1010;;;20535:20;20558:39;20585:11;20558:22;20578:1;20572:3;;:7;;;;:::i;:::-;20558:9:::0;;:13:::1;:22::i;:39::-;20666:10;::::0;20658:61:::1;::::0;20535:62;;-1:-1:-1;20614:15:0::1;::::0;-1:-1:-1;;;;;20666:10:0;;::::1;::::0;20709:5:::1;::::0;20535:62;;20614:15;20658:61;20614:15;20658:61;20535:62;20666:10;20709:5;20658:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20787:10:0::1;::::0;20779:61:::1;::::0;20613:106;;-1:-1:-1;20735:15:0::1;::::0;-1:-1:-1;;;;;20787:10:0;;::::1;::::0;20830:5:::1;::::0;20811:12;;20735:15;20779:61;20735:15;20779:61;20811:12;20787:10;20830:5;20779:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20734:106;;;20863:10;20855:73;;;;-1:-1:-1::0;;;20855:73:0::1;;;;;;;:::i;:::-;20952:10;20944:73;;;::::0;-1:-1:-1;;;20944:73:0;;16991:2:1;20944:73:0::1;::::0;::::1;16973:21:1::0;17030:2;17010:18;;;17003:30;17069:34;17049:18;;;17042:62;-1:-1:-1;;;17120:18:1;;;17113:48;17178:19;;20944:73:0::1;16789:414:1::0;20944:73:0::1;20520:510;;;20020:1010;21045:19:::0;;21042:371:::1;;21080:15;::::0;21263:21:::1;::::0;21080:253:::1;::::0;-1:-1:-1;;;21080:253:0;;-1:-1:-1;;;;;21080:15:0;;::::1;::::0;:31:::1;::::0;21119:18;;21080:253:::1;::::0;21165:4:::1;::::0;21189:15;;21080::::1;::::0;;;21263:21:::1;::::0;21303:15:::1;::::0;21080:253:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;21353:48:0::1;::::0;;17382:25:1;;;17438:2;17423:18;;17416:34;;;21353:48:0::1;::::0;-1:-1:-1;17355:18:1;21353:48:0::1;;;;;;;21042:371;-1:-1:-1::0;;13381:6:0;:14;;-1:-1:-1;;;;13381:14:0;;;-1:-1:-1;;;;;;;18874:2546:0:o;21428:353::-;21495:7;21515:17;21555:40;21580:14;;21555:20;21566:8;;21555:6;:10;;:20;;;;:::i;:40::-;21653:4;21635:24;;;;:9;:24;;;;;;21543:52;;-1:-1:-1;21635:39:0;;21543:52;21635:28;:39::i;:::-;21626:4;21608:24;;;;:9;:24;;;;;;;:66;;;;21690:42;;-1:-1:-1;;;;;21690:42:0;;;;;;;21722:9;1682:25:1;;1670:2;1655:18;;1536:177;21690:42:0;;;;;;;;21752:21;:6;21763:9;21752:10;:21::i;:::-;21745:28;21428:353;-1:-1:-1;;;;21428:353:0:o;1133:189::-;1219:7;1254:12;1247:5;1239:28;;;;-1:-1:-1;;;1239:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1278:9:0;1290:5;1294:1;1290;:5;:::i;14:316:1:-;91:6;99;107;160:2;148:9;139:7;135:23;131:32;128:52;;;176:1;173;166:12;128:52;-1:-1:-1;;199:23:1;;;269:2;254:18;;241:32;;-1:-1:-1;320:2:1;305:18;;;292:32;;14:316;-1:-1:-1;14:316:1:o;335:548::-;447:4;476:2;505;494:9;487:21;537:6;531:13;580:6;575:2;564:9;560:18;553:34;605:1;615:140;629:6;626:1;623:13;615:140;;;724:14;;;720:23;;714:30;690:17;;;709:2;686:26;679:66;644:10;;615:140;;;619:3;804:1;799:2;790:6;779:9;775:22;771:31;764:42;874:2;867;863:7;858:2;850:6;846:15;842:29;831:9;827:45;823:54;815:62;;;;335:548;;;;:::o;888:131::-;-1:-1:-1;;;;;963:31:1;;953:42;;943:70;;1009:1;1006;999:12;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;1718:248::-;1786:6;1794;1847:2;1835:9;1826:7;1822:23;1818:32;1815:52;;;1863:1;1860;1853:12;1815:52;-1:-1:-1;;1886:23:1;;;1956:2;1941:18;;;1928:32;;-1:-1:-1;1718:248:1:o;1971:456::-;2048:6;2056;2064;2117:2;2105:9;2096:7;2092:23;2088:32;2085:52;;;2133:1;2130;2123:12;2085:52;2172:9;2159:23;2191:31;2216:5;2191:31;:::i;:::-;2241:5;-1:-1:-1;2298:2:1;2283:18;;2270:32;2311:33;2270:32;2311:33;:::i;:::-;1971:456;;2363:7;;-1:-1:-1;;;2417:2:1;2402:18;;;;2389:32;;1971:456::o;2432:247::-;2491:6;2544:2;2532:9;2523:7;2519:23;2515:32;2512:52;;;2560:1;2557;2550:12;2512:52;2599:9;2586:23;2618:31;2643:5;2618:31;:::i;3081:118::-;3167:5;3160:13;3153:21;3146:5;3143:32;3133:60;;3189:1;3186;3179:12;3204:382;3269:6;3277;3330:2;3318:9;3309:7;3305:23;3301:32;3298:52;;;3346:1;3343;3336:12;3298:52;3385:9;3372:23;3404:31;3429:5;3404:31;:::i;:::-;3454:5;-1:-1:-1;3511:2:1;3496:18;;3483:32;3524:30;3483:32;3524:30;:::i;:::-;3573:7;3563:17;;;3204:382;;;;;:::o;3591:180::-;3650:6;3703:2;3691:9;3682:7;3678:23;3674:32;3671:52;;;3719:1;3716;3709:12;3671:52;-1:-1:-1;3742:23:1;;3591:180;-1:-1:-1;3591:180:1:o;3776:388::-;3844:6;3852;3905:2;3893:9;3884:7;3880:23;3876:32;3873:52;;;3921:1;3918;3911:12;3873:52;3960:9;3947:23;3979:31;4004:5;3979:31;:::i;:::-;4029:5;-1:-1:-1;4086:2:1;4071:18;;4058:32;4099:33;4058:32;4099:33;:::i;4429:397::-;4631:2;4613:21;;;4670:2;4650:18;;;4643:30;4709:34;4704:2;4689:18;;4682:62;-1:-1:-1;;;4775:2:1;4760:18;;4753:31;4816:3;4801:19;;4429:397::o;4831:127::-;4892:10;4887:3;4883:20;4880:1;4873:31;4923:4;4920:1;4913:15;4947:4;4944:1;4937:15;4963:422;5052:1;5095:5;5052:1;5109:270;5130:7;5120:8;5117:21;5109:270;;;5189:4;5185:1;5181:6;5177:17;5171:4;5168:27;5165:53;;;5198:18;;:::i;:::-;5248:7;5238:8;5234:22;5231:55;;;5268:16;;;;5231:55;5347:22;;;;5307:15;;;;5109:270;;;5113:3;4963:422;;;;;:::o;5390:806::-;5439:5;5469:8;5459:80;;-1:-1:-1;5510:1:1;5524:5;;5459:80;5558:4;5548:76;;-1:-1:-1;5595:1:1;5609:5;;5548:76;5640:4;5658:1;5653:59;;;;5726:1;5721:130;;;;5633:218;;5653:59;5683:1;5674:10;;5697:5;;;5721:130;5758:3;5748:8;5745:17;5742:43;;;5765:18;;:::i;:::-;-1:-1:-1;;5821:1:1;5807:16;;5836:5;;5633:218;;5935:2;5925:8;5922:16;5916:3;5910:4;5907:13;5903:36;5897:2;5887:8;5884:16;5879:2;5873:4;5870:12;5866:35;5863:77;5860:159;;;-1:-1:-1;5972:19:1;;;6004:5;;5860:159;6051:34;6076:8;6070:4;6051:34;:::i;:::-;6121:6;6117:1;6113:6;6109:19;6100:7;6097:32;6094:58;;;6132:18;;:::i;:::-;6170:20;;5390:806;-1:-1:-1;;;5390:806:1:o;6201:140::-;6259:5;6288:47;6329:4;6319:8;6315:19;6309:4;6288:47;:::i;6346:168::-;6419:9;;;6450;;6467:15;;;6461:22;;6447:37;6437:71;;6488:18;;:::i;6519:184::-;6589:6;6642:2;6630:9;6621:7;6617:23;6613:32;6610:52;;;6658:1;6655;6648:12;6610:52;-1:-1:-1;6681:16:1;;6519:184;-1:-1:-1;6519:184:1:o;7059:356::-;7261:2;7243:21;;;7280:18;;;7273:30;7339:34;7334:2;7319:18;;7312:62;7406:2;7391:18;;7059:356::o;8182:251::-;8252:6;8305:2;8293:9;8284:7;8280:23;8276:32;8273:52;;;8321:1;8318;8311:12;8273:52;8353:9;8347:16;8372:31;8397:5;8372:31;:::i;8747:607::-;-1:-1:-1;;;;;9106:15:1;;;9088:34;;9153:2;9138:18;;9131:34;;;;9196:2;9181:18;;9174:34;;;;9239:2;9224:18;;9217:34;;;;9288:15;;;9282:3;9267:19;;9260:44;9068:3;9320:19;;9313:35;;;;9037:3;9022:19;;8747:607::o;9359:306::-;9447:6;9455;9463;9516:2;9504:9;9495:7;9491:23;9487:32;9484:52;;;9532:1;9529;9522:12;9484:52;9561:9;9555:16;9545:26;;9611:2;9600:9;9596:18;9590:25;9580:35;;9655:2;9644:9;9640:18;9634:25;9624:35;;9359:306;;;;;:::o;9949:245::-;10016:6;10069:2;10057:9;10048:7;10044:23;10040:32;10037:52;;;10085:1;10082;10075:12;10037:52;10117:9;10111:16;10136:28;10158:5;10136:28;:::i;10199:217::-;10239:1;10265;10255:132;;10309:10;10304:3;10300:20;10297:1;10290:31;10344:4;10341:1;10334:15;10372:4;10369:1;10362:15;10255:132;-1:-1:-1;10401:9:1;;10199:217::o;10421:125::-;10486:9;;;10507:10;;;10504:36;;;10520:18;;:::i;14236:135::-;14275:3;14296:17;;;14293:43;;14316:18;;:::i;:::-;-1:-1:-1;14363:1:1;14352:13;;14236:135::o;14376:128::-;14443:9;;;14464:11;;;14461:37;;;14478:18;;:::i;14641:127::-;14702:10;14697:3;14693:20;14690:1;14683:31;14733:4;14730:1;14723:15;14757:4;14754:1;14747:15;14773:980;15035:4;15083:3;15072:9;15068:19;15114:6;15103:9;15096:25;15140:2;15178:6;15173:2;15162:9;15158:18;15151:34;15221:3;15216:2;15205:9;15201:18;15194:31;15245:6;15280;15274:13;15311:6;15303;15296:22;15349:3;15338:9;15334:19;15327:26;;15388:2;15380:6;15376:15;15362:29;;15409:1;15419:195;15433:6;15430:1;15427:13;15419:195;;;15498:13;;-1:-1:-1;;;;;15494:39:1;15482:52;;15589:15;;;;15554:12;;;;15530:1;15448:9;15419:195;;;-1:-1:-1;;;;;;;15670:32:1;;;;15665:2;15650:18;;15643:60;-1:-1:-1;;;15734:3:1;15719:19;15712:35;15631:3;14773:980;-1:-1:-1;;;14773:980:1:o;16370:414::-;16572:2;16554:21;;;16611:2;16591:18;;;16584:30;16650:34;16645:2;16630:18;;16623:62;-1:-1:-1;;;16716:2:1;16701:18;;16694:48;16774:3;16759:19;;16370:414::o

Swarm Source

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