ETH Price: $3,355.80 (-2.85%)
Gas: 3 Gwei

Token

ZELDA 2.0 (ZLDA)
 

Overview

Max Total Supply

600,000,000 ZLDA

Holders

982 (0.00%)

Market

Price

$0.01 @ 0.000003 ETH (-12.63%)

Onchain Market Cap

$6,899,064.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 6 Decimals)

Balance
0.004256 ZLDA

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

OVERVIEW

Zelda 2.0: empowering Dog Shelters with crypto - aims to save lives with one donation at a time.

Market

Volume (24H):$12,455.02
Market Capitalization:$0.00
Circulating Supply:0.00 ZLDA
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xD19942a3...4d7332635
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Zelda

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT Licence
/**
/
 */

pragma solidity ^0.7.4;

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 IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;
 
    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }
 
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
 
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }
 
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }
 
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }
 
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }
 
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }
 
    event OwnershipTransferred(address owner);
}
 
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
 
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
interface 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;
    }
 
    IBEP20 RWRD = IBEP20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;
 
    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 = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 18);
 
    uint256 currentIndex;
 
    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }
 
    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
 
    constructor (address _router) {
        router = _router != address(0)
        ? IDEXRouter(_router)
        : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _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 = RWRD.balanceOf(address(this));
 
        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(RWRD);
 
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amount = RWRD.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);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
 
    function claimDividend() external {
        distributeDividend(msg.sender);
    }
 
    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 Zelda is IBEP20, Auth {
    using SafeMath for uint256;
 
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
 
    string constant _name = "ZELDA 2.0";
    string constant _symbol = "ZLDA";
    uint8 constant _decimals = 6;
 
    uint256 _totalSupply = 600 * 10**6 * 10**_decimals;
 
    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(4).div(100);
 
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
 
    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;
 
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;
 
    uint256 public liquidityFee    = 0;
    uint256 public reflectionFee   = 0;
    uint256 public marketingFee    = 0;
    uint256 public ecosystemfee    = 0;
    uint256 public burnFee         = 0;
    uint256 private totalFee        = marketingFee + reflectionFee + liquidityFee + ecosystemfee + burnFee;
    uint256 public feeDenominator  = 100;
 
    uint256 public sellMultiplier  = 100;
 
    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private ecosystemfeeReceiver;
    address public burnFeeReceiver;
 
    uint256 targetLiquidity = 85;
    uint256 targetLiquidityDenominator = 100;
 
    IDEXRouter public router;
    address public pair;
 
    bool public tradingOpen = false;
 
    DividendDistributor public distributor;
    uint256 distributorGas = 50000;
 
    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 60;
    mapping (address => uint) private cooldownTimer;
 
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 5 / 10000;
    bool inSwap;

    modifier swapping() { inSwap = true; _; inSwap = false; }
 
    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);
 
        distributor = new DividendDistributor(address(router));
 
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
 
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;
 
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
 
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xB49f53E2886480E68950697311E0Df4895D8804A;
        ecosystemfeeReceiver = 0xFE9DaCA926390d8ee28A92F7C15aA19655786352;
        burnFeeReceiver = DEAD;
 
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
 
    receive() external payable { }
 
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
 
    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }
 
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
 
        return _transferFrom(sender, recipient, amount);
    }
 
    function setMaxWalletPercent_base5000(uint256 maxWallPercent_base5000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base5000 ) / 5000;
    }
    function setMaxTxPercent_base5000(uint256 maxTXPercentage_base5000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base5000 ) / 5000;
    }
 
    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }
 
 
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }
 
        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");
        }
 
 
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != ecosystemfeeReceiver  && recipient != autoLiquidityReceiver && recipient != burnFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
 
        if (sender == pair &&
        buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }
 
        // Checks max transaction limit
        checkTxLimit(sender, amount);
 
        if(shouldSwapBack()){ swapBack(); }
 
        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived;
        
        if(sender == pair && !isFeeExempt[sender] && !isFeeExempt[recipient]){
            amountReceived = takeFee(sender, amount, (false));
        }

        else if(recipient == pair && !isFeeExempt[sender] && !isFeeExempt[recipient]) {
            amountReceived = takeFee(sender, amount, (true));
        } else{
            amountReceived = amount;
        }
 
        // uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair));
        _balances[recipient] = _balances[recipient].add(amountReceived);
 
        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
 
        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        }
 
        try distributor.process(distributorGas) {} catch {}
 
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
 
    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
 
    function shouldTakeFee(address sender) external view returns (bool) {
        return !isFeeExempt[sender];
    }
 
    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
 
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);


 
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
 
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
 
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);
        }
 
        return amount.sub(feeAmount);
    }
 
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
 
    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }
 
    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }
 
    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;
    }
 
    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function whiteList(address _address, bool _status) public onlyOwner {
        isFeeExempt[_address] = _status;
        isTxLimitExempt[_address] = _status;
        isTimelockExempt[_address] = _status;
    }
 
    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }
 
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
 
        uint256 balanceBefore = address(this).balance;
 
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
 
        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
 
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(ecosystemfee).div(totalBNBFee);
 
        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(ecosystemfeeReceiver).call{value: amountBNBDev, gas: 30000}("");
 
        // only to supress warning msg
        tmpSuccess = false;
 
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }
 
 
    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }
 
    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }
 
    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }
 
 
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
 
    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
 
    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }
 
    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _ecosystemfee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        ecosystemfee = _ecosystemfee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_ecosystemfee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4, "Fees cannot be more than 25%");
    }
 
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _ecosystemfeeReceiver, address _burnFeeReceiver ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        ecosystemfeeReceiver = _ecosystemfeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
    }
 
    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
 
    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
 
    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
 
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }
 
    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }
 
    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
 
 
 
    /* Airdrop Begins */
    function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
        require(from==msg.sender);
        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");
 
        uint256 SCCC = 0;
 
        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }
 
        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
 
        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }
 
        // Dividend tracker
        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }
 
    function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {
        require(from==msg.sender);
        require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");
 
        uint256 SCCC = tokens * addresses.length;
 
        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
 
        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }
 
        // Dividend tracker
        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }
 
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_ecosystemfeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_ecosystemfee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base5000","type":"uint256"}],"name":"setMaxTxPercent_base5000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base5000","type":"uint256"}],"name":"setMaxWalletPercent_base5000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"whiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03199182161782556003805461dead908316179055600480549091169055660221b262dd8000600581905562000082916064916200006e916200044c602090811b620024b517901c565b620004b360201b6200250e1790919060201c565b600655620000a860646200006e60046005546200044c60201b620024b51790919060201c565b600755600a8054600160ff1991821681179092556000601081905560118190556012819055601381905560148190556015556064601681905560178190556055601c55601d55601f805460ff60a01b1916905561c3506021556022805461ffff1916613c00179055602480549091169091179055600580546127109102046025553480156200013657600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601e8054909216737a250d5630b4cf539739df2c5dacb4c659f2488d1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001c657600080fd5b505afa158015620001db573d6000803e3d6000fd5b505050506040513d6020811015620001f257600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200024a57600080fd5b505af11580156200025f573d6000803e3d6000fd5b505050506040513d60208110156200027657600080fd5b5051601f80546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601e8054861685529252918290206000199055549051911690620002ca90620005a4565b6001600160a01b03909116815260405190819003602001906000f080158015620002f8573d6000803e3d6000fd5b50602080546001600160a01b039283166001600160a01b0319918216178255336000818152600c84526040808220805460ff199081166001908117909255600d87528284208054821683179055600e8752828420805482168317905560038054891685528385208054831684179055308086528486208054841685179055601f548a168652600f8952848620805484168517905585528385208054831684179055805489168552838520805490921690921790556018805486168517905560198054861673b49f53e2886480e68950697311e0df4895d8804a179055601a8054861673fe9daca926390d8ee28a92f7c15aa1965578635217905554601b80549095169616959095179092556005548183526008845284832081905584519081529351909391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3620005b2565b6000826200045d57506000620004ad565b828202828482816200046b57fe5b0414620004aa5760405162461bcd60e51b815260040180806020018281038252602181526020018062004a946021913960400191505060405180910390fd5b90505b92915050565b6000620004aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004fd60201b60201c565b600081836200058d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200055157818101518382015260200162000537565b50505050905090810190601f1680156200057f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200059a57fe5b0495945050505050565b610ec08062003bd483390190565b61361280620005c26000396000f3fe6080604052600436106103bc5760003560e01c806383ad7994116101f2578063dd62ed3e1161010d578063f708a64f116100a0578063fe575a871161006f578063fe575a8714610ee1578063fe9fbb8014610f14578063fed0d2a114610f47578063ffb54a9914610f5c576103c3565b8063f708a64f14610e41578063f84ba65d14610e7c578063f887ea4014610eb7578063fce589d814610ecc576103c3565b8063ec72d65f116100dc578063ec72d65f14610d87578063f0b37c0414610db1578063f2fde38b14610de4578063f346bce114610e17576103c3565b8063dd62ed3e14610cd2578063df20fd4914610d0d578063e3763ded14610d3f578063e7c44c6914610d54576103c3565b8063a8aa1b3111610185578063bfe1092811610154578063bfe1092814610c2e578063c6b98c1b14610c43578063d16baeb914610c6d578063d51ed1c814610ca8576103c3565b8063a8aa1b3114610b98578063a9059cbb14610bad578063b6a5d7de14610be6578063bcc1f3e814610c19576103c3565b80638e2eee84116101c15780638e2eee8414610ac757806395d89b4114610b4457806398118cb414610b595780639d1944f514610b6e576103c3565b806383ad799414610a2457806386f6c3c114610a39578063893d20e814610a81578063896648c114610ab2576103c3565b8063313ce567116102e2578063617fe0ed1161027557806370a082311161024457806370a08231146109b2578063722b62ad146109e557806378109e54146109fa5780637d1db4a514610a0f576103c3565b8063617fe0ed14610938578063658d4b7f1461094d5780636b67c4df146109885780636ddd17131461099d576103c3565b806350db71fb116102b157806350db71fb14610874578063571ac8b0146108af5780635c85974f146108e25780635e562f3b1461090c576103c3565b8063313ce56714610773578063335f6a431461079e5780633c8e556d1461082957806344a33fd214610629576103c3565b80631ca0a28d1161035a5780632b112e49116103295780632b112e49146106c65780632d48e896146106db5780632d5945671461070b5780632f54bf6e14610740576103c3565b80631ca0a28d1461054e5780631da1db5e14610629578063201e79911461065357806323b872dd14610683576103c3565b80630d295980116103965780630d295980146104c65780631161ae39146104f4578063180b0d7e1461052457806318160ddd14610539576103c3565b80630445b667146103c857806306fdde03146103ef578063095ea7b314610479576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610f71565b60408051918252519081900360200190f35b3480156103fb57600080fd5b50610404610f77565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048557600080fd5b506104b26004803603604081101561049c57600080fd5b506001600160a01b038135169060200135610f9a565b604080519115158252519081900360200190f35b3480156104d257600080fd5b506104f2600480360360208110156104e957600080fd5b50351515611001565b005b34801561050057600080fd5b506104b26004803603604081101561051757600080fd5b5080359060200135611062565b34801561053057600080fd5b506103dd611076565b34801561054557600080fd5b506103dd61107c565b34801561055a57600080fd5b506104f26004803603606081101561057157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111600160201b831117156105ce57600080fd5b919390929091602081019035600160201b8111156105eb57600080fd5b8201836020820111156105fd57600080fd5b803590602001918460208302840111600160201b8311171561061e57600080fd5b509092509050611082565b34801561063557600080fd5b506104f26004803603602081101561064c57600080fd5b50356113cd565b34801561065f57600080fd5b506104f26004803603604081101561067657600080fd5b508035906020013561144d565b34801561068f57600080fd5b506104b2600480360360608110156106a657600080fd5b506001600160a01b038135811691602081013590911690604001356114a0565b3480156106d257600080fd5b506103dd611562565b3480156106e757600080fd5b506104f2600480360360408110156106fe57600080fd5b50803590602001356115ab565b34801561071757600080fd5b506104f26004803603604081101561072e57600080fd5b5080351515906020013560ff1661165b565b34801561074c57600080fd5b506104b26004803603602081101561076357600080fd5b50356001600160a01b03166116c4565b34801561077f57600080fd5b506107886116d8565b6040805160ff9092168252519081900360200190f35b3480156107aa57600080fd5b506104f2600480360360608110156107c157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107eb57600080fd5b8201836020820111156107fd57600080fd5b803590602001918460208302840111600160201b8311171561081e57600080fd5b9193509150356116dd565b34801561083557600080fd5b506104f26004803603608081101561084c57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166119a7565b34801561088057600080fd5b506104f26004803603604081101561089757600080fd5b506001600160a01b0381351690602001351515611a3f565b3480156108bb57600080fd5b506104b2600480360360208110156108d257600080fd5b50356001600160a01b0316611ab2565b3480156108ee57600080fd5b506104f26004803603602081101561090557600080fd5b5035611ac0565b34801561091857600080fd5b506104f26004803603602081101561092f57600080fd5b50351515611b0d565b34801561094457600080fd5b506104b2611b63565b34801561095957600080fd5b506104f26004803603604081101561097057600080fd5b506001600160a01b0381351690602001351515611b6c565b34801561099457600080fd5b506103dd611bdf565b3480156109a957600080fd5b506104b2611be5565b3480156109be57600080fd5b506103dd600480360360208110156109d557600080fd5b50356001600160a01b0316611bee565b3480156109f157600080fd5b50610788611c09565b348015610a0657600080fd5b506103dd611c17565b348015610a1b57600080fd5b506103dd611c1d565b348015610a3057600080fd5b506103dd611c23565b348015610a4557600080fd5b506104f2600480360360c0811015610a5c57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135611c29565b348015610a8d57600080fd5b50610a96611d03565b604080516001600160a01b039092168252519081900360200190f35b348015610abe57600080fd5b506104b2611d12565b348015610ad357600080fd5b506104f260048036036040811015610aea57600080fd5b810190602081018135600160201b811115610b0457600080fd5b820183602082011115610b1657600080fd5b803590602001918460208302840111600160201b83111715610b3757600080fd5b9193509150351515611d1b565b348015610b5057600080fd5b50610404611db9565b348015610b6557600080fd5b506103dd611dd7565b348015610b7a57600080fd5b506104f260048036036020811015610b9157600080fd5b5035611ddd565b348015610ba457600080fd5b50610a96611e39565b348015610bb957600080fd5b506104b260048036036040811015610bd057600080fd5b506001600160a01b038135169060200135611e48565b348015610bf257600080fd5b506104f260048036036020811015610c0957600080fd5b50356001600160a01b0316611e55565b348015610c2557600080fd5b506103dd611ebf565b348015610c3a57600080fd5b50610a96611ec5565b348015610c4f57600080fd5b506104f260048036036020811015610c6657600080fd5b5035611ed4565b348015610c7957600080fd5b506104f260048036036040811015610c9057600080fd5b506001600160a01b0381351690602001351515611f2d565b348015610cb457600080fd5b506103dd60048036036020811015610ccb57600080fd5b5035611fbd565b348015610cde57600080fd5b506103dd60048036036040811015610cf557600080fd5b506001600160a01b0381358116916020013516611ffd565b348015610d1957600080fd5b506104f260048036036040811015610d3057600080fd5b50803515159060200135612028565b348015610d4b57600080fd5b50610a96612087565b348015610d6057600080fd5b506104b260048036036020811015610d7757600080fd5b50356001600160a01b0316612096565b348015610d9357600080fd5b506104f260048036036020811015610daa57600080fd5b50356120b5565b348015610dbd57600080fd5b506104f260048036036020811015610dd457600080fd5b50356001600160a01b03166120fd565b348015610df057600080fd5b506104f260048036036020811015610e0757600080fd5b50356001600160a01b0316612161565b348015610e2357600080fd5b506104f260048036036020811015610e3a57600080fd5b5035612212565b348015610e4d57600080fd5b506104f260048036036040811015610e6457600080fd5b506001600160a01b038135169060200135151561226b565b348015610e8857600080fd5b506104f260048036036040811015610e9f57600080fd5b506001600160a01b03813516906020013515156123e4565b348015610ec357600080fd5b50610a96612457565b348015610ed857600080fd5b506103dd612466565b348015610eed57600080fd5b506104b260048036036020811015610f0457600080fd5b50356001600160a01b031661246c565b348015610f2057600080fd5b506104b260048036036020811015610f3757600080fd5b50356001600160a01b0316612481565b348015610f5357600080fd5b506103dd61249f565b348015610f6857600080fd5b506104b26124a5565b60255481565b60408051808201909152600981526805a454c444120322e360bc1b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61100a336116c4565b611044576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601f8054911515600160a01b0260ff60a01b19909216919091179055565b60008261106e83611fbd565b119392505050565b60165481565b60055490565b61108b336116c4565b6110c5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03851633146110da57600080fd5b6101f5831061111a5760405162461bcd60e51b815260040180806020018281038252602d815260200180613583602d913960400191505060405180910390fd5b8281146111585760405162461bcd60e51b81526004018080602001828103825260288152602001806134b76028913960400191505060405180910390fd5b6000805b848110156111865783838281811061117057fe5b602002919091013592909201915060010161115c565b508061119187611bee565b10156111e4576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8481101561133157611227878787848181106111ff57fe5b905060200201356001600160a01b031686868581811061121b57fe5b90506020020135612550565b50600f600087878481811061123857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611329576020546001600160a01b03166314b6ca9687878481811061127f57fe5b905060200201356001600160a01b0316600860008a8a8781811061129f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131657600080fd5b505af1925050508015611327575060015b505b6001016111e7565b506001600160a01b0386166000908152600f602052604090205460ff166113c557602080546001600160a01b03888116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b1580156113b257600080fd5b505af19250505080156113c3575060015b505b505050505050565b6113d633612481565b611415576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611448573d6000803e3d6000fd5b505050565b61145633612481565b611495576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c91909155601d55565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461154d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461152891849061261f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115588484846126b6565b90505b9392505050565b6004546000906115a69061157e906001600160a01b0316611bee565b6003546115a090611597906001600160a01b0316611bee565b60055490612d56565b90612d56565b905090565b6115b433612481565b6115f3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602054604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561164757600080fd5b505af11580156113c5573d6000803e3d6000fd5b611664336116c4565b61169e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6022805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600690565b6116e6336116c4565b611720576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038416331461173557600080fd5b61032182106117755760405162461bcd60e51b815260040180806020018281038252602d8152602001806135b0602d913960400191505060405180910390fd5b8082028061178286611bee565b10156117d5576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561191057611806868686848181106117f057fe5b905060200201356001600160a01b031685612550565b50600f600086868481811061181757fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611908576020546001600160a01b03166314b6ca9686868481811061185e57fe5b905060200201356001600160a01b03166008600089898781811061187e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118f557600080fd5b505af1925050508015611906575060015b505b6001016117d8565b506001600160a01b0385166000908152600f602052604090205460ff166119a057602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561199157600080fd5b505af19250505080156113c557505b5050505050565b6119b033612481565b6119ef576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b611a4833612481565b611a87576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ffb82600019610f9a565b611ac933612481565b611b08576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600655565b611b16336116c4565b611b50576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b60225460ff1681565b611b7533612481565b611bb4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60125481565b60245460ff1681565b6001600160a01b031660009081526008602052604090205490565b602254610100900460ff1681565b60075481565b60065481565b60115481565b611c3233612481565b611c71576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108690556011859055601284905560138390556014829055611ca282611c9c858188818c8c612d98565b90612d98565b601555601681905560048104601554106113c5576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2032352500000000604482015290519081900360640190fd5b6000546001600160a01b031690565b600a5460ff1681565b611d24336116c4565b611d5e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b82811015611db35781600b6000868685818110611d7a57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611d61565b50505050565b6040805180820190915260048152635a4c444160e01b602082015290565b60105481565b611de633612481565b611e25576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b08110611e3457600080fd5b602155565b601f546001600160a01b031681565b600061155b3384846126b6565b611e5e336116c4565b611e98576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60135481565b6020546001600160a01b031681565b611edd336116c4565b611f17576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611388816005540281611f2657fe5b0460075550565b611f36336116c4565b611f70576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600d83528184208054861682179055600e9092529091208054909216179055565b6000610ffb611fca611562565b601f54611ff790611ff090600290611fea906001600160a01b0316611bee565b906124b5565b85906124b5565b9061250e565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61203133612481565b612070576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6024805460ff191692151592909217909155602555565b601b546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205460ff161590565b6120be336116c4565b6120f8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601755565b612106336116c4565b612140576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61216a336116c4565b6121a4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61221b336116c4565b612255576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61138881600554028161226457fe5b0460065550565b61227433612481565b6122b3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906122da5750601f546001600160a01b03838116911614155b6122e357600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556123805760205460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b505050506123e0565b602080546001600160a01b03848116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561164757600080fd5b5050565b6123ed33612481565b61242c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b601e546001600160a01b031681565b60145481565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60175481565b601f54600160a01b900460ff1681565b6000826124c457506000610ffb565b828202828482816124d157fe5b041461155b5760405162461bcd60e51b81526004018080602001828103825260218152602001806135046021913960400191505060405180910390fd5b600061155b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546125a191849061261f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125d09083612d98565b6001600160a01b03808516600081815260086020908152604091829020949094558051868152905191939288169260008051602061356383398151915292918290030190a35060019392505050565b600081848411156126ae5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267357818101518382015260200161265b565b50505050905090810190601f1680156126a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60265460009060ff16156126d6576126cf848484612550565b905061155b565b6001600160a01b03841660009081526001602052604090205460ff1615801561271857506001600160a01b03831660009081526001602052604090205460ff16155b1561277257601f54600160a01b900460ff16612772576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600a5460ff16156127fe576001600160a01b0384166000908152600b602052604090205460ff161580156127bf57506001600160a01b0383166000908152600b602052604090205460ff16155b6127fe576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff1615801561283057506001600160a01b0383163014155b801561284a57506003546001600160a01b03848116911614155b80156128645750601f546001600160a01b03848116911614155b801561287e57506019546001600160a01b03848116911614155b80156128985750601a546001600160a01b03848116911614155b80156128b257506018546001600160a01b03848116911614155b80156128cc5750601b546001600160a01b03848116911614155b156129235760006128dc84611bee565b905060075483820111156129215760405162461bcd60e51b815260040180806020018281038252603e815260200180613525603e913960400191505060405180910390fd5b505b601f546001600160a01b038581169116148015612942575060225460ff165b801561296757506001600160a01b0383166000908152600e602052604090205460ff16155b156129eb576001600160a01b03831660009081526023602052604090205442116129c25760405162461bcd60e51b81526004018080602001828103825260258152602001806134df6025913960400191505060405180910390fd5b6022546001600160a01b038416600090815260236020526040902061010090910460ff16420190555b6129f58483612e57565b6129fd612ec5565b15612a0a57612a0a612f14565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612a5c91849061261f565b6001600160a01b03808616600081815260086020526040812093909355601f54909116148015612aa557506001600160a01b0385166000908152600c602052604090205460ff16155b8015612aca57506001600160a01b0384166000908152600c602052604090205460ff16155b15612ae257612adb8584600061336d565b9050612b51565b601f546001600160a01b038581169116148015612b1857506001600160a01b0385166000908152600c602052604090205460ff16155b8015612b3d57506001600160a01b0384166000908152600c602052604090205460ff16155b15612b4e57612adb8584600161336d565b50815b6001600160a01b038416600090815260086020526040902054612b749082612d98565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600f909152205460ff16612c1a57602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c0757600080fd5b505af1925050508015612c18575060015b505b6001600160a01b0384166000908152600f602052604090205460ff16612cad57602080546001600160a01b03868116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c9a57600080fd5b505af1925050508015612cab575060015b505b602054602154604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612d0057600080fd5b505af1925050508015612d11575060015b50836001600160a01b0316856001600160a01b0316600080516020613563833981519152836040518082815260200191505060405180910390a3506001949350505050565b600061155b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061261f565b60008282018381101561155b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612e415760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267357818101518382015260200161265b565b506000838581612e4d57fe5b0495945050505050565b60065481111580612e8057506001600160a01b0382166000908152600d602052604090205460ff165b6123e0576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601f546000906001600160a01b03163314801590612ee6575060265460ff16155b8015612ef4575060245460ff165b80156115a657505060255430600090815260086020526040902054101590565b6026805460ff19166001179055601c54601d54600091612f3391611062565b612f3f57601054612f42565b60005b90506000612f666002611ff7601554611ff7866025546124b590919063ffffffff16565b90506000612f7f82602554612d5690919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110612fb157fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110612fdc57fe5b6001600160a01b03928316602091820292909201810191909152601e5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561307657818101518382015260200161305e565b505050509050019650505050505050600060405180830381600087803b15801561309f57600080fd5b505af11580156130b3573d6000803e3d6000fd5b5050505060006130cc8247612d5690919063ffffffff16565b905060006130e76130de88600261250e565b60155490612d56565b905060006130fc6002611ff78481878d6124b5565b9050600061311983611ff7601154876124b590919063ffffffff16565b9050600061313684611ff7601254886124b590919063ffffffff16565b9050600061315385611ff7601354896124b590919063ffffffff16565b9050602060009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131a557600080fd5b505af1935050505080156131b7575060015b506019546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461320a576040519150601f19603f3d011682016040523d82523d6000602084013e61320f565b606091505b5050601a546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613264576040519150601f19603f3d011682016040523d82523d6000602084013e613269565b606091505b5060009250508b15905061335557601e546018546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b50505050506040513d606081101561331757600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506026805460ff1916905550505050505050505050565b6000808261337c576064613380565b6017545b905060006133a6601654606402611ff784611fea6015548a6124b590919063ffffffff16565b905060006133c5601554611ff7601454856124b590919063ffffffff16565b905060006133d38383612d56565b306000908152600860205260409020549091506133f09082612d98565b3060009081526008602052604080822092909255601b546001600160a01b03168152205461341e9083612d98565b601b546001600160a01b0390811660009081526008602090815260409182902093909355805184815290513093928c1692600080516020613563833981519152928290030190a381156134a057601b546040805184815290516001600160a01b03928316928b1691600080516020613563833981519152919081900360200190a35b6134aa8784612d56565b9897505050505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212209cc85cea75512a9deac6666c8c7e0fec06d0be0aa26bacbeb0bbfca930f36fa364736f6c634300070400336080604052600180546001600160a01b031990811673dac17f958d2ee523a2206206994597c13d831ec7179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610ec0380380610ec0833981810160405260208110156100a057600080fd5b50516001600160a01b0381166100ca57737a250d5630b4cf539739df2c5dacb4c659f2488d6100cc565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dba806101066000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610759565b34801561026057600080fd5b506100f761075f565b34801561027557600080fd5b50610142610765565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610770565b3480156102b457600080fd5b506100f7610852565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610858565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610980565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e1565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ace565b90610b19565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b73565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b73565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ace565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b03169183915060009061059557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105bf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610651578181015183820152602001610639565b50505050905001955050505050506000604051808303818588803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b505190610ace565b6009549091506107279082610b19565b600955600854600c5461075191610748916107429085610b90565b90610be9565b600b5490610b19565b600b55505050565b600b5481565b600a5481565b61076e33610858565b565b6000546001600160a01b0316331461078757600080fd5b60045480610795575061084f565b6000805a905060005b84831080156107ac57508381105b1561084a5783600f54106107c0576000600f555b6107ec6004600f54815481106107d257fe5b6000918252602090912001546001600160a01b0316610c2b565b1561081d5761081d6004600f548154811061080357fe5b6000918252602090912001546001600160a01b0316610858565b61083261082b5a8490610ace565b8490610b19565b92505a600f805460019081019091559092500161079e565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087a5761084f565b6000610885826103e8565b9050801561097c57600a5461089a9082610b19565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109529082610b19565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b73565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f357fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aa957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c67565b90505b92915050565b600082820183811015610b10576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b13600c54610742600b5485610b9090919063ffffffff16565b600082610b9f57506000610b13565b82820282848281610bac57fe5b0414610b105760405162461bcd60e51b8152600401808060200182810382526021815260200180610d646021913960400191505060405180910390fd5b6000610b1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cfe565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b135750600e54610c60836103e8565b1192915050565b60008184841115610cf65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578181015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbb578181015183820152602001610ca3565b506000838581610d5957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220946d6654c616450f9dc39908a08815e4f243df651f537d4d6d29d6ed97c2b79264736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806383ad7994116101f2578063dd62ed3e1161010d578063f708a64f116100a0578063fe575a871161006f578063fe575a8714610ee1578063fe9fbb8014610f14578063fed0d2a114610f47578063ffb54a9914610f5c576103c3565b8063f708a64f14610e41578063f84ba65d14610e7c578063f887ea4014610eb7578063fce589d814610ecc576103c3565b8063ec72d65f116100dc578063ec72d65f14610d87578063f0b37c0414610db1578063f2fde38b14610de4578063f346bce114610e17576103c3565b8063dd62ed3e14610cd2578063df20fd4914610d0d578063e3763ded14610d3f578063e7c44c6914610d54576103c3565b8063a8aa1b3111610185578063bfe1092811610154578063bfe1092814610c2e578063c6b98c1b14610c43578063d16baeb914610c6d578063d51ed1c814610ca8576103c3565b8063a8aa1b3114610b98578063a9059cbb14610bad578063b6a5d7de14610be6578063bcc1f3e814610c19576103c3565b80638e2eee84116101c15780638e2eee8414610ac757806395d89b4114610b4457806398118cb414610b595780639d1944f514610b6e576103c3565b806383ad799414610a2457806386f6c3c114610a39578063893d20e814610a81578063896648c114610ab2576103c3565b8063313ce567116102e2578063617fe0ed1161027557806370a082311161024457806370a08231146109b2578063722b62ad146109e557806378109e54146109fa5780637d1db4a514610a0f576103c3565b8063617fe0ed14610938578063658d4b7f1461094d5780636b67c4df146109885780636ddd17131461099d576103c3565b806350db71fb116102b157806350db71fb14610874578063571ac8b0146108af5780635c85974f146108e25780635e562f3b1461090c576103c3565b8063313ce56714610773578063335f6a431461079e5780633c8e556d1461082957806344a33fd214610629576103c3565b80631ca0a28d1161035a5780632b112e49116103295780632b112e49146106c65780632d48e896146106db5780632d5945671461070b5780632f54bf6e14610740576103c3565b80631ca0a28d1461054e5780631da1db5e14610629578063201e79911461065357806323b872dd14610683576103c3565b80630d295980116103965780630d295980146104c65780631161ae39146104f4578063180b0d7e1461052457806318160ddd14610539576103c3565b80630445b667146103c857806306fdde03146103ef578063095ea7b314610479576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610f71565b60408051918252519081900360200190f35b3480156103fb57600080fd5b50610404610f77565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048557600080fd5b506104b26004803603604081101561049c57600080fd5b506001600160a01b038135169060200135610f9a565b604080519115158252519081900360200190f35b3480156104d257600080fd5b506104f2600480360360208110156104e957600080fd5b50351515611001565b005b34801561050057600080fd5b506104b26004803603604081101561051757600080fd5b5080359060200135611062565b34801561053057600080fd5b506103dd611076565b34801561054557600080fd5b506103dd61107c565b34801561055a57600080fd5b506104f26004803603606081101561057157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111600160201b831117156105ce57600080fd5b919390929091602081019035600160201b8111156105eb57600080fd5b8201836020820111156105fd57600080fd5b803590602001918460208302840111600160201b8311171561061e57600080fd5b509092509050611082565b34801561063557600080fd5b506104f26004803603602081101561064c57600080fd5b50356113cd565b34801561065f57600080fd5b506104f26004803603604081101561067657600080fd5b508035906020013561144d565b34801561068f57600080fd5b506104b2600480360360608110156106a657600080fd5b506001600160a01b038135811691602081013590911690604001356114a0565b3480156106d257600080fd5b506103dd611562565b3480156106e757600080fd5b506104f2600480360360408110156106fe57600080fd5b50803590602001356115ab565b34801561071757600080fd5b506104f26004803603604081101561072e57600080fd5b5080351515906020013560ff1661165b565b34801561074c57600080fd5b506104b26004803603602081101561076357600080fd5b50356001600160a01b03166116c4565b34801561077f57600080fd5b506107886116d8565b6040805160ff9092168252519081900360200190f35b3480156107aa57600080fd5b506104f2600480360360608110156107c157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107eb57600080fd5b8201836020820111156107fd57600080fd5b803590602001918460208302840111600160201b8311171561081e57600080fd5b9193509150356116dd565b34801561083557600080fd5b506104f26004803603608081101561084c57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166119a7565b34801561088057600080fd5b506104f26004803603604081101561089757600080fd5b506001600160a01b0381351690602001351515611a3f565b3480156108bb57600080fd5b506104b2600480360360208110156108d257600080fd5b50356001600160a01b0316611ab2565b3480156108ee57600080fd5b506104f26004803603602081101561090557600080fd5b5035611ac0565b34801561091857600080fd5b506104f26004803603602081101561092f57600080fd5b50351515611b0d565b34801561094457600080fd5b506104b2611b63565b34801561095957600080fd5b506104f26004803603604081101561097057600080fd5b506001600160a01b0381351690602001351515611b6c565b34801561099457600080fd5b506103dd611bdf565b3480156109a957600080fd5b506104b2611be5565b3480156109be57600080fd5b506103dd600480360360208110156109d557600080fd5b50356001600160a01b0316611bee565b3480156109f157600080fd5b50610788611c09565b348015610a0657600080fd5b506103dd611c17565b348015610a1b57600080fd5b506103dd611c1d565b348015610a3057600080fd5b506103dd611c23565b348015610a4557600080fd5b506104f2600480360360c0811015610a5c57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135611c29565b348015610a8d57600080fd5b50610a96611d03565b604080516001600160a01b039092168252519081900360200190f35b348015610abe57600080fd5b506104b2611d12565b348015610ad357600080fd5b506104f260048036036040811015610aea57600080fd5b810190602081018135600160201b811115610b0457600080fd5b820183602082011115610b1657600080fd5b803590602001918460208302840111600160201b83111715610b3757600080fd5b9193509150351515611d1b565b348015610b5057600080fd5b50610404611db9565b348015610b6557600080fd5b506103dd611dd7565b348015610b7a57600080fd5b506104f260048036036020811015610b9157600080fd5b5035611ddd565b348015610ba457600080fd5b50610a96611e39565b348015610bb957600080fd5b506104b260048036036040811015610bd057600080fd5b506001600160a01b038135169060200135611e48565b348015610bf257600080fd5b506104f260048036036020811015610c0957600080fd5b50356001600160a01b0316611e55565b348015610c2557600080fd5b506103dd611ebf565b348015610c3a57600080fd5b50610a96611ec5565b348015610c4f57600080fd5b506104f260048036036020811015610c6657600080fd5b5035611ed4565b348015610c7957600080fd5b506104f260048036036040811015610c9057600080fd5b506001600160a01b0381351690602001351515611f2d565b348015610cb457600080fd5b506103dd60048036036020811015610ccb57600080fd5b5035611fbd565b348015610cde57600080fd5b506103dd60048036036040811015610cf557600080fd5b506001600160a01b0381358116916020013516611ffd565b348015610d1957600080fd5b506104f260048036036040811015610d3057600080fd5b50803515159060200135612028565b348015610d4b57600080fd5b50610a96612087565b348015610d6057600080fd5b506104b260048036036020811015610d7757600080fd5b50356001600160a01b0316612096565b348015610d9357600080fd5b506104f260048036036020811015610daa57600080fd5b50356120b5565b348015610dbd57600080fd5b506104f260048036036020811015610dd457600080fd5b50356001600160a01b03166120fd565b348015610df057600080fd5b506104f260048036036020811015610e0757600080fd5b50356001600160a01b0316612161565b348015610e2357600080fd5b506104f260048036036020811015610e3a57600080fd5b5035612212565b348015610e4d57600080fd5b506104f260048036036040811015610e6457600080fd5b506001600160a01b038135169060200135151561226b565b348015610e8857600080fd5b506104f260048036036040811015610e9f57600080fd5b506001600160a01b03813516906020013515156123e4565b348015610ec357600080fd5b50610a96612457565b348015610ed857600080fd5b506103dd612466565b348015610eed57600080fd5b506104b260048036036020811015610f0457600080fd5b50356001600160a01b031661246c565b348015610f2057600080fd5b506104b260048036036020811015610f3757600080fd5b50356001600160a01b0316612481565b348015610f5357600080fd5b506103dd61249f565b348015610f6857600080fd5b506104b26124a5565b60255481565b60408051808201909152600981526805a454c444120322e360bc1b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61100a336116c4565b611044576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601f8054911515600160a01b0260ff60a01b19909216919091179055565b60008261106e83611fbd565b119392505050565b60165481565b60055490565b61108b336116c4565b6110c5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03851633146110da57600080fd5b6101f5831061111a5760405162461bcd60e51b815260040180806020018281038252602d815260200180613583602d913960400191505060405180910390fd5b8281146111585760405162461bcd60e51b81526004018080602001828103825260288152602001806134b76028913960400191505060405180910390fd5b6000805b848110156111865783838281811061117057fe5b602002919091013592909201915060010161115c565b508061119187611bee565b10156111e4576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8481101561133157611227878787848181106111ff57fe5b905060200201356001600160a01b031686868581811061121b57fe5b90506020020135612550565b50600f600087878481811061123857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611329576020546001600160a01b03166314b6ca9687878481811061127f57fe5b905060200201356001600160a01b0316600860008a8a8781811061129f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131657600080fd5b505af1925050508015611327575060015b505b6001016111e7565b506001600160a01b0386166000908152600f602052604090205460ff166113c557602080546001600160a01b03888116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b1580156113b257600080fd5b505af19250505080156113c3575060015b505b505050505050565b6113d633612481565b611415576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611448573d6000803e3d6000fd5b505050565b61145633612481565b611495576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c91909155601d55565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461154d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461152891849061261f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115588484846126b6565b90505b9392505050565b6004546000906115a69061157e906001600160a01b0316611bee565b6003546115a090611597906001600160a01b0316611bee565b60055490612d56565b90612d56565b905090565b6115b433612481565b6115f3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602054604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561164757600080fd5b505af11580156113c5573d6000803e3d6000fd5b611664336116c4565b61169e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6022805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600690565b6116e6336116c4565b611720576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038416331461173557600080fd5b61032182106117755760405162461bcd60e51b815260040180806020018281038252602d8152602001806135b0602d913960400191505060405180910390fd5b8082028061178286611bee565b10156117d5576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561191057611806868686848181106117f057fe5b905060200201356001600160a01b031685612550565b50600f600086868481811061181757fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611908576020546001600160a01b03166314b6ca9686868481811061185e57fe5b905060200201356001600160a01b03166008600089898781811061187e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118f557600080fd5b505af1925050508015611906575060015b505b6001016117d8565b506001600160a01b0385166000908152600f602052604090205460ff166119a057602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561199157600080fd5b505af19250505080156113c557505b5050505050565b6119b033612481565b6119ef576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b611a4833612481565b611a87576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ffb82600019610f9a565b611ac933612481565b611b08576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600655565b611b16336116c4565b611b50576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b60225460ff1681565b611b7533612481565b611bb4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60125481565b60245460ff1681565b6001600160a01b031660009081526008602052604090205490565b602254610100900460ff1681565b60075481565b60065481565b60115481565b611c3233612481565b611c71576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108690556011859055601284905560138390556014829055611ca282611c9c858188818c8c612d98565b90612d98565b601555601681905560048104601554106113c5576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2032352500000000604482015290519081900360640190fd5b6000546001600160a01b031690565b600a5460ff1681565b611d24336116c4565b611d5e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b82811015611db35781600b6000868685818110611d7a57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611d61565b50505050565b6040805180820190915260048152635a4c444160e01b602082015290565b60105481565b611de633612481565b611e25576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b08110611e3457600080fd5b602155565b601f546001600160a01b031681565b600061155b3384846126b6565b611e5e336116c4565b611e98576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60135481565b6020546001600160a01b031681565b611edd336116c4565b611f17576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611388816005540281611f2657fe5b0460075550565b611f36336116c4565b611f70576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600d83528184208054861682179055600e9092529091208054909216179055565b6000610ffb611fca611562565b601f54611ff790611ff090600290611fea906001600160a01b0316611bee565b906124b5565b85906124b5565b9061250e565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61203133612481565b612070576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6024805460ff191692151592909217909155602555565b601b546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205460ff161590565b6120be336116c4565b6120f8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601755565b612106336116c4565b612140576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61216a336116c4565b6121a4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61221b336116c4565b612255576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61138881600554028161226457fe5b0460065550565b61227433612481565b6122b3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906122da5750601f546001600160a01b03838116911614155b6122e357600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556123805760205460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b505050506123e0565b602080546001600160a01b03848116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561164757600080fd5b5050565b6123ed33612481565b61242c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b601e546001600160a01b031681565b60145481565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60175481565b601f54600160a01b900460ff1681565b6000826124c457506000610ffb565b828202828482816124d157fe5b041461155b5760405162461bcd60e51b81526004018080602001828103825260218152602001806135046021913960400191505060405180910390fd5b600061155b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546125a191849061261f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125d09083612d98565b6001600160a01b03808516600081815260086020908152604091829020949094558051868152905191939288169260008051602061356383398151915292918290030190a35060019392505050565b600081848411156126ae5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267357818101518382015260200161265b565b50505050905090810190601f1680156126a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60265460009060ff16156126d6576126cf848484612550565b905061155b565b6001600160a01b03841660009081526001602052604090205460ff1615801561271857506001600160a01b03831660009081526001602052604090205460ff16155b1561277257601f54600160a01b900460ff16612772576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600a5460ff16156127fe576001600160a01b0384166000908152600b602052604090205460ff161580156127bf57506001600160a01b0383166000908152600b602052604090205460ff16155b6127fe576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff1615801561283057506001600160a01b0383163014155b801561284a57506003546001600160a01b03848116911614155b80156128645750601f546001600160a01b03848116911614155b801561287e57506019546001600160a01b03848116911614155b80156128985750601a546001600160a01b03848116911614155b80156128b257506018546001600160a01b03848116911614155b80156128cc5750601b546001600160a01b03848116911614155b156129235760006128dc84611bee565b905060075483820111156129215760405162461bcd60e51b815260040180806020018281038252603e815260200180613525603e913960400191505060405180910390fd5b505b601f546001600160a01b038581169116148015612942575060225460ff165b801561296757506001600160a01b0383166000908152600e602052604090205460ff16155b156129eb576001600160a01b03831660009081526023602052604090205442116129c25760405162461bcd60e51b81526004018080602001828103825260258152602001806134df6025913960400191505060405180910390fd5b6022546001600160a01b038416600090815260236020526040902061010090910460ff16420190555b6129f58483612e57565b6129fd612ec5565b15612a0a57612a0a612f14565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612a5c91849061261f565b6001600160a01b03808616600081815260086020526040812093909355601f54909116148015612aa557506001600160a01b0385166000908152600c602052604090205460ff16155b8015612aca57506001600160a01b0384166000908152600c602052604090205460ff16155b15612ae257612adb8584600061336d565b9050612b51565b601f546001600160a01b038581169116148015612b1857506001600160a01b0385166000908152600c602052604090205460ff16155b8015612b3d57506001600160a01b0384166000908152600c602052604090205460ff16155b15612b4e57612adb8584600161336d565b50815b6001600160a01b038416600090815260086020526040902054612b749082612d98565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600f909152205460ff16612c1a57602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c0757600080fd5b505af1925050508015612c18575060015b505b6001600160a01b0384166000908152600f602052604090205460ff16612cad57602080546001600160a01b03868116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c9a57600080fd5b505af1925050508015612cab575060015b505b602054602154604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612d0057600080fd5b505af1925050508015612d11575060015b50836001600160a01b0316856001600160a01b0316600080516020613563833981519152836040518082815260200191505060405180910390a3506001949350505050565b600061155b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061261f565b60008282018381101561155b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612e415760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267357818101518382015260200161265b565b506000838581612e4d57fe5b0495945050505050565b60065481111580612e8057506001600160a01b0382166000908152600d602052604090205460ff165b6123e0576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601f546000906001600160a01b03163314801590612ee6575060265460ff16155b8015612ef4575060245460ff165b80156115a657505060255430600090815260086020526040902054101590565b6026805460ff19166001179055601c54601d54600091612f3391611062565b612f3f57601054612f42565b60005b90506000612f666002611ff7601554611ff7866025546124b590919063ffffffff16565b90506000612f7f82602554612d5690919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110612fb157fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110612fdc57fe5b6001600160a01b03928316602091820292909201810191909152601e5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561307657818101518382015260200161305e565b505050509050019650505050505050600060405180830381600087803b15801561309f57600080fd5b505af11580156130b3573d6000803e3d6000fd5b5050505060006130cc8247612d5690919063ffffffff16565b905060006130e76130de88600261250e565b60155490612d56565b905060006130fc6002611ff78481878d6124b5565b9050600061311983611ff7601154876124b590919063ffffffff16565b9050600061313684611ff7601254886124b590919063ffffffff16565b9050600061315385611ff7601354896124b590919063ffffffff16565b9050602060009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131a557600080fd5b505af1935050505080156131b7575060015b506019546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461320a576040519150601f19603f3d011682016040523d82523d6000602084013e61320f565b606091505b5050601a546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613264576040519150601f19603f3d011682016040523d82523d6000602084013e613269565b606091505b5060009250508b15905061335557601e546018546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b50505050506040513d606081101561331757600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506026805460ff1916905550505050505050505050565b6000808261337c576064613380565b6017545b905060006133a6601654606402611ff784611fea6015548a6124b590919063ffffffff16565b905060006133c5601554611ff7601454856124b590919063ffffffff16565b905060006133d38383612d56565b306000908152600860205260409020549091506133f09082612d98565b3060009081526008602052604080822092909255601b546001600160a01b03168152205461341e9083612d98565b601b546001600160a01b0390811660009081526008602090815260409182902093909355805184815290513093928c1692600080516020613563833981519152928290030190a381156134a057601b546040805184815290516001600160a01b03928316928b1691600080516020613563833981519152919081900360200190a35b6134aa8784612d56565b9897505050505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212209cc85cea75512a9deac6666c8c7e0fec06d0be0aa26bacbeb0bbfca930f36fa364736f6c63430007040033

