ETH Price: $2,650.61 (+1.74%)

Contract

0xEC782720d78f8EFE3A45fB3eBae078E1118f0F2e
 

Overview

ETH Balance

0.008654422919636237 ETH

Eth Value

$22.94 (@ $2,650.61/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve149457332022-06-11 18:27:08859 days ago1654972028IN
0xEC782720...1118f0F2e
0 ETH0.0011358224.11002546
Approve149415962022-06-11 1:26:03860 days ago1654910763IN
0xEC782720...1118f0F2e
0 ETH0.0013451828.55421293
Approve149150672022-06-06 12:51:24865 days ago1654519884IN
0xEC782720...1118f0F2e
0 ETH0.0023034948.89614489
Approve149050232022-06-04 19:55:24866 days ago1654372524IN
0xEC782720...1118f0F2e
0 ETH0.0037986180.63287971
Approve149050212022-06-04 19:54:48866 days ago1654372488IN
0xEC782720...1118f0F2e
0 ETH0.0035670275.7169617
Approve149049782022-06-04 19:44:34866 days ago1654371874IN
0xEC782720...1118f0F2e
0 ETH0.0044616894.70780511
Approve149042462022-06-04 16:45:48867 days ago1654361148IN
0xEC782720...1118f0F2e
0 ETH0.0025029453.12988173
Approve149042382022-06-04 16:43:02867 days ago1654360982IN
0xEC782720...1118f0F2e
0 ETH0.0020108842.6848216
Approve149040082022-06-04 15:43:07867 days ago1654357387IN
0xEC782720...1118f0F2e
0 ETH0.0014832459.74570238
Set Sell Fees149040082022-06-04 15:43:07867 days ago1654357387IN
0xEC782720...1118f0F2e
0 ETH0.0020980859.74570238
Set Buy Fees149040032022-06-04 15:41:03867 days ago1654357263IN
0xEC782720...1118f0F2e
0 ETH0.0017601150.15293589
Set Buy Fees149039962022-06-04 15:39:33867 days ago1654357173IN
0xEC782720...1118f0F2e
0 ETH0.0027519760.47364192
Set Sell Fees149039962022-06-04 15:39:33867 days ago1654357173IN
0xEC782720...1118f0F2e
0 ETH0.002753360.47364192
Approve149039912022-06-04 15:37:24867 days ago1654357044IN
0xEC782720...1118f0F2e
0 ETH0.0020962644.49726235
Claim Dividend149039822022-06-04 15:35:19867 days ago1654356919IN
0xEC782720...1118f0F2e
0 ETH0.003959342.78660386
Approve149039702022-06-04 15:32:25867 days ago1654356745IN
0xEC782720...1118f0F2e
0 ETH0.0023692350.29154768
Set Sell Fees149039622022-06-04 15:29:47867 days ago1654356587IN
0xEC782720...1118f0F2e
0 ETH0.0017282743.28378704
Set Buy Fees149039622022-06-04 15:29:47867 days ago1654356587IN
0xEC782720...1118f0F2e
0 ETH0.0017273243.28378704
Set Sell Fees149039562022-06-04 15:28:19867 days ago1654356499IN
0xEC782720...1118f0F2e
0 ETH0.0026588546.62285643
Approve149039532022-06-04 15:27:36867 days ago1654356456IN
0xEC782720...1118f0F2e
0 ETH0.0022874248.55494782
Set Buy Fees149039512022-06-04 15:27:05867 days ago1654356425IN
0xEC782720...1118f0F2e
0 ETH0.0023812452.32706658
Set Sell Fees149039512022-06-04 15:27:05867 days ago1654356425IN
0xEC782720...1118f0F2e
0 ETH0.002130652.32706658
Approve149039372022-06-04 15:22:53867 days ago1654356173IN
0xEC782720...1118f0F2e
0 ETH0.0018535739.34561553
Approve149039282022-06-04 15:21:07867 days ago1654356067IN
0xEC782720...1118f0F2e
0 ETH0.0024300151.58169225
Approve149038622022-06-04 15:02:03867 days ago1654354923IN
0xEC782720...1118f0F2e
0 ETH0.0032168968.28484304
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
149200912022-06-07 9:29:12864 days ago1654594152
0xEC782720...1118f0F2e
0.00032538 ETH
149200912022-06-07 9:29:12864 days ago1654594152
0xEC782720...1118f0F2e
0.00585684 ETH
149200912022-06-07 9:29:12864 days ago1654594152
0xEC782720...1118f0F2e
0.00618222 ETH
149085562022-06-05 10:17:39866 days ago1654424259
0xEC782720...1118f0F2e
0.00032445 ETH
149085562022-06-05 10:17:39866 days ago1654424259
0xEC782720...1118f0F2e
0.0058401 ETH
149085562022-06-05 10:17:39866 days ago1654424259
0xEC782720...1118f0F2e
0.00616455 ETH
149051492022-06-04 20:32:31866 days ago1654374751
0xEC782720...1118f0F2e
0.00069776 ETH
149051492022-06-04 20:32:31866 days ago1654374751
0xEC782720...1118f0F2e
0.01255983 ETH
149051492022-06-04 20:32:31866 days ago1654374751
0xEC782720...1118f0F2e
0.0132576 ETH
149049942022-06-04 19:48:20866 days ago1654372100
0xEC782720...1118f0F2e
0.00047798 ETH
149049942022-06-04 19:48:20866 days ago1654372100
0xEC782720...1118f0F2e
0.00860364 ETH
149049942022-06-04 19:48:20866 days ago1654372100
0xEC782720...1118f0F2e
0.00908162 ETH
149042952022-06-04 16:55:27867 days ago1654361727
0xEC782720...1118f0F2e
0.00021052 ETH
149042952022-06-04 16:55:27867 days ago1654361727
0xEC782720...1118f0F2e
0.00378942 ETH
149042952022-06-04 16:55:27867 days ago1654361727
0xEC782720...1118f0F2e
0.00399994 ETH
149042732022-06-04 16:51:27867 days ago1654361487
0xEC782720...1118f0F2e
0.0005297 ETH
149042732022-06-04 16:51:27867 days ago1654361487
0xEC782720...1118f0F2e
0.00953462 ETH
149042732022-06-04 16:51:27867 days ago1654361487
0xEC782720...1118f0F2e
0.01006432 ETH
149042502022-06-04 16:47:10867 days ago1654361230
0xEC782720...1118f0F2e
0.00057324 ETH
149042502022-06-04 16:47:10867 days ago1654361230
0xEC782720...1118f0F2e
0.01031835 ETH
149042502022-06-04 16:47:10867 days ago1654361230
0xEC782720...1118f0F2e
0.01089159 ETH
149042322022-06-04 16:42:04867 days ago1654360924
0xEC782720...1118f0F2e
0.00033722 ETH
149042322022-06-04 16:42:04867 days ago1654360924
0xEC782720...1118f0F2e
0.00606999 ETH
149042322022-06-04 16:42:04867 days ago1654360924
0xEC782720...1118f0F2e
0.00640721 ETH
149041662022-06-04 16:27:08867 days ago1654360028
0xEC782720...1118f0F2e
0.00045105 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GIZA2

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-04
*/

/*
               .
              /=\\
             /===\ \
            /=====\' \
           /=======\'' \
          /=========\ ' '\
         /===========\'  ' \
        /=============\ ' '  \
       /===============\   ''  \
      /=================\' ' ' ' \
     /===================\' ' '  ' \
    /=====================\' ' ' ' ' \
   /=======================\  ' ' ' /
  /=========================\ ' ' /
 /===========================\'  /
/=============================\/
 Earn $GIZA by holding $GIZA2!

 https://www.greatpyramid2.com/
 https://twitter.com/Giza2ETH
 https://t.me/GIZA2ETH

*/
//SPDX-License-Identifier: MIT
 
pragma solidity ^0.8.10;
 
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);
}
 
 
/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Ownable {
    address internal owner;
 
    constructor(address _owner) {
        owner = _owner;
    }
 
    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
 
    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }
 
    event OwnershipTransferred(address owner);
}
 
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
 
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setRewardToken(address token) external;
    function transferStuckToken(address token, address recipient) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}
 
contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;
 
    address _token;
 
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
 
    IERC20 RewardToken = IERC20(0xc02D52Dd7d456eDE7f85F897329693c1c8036FCC);
    IDEXRouter router;
 
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
 
    mapping (address => Share) public shares;
 
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
 
    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 8);
 
    uint256 currentIndex;
 
    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }
 
    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
 
    constructor (address _router) {
        router = IDEXRouter(_router);
        _token = msg.sender;
    }
 
    function setRewardToken(address token) external override onlyToken {
        RewardToken = IERC20(token);
    }
 
    function transferStuckToken(address IERC20Address, address recipient) public onlyToken {
        uint256 _contractBalance = IERC20(IERC20Address).balanceOf(address(this));
        payable(recipient).transfer(_contractBalance);
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }
 
    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }
 
        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }
 
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }
 
    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RewardToken.balanceOf(address(this));
 
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);
 
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
 
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
 
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;
 
        if(shareholderCount == 0) { return; }
 
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
 
        uint256 iterations = 0;
 
        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }
 
            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }
 
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
 
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }
 
    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
 
        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
 
    function claimDividend(address shareholder) external onlyToken{
        distributeDividend(shareholder);
    }
 
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
 
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
 
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
 
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }
 
    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }
 
    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }
 
    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}
 
