ETH Price: $3,478.24 (+0.85%)

Token

Hay Reflections (HAYR)
 

Overview

Max Total Supply

1,000,000,000 HAYR

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.691141019324163567 HAYR

Value
$0.00
0x1783550a72c3e92b4850c7f9105e5177eca0ecc0
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:
hayr

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-20
*/

/*

3% HAY reflections
1% Marketing

Socials coming soon

t.me/hayisreflecting

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.13;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

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


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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

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

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

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


contract HayReflections is IHayReflections {

    using SafeMath for uint256;
    address _token;

    address public HAY;

    IDEXRouter router;

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

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

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

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

    uint256 public currentIndex;
    bool initialized;

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

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

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

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

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

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

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

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

    function deposit() public payable override {

        uint256 balanceBefore = IERC20(HAY).balanceOf(address(this));

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

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

        uint256 amount = IERC20(HAY).balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

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

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

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

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

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

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

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

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

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

    address public HAY = 0xfA3E941D1F6B7b10eD84A0C211bfA8aeE907965e; //HAY CA

    string private constant _name = "Hay Reflections";
    string private constant _symbol = "HAYR";
    uint8 private constant _decimals = 18;
    
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);

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

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

    bool public antiBot = true;

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

    uint256 public launchedAt;
    address public lpWallet = DEAD;

    uint256 public buyFee = 29;
    uint256 public sellFee = 29;

    uint256 public toReflections = 75;
    uint256 public toLiquidity = 0;
    uint256 public toMarketing = 25;

    uint256 public allocationSum = 100;

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

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    HayReflections public hayReflections;
    uint256 public hayReflectionsGas = 0;

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

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

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

        hayReflections = new HayReflections();
        
        isFeeExempt[owner()] = true;
        isFeeExempt[devWallet] = true;            

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

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


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

    receive() external payable { }


    function setBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }      

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {

        buyFee = newBuyFee;
        sellFee = newSellFee;
    } 
    
    function changeFeeAllocation(uint256 newRewardFee, uint256 newLpFee, uint256 newMarketingFee) external onlyOwner {
        toReflections = newRewardFee;
        toLiquidity = newLpFee;
        toMarketing = newMarketingFee;
    }

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

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

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

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

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

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

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

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

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

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

    function changeHayReflectionsGas(uint256 newGas) external onlyOwner {
        hayReflectionsGas = newGas;
    }           

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

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

        approve(address(this), tokenAmount);

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

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

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

        swapTokensForEth(amountToSwap);

        uint256 totalEthBalance = address(this).balance;
        uint256 ethForHAY = totalEthBalance.mul(toReflections).div(100);
        uint256 ethForDev = totalEthBalance.mul(toMarketing).div(100);
        uint256 ethForLiquidity = totalEthBalance.mul(toLiquidity).div(100).div(2);
      
        if (totalEthBalance > 0){
            payable(devWallet).transfer(ethForDev);
        }
        
        try hayReflections.deposit{value: ethForHAY}() {} catch {}
        
        if (tokensForLiquidity > 0){
            addLiquidity(tokensForLiquidity, ethForLiquidity);
        }
    }

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

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

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

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

    function getHAY() external {
        hayReflections.gibTokens(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"HAY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeHayReflectionsGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHAY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hayReflections","outputs":[{"internalType":"contract HayReflections","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hayReflectionsGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273fa3e941d1f6b7b10ed84a0c211bfa8aee907965e600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000069919062000e86565b633b9aca006200007a919062000ed7565b60025561dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff021916908315150217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d600f55601d601055604b601155600060125560196013556064601455737ef183c172c4eefd3e77b2bc39fe77a751cca069601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506000601b556200024b606460025462000bf360201b620028241790919060201c565b601c556200026b603260025462000bf360201b620028241790919060201c565b601d556200028c61019060025462000bf360201b620028241790919060201c565b601e553480156200029c57600080fd5b506000620002af62000c4560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062000fa2565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050a919062000fa2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200056892919062000fe5565b6020604051808303816000875af115801562000588573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ae919062000fa2565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620006bf9062000cde565b604051809103906000f080158015620006dc573d6000803e3d6000fd5b50601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60006200073362000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200096062000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002546003600062000b3662000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b8462000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000be5919062001023565b60405180910390a36200116f565b600062000c3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c7660201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb79190620010e4565b60405180910390fd5b506000838562000cd1919062001137565b9050809150509392505050565b61204c8062005fc083390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d7a5780860481111562000d525762000d5162000cec565b5b600185161562000d625780820291505b808102905062000d728562000d1b565b945062000d32565b94509492505050565b60008262000d95576001905062000e68565b8162000da5576000905062000e68565b816001811462000dbe576002811462000dc95762000dff565b600191505062000e68565b60ff84111562000dde5762000ddd62000cec565b5b8360020a91508482111562000df85762000df762000cec565b5b5062000e68565b5060208310610133831016604e8410600b841016171562000e395782820a90508381111562000e335762000e3262000cec565b5b62000e68565b62000e48848484600162000d28565b9250905081840481111562000e625762000e6162000cec565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e938262000e6f565b915062000ea08362000e79565b925062000ecf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d83565b905092915050565b600062000ee48262000e6f565b915062000ef18362000e6f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f2d5762000f2c62000cec565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f6a8262000f3d565b9050919050565b62000f7c8162000f5d565b811462000f8857600080fd5b50565b60008151905062000f9c8162000f71565b92915050565b60006020828403121562000fbb5762000fba62000f38565b5b600062000fcb8482850162000f8b565b91505092915050565b62000fdf8162000f5d565b82525050565b600060408201905062000ffc600083018562000fd4565b6200100b602083018462000fd4565b9392505050565b6200101d8162000e6f565b82525050565b60006020820190506200103a600083018462001012565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200107c5780820151818401526020810190506200105f565b838111156200108c576000848401525b50505050565b6000601f19601f8301169050919050565b6000620010b08262001040565b620010bc81856200104b565b9350620010ce8185602086016200105c565b620010d98162001092565b840191505092915050565b60006020820190508181036000830152620011008184620010a3565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011448262000e6f565b9150620011518362000e6f565b92508262001164576200116362001108565b5b828204905092915050565b614e41806200117f6000396000f3fe6080604052600436106103905760003560e01c80637dfcbe34116101dc578063c45a015511610102578063f2fde38b116100a0578063f8ebf19b1161006f578063f8ebf19b14610d0b578063fabe628314610d36578063ff23c9c614610d5f578063ffb54a9914610d8a57610397565b8063f2fde38b14610c63578063f708a64f14610c8c578063f887ea4014610cb5578063f8b45b0514610ce057610397565b8063caa5581b116100dc578063caa5581b14610ba9578063ce847a6d14610bd4578063d920334e14610bfd578063dd62ed3e14610c2657610397565b8063c45a015514610b3c578063c8d1293d14610b67578063c9567bf914610b9257610397565b806395d89b411161017a578063ae8c890b11610149578063ae8c890b14610a94578063b515566a14610abf578063bb542ef014610ae8578063bf56b37114610b1157610397565b806395d89b41146109d8578063a3a2e89e14610a03578063a8aa1b3114610a2c578063a9059cbb14610a5757610397565b8063893d20e8116101b6578063893d20e81461091a5780638b42507f146109455780638da5cb5b146109825780638ea5220f146109ad57610397565b80637dfcbe34146108af57806381934031146108da57806389291a8f1461090357610397565b80633dab5269116102c15780636303516c1161025f5780637437681e1161022e5780637437681e146107f357806375df13051461081e57806377359aa7146108495780637db1342c1461088657610397565b80636303516c1461075d57806366eb37851461078857806370a082311461079f578063715018a6146107dc57610397565b8063454343771161029b578063454343771461069f57806347062402146106ca5780634a74bb02146106f5578063571ac8b01461072057610397565b80633dab5269146105fc5780633f4218e0146106255780634355855a1461066257610397565b8063273123b71161032e5780632d48e896116103085780632d48e896146105565780632dbea2e11461057f57806330ca34ee146105a8578063313ce567146105d157610397565b8063273123b7146104d75780632b112e49146105005780632b14ca561461052b57610397565b8063095ea7b31161036a578063095ea7b31461040957806318160ddd146104465780631f53ac021461047157806323b872dd1461049a57610397565b80630445b6671461039c57806305be0d30146103c757806306fdde03146103de57610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610db5565b6040516103be9190613ea0565b60405180910390f35b3480156103d357600080fd5b506103dc610dbb565b005b3480156103ea57600080fd5b506103f3610e4a565b6040516104009190613f54565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614014565b610e87565b60405161043d919061406f565b60405180910390f35b34801561045257600080fd5b5061045b610f79565b6040516104689190613ea0565b60405180910390f35b34801561047d57600080fd5b50610498600480360381019061049391906140c8565b610f83565b005b3480156104a657600080fd5b506104c160048036038101906104bc91906140f5565b61105c565b6040516104ce919061406f565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190614148565b61125c565b005b34801561050c57600080fd5b5061051561134c565b6040516105229190613ea0565b60405180910390f35b34801561053757600080fd5b506105406113ce565b60405161054d9190613ea0565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190614175565b6113d4565b005b34801561058b57600080fd5b506105a660048036038101906105a191906141b5565b6114fc565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190614175565b6115ab565b005b3480156105dd57600080fd5b506105e6611652565b6040516105f39190614224565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061426b565b61165b565b005b34801561063157600080fd5b5061064c60048036038101906106479190614148565b611715565b604051610659919061406f565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190614148565b611735565b604051610696919061406f565b60405180910390f35b3480156106ab57600080fd5b506106b4611755565b6040516106c19190613ea0565b60405180910390f35b3480156106d657600080fd5b506106df61175b565b6040516106ec9190613ea0565b60405180910390f35b34801561070157600080fd5b5061070a611761565b604051610717919061406f565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614148565b611774565b604051610754919061406f565b60405180910390f35b34801561076957600080fd5b506107726117a7565b60405161077f91906142ba565b60405180910390f35b34801561079457600080fd5b5061079d6117cd565b005b3480156107ab57600080fd5b506107c660048036038101906107c19190614148565b61186c565b6040516107d39190613ea0565b60405180910390f35b3480156107e857600080fd5b506107f16118b5565b005b3480156107ff57600080fd5b50610808611a08565b6040516108159190613ea0565b60405180910390f35b34801561082a57600080fd5b50610833611a0e565b6040516108409190613ea0565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b9190614148565b611a14565b60405161087d9190613ea0565b60405180910390f35b34801561089257600080fd5b506108ad60048036038101906108a891906142d5565b611ab9565b005b3480156108bb57600080fd5b506108c4611b58565b6040516108d1919061406f565b60405180910390f35b3480156108e657600080fd5b5061090160048036038101906108fc91906142d5565b611b6b565b005b34801561090f57600080fd5b50610918611c90565b005b34801561092657600080fd5b5061092f611da0565b60405161093c91906142ba565b60405180910390f35b34801561095157600080fd5b5061096c60048036038101906109679190614148565b611daf565b604051610979919061406f565b60405180910390f35b34801561098e57600080fd5b50610997611dcf565b6040516109a491906142ba565b60405180910390f35b3480156109b957600080fd5b506109c2611df8565b6040516109cf91906142ba565b60405180910390f35b3480156109e457600080fd5b506109ed611e1e565b6040516109fa9190613f54565b60405180910390f35b348015610a0f57600080fd5b50610a2a6004803603810190610a259190614302565b611e5b565b005b348015610a3857600080fd5b50610a41611f4b565b604051610a4e91906142ba565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614014565b611f71565b604051610a8b919061406f565b60405180910390f35b348015610aa057600080fd5b50610aa9611f86565b604051610ab691906143a1565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae19190614504565b611fac565b005b348015610af457600080fd5b50610b0f6004803603810190610b0a91906140c8565b6120d6565b005b348015610b1d57600080fd5b50610b266121af565b604051610b339190613ea0565b60405180910390f35b348015610b4857600080fd5b50610b516121b5565b604051610b5e91906142ba565b60405180910390f35b348015610b7357600080fd5b50610b7c6121db565b604051610b899190613ea0565b60405180910390f35b348015610b9e57600080fd5b50610ba76121e1565b005b348015610bb557600080fd5b50610bbe61229a565b604051610bcb9190613ea0565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906142d5565b6122a0565b005b348015610c0957600080fd5b50610c246004803603810190610c1f91906142d5565b61233f565b005b348015610c3257600080fd5b50610c4d6004803603810190610c48919061454d565b6123de565b604051610c5a9190613ea0565b60405180910390f35b348015610c6f57600080fd5b50610c8a6004803603810190610c859190614148565b612465565b005b348015610c9857600080fd5b50610cb36004803603810190610cae9190614302565b612626565b005b348015610cc157600080fd5b50610cca6126c9565b604051610cd791906145c0565b60405180910390f35b348015610cec57600080fd5b50610cf56126ef565b604051610d029190613ea0565b60405180910390f35b348015610d1757600080fd5b50610d206126f5565b604051610d2d9190613ea0565b60405180910390f35b348015610d4257600080fd5b50610d5d6004803603810190610d589190614302565b6126fb565b005b348015610d6b57600080fd5b50610d746127eb565b604051610d8191906142ba565b60405180910390f35b348015610d9657600080fd5b50610d9f612811565b604051610dac919061406f565b60405180910390f35b601e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b8152600401610e1691906142ba565b600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b50505050565b60606040518060400160405280600f81526020017f486179205265666c656374696f6e730000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f679190613ea0565b60405180910390a36001905092915050565b6000600254905090565b610f8b61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90614627565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611248576111c7826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112538484846128da565b90509392505050565b61126461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890614627565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006113c961137c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661186c565b6113bb6113aa600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661186c565b6002546131b990919063ffffffff16565b6131b990919063ffffffff16565b905090565b60105481565b6113dc61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016114c6929190614647565b600060405180830381600087803b1580156114e057600080fd5b505af11580156114f4573d6000803e3d6000fd5b505050505050565b61150461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890614627565b60405180910390fd5b826011819055508160128190555080601381905550505050565b6115b361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790614627565b60405180910390fd5b81600f81905550806010819055505050565b60006012905090565b61166361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790614627565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b600f5481565b601960159054906101000a900460ff1681565b60006117a0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e87565b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117d561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990614627565b60405180910390fd5b61186a613203565b565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118bd61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194190614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611a7191906142ba565b602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190614685565b9050919050565b611ac161286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4590614627565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b611b7361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf790614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611c5b9190613ea0565b600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b5050505050565b611c9861286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90614627565b60405180910390fd5b60004790506000811115611d9d57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d9b573d6000803e3d6000fd5b505b50565b6000611daa611dcf565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4841595200000000000000000000000000000000000000000000000000000000815250905090565b611e6361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee790614627565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f7e3384846128da565b905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fb461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203890614627565b60405180910390fd5b60005b81518110156120d257600160096000848481518110612066576120656146b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806120ca90614710565b915050612044565b5050565b6120de61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216290614627565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6121e961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614627565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b6122a861286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90614627565b60405180910390fd5b80601b8190555050565b61234761286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90614627565b60405180910390fd5b80601c8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61246d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f190614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612569576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612560906147ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61262e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b290614627565b60405180910390fd5b6126c58282613485565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b601b5481565b61270361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614627565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960169054906101000a900460ff1681565b600061286683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136dd565b905092915050565b600033905090565b60008383111582906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190613f54565b60405180910390fd5b50600083856128cd91906147ea565b9050809150509392505050565b60006128e4611dcf565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129525750612922611dcf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757601960169054906101000a900460ff166129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d9061486a565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a4b5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a5457600080fd5b601960149054906101000a900460ff1615612a7b57612a74848484613740565b90506131b2565b601c5482111580612ad55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0b906148d6565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b7a5750600860149054906101000a900460ff165b15612c1657601d54612bd483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b1115612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614942565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c815750601960149054906101000a900460ff16155b8015612c995750601960159054906101000a900460ff165b8015612ce65750601e54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612cf457612cf3613203565b5b612d7d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e665750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e705782612e7c565b612e7b858585613971565b5b9050612ed081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613000929190614962565b600060405180830381600087803b15801561301a57600080fd5b505af192505050801561302b575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161311a929190614962565b600060405180830381600087803b15801561313457600080fd5b505af1925050508015613145575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a49190613ea0565b60405180910390a360019150505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061329f6002613291606461328360125487613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060006132b682846131b990919063ffffffff16565b90506132c181613b93565b600047905060006132f060646132e260115485613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061331c606461330e60135486613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061335b600261334d606461333f60125489613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060008411156133d057601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133ce573d6000803e3d6000fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561343a57600080fd5b505af19350505050801561344c575060015b506000861115613461576134608682613db4565b5b505050505050506000601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561350f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61351857600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561360a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016135d39291906149c6565b600060405180830381600087803b1580156135ed57600080fd5b505af1158015613601573d6000803e3d6000fd5b505050506136d9565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136a6929190614962565b600060405180830381600087803b1580156136c057600080fd5b505af11580156136d4573d6000803e3d6000fd5b505050505b5050565b60008083118290613724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371b9190613f54565b60405180910390fd5b50600083856137339190614a1e565b9050809150509392505050565b60006137cb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139009190613ea0565b60405180910390a3600190509392505050565b60008082846139229190614a4f565b905083811015613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395e90614af1565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139d157600f546139d5565b6010545b905060006139ff60646139f18487613b1990919063ffffffff16565b61282490919063ffffffff16565b9050613a5381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af39190613ea0565b60405180910390a3613b0e81856131b990919063ffffffff16565b925050509392505050565b6000808303613b2b5760009050613b8d565b60008284613b399190614b11565b9050828482613b489190614a1e565b14613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90614bdd565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613bb057613baf6143c1565b5b604051908082528060200260200182016040528015613bde5781602001602082028036833780820191505090505b5090503081600081518110613bf657613bf56146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614c12565b81600181518110613cd557613cd46146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d193083610e87565b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614cfd565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613e3d96959493929190614d57565b60606040518083038185885af1158015613e5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e809190614db8565b5050505050565b6000819050919050565b613e9a81613e87565b82525050565b6000602082019050613eb56000830184613e91565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ef5578082015181840152602081019050613eda565b83811115613f04576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f2682613ebb565b613f308185613ec6565b9350613f40818560208601613ed7565b613f4981613f0a565b840191505092915050565b60006020820190508181036000830152613f6e8184613f1b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fb582613f8a565b9050919050565b613fc581613faa565b8114613fd057600080fd5b50565b600081359050613fe281613fbc565b92915050565b613ff181613e87565b8114613ffc57600080fd5b50565b60008135905061400e81613fe8565b92915050565b6000806040838503121561402b5761402a613f80565b5b600061403985828601613fd3565b925050602061404a85828601613fff565b9150509250929050565b60008115159050919050565b61406981614054565b82525050565b60006020820190506140846000830184614060565b92915050565b600061409582613f8a565b9050919050565b6140a58161408a565b81146140b057600080fd5b50565b6000813590506140c28161409c565b92915050565b6000602082840312156140de576140dd613f80565b5b60006140ec848285016140b3565b91505092915050565b60008060006060848603121561410e5761410d613f80565b5b600061411c86828701613fd3565b935050602061412d86828701613fd3565b925050604061413e86828701613fff565b9150509250925092565b60006020828403121561415e5761415d613f80565b5b600061416c84828501613fd3565b91505092915050565b6000806040838503121561418c5761418b613f80565b5b600061419a85828601613fff565b92505060206141ab85828601613fff565b9150509250929050565b6000806000606084860312156141ce576141cd613f80565b5b60006141dc86828701613fff565b93505060206141ed86828701613fff565b92505060406141fe86828701613fff565b9150509250925092565b600060ff82169050919050565b61421e81614208565b82525050565b60006020820190506142396000830184614215565b92915050565b61424881614054565b811461425357600080fd5b50565b6000813590506142658161423f565b92915050565b6000806040838503121561428257614281613f80565b5b600061429085828601614256565b92505060206142a185828601613fff565b9150509250929050565b6142b481613faa565b82525050565b60006020820190506142cf60008301846142ab565b92915050565b6000602082840312156142eb576142ea613f80565b5b60006142f984828501613fff565b91505092915050565b6000806040838503121561431957614318613f80565b5b600061432785828601613fd3565b925050602061433885828601614256565b9150509250929050565b6000819050919050565b600061436761436261435d84613f8a565b614342565b613f8a565b9050919050565b60006143798261434c565b9050919050565b600061438b8261436e565b9050919050565b61439b81614380565b82525050565b60006020820190506143b66000830184614392565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143f982613f0a565b810181811067ffffffffffffffff82111715614418576144176143c1565b5b80604052505050565b600061442b613f76565b905061443782826143f0565b919050565b600067ffffffffffffffff821115614457576144566143c1565b5b602082029050602081019050919050565b600080fd5b600061448061447b8461443c565b614421565b905080838252602082019050602084028301858111156144a3576144a2614468565b5b835b818110156144cc57806144b88882613fd3565b8452602084019350506020810190506144a5565b5050509392505050565b600082601f8301126144eb576144ea6143bc565b5b81356144fb84826020860161446d565b91505092915050565b60006020828403121561451a57614519613f80565b5b600082013567ffffffffffffffff81111561453857614537613f85565b5b614544848285016144d6565b91505092915050565b6000806040838503121561456457614563613f80565b5b600061457285828601613fd3565b925050602061458385828601613fd3565b9150509250929050565b60006145988261434c565b9050919050565b60006145aa8261458d565b9050919050565b6145ba8161459f565b82525050565b60006020820190506145d560008301846145b1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614611602083613ec6565b915061461c826145db565b602082019050919050565b6000602082019050818103600083015261464081614604565b9050919050565b600060408201905061465c6000830185613e91565b6146696020830184613e91565b9392505050565b60008151905061467f81613fe8565b92915050565b60006020828403121561469b5761469a613f80565b5b60006146a984828501614670565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471b82613e87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474d5761474c6146e1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b4602683613ec6565b91506147bf82614758565b604082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b60006147f582613e87565b915061480083613e87565b925082821015614813576148126146e1565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614854601783613ec6565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006148c0600283613ec6565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061492c600683613ec6565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b600060408201905061497760008301856142ab565b6149846020830184613e91565b9392505050565b6000819050919050565b60006149b06149ab6149a68461498b565b614342565b613e87565b9050919050565b6149c081614995565b82525050565b60006040820190506149db60008301856142ab565b6149e860208301846149b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a2982613e87565b9150614a3483613e87565b925082614a4457614a436149ef565b5b828204905092915050565b6000614a5a82613e87565b9150614a6583613e87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9a57614a996146e1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614adb601b83613ec6565b9150614ae682614aa5565b602082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b6000614b1c82613e87565b9150614b2783613e87565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6057614b5f6146e1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc7602183613ec6565b9150614bd282614b6b565b604082019050919050565b60006020820190508181036000830152614bf681614bba565b9050919050565b600081519050614c0c81613fbc565b92915050565b600060208284031215614c2857614c27613f80565b5b6000614c3684828501614bfd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c7481613faa565b82525050565b6000614c868383614c6b565b60208301905092915050565b6000602082019050919050565b6000614caa82614c3f565b614cb48185614c4a565b9350614cbf83614c5b565b8060005b83811015614cf0578151614cd78882614c7a565b9750614ce283614c92565b925050600181019050614cc3565b5085935050505092915050565b600060a082019050614d126000830188613e91565b614d1f60208301876149b7565b8181036040830152614d318186614c9f565b9050614d4060608301856142ab565b614d4d6080830184613e91565b9695505050505050565b600060c082019050614d6c60008301896142ab565b614d796020830188613e91565b614d8660408301876149b7565b614d9360608301866149b7565b614da060808301856142ab565b614dad60a0830184613e91565b979650505050505050565b600080600060608486031215614dd157614dd0613f80565b5b6000614ddf86828701614670565b9350506020614df086828701614670565b9250506040614e0186828701614670565b915050925092509256fea2646970667358221220cdcdbee822bbdcbd1b527e7285172e38070b5638999bc541b98d049e2df5903764736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556000600d5534801561002e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fa3e941d1f6b7b10ed84a0c211bfa8aee907965e600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f24806101286000396000f3fe6080604052600436106101025760003560e01c8063997664d711610095578063e2d2e21911610064578063e2d2e2191461032b578063efca2eed14610356578063ff23c9c614610381578063ffb2c479146103ac578063ffd49c84146103d557610111565b8063997664d71461028e578063bd14ae27146102b9578063ce7c2ac2146102e2578063d0e30db01461032157610111565b80632d48e896116100d15780632d48e896146101d25780633a98ef39146101fb5780634fab0ae8146102265780638c21cd521461025157610111565b806311ce023d1461011657806314b6ca961461014157806326987b601461016a57806328fd31981461019557610111565b366101115761010f610400565b005b600080fd5b34801561012257600080fd5b5061012b6107e8565b604051610138919061167d565b60405180910390f35b34801561014d57600080fd5b5061016860048036038101906101639190611727565b6107ee565b005b34801561017657600080fd5b5061017f610aad565b60405161018c919061167d565b60405180910390f35b3480156101a157600080fd5b506101bc60048036038101906101b79190611767565b610ab3565b6040516101c9919061167d565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611794565b610bcc565b005b34801561020757600080fd5b50610210610c36565b60405161021d919061167d565b60405180910390f35b34801561023257600080fd5b5061023b610c3c565b604051610248919061167d565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190611767565b610c42565b60405161028591906117ef565b60405180910390f35b34801561029a57600080fd5b506102a3610caf565b6040516102b0919061167d565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190611767565b610cb5565b005b3480156102ee57600080fd5b5061030960048036038101906103049190611767565b610d19565b6040516103189392919061180a565b60405180910390f35b610329610400565b005b34801561033757600080fd5b50610340610d43565b60405161034d919061167d565b60405180910390f35b34801561036257600080fd5b5061036b610d49565b604051610378919061167d565b60405180910390f35b34801561038d57600080fd5b50610396610d4f565b6040516103a39190611850565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061186b565b610d75565b005b3480156103e157600080fd5b506103ea610eb0565b6040516103f7919061167d565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161045d9190611850565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e91906118ad565b90506000600267ffffffffffffffff8111156104bd576104bc6118da565b5b6040519080825280602002602001820160405280156104eb5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061191e565b816000815181106105935761059261194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106106045761060361194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016106a19493929190611a7d565b6000604051808303818588803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050505050600061078383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107349190611850565b602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077591906118ad565b610eb690919063ffffffff16565b905061079a81600854610f0090919063ffffffff16565b6008819055506107dd6107cc6007546107be84600b54610f5e90919063ffffffff16565b610fd890919063ffffffff16565b600a54610f0090919063ffffffff16565b600a81905550505050565b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084657600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561089b5761089a82611022565b5b6000811180156108ed57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b15610900576108fb826112b5565b610962565b60008114801561095257506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156109615761096082611364565b5b5b6109cb816109bd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754610eb690919063ffffffff16565b610f0090919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610a63600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610b075760009050610bc7565b6000610b54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610baf57600092505050610bc7565b610bc28183610eb690919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2457600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c929190611af8565b108015610ca85750600d54610ca683610ab3565b115b9050919050565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0d57600080fd5b610d1681611022565b50565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b600a5481565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600380549050905060008103610d8d5750610ead565b60008060005a90505b8482108015610da457508383105b15610ea85783600e5410610dbb576000600e819055505b610e046003600e5481548110610dd457610dd361194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c42565b15610e5357610e526003600e5481548110610e2257610e2161194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611022565b5b610e78610e695a83610eb690919063ffffffff16565b83610f0090919063ffffffff16565b91505a9050600e6000815480929190610e9090611b4e565b91905055508280610ea090611b4e565b935050610d96565b505050505b50565b600c5481565b6000610ef883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061159d565b905092915050565b6000808284610f0f9190611af8565b905083811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90611bf3565b60405180910390fd5b8091505092915050565b6000808303610f705760009050610fd2565b60008284610f7e9190611c13565b9050828482610f8d9190611c9c565b14610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490611d3f565b60405180910390fd5b809150505b92915050565b600061101a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611601565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403156112b257600061107882610ab3565b905060008111156112b05761109881600954610f0090919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110fb929190611d5f565b6020604051808303816000875af115801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190611db4565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111d881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f0090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611269600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113789190611de1565b815481106113895761138861194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114075761140661194b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114a79190611de1565b815481106114b8576114b761194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061153357611532611e15565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611596600b54611588600a5485610f5e90919063ffffffff16565b610fd890919063ffffffff16565b9050919050565b60008383111582906115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc9190611ecc565b60405180910390fd5b50600083856115f49190611de1565b9050809150509392505050565b60008083118290611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f9190611ecc565b60405180910390fd5b50600083856116579190611c9c565b9050809150509392505050565b6000819050919050565b61167781611664565b82525050565b6000602082019050611692600083018461166e565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116c88261169d565b9050919050565b6116d8816116bd565b81146116e357600080fd5b50565b6000813590506116f5816116cf565b92915050565b61170481611664565b811461170f57600080fd5b50565b600081359050611721816116fb565b92915050565b6000806040838503121561173e5761173d611698565b5b600061174c858286016116e6565b925050602061175d85828601611712565b9150509250929050565b60006020828403121561177d5761177c611698565b5b600061178b848285016116e6565b91505092915050565b600080604083850312156117ab576117aa611698565b5b60006117b985828601611712565b92505060206117ca85828601611712565b9150509250929050565b60008115159050919050565b6117e9816117d4565b82525050565b600060208201905061180460008301846117e0565b92915050565b600060608201905061181f600083018661166e565b61182c602083018561166e565b611839604083018461166e565b949350505050565b61184a816116bd565b82525050565b60006020820190506118656000830184611841565b92915050565b60006020828403121561188157611880611698565b5b600061188f84828501611712565b91505092915050565b6000815190506118a7816116fb565b92915050565b6000602082840312156118c3576118c2611698565b5b60006118d184828501611898565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611918816116cf565b92915050565b60006020828403121561193457611933611698565b5b600061194284828501611909565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006119a96119a461199f8461197a565b611984565b611664565b9050919050565b6119b98161198e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119f4816116bd565b82525050565b6000611a0683836119eb565b60208301905092915050565b6000602082019050919050565b6000611a2a826119bf565b611a3481856119ca565b9350611a3f836119db565b8060005b83811015611a70578151611a5788826119fa565b9750611a6283611a12565b925050600181019050611a43565b5085935050505092915050565b6000608082019050611a9260008301876119b0565b8181036020830152611aa48186611a1f565b9050611ab36040830185611841565b611ac0606083018461166e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b0382611664565b9150611b0e83611664565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b4357611b42611ac9565b5b828201905092915050565b6000611b5982611664565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b8b57611b8a611ac9565b5b600182019050919050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611bdd601b83611b96565b9150611be882611ba7565b602082019050919050565b60006020820190508181036000830152611c0c81611bd0565b9050919050565b6000611c1e82611664565b9150611c2983611664565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c6257611c61611ac9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ca782611664565b9150611cb283611664565b925082611cc257611cc1611c6d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d29602183611b96565b9150611d3482611ccd565b604082019050919050565b60006020820190508181036000830152611d5881611d1c565b9050919050565b6000604082019050611d746000830185611841565b611d81602083018461166e565b9392505050565b611d91816117d4565b8114611d9c57600080fd5b50565b600081519050611dae81611d88565b92915050565b600060208284031215611dca57611dc9611698565b5b6000611dd884828501611d9f565b91505092915050565b6000611dec82611664565b9150611df783611664565b925082821015611e0a57611e09611ac9565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60005b83811015611e6d578082015181840152602081019050611e52565b83811115611e7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e9e82611e44565b611ea88185611b96565b9350611eb8818560208601611e4f565b611ec181611e82565b840191505092915050565b60006020820190508181036000830152611ee68184611e93565b90509291505056fea26469706673582212204f9a92a7bdc8d2604872906a3af8ed6b01b4c771ec1d94bca42f673c79a5810564736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103905760003560e01c80637dfcbe34116101dc578063c45a015511610102578063f2fde38b116100a0578063f8ebf19b1161006f578063f8ebf19b14610d0b578063fabe628314610d36578063ff23c9c614610d5f578063ffb54a9914610d8a57610397565b8063f2fde38b14610c63578063f708a64f14610c8c578063f887ea4014610cb5578063f8b45b0514610ce057610397565b8063caa5581b116100dc578063caa5581b14610ba9578063ce847a6d14610bd4578063d920334e14610bfd578063dd62ed3e14610c2657610397565b8063c45a015514610b3c578063c8d1293d14610b67578063c9567bf914610b9257610397565b806395d89b411161017a578063ae8c890b11610149578063ae8c890b14610a94578063b515566a14610abf578063bb542ef014610ae8578063bf56b37114610b1157610397565b806395d89b41146109d8578063a3a2e89e14610a03578063a8aa1b3114610a2c578063a9059cbb14610a5757610397565b8063893d20e8116101b6578063893d20e81461091a5780638b42507f146109455780638da5cb5b146109825780638ea5220f146109ad57610397565b80637dfcbe34146108af57806381934031146108da57806389291a8f1461090357610397565b80633dab5269116102c15780636303516c1161025f5780637437681e1161022e5780637437681e146107f357806375df13051461081e57806377359aa7146108495780637db1342c1461088657610397565b80636303516c1461075d57806366eb37851461078857806370a082311461079f578063715018a6146107dc57610397565b8063454343771161029b578063454343771461069f57806347062402146106ca5780634a74bb02146106f5578063571ac8b01461072057610397565b80633dab5269146105fc5780633f4218e0146106255780634355855a1461066257610397565b8063273123b71161032e5780632d48e896116103085780632d48e896146105565780632dbea2e11461057f57806330ca34ee146105a8578063313ce567146105d157610397565b8063273123b7146104d75780632b112e49146105005780632b14ca561461052b57610397565b8063095ea7b31161036a578063095ea7b31461040957806318160ddd146104465780631f53ac021461047157806323b872dd1461049a57610397565b80630445b6671461039c57806305be0d30146103c757806306fdde03146103de57610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610db5565b6040516103be9190613ea0565b60405180910390f35b3480156103d357600080fd5b506103dc610dbb565b005b3480156103ea57600080fd5b506103f3610e4a565b6040516104009190613f54565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614014565b610e87565b60405161043d919061406f565b60405180910390f35b34801561045257600080fd5b5061045b610f79565b6040516104689190613ea0565b60405180910390f35b34801561047d57600080fd5b50610498600480360381019061049391906140c8565b610f83565b005b3480156104a657600080fd5b506104c160048036038101906104bc91906140f5565b61105c565b6040516104ce919061406f565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190614148565b61125c565b005b34801561050c57600080fd5b5061051561134c565b6040516105229190613ea0565b60405180910390f35b34801561053757600080fd5b506105406113ce565b60405161054d9190613ea0565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190614175565b6113d4565b005b34801561058b57600080fd5b506105a660048036038101906105a191906141b5565b6114fc565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190614175565b6115ab565b005b3480156105dd57600080fd5b506105e6611652565b6040516105f39190614224565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061426b565b61165b565b005b34801561063157600080fd5b5061064c60048036038101906106479190614148565b611715565b604051610659919061406f565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190614148565b611735565b604051610696919061406f565b60405180910390f35b3480156106ab57600080fd5b506106b4611755565b6040516106c19190613ea0565b60405180910390f35b3480156106d657600080fd5b506106df61175b565b6040516106ec9190613ea0565b60405180910390f35b34801561070157600080fd5b5061070a611761565b604051610717919061406f565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614148565b611774565b604051610754919061406f565b60405180910390f35b34801561076957600080fd5b506107726117a7565b60405161077f91906142ba565b60405180910390f35b34801561079457600080fd5b5061079d6117cd565b005b3480156107ab57600080fd5b506107c660048036038101906107c19190614148565b61186c565b6040516107d39190613ea0565b60405180910390f35b3480156107e857600080fd5b506107f16118b5565b005b3480156107ff57600080fd5b50610808611a08565b6040516108159190613ea0565b60405180910390f35b34801561082a57600080fd5b50610833611a0e565b6040516108409190613ea0565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b9190614148565b611a14565b60405161087d9190613ea0565b60405180910390f35b34801561089257600080fd5b506108ad60048036038101906108a891906142d5565b611ab9565b005b3480156108bb57600080fd5b506108c4611b58565b6040516108d1919061406f565b60405180910390f35b3480156108e657600080fd5b5061090160048036038101906108fc91906142d5565b611b6b565b005b34801561090f57600080fd5b50610918611c90565b005b34801561092657600080fd5b5061092f611da0565b60405161093c91906142ba565b60405180910390f35b34801561095157600080fd5b5061096c60048036038101906109679190614148565b611daf565b604051610979919061406f565b60405180910390f35b34801561098e57600080fd5b50610997611dcf565b6040516109a491906142ba565b60405180910390f35b3480156109b957600080fd5b506109c2611df8565b6040516109cf91906142ba565b60405180910390f35b3480156109e457600080fd5b506109ed611e1e565b6040516109fa9190613f54565b60405180910390f35b348015610a0f57600080fd5b50610a2a6004803603810190610a259190614302565b611e5b565b005b348015610a3857600080fd5b50610a41611f4b565b604051610a4e91906142ba565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614014565b611f71565b604051610a8b919061406f565b60405180910390f35b348015610aa057600080fd5b50610aa9611f86565b604051610ab691906143a1565b60405180910390f35b348015610acb57600080fd5b50610ae66004803603810190610ae19190614504565b611fac565b005b348015610af457600080fd5b50610b0f6004803603810190610b0a91906140c8565b6120d6565b005b348015610b1d57600080fd5b50610b266121af565b604051610b339190613ea0565b60405180910390f35b348015610b4857600080fd5b50610b516121b5565b604051610b5e91906142ba565b60405180910390f35b348015610b7357600080fd5b50610b7c6121db565b604051610b899190613ea0565b60405180910390f35b348015610b9e57600080fd5b50610ba76121e1565b005b348015610bb557600080fd5b50610bbe61229a565b604051610bcb9190613ea0565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906142d5565b6122a0565b005b348015610c0957600080fd5b50610c246004803603810190610c1f91906142d5565b61233f565b005b348015610c3257600080fd5b50610c4d6004803603810190610c48919061454d565b6123de565b604051610c5a9190613ea0565b60405180910390f35b348015610c6f57600080fd5b50610c8a6004803603810190610c859190614148565b612465565b005b348015610c9857600080fd5b50610cb36004803603810190610cae9190614302565b612626565b005b348015610cc157600080fd5b50610cca6126c9565b604051610cd791906145c0565b60405180910390f35b348015610cec57600080fd5b50610cf56126ef565b604051610d029190613ea0565b60405180910390f35b348015610d1757600080fd5b50610d206126f5565b604051610d2d9190613ea0565b60405180910390f35b348015610d4257600080fd5b50610d5d6004803603810190610d589190614302565b6126fb565b005b348015610d6b57600080fd5b50610d746127eb565b604051610d8191906142ba565b60405180910390f35b348015610d9657600080fd5b50610d9f612811565b604051610dac919061406f565b60405180910390f35b601e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b8152600401610e1691906142ba565b600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b50505050565b60606040518060400160405280600f81526020017f486179205265666c656374696f6e730000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f679190613ea0565b60405180910390a36001905092915050565b6000600254905090565b610f8b61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90614627565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611248576111c7826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112538484846128da565b90509392505050565b61126461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890614627565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006113c961137c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661186c565b6113bb6113aa600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661186c565b6002546131b990919063ffffffff16565b6131b990919063ffffffff16565b905090565b60105481565b6113dc61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016114c6929190614647565b600060405180830381600087803b1580156114e057600080fd5b505af11580156114f4573d6000803e3d6000fd5b505050505050565b61150461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890614627565b60405180910390fd5b826011819055508160128190555080601381905550505050565b6115b361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790614627565b60405180910390fd5b81600f81905550806010819055505050565b60006012905090565b61166361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790614627565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b600f5481565b601960159054906101000a900460ff1681565b60006117a0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e87565b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117d561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990614627565b60405180910390fd5b61186a613203565b565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118bd61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194190614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611a7191906142ba565b602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190614685565b9050919050565b611ac161286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4590614627565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b611b7361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf790614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611c5b9190613ea0565b600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b5050505050565b611c9861286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90614627565b60405180910390fd5b60004790506000811115611d9d57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d9b573d6000803e3d6000fd5b505b50565b6000611daa611dcf565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4841595200000000000000000000000000000000000000000000000000000000815250905090565b611e6361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee790614627565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f7e3384846128da565b905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fb461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203890614627565b60405180910390fd5b60005b81518110156120d257600160096000848481518110612066576120656146b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806120ca90614710565b915050612044565b5050565b6120de61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216290614627565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6121e961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614627565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b6122a861286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90614627565b60405180910390fd5b80601b8190555050565b61234761286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90614627565b60405180910390fd5b80601c8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61246d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f190614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612569576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612560906147ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61262e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b290614627565b60405180910390fd5b6126c58282613485565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b601b5481565b61270361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614627565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960169054906101000a900460ff1681565b600061286683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136dd565b905092915050565b600033905090565b60008383111582906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190613f54565b60405180910390fd5b50600083856128cd91906147ea565b9050809150509392505050565b60006128e4611dcf565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129525750612922611dcf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757601960169054906101000a900460ff166129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d9061486a565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a4b5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a5457600080fd5b601960149054906101000a900460ff1615612a7b57612a74848484613740565b90506131b2565b601c5482111580612ad55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0b906148d6565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b7a5750600860149054906101000a900460ff165b15612c1657601d54612bd483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b1115612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614942565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c815750601960149054906101000a900460ff16155b8015612c995750601960159054906101000a900460ff165b8015612ce65750601e54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612cf457612cf3613203565b5b612d7d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e665750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e705782612e7c565b612e7b858585613971565b5b9050612ed081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613000929190614962565b600060405180830381600087803b15801561301a57600080fd5b505af192505050801561302b575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161311a929190614962565b600060405180830381600087803b15801561313457600080fd5b505af1925050508015613145575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a49190613ea0565b60405180910390a360019150505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061329f6002613291606461328360125487613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060006132b682846131b990919063ffffffff16565b90506132c181613b93565b600047905060006132f060646132e260115485613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061331c606461330e60135486613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061335b600261334d606461333f60125489613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060008411156133d057601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133ce573d6000803e3d6000fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561343a57600080fd5b505af19350505050801561344c575060015b506000861115613461576134608682613db4565b5b505050505050506000601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561350f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61351857600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561360a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016135d39291906149c6565b600060405180830381600087803b1580156135ed57600080fd5b505af1158015613601573d6000803e3d6000fd5b505050506136d9565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136a6929190614962565b600060405180830381600087803b1580156136c057600080fd5b505af11580156136d4573d6000803e3d6000fd5b505050505b5050565b60008083118290613724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371b9190613f54565b60405180910390fd5b50600083856137339190614a1e565b9050809150509392505050565b60006137cb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139009190613ea0565b60405180910390a3600190509392505050565b60008082846139229190614a4f565b905083811015613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395e90614af1565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139d157600f546139d5565b6010545b905060006139ff60646139f18487613b1990919063ffffffff16565b61282490919063ffffffff16565b9050613a5381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af39190613ea0565b60405180910390a3613b0e81856131b990919063ffffffff16565b925050509392505050565b6000808303613b2b5760009050613b8d565b60008284613b399190614b11565b9050828482613b489190614a1e565b14613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90614bdd565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613bb057613baf6143c1565b5b604051908082528060200260200182016040528015613bde5781602001602082028036833780820191505090505b5090503081600081518110613bf657613bf56146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614c12565b81600181518110613cd557613cd46146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d193083610e87565b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614cfd565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613e3d96959493929190614d57565b60606040518083038185885af1158015613e5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e809190614db8565b5050505050565b6000819050919050565b613e9a81613e87565b82525050565b6000602082019050613eb56000830184613e91565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ef5578082015181840152602081019050613eda565b83811115613f04576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f2682613ebb565b613f308185613ec6565b9350613f40818560208601613ed7565b613f4981613f0a565b840191505092915050565b60006020820190508181036000830152613f6e8184613f1b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fb582613f8a565b9050919050565b613fc581613faa565b8114613fd057600080fd5b50565b600081359050613fe281613fbc565b92915050565b613ff181613e87565b8114613ffc57600080fd5b50565b60008135905061400e81613fe8565b92915050565b6000806040838503121561402b5761402a613f80565b5b600061403985828601613fd3565b925050602061404a85828601613fff565b9150509250929050565b60008115159050919050565b61406981614054565b82525050565b60006020820190506140846000830184614060565b92915050565b600061409582613f8a565b9050919050565b6140a58161408a565b81146140b057600080fd5b50565b6000813590506140c28161409c565b92915050565b6000602082840312156140de576140dd613f80565b5b60006140ec848285016140b3565b91505092915050565b60008060006060848603121561410e5761410d613f80565b5b600061411c86828701613fd3565b935050602061412d86828701613fd3565b925050604061413e86828701613fff565b9150509250925092565b60006020828403121561415e5761415d613f80565b5b600061416c84828501613fd3565b91505092915050565b6000806040838503121561418c5761418b613f80565b5b600061419a85828601613fff565b92505060206141ab85828601613fff565b9150509250929050565b6000806000606084860312156141ce576141cd613f80565b5b60006141dc86828701613fff565b93505060206141ed86828701613fff565b92505060406141fe86828701613fff565b9150509250925092565b600060ff82169050919050565b61421e81614208565b82525050565b60006020820190506142396000830184614215565b92915050565b61424881614054565b811461425357600080fd5b50565b6000813590506142658161423f565b92915050565b6000806040838503121561428257614281613f80565b5b600061429085828601614256565b92505060206142a185828601613fff565b9150509250929050565b6142b481613faa565b82525050565b60006020820190506142cf60008301846142ab565b92915050565b6000602082840312156142eb576142ea613f80565b5b60006142f984828501613fff565b91505092915050565b6000806040838503121561431957614318613f80565b5b600061432785828601613fd3565b925050602061433885828601614256565b9150509250929050565b6000819050919050565b600061436761436261435d84613f8a565b614342565b613f8a565b9050919050565b60006143798261434c565b9050919050565b600061438b8261436e565b9050919050565b61439b81614380565b82525050565b60006020820190506143b66000830184614392565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143f982613f0a565b810181811067ffffffffffffffff82111715614418576144176143c1565b5b80604052505050565b600061442b613f76565b905061443782826143f0565b919050565b600067ffffffffffffffff821115614457576144566143c1565b5b602082029050602081019050919050565b600080fd5b600061448061447b8461443c565b614421565b905080838252602082019050602084028301858111156144a3576144a2614468565b5b835b818110156144cc57806144b88882613fd3565b8452602084019350506020810190506144a5565b5050509392505050565b600082601f8301126144eb576144ea6143bc565b5b81356144fb84826020860161446d565b91505092915050565b60006020828403121561451a57614519613f80565b5b600082013567ffffffffffffffff81111561453857614537613f85565b5b614544848285016144d6565b91505092915050565b6000806040838503121561456457614563613f80565b5b600061457285828601613fd3565b925050602061458385828601613fd3565b9150509250929050565b60006145988261434c565b9050919050565b60006145aa8261458d565b9050919050565b6145ba8161459f565b82525050565b60006020820190506145d560008301846145b1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614611602083613ec6565b915061461c826145db565b602082019050919050565b6000602082019050818103600083015261464081614604565b9050919050565b600060408201905061465c6000830185613e91565b6146696020830184613e91565b9392505050565b60008151905061467f81613fe8565b92915050565b60006020828403121561469b5761469a613f80565b5b60006146a984828501614670565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471b82613e87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474d5761474c6146e1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b4602683613ec6565b91506147bf82614758565b604082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b60006147f582613e87565b915061480083613e87565b925082821015614813576148126146e1565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614854601783613ec6565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006148c0600283613ec6565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061492c600683613ec6565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b600060408201905061497760008301856142ab565b6149846020830184613e91565b9392505050565b6000819050919050565b60006149b06149ab6149a68461498b565b614342565b613e87565b9050919050565b6149c081614995565b82525050565b60006040820190506149db60008301856142ab565b6149e860208301846149b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a2982613e87565b9150614a3483613e87565b925082614a4457614a436149ef565b5b828204905092915050565b6000614a5a82613e87565b9150614a6583613e87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9a57614a996146e1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614adb601b83613ec6565b9150614ae682614aa5565b602082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b6000614b1c82613e87565b9150614b2783613e87565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6057614b5f6146e1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc7602183613ec6565b9150614bd282614b6b565b604082019050919050565b60006020820190508181036000830152614bf681614bba565b9050919050565b600081519050614c0c81613fbc565b92915050565b600060208284031215614c2857614c27613f80565b5b6000614c3684828501614bfd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c7481613faa565b82525050565b6000614c868383614c6b565b60208301905092915050565b6000602082019050919050565b6000614caa82614c3f565b614cb48185614c4a565b9350614cbf83614c5b565b8060005b83811015614cf0578151614cd78882614c7a565b9750614ce283614c92565b925050600181019050614cc3565b5085935050505092915050565b600060a082019050614d126000830188613e91565b614d1f60208301876149b7565b8181036040830152614d318186614c9f565b9050614d4060608301856142ab565b614d4d6080830184613e91565b9695505050505050565b600060c082019050614d6c60008301896142ab565b614d796020830188613e91565b614d8660408301876149b7565b614d9360608301866149b7565b614da060808301856142ab565b614dad60a0830184613e91565b979650505050505050565b600080600060608486031215614dd157614dd0613f80565b5b6000614ddf86828701614670565b9350506020614df086828701614670565b9250506040614e0186828701614670565b915050925092509256fea2646970667358221220cdcdbee822bbdcbd1b527e7285172e38070b5638999bc541b98d049e2df5903764736f6c634300080d0033

Deployed Bytecode Sourcemap

11183:11882:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13089:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22980:82;;;;;;;;;;;;;:::i;:::-;;17148:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17576:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16878:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15326:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18090:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16007:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16728:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12257:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15798:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14592:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14426:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16972:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15591:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11989:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12095:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12410:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12224:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12687:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17800:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12185:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22368:74;;;;;;;;;;;;;:::i;:::-;;17320:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3272:148;;;;;;;;;;;;;:::i;:::-;;12984:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12370:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22815:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14936:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11908:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22691:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22450:233;;;;;;;;;;;;;:::i;:::-;;17234:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12040:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3058:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12572:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17058:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15052:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12484:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17930:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12778:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14079:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15457:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12153:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12510:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12333:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14297:115;;;;;;;;;;;;;:::i;:::-;;12293:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16596:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14833:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17431:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3428:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16456:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12453:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13035:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12821:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15182:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11267:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12734:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13089:52;;;;:::o;22980:82::-;23018:14;;;;;;;;;;;:24;;;23043:10;23018:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22980:82::o;17148:80::-;17196:13;17220:5;;;;;;;;;;;;;;;;;17213:12;;17148:80;:::o;17576:216::-;17651:4;17703:6;17668:11;:23;17680:10;17668:23;;;;;;;;;;;;;;;:32;17692:7;17668:32;;;;;;;;;;;;;;;:41;;;;17746:7;17725:37;;17734:10;17725:37;;;17755:6;17725:37;;;;;;:::i;:::-;;;;;;;;17780:4;17773:11;;17576:216;;;;:::o;16878:88::-;16933:7;16951:12;;16944:19;;16878:88;:::o;15326:123::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15428:12:::1;15408:9;;:33;;;;;;;;;;;;;;;;;;15326:123:::0;:::o;18090:366::-;18190:4;18245:17;18210:11;:19;18222:6;18210:19;;;;;;;;;;;;;;;:31;18230:10;18210:31;;;;;;;;;;;;;;;;:52;18207:186;;18312:69;18348:6;18312:69;;;;;;;;;;;;;;;;;:11;:19;18324:6;18312:19;;;;;;;;;;;;;;;:31;18332:10;18312:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18278:11;:19;18290:6;18278:19;;;;;;;;;;;;;;;:31;18298:10;18278:31;;;;;;;;;;;;;;;:103;;;;18207:186;18412:36;18422:6;18430:9;18441:6;18412:9;:36::i;:::-;18405:43;;18090:366;;;;;:::o;16007:90::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16084:5:::1;16069:4;:12;16074:6;16069:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16007:90:::0;:::o;16728:142::-;16781:7;16808:54;16846:15;16856:4;;;;;;;;;;;16846:9;:15::i;:::-;16808:33;16825:15;16835:4;;;;;;;;;;;16825:9;:15::i;:::-;16808:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16801:61;;16728:142;:::o;12257:27::-;;;;:::o;15798:201::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15911:14:::1;;;;;;;;;;;:38;;;15950:12;15964:18;15911:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15798:201:::0;;:::o;14592:233::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14732:12:::1;14716:13;:28;;;;14769:8;14755:11;:22;;;;14802:15;14788:11;:29;;;;14592:233:::0;;;:::o;14426:153::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14531:9:::1;14522:6;:18;;;;14561:10;14551:7;:20;;;;14426:153:::0;;:::o;16972:80::-;17024:5;11486:2;17033:16;;16972:80;:::o;15591:199::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15725:14:::1;15700:21;;:39;;;;;;;;;;;;;;;;;;15766:16;15750:13;:32;;;;15591:199:::0;;:::o;11989:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12095:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12410:34::-;;;;:::o;12224:26::-;;;;:::o;12687:40::-;;;;;;;;;;;;;:::o;17800:122::-;17855:4;17879:35;17887:7;17896:17;17879:7;:35::i;:::-;17872:42;;17800:122;;;:::o;12185:30::-;;;;;;;;;;;;;:::o;22368:74::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22424:10:::1;:8;:10::i;:::-;22368:74::o:0;17320:105::-;17386:7;17404:9;:18;17414:7;17404:18;;;;;;;;;;;;;;;;17397:25;;17320:105;;;:::o;3272:148::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3379:1:::1;3342:40;;3363:6;::::0;::::1;;;;;;;;3342:40;;;;;;;;;;;;3410:1;3393:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3272:148::o:0;12984:44::-;;;;:::o;12370:31::-;;;;:::o;22815:157::-;22892:7;22919:14;;;;;;;;;;;:32;;;22952:11;22919:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22912:52;;22815:157;;;:::o;14936:104::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15024:8:::1;15011:9;:21;;;;14936:104:::0;:::o;11908:26::-;;;;;;;;;;;;;:::o;22691:116::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22766:14:::1;;;;;;;;;;;:22;;;22789:9;22766:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22691:116:::0;:::o;22450:233::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22505:26:::1;22534:21;22505:50;;22590:1;22569:18;:22;22566:110;;;22625:9;;;;;;;;;;;22617:27;;:47;22645:18;22617:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22566:110;22494:189;22450:233::o:0;17234:80::-;17286:7;17304;:5;:7::i;:::-;17297:14;;17234:80;:::o;12040:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3058:79::-;3096:7;3123:6;;;;;;;;;;;3116:13;;3058:79;:::o;12572:78::-;;;;;;;;;;;;;:::o;17058:84::-;17108:13;17132:7;;;;;;;;;;;;;;;;;17125:14;;17058:84;:::o;15052:122::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15160:6:::1;15138:11;:19;15150:6;15138:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15052:122:::0;;:::o;12484:19::-;;;;;;;;;;;;;:::o;17930:152::-;18010:4;18034:40;18044:10;18056:9;18067:6;18034:9;:40::i;:::-;18027:47;;17930:152;;;;:::o;12778:36::-;;;;;;;;;;;;;:::o;14079:166::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14155:6:::1;14150:88;14171:5;:12;14167:1;:16;14150:88;;;14222:4;14205;:14;14210:5;14216:1;14210:8;;;;;;;;:::i;:::-;;;;;;;;14205:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14185:3;;;;;:::i;:::-;;;;14150:88;;;;14079:166:::0;:::o;15457:121::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15556:14:::1;15543:10;;:27;;;;;;;;;;;;;;;;;;15457:121:::0;:::o;12153:25::-;;;;:::o;12510:22::-;;;;;;;;;;;;;:::o;12333:30::-;;;;:::o;14297:115::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14363:12:::1;14350:10;:25;;;;14400:4;14386:11;;:18;;;;;;;;;;;;;;;;;;14297:115::o:0;12293:33::-;;;;:::o;16596:113::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16695:6:::1;16675:17;:26;;;;16596:113:::0;:::o;14833:95::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14912:8:::1;14904:5;:16;;;;14833:95:::0;:::o;17431:133::-;17515:7;17533:11;:19;17545:6;17533:19;;;;;;;;;;;;;;;:28;17553:7;17533:28;;;;;;;;;;;;;;;;17526:35;;17431:133;;;;:::o;3428:244::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3537:1:::1;3517:22;;:8;:22;;::::0;3509:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3627:8;3598:38;;3619:6;::::0;::::1;;;;;;;;3598:38;;;;;;;;;;;;3656:8;3647:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3428:244:::0;:::o;16456:132::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16544:36:::1;16565:6;16573;16544:20;:36::i;:::-;16456:132:::0;;:::o;12453:24::-;;;;;;;;;;;;;:::o;13035:47::-;;;;:::o;12821:36::-;;;;:::o;15182:136::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15304:6:::1;15278:15;:23;15294:6;15278:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15182:136:::0;;:::o;11267:63::-;;;;;;;;;;;;;:::o;12734:31::-;;;;;;;;;;;;;:::o;1042:132::-;1100:7;1127:39;1131:1;1134;1127:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1120:46;;1042:132;;;;:::o;2522:98::-;2575:7;2602:10;2595:17;;2522:98;:::o;588:192::-;674:7;707:1;702;:6;;710:12;694:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;734:9;750:1;746;:5;;;;:::i;:::-;734:17;;771:1;764:8;;;588:192;;;;;:::o;18464:1430::-;18552:4;18582:7;:5;:7::i;:::-;18573:16;;:6;:16;;;;:39;;;;;18605:7;:5;:7::i;:::-;18593:19;;:9;:19;;;;18573:39;18569:92;;;18622:11;;;;;;;;;;;18614:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18569:92;18723:4;:12;18728:6;18723:12;;;;;;;;;;;;;;;;;;;;;;;;;18722:13;:33;;;;;18740:4;:15;18745:9;18740:15;;;;;;;;;;;;;;;;;;;;;;;;;18739:16;18722:33;18714:42;;;;;;18772:16;;;;;;;;;;;18769:73;;;18798:41;18813:6;18821:9;18832:6;18798:14;:41::i;:::-;18791:48;;;;18769:73;18872:5;;18862:6;:15;;:42;;;;18881:15;:23;18897:6;18881:23;;;;;;;;;;;;;;;;;;;;;;;;;18862:42;18854:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;18928:15;:26;18944:9;18928:26;;;;;;;;;;;;;;;;;;;;;;;;;18927:27;:38;;;;;18958:7;;;;;;;;;;;18927:38;18924:143;;;19035:9;;18999:32;19024:6;18999:9;:20;19009:9;18999:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:45;;18991:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18924:143;19096:4;;;;;;;;;;;19082:18;;:10;:18;;;;:39;;;;;19105:16;;;;;;;;;;;19104:17;19082:39;:64;;;;;19125:21;;;;;;;;;;;19082:64;:109;;;;;19178:13;;19150:9;:24;19168:4;19150:24;;;;;;;;;;;;;;;;:41;;19082:109;19079:128;;;19194:10;:8;:10::i;:::-;19079:128;19239:53;19261:6;19239:53;;;;;;;;;;;;;;;;;:9;:17;19249:6;19239:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19219:9;:17;19229:6;19219:17;;;;;;;;;;;;;;;:73;;;;19313:19;19336:11;:19;19348:6;19336:19;;;;;;;;;;;;;;;;;;;;;;;;;19335:20;:47;;;;;19360:11;:22;19372:9;19360:22;;;;;;;;;;;;;;;;;;;;;;;;;19359:23;19335:47;:93;;19422:6;19335:93;;;19385:34;19393:6;19401:9;19412:6;19385:7;:34::i;:::-;19335:93;19313:115;;19462:37;19487:11;19462:9;:20;19472:9;19462:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19439:9;:20;19449:9;19439:20;;;;;;;;;;;;;;;:60;;;;19545:16;:24;19562:6;19545:24;;;;;;;;;;;;;;;;;;;;;;;;;19541:122;;19590:14;;;;;;;;;;;:23;;;19614:6;19622:9;:17;19632:6;19622:17;;;;;;;;;;;;;;;;19590:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19586:66;19541:122;19679:16;:27;19696:9;19679:27;;;;;;;;;;;;;;;;;;;;;;;;;19675:132;;19727:14;;;;;;;;;;;:23;;;19751:9;19762;:20;19772:9;19762:20;;;;;;;;;;;;;;;;19727:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19723:72;19675:132;19841:9;19824:40;;19833:6;19824:40;;;19852:11;19824:40;;;;;;:::i;:::-;;;;;;;;19882:4;19875:11;;;18464:1430;;;;;;:::o;446:136::-;504:7;531:43;535:1;538;531:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;524:50;;446:136;;;;:::o;21444:916::-;12917:4;12898:16;;:23;;;;;;;;;;;;;;;;;;21502:20:::1;21525:9;:24;21543:4;21525:24;;;;;;;;;;;;;;;;21502:47;;21561:26;21590:45;21633:1;21590:38;21624:3;21590:29;21607:11;;21590:12;:16;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;21561:74;;21651:20;21674:36;21691:18;21674:12;:16;;:36;;;;:::i;:::-;21651:59;;21723:30;21740:12;21723:16;:30::i;:::-;21766:23;21792:21;21766:47;;21824:17;21844:43;21883:3;21844:34;21864:13;;21844:15;:19;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;21824:63;;21898:17;21918:41;21955:3;21918:32;21938:11;;21918:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;21898:61;;21970:23;21996:48;22042:1;21996:41;22033:3;21996:32;22016:11;;21996:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;21970:74;;22085:1;22067:15;:19;22063:89;;;22110:9;;;;;;;;;;;22102:27;;:38;22130:9;22102:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22063:89;22176:14;;;;;;;;;;;:22;;;22206:9;22176:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22172:58:::0;22275:1:::1;22254:18;:22;22250:103;;;22292:49;22305:18;22325:15;22292:12;:49::i;:::-;22250:103;21485:875;;;;;;;12963:5:::0;12944:16;;:24;;;;;;;;;;;;;;;;;;21444:916::o;16105:343::-;16210:4;16192:23;;:6;:23;;;;:41;;;;;16229:4;;;;;;;;;;;16219:14;;:6;:14;;;;16192:41;16184:50;;;;;;16272:6;16245:16;:24;16262:6;16245:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16292:6;16289:152;;;16314:14;;;;;;;;;;;:23;;;16338:6;16346:1;16314:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16289:152;;;16379:14;;;;;;;;;;;:23;;;16403:6;16411:9;:17;16421:6;16411:17;;;;;;;;;;;;;;;;16379:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16289:152;16105:343;;:::o;1180:345::-;1266:7;1365:1;1361;:5;1368:12;1353:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1392:9;1408:1;1404;:5;;;;:::i;:::-;1392:17;;1516:1;1509:8;;;1180:345;;;;;:::o;19906:330::-;19999:4;20036:53;20058:6;20036:53;;;;;;;;;;;;;;;;;:9;:17;20046:6;20036:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20016:9;:17;20026:6;20016:17;;;;;;;;;;;;;;;:73;;;;20123:32;20148:6;20123:9;:20;20133:9;20123:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20100:9;:20;20110:9;20100:20;;;;;;;;;;;;;;;:55;;;;20188:9;20171:35;;20180:6;20171:35;;;20199:6;20171:35;;;;;;:::i;:::-;;;;;;;;20224:4;20217:11;;19906:330;;;;;:::o;259:181::-;317:7;337:9;353:1;349;:5;;;;:::i;:::-;337:17;;378:1;373;:6;;365:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;431:1;424:8;;;259:181;;;;:::o;20250:427::-;20336:7;20366:21;20398:9;20390:17;;:4;;;;;;;;;;;:17;;;:36;;20420:6;;20390:36;;;20410:7;;20390:36;20366:60;;20437:17;20457:34;20487:3;20457:25;20468:13;20457:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20437:54;;20531:39;20560:9;20531;:24;20549:4;20531:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20504:9;:24;20522:4;20504:24;;;;;;;;;;;;;;;:66;;;;20611:4;20586:42;;20595:6;20586:42;;;20618:9;20586:42;;;;;;:::i;:::-;;;;;;;;20648:21;20659:9;20648:6;:10;;:21;;;;:::i;:::-;20641:28;;;;20250:427;;;;;:::o;786:250::-;844:7;873:1;868;:6;864:47;;898:1;891:8;;;;864:47;923:9;939:1;935;:5;;;;:::i;:::-;923:17;;968:1;963;959;:5;;;;:::i;:::-;:10;951:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1027:1;1020:8;;;786:250;;;;;:::o;20689:460::-;20757:21;20795:1;20781:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20757:40;;20826:4;20808;20813:1;20808:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20852:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20842:4;20847:1;20842:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20878:35;20894:4;20901:11;20878:7;:35::i;:::-;;20926:6;;;;;;;;;;;:57;;;20998:11;21024:1;21068:4;21095;21115:15;20926:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20744:405;20689:460;:::o;21157:279::-;21238:6;;;;;;;;;;;:22;;;21268:9;21301:4;21321:11;21347:1;21363;21379:8;;;;;;;;;;;21402:15;21238:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21157:279;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:104::-;3891:7;3920:24;3938:5;3920:24;:::i;:::-;3909:35;;3846:104;;;:::o;3956:138::-;4037:32;4063:5;4037:32;:::i;:::-;4030:5;4027:43;4017:71;;4084:1;4081;4074:12;4017:71;3956:138;:::o;4100:155::-;4154:5;4192:6;4179:20;4170:29;;4208:41;4243:5;4208:41;:::i;:::-;4100:155;;;;:::o;4261:345::-;4328:6;4377:2;4365:9;4356:7;4352:23;4348:32;4345:119;;;4383:79;;:::i;:::-;4345:119;4503:1;4528:61;4581:7;4572:6;4561:9;4557:22;4528:61;:::i;:::-;4518:71;;4474:125;4261:345;;;;:::o;4612:619::-;4689:6;4697;4705;4754:2;4742:9;4733:7;4729:23;4725:32;4722:119;;;4760:79;;:::i;:::-;4722:119;4880:1;4905:53;4950:7;4941:6;4930:9;4926:22;4905:53;:::i;:::-;4895:63;;4851:117;5007:2;5033:53;5078:7;5069:6;5058:9;5054:22;5033:53;:::i;:::-;5023:63;;4978:118;5135:2;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5106:118;4612:619;;;;;:::o;5237:329::-;5296:6;5345:2;5333:9;5324:7;5320:23;5316:32;5313:119;;;5351:79;;:::i;:::-;5313:119;5471:1;5496:53;5541:7;5532:6;5521:9;5517:22;5496:53;:::i;:::-;5486:63;;5442:117;5237:329;;;;:::o;5572:474::-;5640:6;5648;5697:2;5685:9;5676:7;5672:23;5668:32;5665:119;;;5703:79;;:::i;:::-;5665:119;5823:1;5848:53;5893:7;5884:6;5873:9;5869:22;5848:53;:::i;:::-;5838:63;;5794:117;5950:2;5976:53;6021:7;6012:6;6001:9;5997:22;5976:53;:::i;:::-;5966:63;;5921:118;5572:474;;;;;:::o;6052:619::-;6129:6;6137;6145;6194:2;6182:9;6173:7;6169:23;6165:32;6162:119;;;6200:79;;:::i;:::-;6162:119;6320:1;6345:53;6390:7;6381:6;6370:9;6366:22;6345:53;:::i;:::-;6335:63;;6291:117;6447:2;6473:53;6518:7;6509:6;6498:9;6494:22;6473:53;:::i;:::-;6463:63;;6418:118;6575:2;6601:53;6646:7;6637:6;6626:9;6622:22;6601:53;:::i;:::-;6591:63;;6546:118;6052:619;;;;;:::o;6677:86::-;6712:7;6752:4;6745:5;6741:16;6730:27;;6677:86;;;:::o;6769:112::-;6852:22;6868:5;6852:22;:::i;:::-;6847:3;6840:35;6769:112;;:::o;6887:214::-;6976:4;7014:2;7003:9;6999:18;6991:26;;7027:67;7091:1;7080:9;7076:17;7067:6;7027:67;:::i;:::-;6887:214;;;;:::o;7107:116::-;7177:21;7192:5;7177:21;:::i;:::-;7170:5;7167:32;7157:60;;7213:1;7210;7203:12;7157:60;7107:116;:::o;7229:133::-;7272:5;7310:6;7297:20;7288:29;;7326:30;7350:5;7326:30;:::i;:::-;7229:133;;;;:::o;7368:468::-;7433:6;7441;7490:2;7478:9;7469:7;7465:23;7461:32;7458:119;;;7496:79;;:::i;:::-;7458:119;7616:1;7641:50;7683:7;7674:6;7663:9;7659:22;7641:50;:::i;:::-;7631:60;;7587:114;7740:2;7766:53;7811:7;7802:6;7791:9;7787:22;7766:53;:::i;:::-;7756:63;;7711:118;7368:468;;;;;:::o;7842:118::-;7929:24;7947:5;7929:24;:::i;:::-;7924:3;7917:37;7842:118;;:::o;7966:222::-;8059:4;8097:2;8086:9;8082:18;8074:26;;8110:71;8178:1;8167:9;8163:17;8154:6;8110:71;:::i;:::-;7966:222;;;;:::o;8194:329::-;8253:6;8302:2;8290:9;8281:7;8277:23;8273:32;8270:119;;;8308:79;;:::i;:::-;8270:119;8428:1;8453:53;8498:7;8489:6;8478:9;8474:22;8453:53;:::i;:::-;8443:63;;8399:117;8194:329;;;;:::o;8529:468::-;8594:6;8602;8651:2;8639:9;8630:7;8626:23;8622:32;8619:119;;;8657:79;;:::i;:::-;8619:119;8777:1;8802:53;8847:7;8838:6;8827:9;8823:22;8802:53;:::i;:::-;8792:63;;8748:117;8904:2;8930:50;8972:7;8963:6;8952:9;8948:22;8930:50;:::i;:::-;8920:60;;8875:115;8529:468;;;;;:::o;9003:60::-;9031:3;9052:5;9045:12;;9003:60;;;:::o;9069:142::-;9119:9;9152:53;9170:34;9179:24;9197:5;9179:24;:::i;:::-;9170:34;:::i;:::-;9152:53;:::i;:::-;9139:66;;9069:142;;;:::o;9217:134::-;9275:9;9308:37;9339:5;9308:37;:::i;:::-;9295:50;;9217:134;;;:::o;9357:165::-;9438:9;9471:45;9510:5;9471:45;:::i;:::-;9458:58;;9357:165;;;:::o;9528:193::-;9646:68;9708:5;9646:68;:::i;:::-;9641:3;9634:81;9528:193;;:::o;9727:284::-;9851:4;9889:2;9878:9;9874:18;9866:26;;9902:102;10001:1;9990:9;9986:17;9977:6;9902:102;:::i;:::-;9727:284;;;;:::o;10017:117::-;10126:1;10123;10116:12;10140:180;10188:77;10185:1;10178:88;10285:4;10282:1;10275:15;10309:4;10306:1;10299:15;10326:281;10409:27;10431:4;10409:27;:::i;:::-;10401:6;10397:40;10539:6;10527:10;10524:22;10503:18;10491:10;10488:34;10485:62;10482:88;;;10550:18;;:::i;:::-;10482:88;10590:10;10586:2;10579:22;10369:238;10326:281;;:::o;10613:129::-;10647:6;10674:20;;:::i;:::-;10664:30;;10703:33;10731:4;10723:6;10703:33;:::i;:::-;10613:129;;;:::o;10748:311::-;10825:4;10915:18;10907:6;10904:30;10901:56;;;10937:18;;:::i;:::-;10901:56;10987:4;10979:6;10975:17;10967:25;;11047:4;11041;11037:15;11029:23;;10748:311;;;:::o;11065:117::-;11174:1;11171;11164:12;11205:710;11301:5;11326:81;11342:64;11399:6;11342:64;:::i;:::-;11326:81;:::i;:::-;11317:90;;11427:5;11456:6;11449:5;11442:21;11490:4;11483:5;11479:16;11472:23;;11543:4;11535:6;11531:17;11523:6;11519:30;11572:3;11564:6;11561:15;11558:122;;;11591:79;;:::i;:::-;11558:122;11706:6;11689:220;11723:6;11718:3;11715:15;11689:220;;;11798:3;11827:37;11860:3;11848:10;11827:37;:::i;:::-;11822:3;11815:50;11894:4;11889:3;11885:14;11878:21;;11765:144;11749:4;11744:3;11740:14;11733:21;;11689:220;;;11693:21;11307:608;;11205:710;;;;;:::o;11938:370::-;12009:5;12058:3;12051:4;12043:6;12039:17;12035:27;12025:122;;12066:79;;:::i;:::-;12025:122;12183:6;12170:20;12208:94;12298:3;12290:6;12283:4;12275:6;12271:17;12208:94;:::i;:::-;12199:103;;12015:293;11938:370;;;;:::o;12314:539::-;12398:6;12447:2;12435:9;12426:7;12422:23;12418:32;12415:119;;;12453:79;;:::i;:::-;12415:119;12601:1;12590:9;12586:17;12573:31;12631:18;12623:6;12620:30;12617:117;;;12653:79;;:::i;:::-;12617:117;12758:78;12828:7;12819:6;12808:9;12804:22;12758:78;:::i;:::-;12748:88;;12544:302;12314:539;;;;:::o;12859:474::-;12927:6;12935;12984:2;12972:9;12963:7;12959:23;12955:32;12952:119;;;12990:79;;:::i;:::-;12952:119;13110:1;13135:53;13180:7;13171:6;13160:9;13156:22;13135:53;:::i;:::-;13125:63;;13081:117;13237:2;13263:53;13308:7;13299:6;13288:9;13284:22;13263:53;:::i;:::-;13253:63;;13208:118;12859:474;;;;;:::o;13339:126::-;13389:9;13422:37;13453:5;13422:37;:::i;:::-;13409:50;;13339:126;;;:::o;13471:144::-;13539:9;13572:37;13603:5;13572:37;:::i;:::-;13559:50;;13471:144;;;:::o;13621:167::-;13726:55;13775:5;13726:55;:::i;:::-;13721:3;13714:68;13621:167;;:::o;13794:258::-;13905:4;13943:2;13932:9;13928:18;13920:26;;13956:89;14042:1;14031:9;14027:17;14018:6;13956:89;:::i;:::-;13794:258;;;;:::o;14058:182::-;14198:34;14194:1;14186:6;14182:14;14175:58;14058:182;:::o;14246:366::-;14388:3;14409:67;14473:2;14468:3;14409:67;:::i;:::-;14402:74;;14485:93;14574:3;14485:93;:::i;:::-;14603:2;14598:3;14594:12;14587:19;;14246:366;;;:::o;14618:419::-;14784:4;14822:2;14811:9;14807:18;14799:26;;14871:9;14865:4;14861:20;14857:1;14846:9;14842:17;14835:47;14899:131;15025:4;14899:131;:::i;:::-;14891:139;;14618:419;;;:::o;15043:332::-;15164:4;15202:2;15191:9;15187:18;15179:26;;15215:71;15283:1;15272:9;15268:17;15259:6;15215:71;:::i;:::-;15296:72;15364:2;15353:9;15349:18;15340:6;15296:72;:::i;:::-;15043:332;;;;;:::o;15381:143::-;15438:5;15469:6;15463:13;15454:22;;15485:33;15512:5;15485:33;:::i;:::-;15381:143;;;;:::o;15530:351::-;15600:6;15649:2;15637:9;15628:7;15624:23;15620:32;15617:119;;;15655:79;;:::i;:::-;15617:119;15775:1;15800:64;15856:7;15847:6;15836:9;15832:22;15800:64;:::i;:::-;15790:74;;15746:128;15530:351;;;;:::o;15887:180::-;15935:77;15932:1;15925:88;16032:4;16029:1;16022:15;16056:4;16053:1;16046:15;16073:180;16121:77;16118:1;16111:88;16218:4;16215:1;16208:15;16242:4;16239:1;16232:15;16259:233;16298:3;16321:24;16339:5;16321:24;:::i;:::-;16312:33;;16367:66;16360:5;16357:77;16354:103;;16437:18;;:::i;:::-;16354:103;16484:1;16477:5;16473:13;16466:20;;16259:233;;;:::o;16498:225::-;16638:34;16634:1;16626:6;16622:14;16615:58;16707:8;16702:2;16694:6;16690:15;16683:33;16498:225;:::o;16729:366::-;16871:3;16892:67;16956:2;16951:3;16892:67;:::i;:::-;16885:74;;16968:93;17057:3;16968:93;:::i;:::-;17086:2;17081:3;17077:12;17070:19;;16729:366;;;:::o;17101:419::-;17267:4;17305:2;17294:9;17290:18;17282:26;;17354:9;17348:4;17344:20;17340:1;17329:9;17325:17;17318:47;17382:131;17508:4;17382:131;:::i;:::-;17374:139;;17101:419;;;:::o;17526:191::-;17566:4;17586:20;17604:1;17586:20;:::i;:::-;17581:25;;17620:20;17638:1;17620:20;:::i;:::-;17615:25;;17659:1;17656;17653:8;17650:34;;;17664:18;;:::i;:::-;17650:34;17709:1;17706;17702:9;17694:17;;17526:191;;;;:::o;17723:173::-;17863:25;17859:1;17851:6;17847:14;17840:49;17723:173;:::o;17902:366::-;18044:3;18065:67;18129:2;18124:3;18065:67;:::i;:::-;18058:74;;18141:93;18230:3;18141:93;:::i;:::-;18259:2;18254:3;18250:12;18243:19;;17902:366;;;:::o;18274:419::-;18440:4;18478:2;18467:9;18463:18;18455:26;;18527:9;18521:4;18517:20;18513:1;18502:9;18498:17;18491:47;18555:131;18681:4;18555:131;:::i;:::-;18547:139;;18274:419;;;:::o;18699:152::-;18839:4;18835:1;18827:6;18823:14;18816:28;18699:152;:::o;18857:365::-;18999:3;19020:66;19084:1;19079:3;19020:66;:::i;:::-;19013:73;;19095:93;19184:3;19095:93;:::i;:::-;19213:2;19208:3;19204:12;19197:19;;18857:365;;;:::o;19228:419::-;19394:4;19432:2;19421:9;19417:18;19409:26;;19481:9;19475:4;19471:20;19467:1;19456:9;19452:17;19445:47;19509:131;19635:4;19509:131;:::i;:::-;19501:139;;19228:419;;;:::o;19653:156::-;19793:8;19789:1;19781:6;19777:14;19770:32;19653:156;:::o;19815:365::-;19957:3;19978:66;20042:1;20037:3;19978:66;:::i;:::-;19971:73;;20053:93;20142:3;20053:93;:::i;:::-;20171:2;20166:3;20162:12;20155:19;;19815:365;;;:::o;20186:419::-;20352:4;20390:2;20379:9;20375:18;20367:26;;20439:9;20433:4;20429:20;20425:1;20414:9;20410:17;20403:47;20467:131;20593:4;20467:131;:::i;:::-;20459:139;;20186:419;;;:::o;20611:332::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20783:71;20851:1;20840:9;20836:17;20827:6;20783:71;:::i;:::-;20864:72;20932:2;20921:9;20917:18;20908:6;20864:72;:::i;:::-;20611:332;;;;;:::o;20949:85::-;20994:7;21023:5;21012:16;;20949:85;;;:::o;21040:158::-;21098:9;21131:61;21149:42;21158:32;21184:5;21158:32;:::i;:::-;21149:42;:::i;:::-;21131:61;:::i;:::-;21118:74;;21040:158;;;:::o;21204:147::-;21299:45;21338:5;21299:45;:::i;:::-;21294:3;21287:58;21204:147;;:::o;21357:348::-;21486:4;21524:2;21513:9;21509:18;21501:26;;21537:71;21605:1;21594:9;21590:17;21581:6;21537:71;:::i;:::-;21618:80;21694:2;21683:9;21679:18;21670:6;21618:80;:::i;:::-;21357:348;;;;;:::o;21711:180::-;21759:77;21756:1;21749:88;21856:4;21853:1;21846:15;21880:4;21877:1;21870:15;21897:185;21937:1;21954:20;21972:1;21954:20;:::i;:::-;21949:25;;21988:20;22006:1;21988:20;:::i;:::-;21983:25;;22027:1;22017:35;;22032:18;;:::i;:::-;22017:35;22074:1;22071;22067:9;22062:14;;21897:185;;;;:::o;22088:305::-;22128:3;22147:20;22165:1;22147:20;:::i;:::-;22142:25;;22181:20;22199:1;22181:20;:::i;:::-;22176:25;;22335:1;22267:66;22263:74;22260:1;22257:81;22254:107;;;22341:18;;:::i;:::-;22254:107;22385:1;22382;22378:9;22371:16;;22088:305;;;;:::o;22399:177::-;22539:29;22535:1;22527:6;22523:14;22516:53;22399:177;:::o;22582:366::-;22724:3;22745:67;22809:2;22804:3;22745:67;:::i;:::-;22738:74;;22821:93;22910:3;22821:93;:::i;:::-;22939:2;22934:3;22930:12;22923:19;;22582:366;;;:::o;22954:419::-;23120:4;23158:2;23147:9;23143:18;23135:26;;23207:9;23201:4;23197:20;23193:1;23182:9;23178:17;23171:47;23235:131;23361:4;23235:131;:::i;:::-;23227:139;;22954:419;;;:::o;23379:348::-;23419:7;23442:20;23460:1;23442:20;:::i;:::-;23437:25;;23476:20;23494:1;23476:20;:::i;:::-;23471:25;;23664:1;23596:66;23592:74;23589:1;23586:81;23581:1;23574:9;23567:17;23563:105;23560:131;;;23671:18;;:::i;:::-;23560:131;23719:1;23716;23712:9;23701:20;;23379:348;;;;:::o;23733:220::-;23873:34;23869:1;23861:6;23857:14;23850:58;23942:3;23937:2;23929:6;23925:15;23918:28;23733:220;:::o;23959:366::-;24101:3;24122:67;24186:2;24181:3;24122:67;:::i;:::-;24115:74;;24198:93;24287:3;24198:93;:::i;:::-;24316:2;24311:3;24307:12;24300:19;;23959:366;;;:::o;24331:419::-;24497:4;24535:2;24524:9;24520:18;24512:26;;24584:9;24578:4;24574:20;24570:1;24559:9;24555:17;24548:47;24612:131;24738:4;24612:131;:::i;:::-;24604:139;;24331:419;;;:::o;24756:143::-;24813:5;24844:6;24838:13;24829:22;;24860:33;24887:5;24860:33;:::i;:::-;24756:143;;;;:::o;24905:351::-;24975:6;25024:2;25012:9;25003:7;24999:23;24995:32;24992:119;;;25030:79;;:::i;:::-;24992:119;25150:1;25175:64;25231:7;25222:6;25211:9;25207:22;25175:64;:::i;:::-;25165:74;;25121:128;24905:351;;;;:::o;25262:114::-;25329:6;25363:5;25357:12;25347:22;;25262:114;;;:::o;25382:184::-;25481:11;25515:6;25510:3;25503:19;25555:4;25550:3;25546:14;25531:29;;25382:184;;;;:::o;25572:132::-;25639:4;25662:3;25654:11;;25692:4;25687:3;25683:14;25675:22;;25572:132;;;:::o;25710:108::-;25787:24;25805:5;25787:24;:::i;:::-;25782:3;25775:37;25710:108;;:::o;25824:179::-;25893:10;25914:46;25956:3;25948:6;25914:46;:::i;:::-;25992:4;25987:3;25983:14;25969:28;;25824:179;;;;:::o;26009:113::-;26079:4;26111;26106:3;26102:14;26094:22;;26009:113;;;:::o;26158:732::-;26277:3;26306:54;26354:5;26306:54;:::i;:::-;26376:86;26455:6;26450:3;26376:86;:::i;:::-;26369:93;;26486:56;26536:5;26486:56;:::i;:::-;26565:7;26596:1;26581:284;26606:6;26603:1;26600:13;26581:284;;;26682:6;26676:13;26709:63;26768:3;26753:13;26709:63;:::i;:::-;26702:70;;26795:60;26848:6;26795:60;:::i;:::-;26785:70;;26641:224;26628:1;26625;26621:9;26616:14;;26581:284;;;26585:14;26881:3;26874:10;;26282:608;;;26158:732;;;;:::o;26896:831::-;27159:4;27197:3;27186:9;27182:19;27174:27;;27211:71;27279:1;27268:9;27264:17;27255:6;27211:71;:::i;:::-;27292:80;27368:2;27357:9;27353:18;27344:6;27292:80;:::i;:::-;27419:9;27413:4;27409:20;27404:2;27393:9;27389:18;27382:48;27447:108;27550:4;27541:6;27447:108;:::i;:::-;27439:116;;27565:72;27633:2;27622:9;27618:18;27609:6;27565:72;:::i;:::-;27647:73;27715:3;27704:9;27700:19;27691:6;27647:73;:::i;:::-;26896:831;;;;;;;;:::o;27733:807::-;27982:4;28020:3;28009:9;28005:19;27997:27;;28034:71;28102:1;28091:9;28087:17;28078:6;28034:71;:::i;:::-;28115:72;28183:2;28172:9;28168:18;28159:6;28115:72;:::i;:::-;28197:80;28273:2;28262:9;28258:18;28249:6;28197:80;:::i;:::-;28287;28363:2;28352:9;28348:18;28339:6;28287:80;:::i;:::-;28377:73;28445:3;28434:9;28430:19;28421:6;28377:73;:::i;:::-;28460;28528:3;28517:9;28513:19;28504:6;28460:73;:::i;:::-;27733:807;;;;;;;;;:::o;28546:663::-;28634:6;28642;28650;28699:2;28687:9;28678:7;28674:23;28670:32;28667:119;;;28705:79;;:::i;:::-;28667:119;28825:1;28850:64;28906:7;28897:6;28886:9;28882:22;28850:64;:::i;:::-;28840:74;;28796:128;28963:2;28989:64;29045:7;29036:6;29025:9;29021:22;28989:64;:::i;:::-;28979:74;;28934:129;29102:2;29128:64;29184:7;29175:6;29164:9;29160:22;29128:64;:::i;:::-;29118:74;;29073:129;28546:663;;;;;:::o

Swarm Source

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