Deployed Bytecode Sourcemap

10753:17756:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12773:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14272:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14695:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14695:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20850:94;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20850:94:0;;;;:::i;:::-;;26444:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26444:150:0;;;;;;;:::i;12055:36::-;;;;;;;;;;;;;:::i;14002:88::-;;;;;;;;;;;;;:::i;26635:990::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26635:990:0;;;;;;;;;;;;;;;-1:-1:-1;;;26635:990:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26635:990:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26635:990:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26635:990:0;;;;;;;;;;-1:-1:-1;26635:990:0;;-1:-1:-1;26635:990:0;-1:-1:-1;26635:990:0;:::i;20264:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20264:208:0;;:::i;25588:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25588:183:0;;;;;;;:::i;15210:365::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15210:365:0;;;;;;;;;;;;;;;;;:::i;26117:142::-;;;;;;;;;;;;;:::i;25780:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25780:183:0;;;;;;;:::i;21211:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21211:164:0;;;;;;;;;;;:::i;2772:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2772:103:0;-1:-1:-1;;;;;2772:103:0;;:::i;14096:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27634:807;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27634:807:0;;;;;;;;;;;;;;;-1:-1:-1;;;27634:807:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27634:807:0;;;;;;;;;;;;-1:-1:-1;27634:807:0;-1:-1:-1;27634:807:0;;:::i;25028:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25028:386:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;24283:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24283:130:0;;;;;;;;;;:::i;14920:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14920:116:0;-1:-1:-1;;;;;14920:116:0;;:::i;15948:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15948:96:0;;:::i;23687:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23687:99:0;;;;:::i;12588:38::-;;;;;;;;;;;;;:::i;24017:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24017:120:0;;;;;;;;;;:::i;11823:34::-;;;;;;;;;;;;;:::i;12736:30::-;;;;;;;;;;;;;:::i;14442:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14442:105:0;-1:-1:-1;;;;;14442:105:0;;:::i;12633:39::-;;;;;;;;;;;;;:::i;11266:61::-;;;;;;;;;;;;;:::i;11201:58::-;;;;;;;;;;;;;:::i;11782:34::-;;;;;;;;;;;;;:::i;24422:597::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24422:597:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14358:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14358:78:0;;;;;;;;;;;;;;11453:32;;;;;;;;;;;;;:::i;23795:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23795:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23795:210:0;;;;;;;;;;;;-1:-1:-1;23795:210:0;-1:-1:-1;23795:210:0;;;;:::i;14182:84::-;;;;;;;;;;;;;:::i;11741:34::-;;;;;;;;;;;;;:::i;25972:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25972:136:0;;:::i;12433:19::-;;;;;;;;;;;;;:::i;15045:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15045:156:0;;;;;;;;:::i;2563:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2563:94:0;-1:-1:-1;;;;;2563:94:0;;:::i;11864:34::-;;;;;;;;;;;;;:::i;12503:38::-;;;;;;;;;;;;;:::i;15584:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15584:177:0;;:::i;20952:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20952:211:0;;;;;;;;;;:::i;26268:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26268:167:0;;:::i;14553:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14553:133:0;;;;;;;;;;:::i;25423:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25423:156:0;;;;;;;;;:::i;12277:30::-;;;;;;;;;;;;;:::i;19156:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19156:114:0;-1:-1:-1;;;;;19156:114:0;;:::i;20705:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20705:113:0;;:::i;2666:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2666:97:0;-1:-1:-1;;;;;2666:97:0;;:::i;3000:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3000:173:0;-1:-1:-1;;;;;3000:173:0;;:::i;15767:172::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15767:172:0;;:::i;23331:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23331:347:0;;;;;;;;;;:::i;24146:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24146:128:0;;;;;;;;;;:::i;12402:24::-;;;;;;;;;;;;;:::i;11905:34::-;;;;;;;;;;;;;:::i;11492:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11492:46:0;-1:-1:-1;;;;;11492:46:0;;:::i;2884:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2884:107:0;-1:-1:-1;;;;;2884:107:0;;:::i;12101:36::-;;;;;;;;;;;;;:::i;12462:31::-;;;;;;;;;;;;;:::i;12773:55::-;;;;:::o;14272:80::-;14344:5;;;;;;;;;;;;-1:-1:-1;;;14344:5:0;;;;14272:80;:::o;14695:216::-;14799:10;14770:4;14787:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14787:32:0;;;;;;;;;;;:41;;;14844:37;;;;;;;14770:4;;14787:32;;14799:10;;14844:37;;;;;;;;-1:-1:-1;14899:4:0;14695:216;;;;;:::o;20850:94::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;20915:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;20915:21:0::1;-1:-1:-1::0;;;;20915:21:0;;::::1;::::0;;;::::1;::::0;;20850:94::o;26444:150::-;26524:4;26580:6;26548:29;26568:8;26548:19;:29::i;:::-;:38;;26444:150;-1:-1:-1;;;26444:150:0:o;12055:36::-;;;;:::o;14002:88::-;14075:12;;14002:88;:::o;26635:990::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26767:16:0;::::1;26773:10;26767:16;26759:25;;;::::0;::::1;;26822:3;26803:22:::0;::::1;26795:79;;;;-1:-1:-1::0;;;26795:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26893:33:::0;;::::1;26885:85;;;;-1:-1:-1::0;;;26885:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26984:12;27018:6:::0;27014:90:::1;27028:20:::0;;::::1;27014:90;;;27083:6;;27090:1;27083:9;;;;;;;;;::::0;;;::::1;;27076:16:::0;;;::::1;::::0;-1:-1:-1;27050:3:0::1;;27014:90;;;;27144:4;27125:15;27135:4;27125:9;:15::i;:::-;:23;;27117:63;;;::::0;;-1:-1:-1;;;27117:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27198:6;27194:269;27208:20:::0;;::::1;27194:269;;;27249:43;27264:4;27269:9;;27279:1;27269:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;27269:12:0::1;27282:6;;27289:1;27282:9;;;;;;;;;;;;;27249:14;:43::i;:::-;;27311:16;:30;27328:9;;27338:1;27328:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;27328:12:0::1;27311:30:::0;;-1:-1:-1;27311:30:0;::::1;::::0;;;;;;-1:-1:-1;27311:30:0;;::::1;;27307:145;;27366:11;::::0;-1:-1:-1;;;;;27366:11:0::1;:20;27387:9:::0;;27397:1;27387:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27387:12:0::1;27401:9;:23;27411:9;;27421:1;27411:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;27411:12:0::1;-1:-1:-1::0;;;;;27401:23:0::1;-1:-1:-1::0;;;;;27401:23:0::1;;;;;;;;;;;;;27366:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;27366:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27362:75:::0;::::1;27230:3;;27194:269;;;-1:-1:-1::0;;;;;;27509:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;27505:113;;27552:11;::::0;;-1:-1:-1;;;;;27579:15:0;;::::1;27552:11;27579:15:::0;;;:9:::1;:15:::0;;;;;;;;27552:43;;-1:-1:-1;;;27552:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;27548:59:::0;::::1;2444:1;26635:990:::0;;;;;:::o;20264:208::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;20400:64:::1;::::0;20368:21:::1;::::0;20408:10:::1;::::0;20460:3:::1;20429:28:::0;;::::1;:34;20400:64:::0;::::1;;;::::0;::::1;::::0;;;20429:34;20408:10;20400:64;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2545:1;20264:208:::0;:::o;25588:183::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;25686:15:::1;:25:::0;;;;25722:26:::1;:41:::0;25588:183::o;15210:365::-;-1:-1:-1;;;;;15330:19:0;;15310:4;15330:19;;;:11;:19;;;;;;;;15350:10;15330:31;;;;;;;;-1:-1:-1;;15330:46:0;15327:180;;15426:69;;;;;;;;;;;-1:-1:-1;;;15426:69:0;;;;;;;;-1:-1:-1;;;;;15426:19:0;;-1:-1:-1;15426:19:0;;;:11;:19;;;;;15446:10;15426:31;;;;;;;;;;:69;;15462:6;;15426:35;:69::i;:::-;-1:-1:-1;;;;;15392:19:0;;;;;;:11;:19;;;;;;;;15412:10;15392:31;;;;;;;:103;15327:180;15527:40;15541:6;15549:9;15560:6;15527:13;:40::i;:::-;15520:47;;15210:365;;;;;;:::o;26117:142::-;26245:4;;26170:7;;26197:54;;26235:15;;-1:-1:-1;;;;;26245:4:0;26235:9;:15::i;:::-;26224:4;;26197:33;;26214:15;;-1:-1:-1;;;;;26224:4:0;26214:9;:15::i;:::-;26197:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26190:61;;26117:142;:::o;25780:183::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;25890:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;25890:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;25890:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;21211:164:::0;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;21295:18:::1;:28:::0;;-1:-1:-1;;21295:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;21334:33:0::1;21295:28;;21334:33:::0;;;::::1;::::0;;;::::1;;::::0;;21211:164::o;2772:103::-;2827:4;2862:5;-1:-1:-1;;;;;2862:5:0;;;2851:16;;;;2772:103::o;14096:80::-;11130:1;14096:80;:::o;27634:807::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27761:16:0;::::1;27767:10;27761:16;27753:25;;;::::0;::::1;;27816:3;27797:22:::0;::::1;27789:79;;;;-1:-1:-1::0;;;27789:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27897:25:::0;;::::1;::::0;27944:15:::1;27954:4:::0;27944:9:::1;:15::i;:::-;:23;;27936:63;;;::::0;;-1:-1:-1;;;27936:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28017:6;28013:266;28027:20:::0;;::::1;28013:266;;;28068:40;28083:4;28088:9;;28098:1;28088:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28088:12:0::1;28101:6;28068:14;:40::i;:::-;;28127:16;:30;28144:9;;28154:1;28144:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;28144:12:0::1;28127:30:::0;;-1:-1:-1;28127:30:0;::::1;::::0;;;;;;-1:-1:-1;28127:30:0;;::::1;;28123:145;;28182:11;::::0;-1:-1:-1;;;;;28182:11:0::1;:20;28203:9:::0;;28213:1;28203:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28203:12:0::1;28217:9;:23;28227:9;;28237:1;28227:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28227:12:0::1;-1:-1:-1::0;;;;;28217:23:0::1;-1:-1:-1::0;;;;;28217:23:0::1;;;;;;;;;;;;;28182:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;28182:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;28178:75:::0;::::1;28049:3;;28013:266;;;-1:-1:-1::0;;;;;;28325:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;28321:113;;28368:11;::::0;;-1:-1:-1;;;;;28395:15:0;;::::1;28368:11;28395:15:::0;;;:9:::1;:15:::0;;;;;;;;28368:43;;-1:-1:-1;;;28368:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;28364:59;2444:1;27634:807:::0;;;;:::o;25028:386::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;25205:21:::1;:46:::0;;-1:-1:-1;;;;;25205:46:0;;::::1;-1:-1:-1::0;;;;;;25205:46:0;;::::1;;::::0;;;25262:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25317:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25372:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;25028:386::o;24283:130::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24372:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24372:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24283:130::o;14920:116::-;14975:4;14999:29;15007:7;-1:-1:-1;;14999:7:0;:29::i;15948:96::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;16015:12:::1;:21:::0;15948:96::o;23687:99::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;23755:13:::1;:23:::0;;-1:-1:-1;;23755:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23687:99::o;12588:38::-;;;;;;:::o;24017:120::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24101:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24101:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24017:120::o;11823:34::-;;;;:::o;12736:30::-;;;;;;:::o;14442:105::-;-1:-1:-1;;;;;14526:18:0;14508:7;14526:18;;;:9;:18;;;;;;;14442:105::o;12633:39::-;;;;;;;;;:::o;11266:61::-;;;;:::o;11201:58::-;;;;:::o;11782:34::-;;;;:::o;24422:597::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;24606:12:::1;:28:::0;;;24645:13:::1;:30:::0;;;24686:12:::1;:28:::0;;;24725:12:::1;:28:::0;;;24764:7:::1;:18:::0;;;24804:85:::1;24774:8:::0;24804:71:::1;24740:13:::0;24804:71;24701:13;24804:71;24621:13;24661:14;24804:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:85::-;24793:8;:96:::0;24900:14:::1;:32:::0;;;24977:1:::1;24917:15:::0;24962:16:::1;24951:8;;:27;24943:68;;;::::0;;-1:-1:-1;;;24943:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;14358:78:::0;14410:7;14428:5;-1:-1:-1;;;;;14428:5:0;14358:78;:::o;11453:32::-;;;;;;:::o;23795:210::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;23897:9:::1;23892:106;23908:20:::0;;::::1;23892:106;;;23980:6;23950:13;:27;23964:9;;23974:1;23964:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;23964:12:0::1;23950:27:::0;;-1:-1:-1;23950:27:0;::::1;::::0;;;;;;-1:-1:-1;23950:27:0;:36;;-1:-1:-1;;23950:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23930:3:0::1;23892:106;;;;23795:210:::0;;;:::o;14182:84::-;14256:7;;;;;;;;;;;;-1:-1:-1;;;14256:7:0;;;;14182:84;:::o;11741:34::-;;;;:::o;25972:136::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;26062:6:::1;26056:3;:12;26048:21;;;::::0;::::1;;26080:14;:20:::0;25972:136::o;12433:19::-;;;-1:-1:-1;;;;;12433:19:0;;:::o;15045:156::-;15125:4;15149:44;15163:10;15175:9;15186:6;15149:13;:44::i;2563:94::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2623:19:0::1;;::::0;;;2645:4:::1;2623:19;::::0;;;;;;;:26;;-1:-1:-1;;2623:26:0::1;::::0;;::::1;::::0;;2563:94::o;11864:34::-;;;;:::o;12503:38::-;;;-1:-1:-1;;;;;12503:38:0;;:::o;15584:177::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;15749:4:::1;15721:23;15706:12;;:38;15705:48;;;;;;15687:15;:66:::0;-1:-1:-1;15584:177:0:o;20952:211::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21031:21:0;;::::1;;::::0;;;:11:::1;:21;::::0;;;;;;;:31;;;::::1;;-1:-1:-1::0;;21031:31:0;;::::1;::::0;::::1;::::0;;;21073:15:::1;:25:::0;;;;;:35;;;::::1;::::0;::::1;::::0;;21119:16:::1;:26:::0;;;;;;:36;;;;::::1;;::::0;;20952:211::o;26268:167::-;26336:7;26363:64;26404:22;:20;:22::i;:::-;26386:4;;26363:36;;26376:22;;26396:1;;26376:15;;-1:-1:-1;;;;;26386:4:0;26376:9;:15::i;:::-;:19;;:22::i;:::-;26363:8;;:12;:36::i;:::-;:40;;:64::i;14553:133::-;-1:-1:-1;;;;;14655:19:0;;;14637:7;14655:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14553:133::o;25423:156::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;25515:11:::1;:22:::0;;-1:-1:-1;;25515:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25548:13:::1;:23:::0;25423:156::o;12277:30::-;;;-1:-1:-1;;;;;12277:30:0;;:::o;19156:114::-;-1:-1:-1;;;;;19243:19:0;19218:4;19243:19;;;:11;:19;;;;;;;;19242:20;;19156:114::o;20705:113::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;20783:14:::1;:27:::0;20705:113::o;2666:97::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2728:19:0::1;2750:5;2728:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2728:27:0::1;::::0;;2666:97::o;3000:173::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;3076:5:::1;:11:::0;;-1:-1:-1;;;;;;3076:11:0::1;-1:-1:-1::0;;;;;3076:11:0;::::1;::::0;;::::1;::::0;;3098:19;;;-1:-1:-1;3098:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3098:26:0::1;::::0;;::::1;::::0;;;3140:25;;;;;;;::::1;::::0;;;;;;;;;::::1;3000:173:::0;:::o;15767:172::-;2412:19;2420:10;2412:7;:19::i;:::-;2404:38;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;-1:-1:-1;;;2404:38:0;;;;;;;;;;;;;;;15927:4:::1;15898:24;15883:12;;:39;15882:49;;;;;;15867:12;:64:::0;-1:-1:-1;15767:172:0:o;23331:347::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23428:23:0;::::1;23446:4;23428:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23465:4:0::1;::::0;-1:-1:-1;;;;;23455:14:0;;::::1;23465:4:::0;::::1;23455:14;;23428:41;23420:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23481:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23481:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23525:146:::1;;23550:11;::::0;:31:::1;::::0;;-1:-1:-1;;;23550:31:0;;-1:-1:-1;;;;;23550:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23525:146;;;23612:11;::::0;;-1:-1:-1;;;;;23641:17:0;;::::1;23612:11;23641:17:::0;;;:9:::1;:17:::0;;;;;;;;23612:47;;-1:-1:-1;;;23612:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;23525:146;23331:347:::0;;:::o;24146:128::-;2503:24;2516:10;2503:12;:24::i;:::-;2495:48;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;-1:-1:-1;;;2495:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24234:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24234:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24146:128::o;12402:24::-;;;-1:-1:-1;;;;;12402:24:0;;:::o;11905:34::-;;;;:::o;11492:46::-;;;;;;;;;;;;;;;:::o;2884:107::-;-1:-1:-1;;;;;2964:19:0;2940:4;2964:19;;;:14;:19;;;;;;;;;2884:107::o;12101:36::-;;;;:::o;12462:31::-;;;-1:-1:-1;;;12462:31:0;;;;;:::o;636:252::-;694:7;718:6;714:47;;-1:-1:-1;748:1:0;741:8;;714:47;786:5;;;790:1;786;:5;:1;810:5;;;;;:10;802:56;;;;-1:-1:-1;;;802:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;894:132;952:7;979:39;983:1;986;979:39;;;;;;;;;;;;;;;;;:3;:39::i;18642:330::-;18772:53;;;;;;;;;;;-1:-1:-1;;;18772:53:0;;;;;;;;-1:-1:-1;;;;;18772:17:0;;18735:4;18772:17;;;:9;:17;;;;;;;:53;;18794:6;;18772:21;:53::i;:::-;-1:-1:-1;;;;;18752:17:0;;;;;;;:9;:17;;;;;;:73;;;;18859:20;;;;;;;:32;;18884:6;18859:24;:32::i;:::-;-1:-1:-1;;;;;18836:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;18907:35;;;;;;;18836:20;;18907:35;;;;-1:-1:-1;;;;;;;;;;;18907:35:0;;;;;;;;-1:-1:-1;18960:4:0;18642:330;;;;;:::o;437:193::-;523:7;559:12;551:6;;;;543:29;;;;-1:-1:-1;;;543:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;595:5:0;;;437:193::o;16056:2577::-;16168:6;;16148:4;;16168:6;;16165:63;;;16184:41;16199:6;16207:9;16218:6;16184:14;:41::i;:::-;16177:48;;;;16165:63;-1:-1:-1;;;;;16245:22:0;;;;;;:14;:22;;;;;;;;16244:23;:53;;;;-1:-1:-1;;;;;;16272:25:0;;;;;;:14;:25;;;;;;;;16271:26;16244:53;16241:127;;;16321:11;;-1:-1:-1;;;16321:11:0;;;;16313:43;;;;;-1:-1:-1;;;16313:43:0;;;;;;;;;;;;-1:-1:-1;;;16313:43:0;;;;;;;;;;;;;;;16406:13;;;;16403:118;;;-1:-1:-1;;;;;16444:21:0;;;;;;:13;:21;;;;;;;;16443:22;:51;;;;-1:-1:-1;;;;;;16470:24:0;;;;;;:13;:24;;;;;;;;16469:25;16443:51;16435:74;;;;;-1:-1:-1;;;16435:74:0;;;;;;;;;;;;-1:-1:-1;;;16435:74:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16542:22:0;;;;;;:14;:22;;;;;;;;16541:23;:53;;;;-1:-1:-1;;;;;;16568:26:0;;16589:4;16568:26;;16541:53;:84;;;;-1:-1:-1;16620:4:0;;-1:-1:-1;;;;;16599:26:0;;;16620:4;;16599:26;;16541:84;:105;;;;-1:-1:-1;16642:4:0;;-1:-1:-1;;;;;16629:17:0;;;16642:4;;16629:17;;16541:105;:142;;;;-1:-1:-1;16663:20:0;;-1:-1:-1;;;;;16650:33:0;;;16663:20;;16650:33;;16541:142;:179;;;;-1:-1:-1;16700:20:0;;-1:-1:-1;;;;;16687:33:0;;;16700:20;;16687:33;;16541:179;:218;;;;-1:-1:-1;16738:21:0;;-1:-1:-1;;;;;16725:34:0;;;16738:21;;16725:34;;16541:218;:250;;;;-1:-1:-1;16776:15:0;;-1:-1:-1;;;;;16763:28:0;;;16776:15;;16763:28;;16541:250;16537:442;;;16807:18;16828:20;16838:9;16828;:20::i;:::-;16807:41;;16896:15;;16885:6;16872:10;:19;16871:40;;16863:114;;;;-1:-1:-1;;;16863:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16537:442;;17006:4;;-1:-1:-1;;;;;16996:14:0;;;17006:4;;16996:14;:45;;;;-1:-1:-1;17023:18:0;;;;16996:45;:90;;;;-1:-1:-1;;;;;;17059:27:0;;;;;;:16;:27;;;;;;;;17058:28;16996:90;16992:295;;;-1:-1:-1;;;;;17111:24:0;;;;;;:13;:24;;;;;;17138:15;-1:-1:-1;17103:91:0;;;;-1:-1:-1;;;17103:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17254:21;;-1:-1:-1;;;;;17209:24:0;;;;;;:13;:24;;;;;17254:21;;;;;;17236:15;:39;17209:66;;16992:295;17341:28;17354:6;17362;17341:12;:28::i;:::-;17386:16;:14;:16::i;:::-;17383:35;;;17405:10;:8;:10::i;:::-;17478:53;;;;;;;;;;;-1:-1:-1;;;17478:53:0;;;;;;;;-1:-1:-1;;;;;17478:17:0;;-1:-1:-1;17478:17:0;;;:9;:17;;;;;;;;:53;;17500:6;;17478:21;:53::i;:::-;-1:-1:-1;;;;;17458:17:0;;;;;;;:9;:17;;;;;:73;;;;17600:4;;;;;17590:14;:38;;;;-1:-1:-1;;;;;;17609:19:0;;;;;;:11;:19;;;;;;;;17608:20;17590:38;:65;;;;-1:-1:-1;;;;;;17633:22:0;;;;;;:11;:22;;;;;;;;17632:23;17590:65;17587:365;;;17688:32;17696:6;17704;17713:5;17688:7;:32::i;:::-;17671:49;;17587:365;;;17765:4;;-1:-1:-1;;;;;17752:17:0;;;17765:4;;17752:17;:41;;;;-1:-1:-1;;;;;;17774:19:0;;;;;;:11;:19;;;;;;;;17773:20;17752:41;:68;;;;-1:-1:-1;;;;;;17798:22:0;;;;;;:11;:22;;;;;;;;17797:23;17752:68;17749:203;;;17854:31;17862:6;17870;17879:4;17854:7;:31::i;17749:203::-;-1:-1:-1;17934:6:0;17749:203;-1:-1:-1;;;;;18135:20:0;;;;;;:9;:20;;;;;;:40;;18160:14;18135:24;:40::i;:::-;-1:-1:-1;;;;;18112:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18222:24;;;;;:16;:24;;;;;;;18218:119;;18267:11;;;-1:-1:-1;;;;;18296:17:0;;;18267:11;18296:17;;;:9;:17;;;;;;;;18267:47;;-1:-1:-1;;;18267:47:0;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;18263:63;;-1:-1:-1;;;;;18354:27:0;;;;;;:16;:27;;;;;;;;18350:128;;18402:11;;;-1:-1:-1;;;;;18434:20:0;;;18402:11;18434:20;;;:9;:20;;;;;;;;18402:53;;-1:-1:-1;;;18402:53:0;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;18398:69;;18495:11;;18515:14;;18495:35;;;-1:-1:-1;;;;;;18495:35:0;;;;;;;;;;-1:-1:-1;;;;;18495:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;18491:51;18577:9;-1:-1:-1;;;;;18560:43:0;18569:6;-1:-1:-1;;;;;18560:43:0;-1:-1:-1;;;;;;;;;;;18588:14:0;18560:43;;;;;;;;;;;;;;;;;;-1:-1:-1;18621:4:0;;16056:2577;-1:-1:-1;;;;16056:2577:0:o;295:136::-;353:7;380:43;384:1;387;380:43;;;;;;;;;;;;;;;;;:3;:43::i;107:182::-;165:7;197:5;;;221:6;;;;213:46;;;;;-1:-1:-1;;;213:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1032:189;1118:7;1153:12;1146:5;1138:28;;;;-1:-1:-1;;;1138:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1177:9;1193:1;1189;:5;;;;;;;1032:189;-1:-1:-1;;;;;1032:189:0:o;18981:166::-;19078:12;;19068:6;:22;;:49;;;-1:-1:-1;;;;;;19094:23:0;;;;;;:15;:23;;;;;;;;19068:49;19060:79;;;;;-1:-1:-1;;;19060:79:0;;;;;;;;;;;;-1:-1:-1;;;19060:79:0;;;;;;;;;;;;;;20058:197;20145:4;;20107;;-1:-1:-1;;;;;20145:4:0;20131:10;:18;;;;:38;;-1:-1:-1;20163:6:0;;;;20162:7;20131:38;:62;;;;-1:-1:-1;20182:11:0;;;;20131:62;:116;;;;-1:-1:-1;;20234:13:0;;20224:4;20206:24;;;;:9;:24;;;;;;:41;;;20058:197::o;21384:1935::-;12877:6;:13;;-1:-1:-1;;12877:13:0;12886:4;12877:13;;;21479:15:::1;::::0;21496:26:::1;::::0;12877:6;;21463:60:::1;::::0;:15:::1;:60::i;:::-;:79;;21530:12;;21463:79;;;21526:1;21463:79;21433:109;;21553:23;21579:59;21636:1;21579:52;21622:8;;21579:38;21597:19;21579:13;;:17;;:38;;;;:::i;:59::-;21553:85;;21649:20;21672:34;21690:15;21672:13;;:17;;:34;;;;:::i;:::-;21744:16;::::0;;21758:1:::1;21744:16:::0;;;21720:21:::1;21744:16:::0;;::::1;::::0;;21649:57;;-1:-1:-1;21744:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21744:16:0::1;21720:40;;21789:4;21771;21776:1;21771:7;;;;;;;;-1:-1:-1::0;;;;;21771:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21815:4:::1;::::0;21805:7;;21815:4;::::1;::::0;21805;;21815;;21805:7;::::1;;;;;-1:-1:-1::0;;;;;21805:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;21892:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21892:188:0;;::::1;::::0;::::1;::::0;;;21833:21:::1;21892:188:::0;;;;;;22034:4:::1;21892:188:::0;;;;;;22054:15:::1;21892:188:::0;;;;;;;;;;;;;;;;;;;;;21857:21:::1;::::0;21892:6;;;::::1;::::0;:57:::1;::::0;21964:12;;21833:21;;22007:4;;21892:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;21833:21;21892:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22094:17;22114:40;22140:13;22114:21;:25;;:40;;;;:::i;:::-;22094:60:::0;-1:-1:-1;22168:19:0::1;22190:40;22203:26;:19:::0;22227:1:::1;22203:23;:26::i;:::-;22190:8;::::0;;:12:::1;:40::i;:::-;22168:62:::0;-1:-1:-1;22244:26:0::1;22273:58;22329:1;22273:51;22168:62:::0;22273:51;:9;22287:19;22273:13:::1;:34::i;:58::-;22244:87;;22342:27;22372:45;22405:11;22372:28;22386:13;;22372:9;:13;;:28;;;;:::i;:45::-;22342:75;;22428:26;22457:44;22489:11;22457:27;22471:12;;22457:9;:13;;:27;;;;:::i;:44::-;22428:73;;22512:20;22535:44;22567:11;22535:27;22549:12;;22535:9;:13;;:27;;;;:::i;:44::-;22512:67;;22597:11;;;;;;;;;-1:-1:-1::0;;;;;22597:11:0::1;-1:-1:-1::0;;;;;22597:19:0::1;;22624;22597:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22593:65:::0;22697:20:::1;::::0;22689:77:::1;::::0;22669:15:::1;::::0;-1:-1:-1;;;;;22697:20:0::1;::::0;22756:5:::1;::::0;22731:18;;22669:15;22689:77;22669:15;22689:77;22731:18;22697:20;22756:5;22689:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22801:20:0::1;::::0;22793:71:::1;::::0;22668:98;;-1:-1:-1;;;;;;22801:20:0::1;::::0;22854:5:::1;::::0;22835:12;;22801:20:::1;22793:71:::0;22801:20;22793:71;22835:12;22801:20;22854:5;22793:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22931:5:0::1;::::0;-1:-1:-1;;22953:19:0;;;-1:-1:-1;22950:362:0::1;;22988:6;::::0;23162:21:::1;::::0;22988:244:::1;::::0;;-1:-1:-1;;;22988:244:0;;23064:4:::1;22988:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;23162:21:0;;::::1;22988:244:::0;;;;23202:15:::1;22988:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;23018:18;;22988:244;;;;;::::1;::::0;;;;;;;;;23018:18;22988:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;22988:244:0;23252:48;;;;;22988:244:::1;23252:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;22950:362;-1:-1:-1::0;;12895:6:0;:14;;-1:-1:-1;;12895:14:0;;;-1:-1:-1;;;;;;;;;;21384:1935:0:o;19279:770::-;19359:7;19382:18;19403:6;:29;;19429:3;19403:29;;;19412:14;;19403:29;19382:50;;19443:17;19463:62;19504:14;;19521:3;19504:20;19463:36;19488:10;19463:20;19474:8;;19463:6;:10;;:20;;;;:::i;:62::-;19443:82;;19543:18;19564:36;19591:8;;19564:22;19578:7;;19564:9;:13;;:22;;;;:::i;:36::-;19543:57;-1:-1:-1;19611:22:0;19636:25;:9;19543:57;19636:13;:25::i;:::-;19720:4;19702:24;;;;:9;:24;;;;;;19611:50;;-1:-1:-1;19702:44:0;;19611:50;19702:28;:44::i;:::-;19693:4;19675:24;;;;:9;:24;;;;;;:71;;;;19796:15;;-1:-1:-1;;;;;19796:15:0;19786:26;;;;:42;;19817:10;19786:30;:42::i;:::-;19767:15;;-1:-1:-1;;;;;19767:15:0;;;19757:26;;;;:9;:26;;;;;;;;;:71;;;;19844:47;;;;;;;19869:4;;19844:47;;;;-1:-1:-1;;;;;;;;;;;19844:47:0;;;;;;;19908:14;;19905:95;;19960:15;;19943:45;;;;;;;;-1:-1:-1;;;;;19960:15:0;;;;19943:45;;;-1:-1:-1;;;;;;;;;;;19943:45:0;;;;;;;;;19905:95;20020:21;:6;20031:9;20020:10;:21::i;:::-;20013:28;19279:770;-1:-1:-1;;;;;;;;19279:770:0:o

Swarm Source

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