contract GIZA2 is IERC20, Ownable {
    using SafeMath for uint256;
 
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
 
    string constant _name = "The Great Pyramid 2";
    string constant _symbol = "GIZA2";
    uint8 constant _decimals = 9;
 
    uint256 _totalSupply = 21_000_000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100; 
    uint256 public _maxWalletSize = (_totalSupply * 2) / 100; 
 
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
 
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;
 
    uint256 _buyLiquidityFee = 1;
    uint256 _buyReflectionFee = 5;
    uint256 _buyMarketingFee = 4;
    uint256 totalBuyFee = _buyLiquidityFee + _buyReflectionFee + _buyMarketingFee;
 
    uint256 _sellLiquidityFee = 1;
    uint256 _sellReflectionFee = 5;
    uint256 _sellMarketingFee = 4;
    uint256 totalSellFee = _sellLiquidityFee + _sellReflectionFee + _sellMarketingFee;
 
    address private marketingFeeReceiver = msg.sender; 
 
    IDEXRouter public router;
    address public pair;
 
    uint256 public launchedAt;
 
    DividendDistributor distributor;
    uint256 distributorGas = 500000;
 
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 10000 * 3; // 0.03%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
 
    constructor () Ownable(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
 
        distributor = new DividendDistributor(address(router));
 
        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[DEAD] = true;
 
        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }
 
    receive() external payable { }
 
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
 
    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
 
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
 
        return _transferFrom(sender, recipient, amount);
    }
 
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || amount <= _maxTxAmount, "Amount exceed limits");
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
 
        if(shouldSwapBack()){ swapBack(); }
 
        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }
 
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
 
        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
 
        if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }
 
        try distributor.process(distributorGas) {} catch {}
 
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
 
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }
 
    function getTotalFee(bool selling) public view returns (uint256) {
        if(selling) { return totalSellFee; }
        return totalBuyFee;
    }
 
    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(100);
 
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
 
        return amount.sub(feeAmount);
    }
 
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
 
    function swapBack() internal swapping {
        uint256 liquidityFee = _buyLiquidityFee + _sellLiquidityFee;
        uint256 reflectionFee = _buyReflectionFee + _sellReflectionFee;
        uint256 marketingFee = _buyMarketingFee + _sellMarketingFee;
 
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalBuyFee + totalSellFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
 
        uint256 balanceBefore = address(this).balance;
 
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = (totalBuyFee + totalSellFee).sub((liquidityFee).div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
 
        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool success, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
 
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
        }
    }
 
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }
 
    function launch() internal {
        launchedAt = block.number;
    }
 
    function setTxLimit(uint256 amount) external onlyOwner {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }
 
   function setMaxWallet(uint256 amount) external onlyOwner {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }    
 
    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }
 
    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }
 
    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
 
    function setBuyFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee) external onlyOwner {
        _buyLiquidityFee = _liquidityFee;
        _buyReflectionFee = _reflectionFee;
        _buyMarketingFee = _marketingFee;
        totalBuyFee = _buyLiquidityFee.add(_buyReflectionFee).add(_buyMarketingFee);
    }
 
    function setSellFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee) external onlyOwner {
        _sellLiquidityFee = _liquidityFee;
        _sellReflectionFee = _reflectionFee;
        _sellMarketingFee = _marketingFee;
        totalSellFee = _sellLiquidityFee.add(_sellReflectionFee).add(_sellMarketingFee);
    }
 
    function setFeeReceiver(address _marketingFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
    }
 
    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
 
    function manualSend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }
 
    function transferForeignToken(address _token) public onlyOwner {
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).transfer(_contractBalance);
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
 
    function setRewardToken(address token) external onlyOwner {
        distributor.setRewardToken(token);
    }
 
    function transferStuckTokenDistributor(address IERC20Address) external onlyOwner {
        distributor.transferStuckToken(IERC20Address,owner);
    }
 
    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
 
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        return distributor.getUnpaidEarnings(shareholder);
    } 
 
    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        distributorGas = gas;
    }
 
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }
 
    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }
 
    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"IERC20Address","type":"address"}],"name":"transferStuckTokenDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000999190620009f2565b6301406f40620000aa919062000a43565b60035560646002600354620000c0919062000a43565b620000cc919062000ad3565b60045560646002600354620000e2919062000a43565b620000ee919062000ad3565b6005556001600b556005600c556004600d55600d54600c54600b5462000115919062000b0b565b62000121919062000b0b565b600e556001600f5560056010556004601155601154601054600f5462000148919062000b0b565b62000154919062000b0b565b60125533601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506207a1206018556001601960006101000a81548160ff0219169083151502179055506003612710600354620001ce919062000ad3565b620001da919062000a43565b601a55348015620001ea57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000316919062000bd2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c5919062000bd2565b306040518363ffffffff1660e01b8152600401620003e592919062000c15565b6020604051808303816000875af115801562000405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042b919062000bd2565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200055f906200084a565b6200056b919062000c42565b604051809103906000f08015801562000588573d6000803e3d6000fd5b50601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200083b919062000c70565b60405180910390a35062000c8d565b6123078062004df083390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008e657808604811115620008be57620008bd62000858565b5b6001851615620008ce5780820291505b8081029050620008de8562000887565b94506200089e565b94509492505050565b600082620009015760019050620009d4565b81620009115760009050620009d4565b81600181146200092a576002811462000935576200096b565b6001915050620009d4565b60ff8411156200094a576200094962000858565b5b8360020a91508482111562000964576200096362000858565b5b50620009d4565b5060208310610133831016604e8410600b8410161715620009a55782820a9050838111156200099f576200099e62000858565b5b620009d4565b620009b4848484600162000894565b92509050818404811115620009ce57620009cd62000858565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009ff82620009db565b915062000a0c83620009e5565b925062000a3b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008ef565b905092915050565b600062000a5082620009db565b915062000a5d83620009db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a995762000a9862000858565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ae082620009db565b915062000aed83620009db565b92508262000b005762000aff62000aa4565b5b828204905092915050565b600062000b1882620009db565b915062000b2583620009db565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b5d5762000b5c62000858565b5b828201905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b9a8262000b6d565b9050919050565b62000bac8162000b8d565b811462000bb857600080fd5b50565b60008151905062000bcc8162000ba1565b92915050565b60006020828403121562000beb5762000bea62000b68565b5b600062000bfb8482850162000bbb565b91505092915050565b62000c0f8162000b8d565b82525050565b600060408201905062000c2c600083018562000c04565b62000c3b602083018462000c04565b9392505050565b600060208201905062000c59600083018462000c04565b92915050565b62000c6a81620009db565b82525050565b600060208201905062000c87600083018462000c5f565b92915050565b6141538062000c9d6000396000f3fe60806040526004361061024a5760003560e01c8063893d20e811610139578063dd62ed3e116100b6578063f1f3bca31161007a578063f1f3bca3146108bf578063f2fde38b146108fc578063f429389014610925578063f708a64f1461093c578063f84ba65d14610965578063f887ea401461098e57610251565b8063dd62ed3e146107f0578063df20fd491461082d578063e1f3908914610856578063efdcd9741461087f578063f0fc6bca146108a857610251565b8063a8aa1b31116100fd578063a8aa1b31146106f7578063a9059cbb14610722578063bf56b3711461075f578063d51ed1c81461078a578063dc93cf70146107c757610251565b8063893d20e8146106245780638aee81271461064f5780638f9a55c01461067857806395d89b41146106a35780639d1944f5146106ce57610251565b80632d48e896116101c75780635d0044ca1161018b5780635d0044ca1461053f578063658d4b7f146105685780636ddd17131461059157806370a08231146105bc5780637d1db4a5146105f957610251565b80632d48e896146104485780632f54bf6e14610471578063313ce567146104ae578063571ac8b0146104d95780635c85974f1461051657610251565b80631161ae391161020e5780631161ae391461033b57806318160ddd1461037857806323b872dd146103a357806328fd3198146103e05780632b112e491461041d57610251565b80630445b6671461025657806306fdde0314610281578063095ea7b3146102ac5780630d075d9c146102e95780630f683e901461031257610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109b9565b604051610278919061334d565b60405180910390f35b34801561028d57600080fd5b506102966109bf565b6040516102a39190613401565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce91906134b2565b6109fc565b6040516102e0919061350d565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613528565b610aee565b005b34801561031e57600080fd5b5061033960048036038101906103349190613528565b610b81565b005b34801561034757600080fd5b50610362600480360381019061035d919061357b565b610c14565b60405161036f919061350d565b60405180910390f35b34801561038457600080fd5b5061038d610c29565b60405161039a919061334d565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c591906135bb565b610c33565b6040516103d7919061350d565b60405180910390f35b3480156103ec57600080fd5b506104076004803603810190610402919061360e565b610e33565b604051610414919061334d565b60405180910390f35b34801561042957600080fd5b50610432610ed8565b60405161043f919061334d565b60405180910390f35b34801561045457600080fd5b5061046f600480360381019061046a919061357b565b610f5a565b005b34801561047d57600080fd5b506104986004803603810190610493919061360e565b611035565b6040516104a5919061350d565b60405180910390f35b3480156104ba57600080fd5b506104c361108e565b6040516104d09190613657565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb919061360e565b611097565b60405161050d919061350d565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190613672565b6110ca565b005b34801561054b57600080fd5b5061056660048036038101906105619190613672565b611138565b005b34801561057457600080fd5b5061058f600480360381019061058a91906136cb565b6111a6565b005b34801561059d57600080fd5b506105a6611249565b6040516105b3919061350d565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de919061360e565b61125c565b6040516105f0919061334d565b60405180910390f35b34801561060557600080fd5b5061060e6112a5565b60405161061b919061334d565b60405180910390f35b34801561063057600080fd5b506106396112ab565b604051610646919061371a565b60405180910390f35b34801561065b57600080fd5b506106766004803603810190610671919061360e565b6112d4565b005b34801561068457600080fd5b5061068d6113ac565b60405161069a919061334d565b60405180910390f35b3480156106af57600080fd5b506106b86113b2565b6040516106c59190613401565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613672565b6113ef565b005b34801561070357600080fd5b5061070c611450565b604051610719919061371a565b60405180910390f35b34801561072e57600080fd5b50610749600480360381019061074491906134b2565b611476565b604051610756919061350d565b60405180910390f35b34801561076b57600080fd5b5061077461148b565b604051610781919061334d565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190613672565b611491565b6040516107be919061334d565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e9919061360e565b611503565b005b3480156107fc57600080fd5b5061081760048036038101906108129190613735565b611636565b604051610824919061334d565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190613775565b6116bd565b005b34801561086257600080fd5b5061087d6004803603810190610878919061360e565b61172a565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061360e565b611824565b005b3480156108b457600080fd5b506108bd6118b0565b005b3480156108cb57600080fd5b506108e660048036038101906108e191906137b5565b61193f565b6040516108f3919061334d565b60405180910390f35b34801561090857600080fd5b50610923600480360381019061091e9190613820565b61195c565b005b34801561093157600080fd5b5061093a611a1e565b005b34801561094857600080fd5b50610963600480360381019061095e91906136cb565b611ad7565b005b34801561097157600080fd5b5061098c600480360381019061098791906136cb565b611d77565b005b34801561099a57600080fd5b506109a3611e1a565b6040516109b091906138ac565b60405180910390f35b601a5481565b60606040518060400160405280601381526020017f54686520477265617420507972616d6964203200000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc919061334d565b60405180910390a36001905092915050565b610af733611035565b610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90613913565b60405180910390fd5b82600b8190555081600c8190555080600d81905550610b76600d54610b68600c54600b54611e4090919063ffffffff16565b611e4090919063ffffffff16565b600e81905550505050565b610b8a33611035565b610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613913565b60405180910390fd5b82600f819055508160108190555080601181905550610c09601154610bfb601054600f54611e4090919063ffffffff16565b611e4090919063ffffffff16565b601281905550505050565b600082610c2083611491565b11905092915050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e1f57610d9e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9e9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e2a848484611f02565b90509392505050565b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401610e90919061371a565b602060405180830381865afa158015610ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed19190613948565b9050919050565b6000610f55610f08600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661125c565b610f47610f36600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661125c565b6003546126f990919063ffffffff16565b6126f990919063ffffffff16565b905090565b610f6333611035565b610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401610fff929190613975565b600060405180830381600087803b15801561101957600080fd5b505af115801561102d573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60006110c3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109fc565b9050919050565b6110d333611035565b611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990613913565b60405180910390fd5b6103e860035461112291906139fc565b81101561112e57600080fd5b8060048190555050565b61114133611035565b611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117790613913565b60405180910390fd5b6103e860035461119091906139fc565b81101561119c57600080fd5b8060058190555050565b6111af33611035565b6111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590613913565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112dd33611035565b61131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131390613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401611377919061371a565b600060405180830381600087803b15801561139157600080fd5b505af11580156113a5573d6000803e3d6000fd5b5050505050565b60055481565b60606040518060400160405280600581526020017f47495a4132000000000000000000000000000000000000000000000000000000815250905090565b6113f833611035565b611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90613913565b60405180910390fd5b620b71b0811061144657600080fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611483338484611f02565b905092915050565b60165481565b60006114fc61149e610ed8565b6114ee6114df60026114d1601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661125c565b61274390919063ffffffff16565b8561274390919063ffffffff16565b6127be90919063ffffffff16565b9050919050565b61150c33611035565b61154b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154290613913565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611586919061371a565b602060405180830381865afa1580156115a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c79190613948565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611631573d6000803e3d6000fd5b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116c633611035565b611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90613913565b60405180910390fd5b81601960006101000a81548160ff02191690831515021790555080601a819055505050565b61173333611035565b611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663648bdbcd8260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016117ef929190613a2d565b600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b5050505050565b61182d33611035565b61186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390613913565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161190b919061371a565b600060405180830381600087803b15801561192557600080fd5b505af1158015611939573d6000803e3d6000fd5b50505050565b60008115611951576012549050611957565b600e5490505b919050565b61196533611035565b6119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90613913565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611a139190613a77565b60405180910390a150565b611a2733611035565b611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613913565b60405180910390fd5b6000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ad3573d6000803e3d6000fd5b5050565b611ae033611035565b611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613913565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ba95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611bb257600080fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611ca457601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401611c6d929190613acd565b600060405180830381600087803b158015611c8757600080fd5b505af1158015611c9b573d6000803e3d6000fd5b50505050611d73565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611d40929190613af6565b600060405180830381600087803b158015611d5a57600080fd5b505af1158015611d6e573d6000803e3d6000fd5b505050505b5050565b611d8033611035565b611dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db690613913565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284611e4f9190613b1f565b905083811015611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613bc1565b60405180910390fd5b8091505092915050565b6000838311158290611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd9190613401565b60405180910390fd5b5060008385611ef59190613be1565b9050809150509392505050565b6000601b60009054906101000a900460ff1615611f2b57611f24848484612808565b90506126f2565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fd75750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561215957600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061203657506004548211155b612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90613c61565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612119575060055482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121169190613b1f565b11155b612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613cf3565b60405180910390fd5b5b6121616129db565b1561216f5761216e612ab2565b5b6121776130ca565b1580156121d15750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561222b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161222257600080fd5b61222a6130d7565b5b6122b4826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612302856130e0565b61230c5782612318565b612317858585613137565b5b905061236c81600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4090919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124d257601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161249c929190613af6565b600060405180830381600087803b1580156124b657600080fd5b505af19250505080156124c7575060015b6124d0576124d1565b5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125f557601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016125bf929190613af6565b600060405180830381600087803b1580156125d957600080fd5b505af19250505080156125ea575060015b6125f3576125f4565b5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796018546040518263ffffffff1660e01b8152600401612652919061334d565b600060405180830381600087803b15801561266c57600080fd5b505af192505050801561267d575060015b61268657612687565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126e4919061334d565b60405180910390a360019150505b9392505050565b600061273b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e9e565b905092915050565b60008083141561275657600090506127b8565b600082846127649190613d13565b905082848261277391906139fc565b146127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90613ddf565b60405180910390fd5b809150505b92915050565b600061280083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132d1565b905092915050565b6000612893826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129c8919061334d565b60405180910390a3600190509392505050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612a485750601b60009054906101000a900460ff16155b8015612a605750601960009054906101000a900460ff165b8015612aad5750601a54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601b60006101000a81548160ff0219169083151502179055506000600f54600b54612adf9190613b1f565b90506000601054600c54612af39190613b1f565b90506000601154600d54612b079190613b1f565b90506000612b143061125c565b90506000612b5f6002612b51601254600e54612b309190613b1f565b612b43898761274390919063ffffffff16565b6127be90919063ffffffff16565b6127be90919063ffffffff16565b90506000612b7682846126f990919063ffffffff16565b90506000600267ffffffffffffffff811115612b9557612b94613dff565b5b604051908082528060200260200182016040528015612bc35781602001602082028036833780820191505090505b5090503081600081518110612bdb57612bda613e2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca69190613e72565b81600181518110612cba57612cb9613e2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612d5d959493929190613f5d565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b505050506000612da482476126f990919063ffffffff16565b90506000612ddd612dbf60028c6127be90919063ffffffff16565b601254600e54612dcf9190613b1f565b6126f990919063ffffffff16565b90506000612e196002612e0b84612dfd8f8861274390919063ffffffff16565b6127be90919063ffffffff16565b6127be90919063ffffffff16565b90506000612e4283612e348d8761274390919063ffffffff16565b6127be90919063ffffffff16565b90506000612e6b84612e5d8d8861274390919063ffffffff16565b6127be90919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ed757600080fd5b505af193505050508015612ee9575060015b612ef257612ef3565b5b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612f3f90613fe8565b600060405180830381858888f193505050503d8060008114612f7d576040519150601f19603f3d011682016040523d82523d6000602084013e612f82565b606091505b5050905080612fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbd90614049565b60405180910390fd5b60008a111561309f57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161305896959493929190614069565b60606040518083038185885af1158015613076573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061309b91906140ca565b5050505b50505050505050505050505050506000601b60006101000a81548160ff021916908315150217905550565b6000806016541415905090565b43601681905550565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806131b860646131aa61319b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461193f565b8661274390919063ffffffff16565b6127be90919063ffffffff16565b905061320c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4090919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132ac919061334d565b60405180910390a36132c781846126f990919063ffffffff16565b9150509392505050565b60008083118290613318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330f9190613401565b60405180910390fd5b506000838561332791906139fc565b9050809150509392505050565b6000819050919050565b61334781613334565b82525050565b6000602082019050613362600083018461333e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133a2578082015181840152602081019050613387565b838111156133b1576000848401525b50505050565b6000601f19601f8301169050919050565b60006133d382613368565b6133dd8185613373565b93506133ed818560208601613384565b6133f6816133b7565b840191505092915050565b6000602082019050818103600083015261341b81846133c8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061345382613428565b9050919050565b61346381613448565b811461346e57600080fd5b50565b6000813590506134808161345a565b92915050565b61348f81613334565b811461349a57600080fd5b50565b6000813590506134ac81613486565b92915050565b600080604083850312156134c9576134c8613423565b5b60006134d785828601613471565b92505060206134e88582860161349d565b9150509250929050565b60008115159050919050565b613507816134f2565b82525050565b600060208201905061352260008301846134fe565b92915050565b60008060006060848603121561354157613540613423565b5b600061354f8682870161349d565b93505060206135608682870161349d565b92505060406135718682870161349d565b9150509250925092565b6000806040838503121561359257613591613423565b5b60006135a08582860161349d565b92505060206135b18582860161349d565b9150509250929050565b6000806000606084860312156135d4576135d3613423565b5b60006135e286828701613471565b93505060206135f386828701613471565b92505060406136048682870161349d565b9150509250925092565b60006020828403121561362457613623613423565b5b600061363284828501613471565b91505092915050565b600060ff82169050919050565b6136518161363b565b82525050565b600060208201905061366c6000830184613648565b92915050565b60006020828403121561368857613687613423565b5b60006136968482850161349d565b91505092915050565b6136a8816134f2565b81146136b357600080fd5b50565b6000813590506136c58161369f565b92915050565b600080604083850312156136e2576136e1613423565b5b60006136f085828601613471565b9250506020613701858286016136b6565b9150509250929050565b61371481613448565b82525050565b600060208201905061372f600083018461370b565b92915050565b6000806040838503121561374c5761374b613423565b5b600061375a85828601613471565b925050602061376b85828601613471565b9150509250929050565b6000806040838503121561378c5761378b613423565b5b600061379a858286016136b6565b92505060206137ab8582860161349d565b9150509250929050565b6000602082840312156137cb576137ca613423565b5b60006137d9848285016136b6565b91505092915050565b60006137ed82613428565b9050919050565b6137fd816137e2565b811461380857600080fd5b50565b60008135905061381a816137f4565b92915050565b60006020828403121561383657613835613423565b5b60006138448482850161380b565b91505092915050565b6000819050919050565b600061387261386d61386884613428565b61384d565b613428565b9050919050565b600061388482613857565b9050919050565b600061389682613879565b9050919050565b6138a68161388b565b82525050565b60006020820190506138c1600083018461389d565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006138fd600683613373565b9150613908826138c7565b602082019050919050565b6000602082019050818103600083015261392c816138f0565b9050919050565b60008151905061394281613486565b92915050565b60006020828403121561395e5761395d613423565b5b600061396c84828501613933565b91505092915050565b600060408201905061398a600083018561333e565b613997602083018461333e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a0782613334565b9150613a1283613334565b925082613a2257613a2161399e565b5b828204905092915050565b6000604082019050613a42600083018561370b565b613a4f602083018461370b565b9392505050565b6000613a6182613879565b9050919050565b613a7181613a56565b82525050565b6000602082019050613a8c6000830184613a68565b92915050565b6000819050919050565b6000613ab7613ab2613aad84613a92565b61384d565b613334565b9050919050565b613ac781613a9c565b82525050565b6000604082019050613ae2600083018561370b565b613aef6020830184613abe565b9392505050565b6000604082019050613b0b600083018561370b565b613b18602083018461333e565b9392505050565b6000613b2a82613334565b9150613b3583613334565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b6a57613b696139cd565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bab601b83613373565b9150613bb682613b75565b602082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b6000613bec82613334565b9150613bf783613334565b925082821015613c0a57613c096139cd565b5b828203905092915050565b7f416d6f756e7420657863656564206c696d697473000000000000000000000000600082015250565b6000613c4b601483613373565b9150613c5682613c15565b602082019050919050565b60006020820190508181036000830152613c7a81613c3e565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000613cdd602583613373565b9150613ce882613c81565b604082019050919050565b60006020820190508181036000830152613d0c81613cd0565b9050919050565b6000613d1e82613334565b9150613d2983613334565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d6257613d616139cd565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dc9602183613373565b9150613dd482613d6d565b604082019050919050565b60006020820190508181036000830152613df881613dbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e6c8161345a565b92915050565b600060208284031215613e8857613e87613423565b5b6000613e9684828501613e5d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ed481613448565b82525050565b6000613ee68383613ecb565b60208301905092915050565b6000602082019050919050565b6000613f0a82613e9f565b613f148185613eaa565b9350613f1f83613ebb565b8060005b83811015613f50578151613f378882613eda565b9750613f4283613ef2565b925050600181019050613f23565b5085935050505092915050565b600060a082019050613f72600083018861333e565b613f7f6020830187613abe565b8181036040830152613f918186613eff565b9050613fa0606083018561370b565b613fad608083018461333e565b9695505050505050565b600081905092915050565b50565b6000613fd2600083613fb7565b9150613fdd82613fc2565b600082019050919050565b6000613ff382613fc5565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000614033601e83613373565b915061403e82613ffd565b602082019050919050565b6000602082019050818103600083015261406281614026565b9050919050565b600060c08201905061407e600083018961370b565b61408b602083018861333e565b6140986040830187613abe565b6140a56060830186613abe565b6140b2608083018561370b565b6140bf60a083018461333e565b979650505050505050565b6000806000606084860312156140e3576140e2613423565b5b60006140f186828701613933565b935050602061410286828701613933565b925050604061411386828701613933565b915050925092509256fea26469706673582212207cf086df6b77e6fed31193823289ad9e53377bbc2d13523458b28ab724e47be664736f6c634300080a0033608060405273c02d52dd7d456ede7f85f897329693c1c8036fcc600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600b55610e10600c556305f5e100600d553480156200008757600080fd5b5060405162002307380380620023078339818101604052810190620000ad91906200019f565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001d1565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000167826200013a565b9050919050565b62000179816200015a565b81146200018557600080fd5b50565b60008151905062000199816200016e565b92915050565b600060208284031215620001b857620001b762000135565b5b6000620001c88482850162000188565b91505092915050565b61212680620001e16000396000f3fe6080604052600436106100f35760003560e01c80638aee81271161008a578063e2d2e21911610059578063e2d2e219146102f7578063efca2eed14610322578063ffb2c4791461034d578063ffd49c8414610376576100f3565b80638aee81271461025a578063997664d714610283578063ce7c2ac2146102ae578063d0e30db0146102ed576100f3565b80632d48e896116100c65780632d48e896146101b25780633a98ef39146101db5780634fab0ae814610206578063648bdbcd14610231576100f3565b806311ce023d146100f857806314b6ca961461012357806315f7e05e1461014c57806328fd319814610175575b600080fd5b34801561010457600080fd5b5061010d6103a1565b60405161011a9190611868565b60405180910390f35b34801561012f57600080fd5b5061014a60048036038101906101459190611912565b6103a7565b005b34801561015857600080fd5b50610173600480360381019061016e9190611952565b610666565b005b34801561018157600080fd5b5061019c60048036038101906101979190611952565b6106ca565b6040516101a99190611868565b60405180910390f35b3480156101be57600080fd5b506101d960048036038101906101d4919061197f565b6107e4565b005b3480156101e757600080fd5b506101f061084e565b6040516101fd9190611868565b60405180910390f35b34801561021257600080fd5b5061021b610854565b6040516102289190611868565b60405180910390f35b34801561023d57600080fd5b50610258600480360381019061025391906119bf565b61085a565b005b34801561026657600080fd5b50610281600480360381019061027c9190611952565b61097c565b005b34801561028f57600080fd5b50610298610a18565b6040516102a59190611868565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190611952565b610a1e565b6040516102e4939291906119ff565b60405180910390f35b6102f5610a48565b005b34801561030357600080fd5b5061030c610e88565b6040516103199190611868565b60405180910390f35b34801561032e57600080fd5b50610337610e8e565b6040516103449190611868565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f9190611a36565b610e94565b005b34801561038257600080fd5b5061038b611028565b6040516103989190611868565b60405180910390f35b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ff57600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610454576104538261102e565b5b6000811180156104a657506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104b9576104b4826112c6565b61051b565b60008114801561050b57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561051a5761051982611375565b5b5b61058481610576600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460075461157c90919063ffffffff16565b6115c690919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061061c600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611624565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106be57600080fd5b6106c78161102e565b50565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561071f57600090506107df565b600061076c600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611624565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107c7576000925050506107df565b6107da818361157c90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461083c57600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b257600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108ed9190611a72565b602060405180830381865afa15801561090a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092e9190611aa2565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610976573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d457600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610afd9190611a72565b602060405180830381865afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190611aa2565b90506000600267ffffffffffffffff811115610b5d57610b5c611acf565b5b604051908082528060200260200182016040528015610b8b5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f9190611b13565b81600081518110610c3357610c32611b40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610ca457610ca3611b40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610d419493929190611c72565b6000604051808303818588803b158015610d5a57600080fd5b505af1158015610d6e573d6000803e3d6000fd5b50505050506000610e2383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dd49190611a72565b602060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e159190611aa2565b61157c90919063ffffffff16565b9050610e3a816008546115c690919063ffffffff16565b600881905550610e7d610e6c600754610e5e84600b5461165690919063ffffffff16565b6116d190919063ffffffff16565b600a546115c690919063ffffffff16565b600a81905550505050565b600a5481565b60095481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eec57600080fd5b600060038054905090506000811415610f055750611025565b6000805a905060005b8483108015610f1c57508381105b156110205783600e5410610f33576000600e819055505b610f7c6003600e5481548110610f4c57610f4b611b40565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661171b565b15610fcb57610fca6003600e5481548110610f9a57610f99611b40565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661102e565b5b610ff0610fe15a8461157c90919063ffffffff16565b846115c690919063ffffffff16565b92505a9150600e600081548092919061100890611ced565b9190505550808061101890611ced565b915050610f0e565b505050505b50565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561107e576112c3565b6000611089826106ca565b905060008111156112c1576110a9816009546115c690919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161110c929190611d36565b6020604051808303816000875af115801561112b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114f9190611d97565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111e981600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546115c690919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061127a600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611624565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113899190611dc4565b8154811061139a57611399611b40565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061141857611417611b40565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114b89190611dc4565b815481106114c9576114c8611b40565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061154457611543611df8565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b60006115be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611788565b905092915050565b60008082846115d59190611e27565b90508381101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161190611eda565b60405180910390fd5b8091505092915050565b600061164f600b54611641600a548561165690919063ffffffff16565b6116d190919063ffffffff16565b9050919050565b60008083141561166957600090506116cb565b600082846116779190611efa565b90508284826116869190611f83565b146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90612026565b60405180910390fd5b809150505b92915050565b600061171383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117ec565b905092915050565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461176b9190611e27565b1080156117815750600d5461177f836106ca565b115b9050919050565b60008383111582906117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c791906120ce565b60405180910390fd5b50600083856117df9190611dc4565b9050809150509392505050565b60008083118290611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a91906120ce565b60405180910390fd5b50600083856118429190611f83565b9050809150509392505050565b6000819050919050565b6118628161184f565b82525050565b600060208201905061187d6000830184611859565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118b382611888565b9050919050565b6118c3816118a8565b81146118ce57600080fd5b50565b6000813590506118e0816118ba565b92915050565b6118ef8161184f565b81146118fa57600080fd5b50565b60008135905061190c816118e6565b92915050565b6000806040838503121561192957611928611883565b5b6000611937858286016118d1565b9250506020611948858286016118fd565b9150509250929050565b60006020828403121561196857611967611883565b5b6000611976848285016118d1565b91505092915050565b6000806040838503121561199657611995611883565b5b60006119a4858286016118fd565b92505060206119b5858286016118fd565b9150509250929050565b600080604083850312156119d6576119d5611883565b5b60006119e4858286016118d1565b92505060206119f5858286016118d1565b9150509250929050565b6000606082019050611a146000830186611859565b611a216020830185611859565b611a2e6040830184611859565b949350505050565b600060208284031215611a4c57611a4b611883565b5b6000611a5a848285016118fd565b91505092915050565b611a6c816118a8565b82525050565b6000602082019050611a876000830184611a63565b92915050565b600081519050611a9c816118e6565b92915050565b600060208284031215611ab857611ab7611883565b5b6000611ac684828501611a8d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611b0d816118ba565b92915050565b600060208284031215611b2957611b28611883565b5b6000611b3784828501611afe565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000611b9e611b99611b9484611b6f565b611b79565b61184f565b9050919050565b611bae81611b83565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611be9816118a8565b82525050565b6000611bfb8383611be0565b60208301905092915050565b6000602082019050919050565b6000611c1f82611bb4565b611c298185611bbf565b9350611c3483611bd0565b8060005b83811015611c65578151611c4c8882611bef565b9750611c5783611c07565b925050600181019050611c38565b5085935050505092915050565b6000608082019050611c876000830187611ba5565b8181036020830152611c998186611c14565b9050611ca86040830185611a63565b611cb56060830184611859565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611cf88261184f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d2b57611d2a611cbe565b5b600182019050919050565b6000604082019050611d4b6000830185611a63565b611d586020830184611859565b9392505050565b60008115159050919050565b611d7481611d5f565b8114611d7f57600080fd5b50565b600081519050611d9181611d6b565b92915050565b600060208284031215611dad57611dac611883565b5b6000611dbb84828501611d82565b91505092915050565b6000611dcf8261184f565b9150611dda8361184f565b925082821015611ded57611dec611cbe565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000611e328261184f565b9150611e3d8361184f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e7257611e71611cbe565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611ec4601b83611e7d565b9150611ecf82611e8e565b602082019050919050565b60006020820190508181036000830152611ef381611eb7565b9050919050565b6000611f058261184f565b9150611f108361184f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611f4957611f48611cbe565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f8e8261184f565b9150611f998361184f565b925082611fa957611fa8611f54565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612010602183611e7d565b915061201b82611fb4565b604082019050919050565b6000602082019050818103600083015261203f81612003565b9050919050565b600081519050919050565b60005b8381101561206f578082015181840152602081019050612054565b8381111561207e576000848401525b50505050565b6000601f19601f8301169050919050565b60006120a082612046565b6120aa8185611e7d565b93506120ba818560208601612051565b6120c381612084565b840191505092915050565b600060208201905081810360008301526120e88184612095565b90509291505056fea2646970667358221220b05719c831d909fc63e9a5a33fb89289839f15091de78dd9567a294ecadd82f364736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063893d20e811610139578063dd62ed3e116100b6578063f1f3bca31161007a578063f1f3bca3146108bf578063f2fde38b146108fc578063f429389014610925578063f708a64f1461093c578063f84ba65d14610965578063f887ea401461098e57610251565b8063dd62ed3e146107f0578063df20fd491461082d578063e1f3908914610856578063efdcd9741461087f578063f0fc6bca146108a857610251565b8063a8aa1b31116100fd578063a8aa1b31146106f7578063a9059cbb14610722578063bf56b3711461075f578063d51ed1c81461078a578063dc93cf70146107c757610251565b8063893d20e8146106245780638aee81271461064f5780638f9a55c01461067857806395d89b41146106a35780639d1944f5146106ce57610251565b80632d48e896116101c75780635d0044ca1161018b5780635d0044ca1461053f578063658d4b7f146105685780636ddd17131461059157806370a08231146105bc5780637d1db4a5146105f957610251565b80632d48e896146104485780632f54bf6e14610471578063313ce567146104ae578063571ac8b0146104d95780635c85974f1461051657610251565b80631161ae391161020e5780631161ae391461033b57806318160ddd1461037857806323b872dd146103a357806328fd3198146103e05780632b112e491461041d57610251565b80630445b6671461025657806306fdde0314610281578063095ea7b3146102ac5780630d075d9c146102e95780630f683e901461031257610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109b9565b604051610278919061334d565b60405180910390f35b34801561028d57600080fd5b506102966109bf565b6040516102a39190613401565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce91906134b2565b6109fc565b6040516102e0919061350d565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613528565b610aee565b005b34801561031e57600080fd5b5061033960048036038101906103349190613528565b610b81565b005b34801561034757600080fd5b50610362600480360381019061035d919061357b565b610c14565b60405161036f919061350d565b60405180910390f35b34801561038457600080fd5b5061038d610c29565b60405161039a919061334d565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c591906135bb565b610c33565b6040516103d7919061350d565b60405180910390f35b3480156103ec57600080fd5b506104076004803603810190610402919061360e565b610e33565b604051610414919061334d565b60405180910390f35b34801561042957600080fd5b50610432610ed8565b60405161043f919061334d565b60405180910390f35b34801561045457600080fd5b5061046f600480360381019061046a919061357b565b610f5a565b005b34801561047d57600080fd5b506104986004803603810190610493919061360e565b611035565b6040516104a5919061350d565b60405180910390f35b3480156104ba57600080fd5b506104c361108e565b6040516104d09190613657565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb919061360e565b611097565b60405161050d919061350d565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190613672565b6110ca565b005b34801561054b57600080fd5b5061056660048036038101906105619190613672565b611138565b005b34801561057457600080fd5b5061058f600480360381019061058a91906136cb565b6111a6565b005b34801561059d57600080fd5b506105a6611249565b6040516105b3919061350d565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de919061360e565b61125c565b6040516105f0919061334d565b60405180910390f35b34801561060557600080fd5b5061060e6112a5565b60405161061b919061334d565b60405180910390f35b34801561063057600080fd5b506106396112ab565b604051610646919061371a565b60405180910390f35b34801561065b57600080fd5b506106766004803603810190610671919061360e565b6112d4565b005b34801561068457600080fd5b5061068d6113ac565b60405161069a919061334d565b60405180910390f35b3480156106af57600080fd5b506106b86113b2565b6040516106c59190613401565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613672565b6113ef565b005b34801561070357600080fd5b5061070c611450565b604051610719919061371a565b60405180910390f35b34801561072e57600080fd5b50610749600480360381019061074491906134b2565b611476565b604051610756919061350d565b60405180910390f35b34801561076b57600080fd5b5061077461148b565b604051610781919061334d565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190613672565b611491565b6040516107be919061334d565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e9919061360e565b611503565b005b3480156107fc57600080fd5b5061081760048036038101906108129190613735565b611636565b604051610824919061334d565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190613775565b6116bd565b005b34801561086257600080fd5b5061087d6004803603810190610878919061360e565b61172a565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061360e565b611824565b005b3480156108b457600080fd5b506108bd6118b0565b005b3480156108cb57600080fd5b506108e660048036038101906108e191906137b5565b61193f565b6040516108f3919061334d565b60405180910390f35b34801561090857600080fd5b50610923600480360381019061091e9190613820565b61195c565b005b34801561093157600080fd5b5061093a611a1e565b005b34801561094857600080fd5b50610963600480360381019061095e91906136cb565b611ad7565b005b34801561097157600080fd5b5061098c600480360381019061098791906136cb565b611d77565b005b34801561099a57600080fd5b506109a3611e1a565b6040516109b091906138ac565b60405180910390f35b601a5481565b60606040518060400160405280601381526020017f54686520477265617420507972616d6964203200000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc919061334d565b60405180910390a36001905092915050565b610af733611035565b610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90613913565b60405180910390fd5b82600b8190555081600c8190555080600d81905550610b76600d54610b68600c54600b54611e4090919063ffffffff16565b611e4090919063ffffffff16565b600e81905550505050565b610b8a33611035565b610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613913565b60405180910390fd5b82600f819055508160108190555080601181905550610c09601154610bfb601054600f54611e4090919063ffffffff16565b611e4090919063ffffffff16565b601281905550505050565b600082610c2083611491565b11905092915050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e1f57610d9e826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9e9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e2a848484611f02565b90509392505050565b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401610e90919061371a565b602060405180830381865afa158015610ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed19190613948565b9050919050565b6000610f55610f08600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661125c565b610f47610f36600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661125c565b6003546126f990919063ffffffff16565b6126f990919063ffffffff16565b905090565b610f6333611035565b610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401610fff929190613975565b600060405180830381600087803b15801561101957600080fd5b505af115801561102d573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60006110c3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109fc565b9050919050565b6110d333611035565b611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990613913565b60405180910390fd5b6103e860035461112291906139fc565b81101561112e57600080fd5b8060048190555050565b61114133611035565b611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117790613913565b60405180910390fd5b6103e860035461119091906139fc565b81101561119c57600080fd5b8060058190555050565b6111af33611035565b6111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590613913565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112dd33611035565b61131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131390613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401611377919061371a565b600060405180830381600087803b15801561139157600080fd5b505af11580156113a5573d6000803e3d6000fd5b5050505050565b60055481565b60606040518060400160405280600581526020017f47495a4132000000000000000000000000000000000000000000000000000000815250905090565b6113f833611035565b611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90613913565b60405180910390fd5b620b71b0811061144657600080fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611483338484611f02565b905092915050565b60165481565b60006114fc61149e610ed8565b6114ee6114df60026114d1601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661125c565b61274390919063ffffffff16565b8561274390919063ffffffff16565b6127be90919063ffffffff16565b9050919050565b61150c33611035565b61154b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154290613913565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611586919061371a565b602060405180830381865afa1580156115a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c79190613948565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611631573d6000803e3d6000fd5b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116c633611035565b611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90613913565b60405180910390fd5b81601960006101000a81548160ff02191690831515021790555080601a819055505050565b61173333611035565b611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663648bdbcd8260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016117ef929190613a2d565b600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b5050505050565b61182d33611035565b61186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390613913565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161190b919061371a565b600060405180830381600087803b15801561192557600080fd5b505af1158015611939573d6000803e3d6000fd5b50505050565b60008115611951576012549050611957565b600e5490505b919050565b61196533611035565b6119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90613913565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611a139190613a77565b60405180910390a150565b611a2733611035565b611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613913565b60405180910390fd5b6000479050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ad3573d6000803e3d6000fd5b5050565b611ae033611035565b611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613913565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ba95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611bb257600080fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611ca457601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401611c6d929190613acd565b600060405180830381600087803b158015611c8757600080fd5b505af1158015611c9b573d6000803e3d6000fd5b50505050611d73565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611d40929190613af6565b600060405180830381600087803b158015611d5a57600080fd5b505af1158015611d6e573d6000803e3d6000fd5b505050505b5050565b611d8033611035565b611dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db690613913565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284611e4f9190613b1f565b905083811015611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613bc1565b60405180910390fd5b8091505092915050565b6000838311158290611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd9190613401565b60405180910390fd5b5060008385611ef59190613be1565b9050809150509392505050565b6000601b60009054906101000a900460ff1615611f2b57611f24848484612808565b90506126f2565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fd75750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561215957600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061203657506004548211155b612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90613c61565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612119575060055482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121169190613b1f565b11155b612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613cf3565b60405180910390fd5b5b6121616129db565b1561216f5761216e612ab2565b5b6121776130ca565b1580156121d15750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561222b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161222257600080fd5b61222a6130d7565b5b6122b4826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612302856130e0565b61230c5782612318565b612317858585613137565b5b905061236c81600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4090919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124d257601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161249c929190613af6565b600060405180830381600087803b1580156124b657600080fd5b505af19250505080156124c7575060015b6124d0576124d1565b5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125f557601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016125bf929190613af6565b600060405180830381600087803b1580156125d957600080fd5b505af19250505080156125ea575060015b6125f3576125f4565b5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796018546040518263ffffffff1660e01b8152600401612652919061334d565b600060405180830381600087803b15801561266c57600080fd5b505af192505050801561267d575060015b61268657612687565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126e4919061334d565b60405180910390a360019150505b9392505050565b600061273b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e9e565b905092915050565b60008083141561275657600090506127b8565b600082846127649190613d13565b905082848261277391906139fc565b146127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90613ddf565b60405180910390fd5b809150505b92915050565b600061280083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132d1565b905092915050565b6000612893826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9e9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129c8919061334d565b60405180910390a3600190509392505050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612a485750601b60009054906101000a900460ff16155b8015612a605750601960009054906101000a900460ff165b8015612aad5750601a54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601b60006101000a81548160ff0219169083151502179055506000600f54600b54612adf9190613b1f565b90506000601054600c54612af39190613b1f565b90506000601154600d54612b079190613b1f565b90506000612b143061125c565b90506000612b5f6002612b51601254600e54612b309190613b1f565b612b43898761274390919063ffffffff16565b6127be90919063ffffffff16565b6127be90919063ffffffff16565b90506000612b7682846126f990919063ffffffff16565b90506000600267ffffffffffffffff811115612b9557612b94613dff565b5b604051908082528060200260200182016040528015612bc35781602001602082028036833780820191505090505b5090503081600081518110612bdb57612bda613e2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca69190613e72565b81600181518110612cba57612cb9613e2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612d5d959493929190613f5d565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b505050506000612da482476126f990919063ffffffff16565b90506000612ddd612dbf60028c6127be90919063ffffffff16565b601254600e54612dcf9190613b1f565b6126f990919063ffffffff16565b90506000612e196002612e0b84612dfd8f8861274390919063ffffffff16565b6127be90919063ffffffff16565b6127be90919063ffffffff16565b90506000612e4283612e348d8761274390919063ffffffff16565b6127be90919063ffffffff16565b90506000612e6b84612e5d8d8861274390919063ffffffff16565b6127be90919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ed757600080fd5b505af193505050508015612ee9575060015b612ef257612ef3565b5b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612f3f90613fe8565b600060405180830381858888f193505050503d8060008114612f7d576040519150601f19603f3d011682016040523d82523d6000602084013e612f82565b606091505b5050905080612fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbd90614049565b60405180910390fd5b60008a111561309f57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161305896959493929190614069565b60606040518083038185885af1158015613076573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061309b91906140ca565b5050505b50505050505050505050505050506000601b60006101000a81548160ff021916908315150217905550565b6000806016541415905090565b43601681905550565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806131b860646131aa61319b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461193f565b8661274390919063ffffffff16565b6127be90919063ffffffff16565b905061320c81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4090919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132ac919061334d565b60405180910390a36132c781846126f990919063ffffffff16565b9150509392505050565b60008083118290613318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330f9190613401565b60405180910390fd5b506000838561332791906139fc565b9050809150509392505050565b6000819050919050565b61334781613334565b82525050565b6000602082019050613362600083018461333e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133a2578082015181840152602081019050613387565b838111156133b1576000848401525b50505050565b6000601f19601f8301169050919050565b60006133d382613368565b6133dd8185613373565b93506133ed818560208601613384565b6133f6816133b7565b840191505092915050565b6000602082019050818103600083015261341b81846133c8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061345382613428565b9050919050565b61346381613448565b811461346e57600080fd5b50565b6000813590506134808161345a565b92915050565b61348f81613334565b811461349a57600080fd5b50565b6000813590506134ac81613486565b92915050565b600080604083850312156134c9576134c8613423565b5b60006134d785828601613471565b92505060206134e88582860161349d565b9150509250929050565b60008115159050919050565b613507816134f2565b82525050565b600060208201905061352260008301846134fe565b92915050565b60008060006060848603121561354157613540613423565b5b600061354f8682870161349d565b93505060206135608682870161349d565b92505060406135718682870161349d565b9150509250925092565b6000806040838503121561359257613591613423565b5b60006135a08582860161349d565b92505060206135b18582860161349d565b9150509250929050565b6000806000606084860312156135d4576135d3613423565b5b60006135e286828701613471565b93505060206135f386828701613471565b92505060406136048682870161349d565b9150509250925092565b60006020828403121561362457613623613423565b5b600061363284828501613471565b91505092915050565b600060ff82169050919050565b6136518161363b565b82525050565b600060208201905061366c6000830184613648565b92915050565b60006020828403121561368857613687613423565b5b60006136968482850161349d565b91505092915050565b6136a8816134f2565b81146136b357600080fd5b50565b6000813590506136c58161369f565b92915050565b600080604083850312156136e2576136e1613423565b5b60006136f085828601613471565b9250506020613701858286016136b6565b9150509250929050565b61371481613448565b82525050565b600060208201905061372f600083018461370b565b92915050565b6000806040838503121561374c5761374b613423565b5b600061375a85828601613471565b925050602061376b85828601613471565b9150509250929050565b6000806040838503121561378c5761378b613423565b5b600061379a858286016136b6565b92505060206137ab8582860161349d565b9150509250929050565b6000602082840312156137cb576137ca613423565b5b60006137d9848285016136b6565b91505092915050565b60006137ed82613428565b9050919050565b6137fd816137e2565b811461380857600080fd5b50565b60008135905061381a816137f4565b92915050565b60006020828403121561383657613835613423565b5b60006138448482850161380b565b91505092915050565b6000819050919050565b600061387261386d61386884613428565b61384d565b613428565b9050919050565b600061388482613857565b9050919050565b600061389682613879565b9050919050565b6138a68161388b565b82525050565b60006020820190506138c1600083018461389d565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006138fd600683613373565b9150613908826138c7565b602082019050919050565b6000602082019050818103600083015261392c816138f0565b9050919050565b60008151905061394281613486565b92915050565b60006020828403121561395e5761395d613423565b5b600061396c84828501613933565b91505092915050565b600060408201905061398a600083018561333e565b613997602083018461333e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a0782613334565b9150613a1283613334565b925082613a2257613a2161399e565b5b828204905092915050565b6000604082019050613a42600083018561370b565b613a4f602083018461370b565b9392505050565b6000613a6182613879565b9050919050565b613a7181613a56565b82525050565b6000602082019050613a8c6000830184613a68565b92915050565b6000819050919050565b6000613ab7613ab2613aad84613a92565b61384d565b613334565b9050919050565b613ac781613a9c565b82525050565b6000604082019050613ae2600083018561370b565b613aef6020830184613abe565b9392505050565b6000604082019050613b0b600083018561370b565b613b18602083018461333e565b9392505050565b6000613b2a82613334565b9150613b3583613334565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b6a57613b696139cd565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bab601b83613373565b9150613bb682613b75565b602082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b6000613bec82613334565b9150613bf783613334565b925082821015613c0a57613c096139cd565b5b828203905092915050565b7f416d6f756e7420657863656564206c696d697473000000000000000000000000600082015250565b6000613c4b601483613373565b9150613c5682613c15565b602082019050919050565b60006020820190508181036000830152613c7a81613c3e565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000613cdd602583613373565b9150613ce882613c81565b604082019050919050565b60006020820190508181036000830152613d0c81613cd0565b9050919050565b6000613d1e82613334565b9150613d2983613334565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d6257613d616139cd565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dc9602183613373565b9150613dd482613d6d565b604082019050919050565b60006020820190508181036000830152613df881613dbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e6c8161345a565b92915050565b600060208284031215613e8857613e87613423565b5b6000613e9684828501613e5d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ed481613448565b82525050565b6000613ee68383613ecb565b60208301905092915050565b6000602082019050919050565b6000613f0a82613e9f565b613f148185613eaa565b9350613f1f83613ebb565b8060005b83811015613f50578151613f378882613eda565b9750613f4283613ef2565b925050600181019050613f23565b5085935050505092915050565b600060a082019050613f72600083018861333e565b613f7f6020830187613abe565b8181036040830152613f918186613eff565b9050613fa0606083018561370b565b613fad608083018461333e565b9695505050505050565b600081905092915050565b50565b6000613fd2600083613fb7565b9150613fdd82613fc2565b600082019050919050565b6000613ff382613fc5565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000614033601e83613373565b915061403e82613ffd565b602082019050919050565b6000602082019050818103600083015261406281614026565b9050919050565b600060c08201905061407e600083018961370b565b61408b602083018861333e565b6140986040830187613abe565b6140a56060830186613abe565b6140b2608083018561370b565b6140bf60a083018461333e565b979650505050505050565b6000806000606084860312156140e3576140e2613423565b5b60006140f186828701613933565b935050602061410286828701613933565b925050604061411386828701613933565b915050925092509256fea26469706673582212207cf086df6b77e6fed31193823289ad9e53377bbc2d13523458b28ab724e47be664736f6c634300080a0033

Deployed Bytecode Sourcemap

11747:12151:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13198:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14316:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14739:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21133:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21476:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23745:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14046:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15260:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23118:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23418:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22549:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3394:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14140:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14964:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20200:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20352:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20869:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13161:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14486:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12145:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14402:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22740:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12207:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14226:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23274:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13018:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15095:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13047:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23569:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22325:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14597:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21973:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22859:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21827:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23019:90;;;;;;;;;;;;;:::i;:::-;;17382:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3617:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22137:179;;;;;;;;;;;;;:::i;:::-;;20514:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20997:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12987:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13198:55;;;;:::o;14316:80::-;14364:13;14388:5;;;;;;;;;;;;;;;;;14381:12;;14316:80;:::o;14739:216::-;14814:4;14866:6;14831:11;:23;14843:10;14831:23;;;;;;;;;;;;;;;:32;14855:7;14831:32;;;;;;;;;;;;;;;:41;;;;14909:7;14888:37;;14897:10;14888:37;;;14918:6;14888:37;;;;;;:::i;:::-;;;;;;;;14943:4;14936:11;;14739:216;;;;:::o;21133:334::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21272:13:::1;21253:16;:32;;;;21316:14;21296:17;:34;;;;21360:13;21341:16;:32;;;;21398:61;21442:16;;21398:39;21419:17;;21398:16;;:20;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;21384:11;:75;;;;21133:334:::0;;;:::o;21476:342::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21617:13:::1;21597:17;:33;;;;21662:14;21641:18;:35;;;;21707:13;21687:17;:33;;;;21746:64;21792:17;;21746:41;21768:18;;21746:17;;:21;;:41;;;;:::i;:::-;:45;;:64;;;;:::i;:::-;21731:12;:79;;;;21476:342:::0;;;:::o;23745:150::-;23825:4;23881:6;23849:29;23869:8;23849:19;:29::i;:::-;:38;23842:45;;23745:150;;;;:::o;14046:88::-;14101:7;14119:12;;14112:19;;14046:88;:::o;15260:371::-;15360:4;15415:17;15380:11;:19;15392:6;15380:19;;;;;;;;;;;;;;;:31;15400:10;15380:31;;;;;;;;;;;;;;;;:52;15377:186;;15482:69;15518:6;15482:69;;;;;;;;;;;;;;;;;:11;:19;15494:6;15482:19;;;;;;;;;;;;;;;:31;15502:10;15482:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;15448:11;:19;15460:6;15448:19;;;;;;;;;;;;;;;:31;15468:10;15448:31;;;;;;;;;;;;;;;:103;;;;15377:186;15583:40;15597:6;15605:9;15616:6;15583:13;:40::i;:::-;15576:47;;15260:371;;;;;:::o;23118:146::-;23187:7;23214:11;;;;;;;;;;;:29;;;23244:11;23214:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23207:49;;23118:146;;;:::o;23418:142::-;23471:7;23498:54;23536:15;23546:4;;;;;;;;;;;23536:9;:15::i;:::-;23498:33;23515:15;23525:4;;;;;;;;;;;23515:9;:15::i;:::-;23498:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;23491:61;;23418:142;:::o;22549:182::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22658:11:::1;;;;;;;;;;;:35;;;22694:10;22706:16;22658:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22549:182:::0;;:::o;3394:103::-;3449:4;3484:5;;;;;;;;;;;3473:16;;:7;:16;;;3466:23;;3394:103;;;:::o;14140:80::-;14192:5;12074:1;14201:16;;14140:80;:::o;14964:122::-;15019:4;15043:35;15051:7;15060:17;15043:7;:35::i;:::-;15036:42;;14964:122;;;:::o;20200:144::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20299:4:::1;20284:12;;:19;;;;:::i;:::-;20274:6;:29;;20266:38;;;::::0;::::1;;20330:6;20315:12;:21;;;;20200:144:::0;:::o;20352:149::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20453:4:::1;20438:12;;:19;;;;:::i;:::-;20428:6;:29;;20420:39;;;::::0;::::1;;20487:6;20470:14;:23;;;;20352:149:::0;:::o;20869:119::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20974:6:::1;20952:11;:19;20964:6;20952:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20869:119:::0;;:::o;13161:30::-;;;;;;;;;;;;;:::o;14486:105::-;14552:7;14570:9;:18;14580:7;14570:18;;;;;;;;;;;;;;;;14563:25;;14486:105;;;:::o;12145:54::-;;;;:::o;14402:78::-;14454:7;14472:5;;;;;;;;;;;14465:12;;14402:78;:::o;22740:110::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22809:11:::1;;;;;;;;;;;:26;;;22836:5;22809:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22740:110:::0;:::o;12207:56::-;;;;:::o;14226:84::-;14276:13;14300:7;;;;;;;;;;;;;;;;;14293:14;;14226:84;:::o;23274:135::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23363:6:::1;23357:3;:12;23349:21;;;::::0;::::1;;23398:3;23381:14;:20;;;;23274:135:::0;:::o;13018:19::-;;;;;;;;;;;;;:::o;15095:156::-;15175:4;15199:44;15213:10;15225:9;15236:6;15199:13;:44::i;:::-;15192:51;;15095:156;;;;:::o;13047:25::-;;;;:::o;23569:167::-;23637:7;23664:64;23705:22;:20;:22::i;:::-;23664:36;23677:22;23697:1;23677:15;23687:4;;;;;;;;;;;23677:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;23664:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;23657:71;;23569:167;;;:::o;22325:215::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22399:24:::1;22433:6;22426:24;;;22459:4;22426:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22399:66;;22484:20;;;;;;;;;;;22476:38;;:56;22515:16;22476:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22388:152;22325:215:::0;:::o;14597:133::-;14681:7;14699:11;:19;14711:6;14699:19;;;;;;;;;;;;;;;:28;14719:7;14699:28;;;;;;;;;;;;;;;;14692:35;;14597:133;;;;:::o;21973:155::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22078:8:::1;22064:11;;:22;;;;;;;;;;;;;;;;;;22113:7;22097:13;:23;;;;21973:155:::0;;:::o;22859:151::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22951:11:::1;;;;;;;;;;;:30;;;22982:13;22996:5;::::0;::::1;;;;;;;;22951:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22859:151:::0;:::o;21827:137::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21935:21:::1;21912:20;;:44;;;;;;;;;;;;;;;;;;21827:137:::0;:::o;23019:90::-;23064:11;;;;;;;;;;;:25;;;23090:10;23064:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23019:90::o;17382:148::-;17438:7;17461;17458:36;;;17479:12;;17472:19;;;;17458:36;17511:11;;17504:18;;17382:148;;;;:::o;3617:136::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3701:3:::1;3693:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3720:25;3741:3;3720:25;;;;;;:::i;:::-;;;;;;;;3617:136:::0;:::o;22137:179::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22189:26:::1;22218:21;22189:50;;22258:20;;;;;;;;;;;22250:38;;:58;22289:18;22250:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22178:138;22137:179::o:0;20514:346::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20628:4:::1;20610:23;;:6;:23;;;;:41;;;;;20647:4;;;;;;;;;;;20637:14;;:6;:14;;;;20610:41;20602:50;;;::::0;::::1;;20690:6;20663:16;:24;20680:6;20663:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20710:6;20707:146;;;20732:11;;;;;;;;;;;:20;;;20753:6;20761:1;20732:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20707:146;;;20794:11;;;;;;;;;;;:20;;;20815:6;20823:9;:17;20833:6;20823:17;;;;;;;;;;;;;;;;20794:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20707:146;20514:346:::0;;:::o;20997:127::-;3292:19;3300:10;3292:7;:19::i;:::-;3284:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21110:6:::1;21084:15;:23;21100:6;21084:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20997:127:::0;;:::o;12987:24::-;;;;;;;;;;;;;:::o;714:182::-;772:7;792:9;808:1;804;:5;;;;:::i;:::-;792:17;;833:1;828;:6;;820:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;887:1;880:8;;;714:182;;;;:::o;1044:193::-;1130:7;1163:1;1158;:6;;1166:12;1150:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1190:9;1206:1;1202;:5;;;;:::i;:::-;1190:17;;1228:1;1221:8;;;1044:193;;;;;:::o;15640:1271::-;15732:4;15752:6;;;;;;;;;;;15749:63;;;15768:41;15783:6;15791:9;15802:6;15768:14;:41::i;:::-;15761:48;;;;15749:63;15842:4;;;;;;;;;;;15829:17;;:9;:17;;;;:38;;;;;15863:4;;;;;;;;;;;15850:17;;:9;:17;;;;15829:38;15825:298;;;15892:15;:26;15908:9;15892:26;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15932:12;;15922:6;:22;;15892:52;15884:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15992:15;:26;16008:9;15992:26;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;;16055:14;;16045:6;16022:9;:20;16032:9;16022:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:47;;15992:77;15984:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;15825:298;16139:16;:14;:16::i;:::-;16136:35;;;16158:10;:8;:10::i;:::-;16136:35;16188:10;:8;:10::i;:::-;16187:11;:32;;;;;16215:4;;;;;;;;;;;16202:17;;:9;:17;;;16187:32;16184:81;;;16250:1;16230:9;:17;16240:6;16230:17;;;;;;;;;;;;;;;;:21;16222:30;;;;;;16254:8;:6;:8::i;:::-;16184:81;16298:53;16320:6;16298:53;;;;;;;;;;;;;;;;;:9;:17;16308:6;16298:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;16278:9;:17;16288:6;16278:17;;;;;;;;;;;;;;;:73;;;;16365:22;16390:21;16404:6;16390:13;:21::i;:::-;:67;;16451:6;16390:67;;;16414:34;16422:6;16430:9;16441:6;16414:7;:34::i;:::-;16390:67;16365:92;;16491:40;16516:14;16491:9;:20;16501:9;16491:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;16468:9;:20;16478:9;16468:20;;;;;;;;;;;;;;;:63;;;;16549:16;:24;16566:6;16549:24;;;;;;;;;;;;;;;;;;;;;;;;;16545:96;;16580:11;;;;;;;;;;;:20;;;16601:6;16609:9;:17;16619:6;16609:17;;;;;;;;;;;;;;;;16580:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16576:63;;;;;;16545:96;16655:16;:27;16672:9;16655:27;;;;;;;;;;;;;;;;;;;;;;;;;16651:105;;16689:11;;;;;;;;;;;:20;;;16710:9;16721;:20;16731:9;16721:20;;;;;;;;;;;;;;;;16689:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16685:69;;;;;;16651:105;16773:11;;;;;;;;;;;:19;;;16793:14;;16773:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16769:51;;;;;;16855:9;16838:43;;16847:6;16838:43;;;16866:14;16838:43;;;;;;:::i;:::-;;;;;;;;16899:4;16892:11;;;15640:1271;;;;;;:::o;902:136::-;960:7;987:43;991:1;994;987:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;980:50;;902:136;;;;:::o;1243:252::-;1301:7;1330:1;1325;:6;1321:47;;;1355:1;1348:8;;;;1321:47;1381:9;1397:1;1393;:5;;;;:::i;:::-;1381:17;;1426:1;1421;1417;:5;;;;:::i;:::-;:10;1409:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1486:1;1479:8;;;1243:252;;;;;:::o;1501:132::-;1559:7;1586:39;1590:1;1593;1586:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1579:46;;1501:132;;;;:::o;16920:330::-;17013:4;17050:53;17072:6;17050:53;;;;;;;;;;;;;;;;;:9;:17;17060:6;17050:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17030:9;:17;17040:6;17030:17;;;;;;;;;;;;;;;:73;;;;17137:32;17162:6;17137:9;:20;17147:9;17137:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17114:9;:20;17124:9;17114:20;;;;;;;;;;;;;;;:55;;;;17202:9;17185:35;;17194:6;17185:35;;;17213:6;17185:35;;;;;;:::i;:::-;;;;;;;;17238:4;17231:11;;16920:330;;;;;:::o;17911:197::-;17960:4;17998;;;;;;;;;;;17984:18;;:10;:18;;;;:38;;;;;18016:6;;;;;;;;;;;18015:7;17984:38;:62;;;;;18035:11;;;;;;;;;;;17984:62;:116;;;;;18087:13;;18059:9;:24;18077:4;18059:24;;;;;;;;;;;;;;;;:41;;17984:116;17977:123;;17911:197;:::o;18117:1895::-;13318:4;13309:6;;:13;;;;;;;;;;;;;;;;;;18166:20:::1;18208:17;;18189:16;;:36;;;;:::i;:::-;18166:59;;18236:21;18280:18;;18260:17;;:38;;;;:::i;:::-;18236:62;;18309:20;18351:17;;18332:16;;:36;;;;:::i;:::-;18309:59;;18382:28;18413:24;18431:4;18413:9;:24::i;:::-;18382:55;;18448:23;18474:77;18549:1;18474:70;18531:12;;18517:11;;:26;;;;:::i;:::-;18474:38;18499:12;18474:20;:24;;:38;;;;:::i;:::-;:42;;:70;;;;:::i;:::-;:74;;:77;;;;:::i;:::-;18448:103;;18562:20;18585:41;18610:15;18585:20;:24;;:41;;;;:::i;:::-;18562:64;;18640:21;18678:1;18664:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18640:40;;18709:4;18691;18696:1;18691:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18735:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18725:4;18730:1;18725:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18762:21;18786;18762:45;;18821:6;;;;;;;;;;;:57;;;18893:12;18920:1;18936:4;18963;18983:15;18821:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19020:17;19040:40;19066:13;19040:21;:25;;:40;;;;:::i;:::-;19020:60;;19091:19;19113:55;19146:21;19165:1;19147:12;19146:18;;:21;;;;:::i;:::-;19128:12;;19114:11;;:26;;;;:::i;:::-;19113:32;;:55;;;;:::i;:::-;19091:77;;19179:26;19208:51;19257:1;19208:44;19240:11;19208:27;19222:12;19208:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;19179:80;;19270:27;19300:45;19333:11;19300:28;19314:13;19300:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;19270:75;;19356:26;19385:44;19417:11;19385:27;19399:12;19385:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;19356:73;;19447:11;;;;;;;;;;;:19;;;19474;19447:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;19443:65;;;;;;19519:12;19568:20;;;;;;;;;;;19560:34;;19602:18;19627:5;19560:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19518:119;;;19656:7;19648:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19733:1;19715:15;:19;19712:293;;;19750:6;;;;;;;;;;;:22;;;19780:18;19826:4;19850:15;19884:1;19904::::0;19924:20:::1;;;;;;;;;;;19963:15;19750:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19712:293;18155:1857;;;;;;;;;;;;;;13336:5:::0;13327:6;;:14;;;;;;;;;;;;;;;;;;18117:1895::o;20021:90::-;20064:4;20102:1;20088:10;;:15;;20081:22;;20021:90;:::o;20120:71::-;20171:12;20158:10;:25;;;;20120:71::o;17259:114::-;17321:4;17346:11;:19;17358:6;17346:19;;;;;;;;;;;;;;;;;;;;;;;;;17345:20;17338:27;;17259:114;;;:::o;17539:363::-;17624:7;17644:17;17664:50;17710:3;17664:41;17675:29;17699:4;;;;;;;;;;;17687:16;;:8;:16;;;17675:11;:29::i;:::-;17664:6;:10;;:41;;;;:::i;:::-;:45;;:50;;;;:::i;:::-;17644:70;;17755:39;17784:9;17755;:24;17773:4;17755:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;17728:9;:24;17746:4;17728:24;;;;;;;;;;;;;;;:66;;;;17835:4;17810:42;;17819:6;17810:42;;;17842:9;17810:42;;;;;;:::i;:::-;;;;;;;;17873:21;17884:9;17873:6;:10;;:21;;;;:::i;:::-;17866:28;;;17539:363;;;;;:::o;1639:346::-;1725:7;1824:1;1820;:5;1827:12;1812:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1851:9;1867:1;1863;:5;;;;:::i;:::-;1851:17;;1976:1;1969:8;;;1639:346;;;;;:::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;1913:117::-;2022:1;2019;2012: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:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:474::-;4539:6;4547;4596:2;4584:9;4575:7;4571:23;4567:32;4564:119;;;4602:79;;:::i;:::-;4564:119;4722:1;4747:53;4792:7;4783:6;4772:9;4768:22;4747:53;:::i;:::-;4737:63;;4693:117;4849:2;4875:53;4920:7;4911:6;4900:9;4896:22;4875:53;:::i;:::-;4865:63;;4820:118;4471:474;;;;;:::o;4951:619::-;5028:6;5036;5044;5093:2;5081:9;5072:7;5068:23;5064:32;5061:119;;;5099:79;;:::i;:::-;5061:119;5219:1;5244:53;5289:7;5280:6;5269:9;5265:22;5244:53;:::i;:::-;5234:63;;5190:117;5346:2;5372:53;5417:7;5408:6;5397:9;5393:22;5372:53;:::i;:::-;5362:63;;5317:118;5474:2;5500:53;5545:7;5536:6;5525:9;5521:22;5500:53;:::i;:::-;5490:63;;5445:118;4951:619;;;;;:::o;5576:329::-;5635:6;5684:2;5672:9;5663:7;5659:23;5655:32;5652:119;;;5690:79;;:::i;:::-;5652:119;5810:1;5835:53;5880:7;5871:6;5860:9;5856:22;5835:53;:::i;:::-;5825:63;;5781:117;5576:329;;;;:::o;5911:86::-;5946:7;5986:4;5979:5;5975:16;5964:27;;5911:86;;;:::o;6003:112::-;6086:22;6102:5;6086:22;:::i;:::-;6081:3;6074:35;6003:112;;:::o;6121:214::-;6210:4;6248:2;6237:9;6233:18;6225:26;;6261:67;6325:1;6314:9;6310:17;6301:6;6261:67;:::i;:::-;6121:214;;;;:::o;6341:329::-;6400:6;6449:2;6437:9;6428:7;6424:23;6420:32;6417:119;;;6455:79;;:::i;:::-;6417:119;6575:1;6600:53;6645:7;6636:6;6625:9;6621:22;6600:53;:::i;:::-;6590:63;;6546:117;6341:329;;;;:::o;6676:116::-;6746:21;6761:5;6746:21;:::i;:::-;6739:5;6736:32;6726:60;;6782:1;6779;6772:12;6726:60;6676:116;:::o;6798:133::-;6841:5;6879:6;6866:20;6857:29;;6895:30;6919:5;6895:30;:::i;:::-;6798:133;;;;:::o;6937:468::-;7002:6;7010;7059:2;7047:9;7038:7;7034:23;7030:32;7027:119;;;7065:79;;:::i;:::-;7027:119;7185:1;7210:53;7255:7;7246:6;7235:9;7231:22;7210:53;:::i;:::-;7200:63;;7156:117;7312:2;7338:50;7380:7;7371:6;7360:9;7356:22;7338:50;:::i;:::-;7328:60;;7283:115;6937:468;;;;;:::o;7411:118::-;7498:24;7516:5;7498:24;:::i;:::-;7493:3;7486:37;7411:118;;:::o;7535:222::-;7628:4;7666:2;7655:9;7651:18;7643:26;;7679:71;7747:1;7736:9;7732:17;7723:6;7679:71;:::i;:::-;7535:222;;;;:::o;7763:474::-;7831:6;7839;7888:2;7876:9;7867:7;7863:23;7859:32;7856:119;;;7894:79;;:::i;:::-;7856:119;8014:1;8039:53;8084:7;8075:6;8064:9;8060:22;8039:53;:::i;:::-;8029:63;;7985:117;8141:2;8167:53;8212:7;8203:6;8192:9;8188:22;8167:53;:::i;:::-;8157:63;;8112:118;7763:474;;;;;:::o;8243:468::-;8308:6;8316;8365:2;8353:9;8344:7;8340:23;8336:32;8333:119;;;8371:79;;:::i;:::-;8333:119;8491:1;8516:50;8558:7;8549:6;8538:9;8534:22;8516:50;:::i;:::-;8506:60;;8462:114;8615:2;8641:53;8686:7;8677:6;8666:9;8662:22;8641:53;:::i;:::-;8631:63;;8586:118;8243:468;;;;;:::o;8717:323::-;8773:6;8822:2;8810:9;8801:7;8797:23;8793:32;8790:119;;;8828:79;;:::i;:::-;8790:119;8948:1;8973:50;9015:7;9006:6;8995:9;8991:22;8973:50;:::i;:::-;8963:60;;8919:114;8717:323;;;;:::o;9046:104::-;9091:7;9120:24;9138:5;9120:24;:::i;:::-;9109:35;;9046:104;;;:::o;9156:138::-;9237:32;9263:5;9237:32;:::i;:::-;9230:5;9227:43;9217:71;;9284:1;9281;9274:12;9217:71;9156:138;:::o;9300:155::-;9354:5;9392:6;9379:20;9370:29;;9408:41;9443:5;9408:41;:::i;:::-;9300:155;;;;:::o;9461:345::-;9528:6;9577:2;9565:9;9556:7;9552:23;9548:32;9545:119;;;9583:79;;:::i;:::-;9545:119;9703:1;9728:61;9781:7;9772:6;9761:9;9757:22;9728:61;:::i;:::-;9718:71;;9674:125;9461:345;;;;:::o;9812:60::-;9840:3;9861:5;9854:12;;9812:60;;;:::o;9878:142::-;9928:9;9961:53;9979:34;9988:24;10006:5;9988:24;:::i;:::-;9979:34;:::i;:::-;9961:53;:::i;:::-;9948:66;;9878:142;;;:::o;10026:126::-;10076:9;10109:37;10140:5;10109:37;:::i;:::-;10096:50;;10026:126;;;:::o;10158:144::-;10226:9;10259:37;10290:5;10259:37;:::i;:::-;10246:50;;10158:144;;;:::o;10308:167::-;10413:55;10462:5;10413:55;:::i;:::-;10408:3;10401:68;10308:167;;:::o;10481:258::-;10592:4;10630:2;10619:9;10615:18;10607:26;;10643:89;10729:1;10718:9;10714:17;10705:6;10643:89;:::i;:::-;10481:258;;;;:::o;10745:156::-;10885:8;10881:1;10873:6;10869:14;10862:32;10745:156;:::o;10907:365::-;11049:3;11070:66;11134:1;11129:3;11070:66;:::i;:::-;11063:73;;11145:93;11234:3;11145:93;:::i;:::-;11263:2;11258:3;11254:12;11247:19;;10907:365;;;:::o;11278:419::-;11444:4;11482:2;11471:9;11467:18;11459:26;;11531:9;11525:4;11521:20;11517:1;11506:9;11502:17;11495:47;11559:131;11685:4;11559:131;:::i;:::-;11551:139;;11278:419;;;:::o;11703:143::-;11760:5;11791:6;11785:13;11776:22;;11807:33;11834:5;11807:33;:::i;:::-;11703:143;;;;:::o;11852:351::-;11922:6;11971:2;11959:9;11950:7;11946:23;11942:32;11939:119;;;11977:79;;:::i;:::-;11939:119;12097:1;12122:64;12178:7;12169:6;12158:9;12154:22;12122:64;:::i;:::-;12112:74;;12068:128;11852:351;;;;:::o;12209:332::-;12330:4;12368:2;12357:9;12353:18;12345:26;;12381:71;12449:1;12438:9;12434:17;12425:6;12381:71;:::i;:::-;12462:72;12530:2;12519:9;12515:18;12506:6;12462:72;:::i;:::-;12209:332;;;;;:::o;12547:180::-;12595:77;12592:1;12585:88;12692:4;12689:1;12682:15;12716:4;12713:1;12706:15;12733:180;12781:77;12778:1;12771:88;12878:4;12875:1;12868:15;12902:4;12899:1;12892:15;12919:185;12959:1;12976:20;12994:1;12976:20;:::i;:::-;12971:25;;13010:20;13028:1;13010:20;:::i;:::-;13005:25;;13049:1;13039:35;;13054:18;;:::i;:::-;13039:35;13096:1;13093;13089:9;13084:14;;12919:185;;;;:::o;13110:332::-;13231:4;13269:2;13258:9;13254:18;13246:26;;13282:71;13350:1;13339:9;13335:17;13326:6;13282:71;:::i;:::-;13363:72;13431:2;13420:9;13416:18;13407:6;13363:72;:::i;:::-;13110:332;;;;;:::o;13448:134::-;13506:9;13539:37;13570:5;13539:37;:::i;:::-;13526:50;;13448:134;;;:::o;13588:147::-;13683:45;13722:5;13683:45;:::i;:::-;13678:3;13671:58;13588:147;;:::o;13741:238::-;13842:4;13880:2;13869:9;13865:18;13857:26;;13893:79;13969:1;13958:9;13954:17;13945:6;13893:79;:::i;:::-;13741:238;;;;:::o;13985:85::-;14030:7;14059:5;14048:16;;13985:85;;;:::o;14076:158::-;14134:9;14167:61;14185:42;14194:32;14220:5;14194:32;:::i;:::-;14185:42;:::i;:::-;14167:61;:::i;:::-;14154:74;;14076:158;;;:::o;14240:147::-;14335:45;14374:5;14335:45;:::i;:::-;14330:3;14323:58;14240:147;;:::o;14393:348::-;14522:4;14560:2;14549:9;14545:18;14537:26;;14573:71;14641:1;14630:9;14626:17;14617:6;14573:71;:::i;:::-;14654:80;14730:2;14719:9;14715:18;14706:6;14654:80;:::i;:::-;14393:348;;;;;:::o;14747:332::-;14868:4;14906:2;14895:9;14891:18;14883:26;;14919:71;14987:1;14976:9;14972:17;14963:6;14919:71;:::i;:::-;15000:72;15068:2;15057:9;15053:18;15044:6;15000:72;:::i;:::-;14747:332;;;;;:::o;15085:305::-;15125:3;15144:20;15162:1;15144:20;:::i;:::-;15139:25;;15178:20;15196:1;15178:20;:::i;:::-;15173:25;;15332:1;15264:66;15260:74;15257:1;15254:81;15251:107;;;15338:18;;:::i;:::-;15251:107;15382:1;15379;15375:9;15368:16;;15085:305;;;;:::o;15396:177::-;15536:29;15532:1;15524:6;15520:14;15513:53;15396:177;:::o;15579:366::-;15721:3;15742:67;15806:2;15801:3;15742:67;:::i;:::-;15735:74;;15818:93;15907:3;15818:93;:::i;:::-;15936:2;15931:3;15927:12;15920:19;;15579:366;;;:::o;15951:419::-;16117:4;16155:2;16144:9;16140:18;16132:26;;16204:9;16198:4;16194:20;16190:1;16179:9;16175:17;16168:47;16232:131;16358:4;16232:131;:::i;:::-;16224:139;;15951:419;;;:::o;16376:191::-;16416:4;16436:20;16454:1;16436:20;:::i;:::-;16431:25;;16470:20;16488:1;16470:20;:::i;:::-;16465:25;;16509:1;16506;16503:8;16500:34;;;16514:18;;:::i;:::-;16500:34;16559:1;16556;16552:9;16544:17;;16376:191;;;;:::o;16573:170::-;16713:22;16709:1;16701:6;16697:14;16690:46;16573:170;:::o;16749:366::-;16891:3;16912:67;16976:2;16971:3;16912:67;:::i;:::-;16905:74;;16988:93;17077:3;16988:93;:::i;:::-;17106:2;17101:3;17097:12;17090:19;;16749:366;;;:::o;17121:419::-;17287:4;17325:2;17314:9;17310:18;17302:26;;17374:9;17368:4;17364:20;17360:1;17349:9;17345:17;17338:47;17402:131;17528:4;17402:131;:::i;:::-;17394:139;;17121:419;;;:::o;17546:224::-;17686:34;17682:1;17674:6;17670:14;17663:58;17755:7;17750:2;17742:6;17738:15;17731:32;17546:224;:::o;17776:366::-;17918:3;17939:67;18003:2;17998:3;17939:67;:::i;:::-;17932:74;;18015:93;18104:3;18015:93;:::i;:::-;18133:2;18128:3;18124:12;18117:19;;17776:366;;;:::o;18148:419::-;18314:4;18352:2;18341:9;18337:18;18329:26;;18401:9;18395:4;18391:20;18387:1;18376:9;18372:17;18365:47;18429:131;18555:4;18429:131;:::i;:::-;18421:139;;18148:419;;;:::o;18573:348::-;18613:7;18636:20;18654:1;18636:20;:::i;:::-;18631:25;;18670:20;18688:1;18670:20;:::i;:::-;18665:25;;18858:1;18790:66;18786:74;18783:1;18780:81;18775:1;18768:9;18761:17;18757:105;18754:131;;;18865:18;;:::i;:::-;18754:131;18913:1;18910;18906:9;18895:20;;18573:348;;;;:::o;18927:220::-;19067:34;19063:1;19055:6;19051:14;19044:58;19136:3;19131:2;19123:6;19119:15;19112:28;18927:220;:::o;19153:366::-;19295:3;19316:67;19380:2;19375:3;19316:67;:::i;:::-;19309:74;;19392:93;19481:3;19392:93;:::i;:::-;19510:2;19505:3;19501:12;19494:19;;19153:366;;;:::o;19525:419::-;19691:4;19729:2;19718:9;19714:18;19706:26;;19778:9;19772:4;19768:20;19764:1;19753:9;19749:17;19742:47;19806:131;19932:4;19806:131;:::i;:::-;19798:139;;19525:419;;;:::o;19950:180::-;19998:77;19995:1;19988:88;20095:4;20092:1;20085:15;20119:4;20116:1;20109:15;20136:180;20184:77;20181:1;20174:88;20281:4;20278:1;20271:15;20305:4;20302:1;20295:15;20322:143;20379:5;20410:6;20404:13;20395:22;;20426:33;20453:5;20426:33;:::i;:::-;20322:143;;;;:::o;20471:351::-;20541:6;20590:2;20578:9;20569:7;20565:23;20561:32;20558:119;;;20596:79;;:::i;:::-;20558:119;20716:1;20741:64;20797:7;20788:6;20777:9;20773:22;20741:64;:::i;:::-;20731:74;;20687:128;20471:351;;;;:::o;20828:114::-;20895:6;20929:5;20923:12;20913:22;;20828:114;;;:::o;20948:184::-;21047:11;21081:6;21076:3;21069:19;21121:4;21116:3;21112:14;21097:29;;20948:184;;;;:::o;21138:132::-;21205:4;21228:3;21220:11;;21258:4;21253:3;21249:14;21241:22;;21138:132;;;:::o;21276:108::-;21353:24;21371:5;21353:24;:::i;:::-;21348:3;21341:37;21276:108;;:::o;21390:179::-;21459:10;21480:46;21522:3;21514:6;21480:46;:::i;:::-;21558:4;21553:3;21549:14;21535:28;;21390:179;;;;:::o;21575:113::-;21645:4;21677;21672:3;21668:14;21660:22;;21575:113;;;:::o;21724:732::-;21843:3;21872:54;21920:5;21872:54;:::i;:::-;21942:86;22021:6;22016:3;21942:86;:::i;:::-;21935:93;;22052:56;22102:5;22052:56;:::i;:::-;22131:7;22162:1;22147:284;22172:6;22169:1;22166:13;22147:284;;;22248:6;22242:13;22275:63;22334:3;22319:13;22275:63;:::i;:::-;22268:70;;22361:60;22414:6;22361:60;:::i;:::-;22351:70;;22207:224;22194:1;22191;22187:9;22182:14;;22147:284;;;22151:14;22447:3;22440:10;;21848:608;;;21724:732;;;;:::o;22462:831::-;22725:4;22763:3;22752:9;22748:19;22740:27;;22777:71;22845:1;22834:9;22830:17;22821:6;22777:71;:::i;:::-;22858:80;22934:2;22923:9;22919:18;22910:6;22858:80;:::i;:::-;22985:9;22979:4;22975:20;22970:2;22959:9;22955:18;22948:48;23013:108;23116:4;23107:6;23013:108;:::i;:::-;23005:116;;23131:72;23199:2;23188:9;23184:18;23175:6;23131:72;:::i;:::-;23213:73;23281:3;23270:9;23266:19;23257:6;23213:73;:::i;:::-;22462:831;;;;;;;;:::o;23299:147::-;23400:11;23437:3;23422:18;;23299:147;;;;:::o;23452:114::-;;:::o;23572:398::-;23731:3;23752:83;23833:1;23828:3;23752:83;:::i;:::-;23745:90;;23844:93;23933:3;23844:93;:::i;:::-;23962:1;23957:3;23953:11;23946:18;;23572:398;;;:::o;23976:379::-;24160:3;24182:147;24325:3;24182:147;:::i;:::-;24175:154;;24346:3;24339:10;;23976:379;;;:::o;24361:180::-;24501:32;24497:1;24489:6;24485:14;24478:56;24361:180;:::o;24547:366::-;24689:3;24710:67;24774:2;24769:3;24710:67;:::i;:::-;24703:74;;24786:93;24875:3;24786:93;:::i;:::-;24904:2;24899:3;24895:12;24888:19;;24547:366;;;:::o;24919:419::-;25085:4;25123:2;25112:9;25108:18;25100:26;;25172:9;25166:4;25162:20;25158:1;25147:9;25143:17;25136:47;25200:131;25326:4;25200:131;:::i;:::-;25192:139;;24919:419;;;:::o;25344:807::-;25593:4;25631:3;25620:9;25616:19;25608:27;;25645:71;25713:1;25702:9;25698:17;25689:6;25645:71;:::i;:::-;25726:72;25794:2;25783:9;25779:18;25770:6;25726:72;:::i;:::-;25808:80;25884:2;25873:9;25869:18;25860:6;25808:80;:::i;:::-;25898;25974:2;25963:9;25959:18;25950:6;25898:80;:::i;:::-;25988:73;26056:3;26045:9;26041:19;26032:6;25988:73;:::i;:::-;26071;26139:3;26128:9;26124:19;26115:6;26071:73;:::i;:::-;25344:807;;;;;;;;;:::o;26157:663::-;26245:6;26253;26261;26310:2;26298:9;26289:7;26285:23;26281:32;26278:119;;;26316:79;;:::i;:::-;26278:119;26436:1;26461:64;26517:7;26508:6;26497:9;26493:22;26461:64;:::i;:::-;26451:74;;26407:128;26574:2;26600:64;26656:7;26647:6;26636:9;26632:22;26600:64;:::i;:::-;26590:74;;26545:129;26713:2;26739:64;26795:7;26786:6;26775:9;26771:22;26739:64;:::i;:::-;26729:74;;26684:129;26157:663;;;;;:::o

Swarm Source

ipfs://b05719c831d909fc63e9a5a33fb89289839f15091de78dd9567a294ecadd82f3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.