ETH Price: $3,182.84 (-7.53%)
Gas: 2 Gwei

Contract

0xEC0C6f7404c68a2f4643f699099BCbe115503a64
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve195522522024-03-31 6:59:23115 days ago1711868363IN
0xEC0C6f74...115503a64
0 ETH0.0009023919.31154869
Approve193432212024-03-01 22:09:47145 days ago1709330987IN
0xEC0C6f74...115503a64
0 ETH0.0023805850.62053836
Approve187029252023-12-03 2:34:35235 days ago1701570875IN
0xEC0C6f74...115503a64
0 ETH0.0013241428.12055748
Approve185627972023-11-13 11:50:59254 days ago1699876259IN
0xEC0C6f74...115503a64
0 ETH0.0017575137.62116336
Approve184196942023-10-24 11:02:47274 days ago1698145367IN
0xEC0C6f74...115503a64
0 ETH0.0010310921.89715029
Approve184188032023-10-24 8:03:11274 days ago1698134591IN
0xEC0C6f74...115503a64
0 ETH0.0006701814.2325872
Approve182735982023-10-04 0:32:47295 days ago1696379567IN
0xEC0C6f74...115503a64
0 ETH0.0006239613.33610933
Approve178898162023-08-11 6:20:23348 days ago1691734823IN
0xEC0C6f74...115503a64
0 ETH0.0006502913.91652426
Approve177034582023-07-16 4:22:23375 days ago1689481343IN
0xEC0C6f74...115503a64
0 ETH0.0006070512.9083892
Approve176117702023-07-03 6:49:59387 days ago1688366999IN
0xEC0C6f74...115503a64
0 ETH0.000395916
Approve175407042023-06-23 7:10:47397 days ago1687504247IN
0xEC0C6f74...115503a64
0 ETH0.000619113.2320783
Approve173403082023-05-26 2:28:23426 days ago1685068103IN
0xEC0C6f74...115503a64
0 ETH0.001572933.40359201
Approve173256712023-05-24 1:04:47428 days ago1684890287IN
0xEC0C6f74...115503a64
0 ETH0.0017590437.64434123
Approve172960052023-05-19 20:50:11432 days ago1684529411IN
0xEC0C6f74...115503a64
0 ETH0.0018175138.89570431
Approve172758022023-05-17 0:26:23435 days ago1684283183IN
0xEC0C6f74...115503a64
0 ETH0.0011411638.43869479
Claim Dividend172733612023-05-16 16:11:23435 days ago1684253483IN
0xEC0C6f74...115503a64
0 ETH0.0020023563.82830373
Approve172732282023-05-16 15:44:47435 days ago1684251887IN
0xEC0C6f74...115503a64
0 ETH0.003658778.29781634
Approve172707542023-05-16 7:20:11435 days ago1684221611IN
0xEC0C6f74...115503a64
0 ETH0.0018894340.38287863
Approve172707322023-05-16 7:15:47435 days ago1684221347IN
0xEC0C6f74...115503a64
0 ETH0.0018924240.18918857
Approve172618602023-05-15 1:12:47437 days ago1684113167IN
0xEC0C6f74...115503a64
0 ETH0.0016340434.93351102
Approve172532642023-05-13 19:57:23438 days ago1684007843IN
0xEC0C6f74...115503a64
0 ETH0.0019106540.57626701
Approve172453322023-05-12 16:31:23439 days ago1683909083IN
0xEC0C6f74...115503a64
0 ETH0.0036647278.44681939
Approve172448912023-05-12 15:02:11439 days ago1683903731IN
0xEC0C6f74...115503a64
0 ETH0.0046547499.61366219
Approve172442822023-05-12 12:59:11439 days ago1683896351IN
0xEC0C6f74...115503a64
0 ETH0.0027431958.70558022
Approve172387222023-05-11 17:57:35440 days ago1683827855IN
0xEC0C6f74...115503a64
0 ETH0.0041937139.84608226
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
187029352023-12-03 2:36:35235 days ago1701570995
0xEC0C6f74...115503a64
0.00274888 ETH
187029352023-12-03 2:36:35235 days ago1701570995
0xEC0C6f74...115503a64
0.00274888 ETH
180319792023-08-31 3:50:35329 days ago1693453835
0xEC0C6f74...115503a64
0.00403663 ETH
180319792023-08-31 3:50:35329 days ago1693453835
0xEC0C6f74...115503a64
0.00403663 ETH
175407072023-06-23 7:11:23397 days ago1687504283
0xEC0C6f74...115503a64
0.00521557 ETH
175407072023-06-23 7:11:23397 days ago1687504283
0xEC0C6f74...115503a64
0.00521557 ETH
173007032023-05-20 12:40:47431 days ago1684586447
0xEC0C6f74...115503a64
0.01482904 ETH
173007032023-05-20 12:40:47431 days ago1684586447
0xEC0C6f74...115503a64
0.01482904 ETH
172866962023-05-18 13:21:11433 days ago1684416071
0xEC0C6f74...115503a64
0.00652887 ETH
172866962023-05-18 13:21:11433 days ago1684416071
0xEC0C6f74...115503a64
0.00652887 ETH
172758082023-05-17 0:27:35435 days ago1684283255
0xEC0C6f74...115503a64
0.00625297 ETH
172758082023-05-17 0:27:35435 days ago1684283255
0xEC0C6f74...115503a64
0.00625297 ETH
172453342023-05-12 16:31:47439 days ago1683909107
0xEC0C6f74...115503a64
0.00605851 ETH
172453342023-05-12 16:31:47439 days ago1683909107
0xEC0C6f74...115503a64
0.00605851 ETH
172414772023-05-12 3:27:35440 days ago1683862055
0xEC0C6f74...115503a64
0.00677775 ETH
172414772023-05-12 3:27:35440 days ago1683862055
0xEC0C6f74...115503a64
0.00677775 ETH
172345062023-05-11 3:41:11441 days ago1683776471
0xEC0C6f74...115503a64
0.00844831 ETH
172345062023-05-11 3:41:11441 days ago1683776471
0xEC0C6f74...115503a64
0.00844831 ETH
172309942023-05-10 15:50:59441 days ago1683733859
0xEC0C6f74...115503a64
0.00957159 ETH
172309942023-05-10 15:50:59441 days ago1683733859
0xEC0C6f74...115503a64
0.00957159 ETH
172265532023-05-10 0:49:47442 days ago1683679787
0xEC0C6f74...115503a64
0.00728984 ETH
172265532023-05-10 0:49:47442 days ago1683679787
0xEC0C6f74...115503a64
0.00728984 ETH
172264462023-05-10 0:27:59442 days ago1683678479
0xEC0C6f74...115503a64
0.01733314 ETH
172264462023-05-10 0:27:59442 days ago1683678479
0xEC0C6f74...115503a64
0.01733314 ETH
172264462023-05-10 0:27:59442 days ago1683678479
0xEC0C6f74...115503a64
0.01733314 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PrintTheFour

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*
https://twitter.com/PrintTheFour
*/


// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.13;

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

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

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

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

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

        return c;
    }
}

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    /**
     * Function modifier to require caller to be contract deployer
     */
    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 deployer. Leaves old deployer 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 setShare(address shareholder, uint256 amount) external;
    function deposit(uint256 amount) external;
    function claimDividend(address shareholder) external;
    function getDividendsClaimedOf (address shareholder) external returns (uint256);
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public _token;
    address public _owner;

    address public immutable FOUR = address(0x244b797d622D4DEe8b188b03546ACAAbD0Cf91A0); //UNI


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

    address[] private shareholders;
    mapping (address => uint256) private shareholderIndexes;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalClaimed;
    uint256 public dividendsPerShare;
    uint256 private dividendsPerShareAccuracyFactor = 10 ** 36;

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

    constructor (address owner) {
        _token = msg.sender;
        _owner = owner;
    }

    receive() external payable { }

    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(uint256 amount) external override onlyToken {
        
        if (amount > 0) {        
            totalDividends = totalDividends.add(amount);
            dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
        }
    }

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

        uint256 amount = getClaimableDividendOf(shareholder);
        if(amount > 0){
            totalClaimed = totalClaimed.add(amount);
            shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            IERC20(FOUR).transfer(shareholder, amount);
        }
    }

    function claimDividend(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getClaimableDividendOf(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();
    }
    
    function manualSend(uint256 amount, address holder) external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(holder).transfer(amount > 0 ? amount : contractETHBalance);
    }


    function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        require (shares[shareholder].amount > 0, "You're not a PRINTER shareholder!");
        return shares[shareholder].totalClaimed;
    }

    }

contract PrintTheFour is IERC20, Auth {
    using SafeMath for uint256;

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

    address public immutable FOUR = address(0x244b797d622D4DEe8b188b03546ACAAbD0Cf91A0); //UNI

    string private constant  _name = "Print The Four";
    string private constant _symbol = "PTF";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 444444444 * (10 ** _decimals);
    uint256 private _maxTxAmountBuy = _totalSupply;
    

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

    mapping (address => bool) private isFeeExempt;
    mapping (address => bool) private isDividendExempt;
    mapping (address => bool) private isBot;
            
    uint256 private totalFee = 4;
    uint256 private feeDenominator = 100;

    address payable public marketingWallet = payable(0x30609a85D673290AFbD75693594e5008f65297Ae);

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool private tradingOpen;
    bool private buyLimit = true;
    uint256 private maxBuy = 1393939 * (10 ** _decimals);
    uint256 public numTokensSellToAddToLiquidity = 278787 * 10**9;

    DividendDistributor private distributor;    
    
    bool public blacklistEnabled = false;
    bool private inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

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

        distributor = new DividendDistributor(_owner);

        isFeeExempt[_owner] = true;
        isFeeExempt[marketingWallet] = true;             
              
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = 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 (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading
        if (blacklistEnabled) {
            require (!isBot[sender] && !isBot[recipient], "Bot!");
        }
        if (buyLimit) { 
            if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir");        
        }

        if (sender == pair && recipient != address(router) && !isFeeExempt[recipient]) {
            require (cooldown[recipient] < block.timestamp);
            cooldown[recipient] = block.timestamp + 60 seconds; 
        }
       
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }      

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
    
        bool shouldSwapBack = (overMinTokenBalance && recipient==pair && balanceOf(address(this)) > 0);
        if(shouldSwapBack){ swapBack(); }

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

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

        if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} 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, address recipient) internal view returns (bool) {
        return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) &&  (sender == pair || recipient == pair) );
   }

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

        return amount.sub(feeAmount);
    }

   
    function swapBack() internal swapping {

        uint256 amountToSwap = balanceOf(address(this));        

        swapTokensForEth(amountToSwap.div(2));
        swapTokensForFOUR(amountToSwap.div(2));

        uint256 dividends = IERC20(FOUR).balanceOf(address(this));

        bool success = IERC20(FOUR).transfer(address(distributor), dividends);

        if (success) {
            distributor.deposit(dividends);            
        }
             
        payable(marketingWallet).transfer(address(this).balance);        
    }

    

    function swapTokensForFOUR(uint256 tokenAmount) private {

        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = WETH;
        path[2] = FOUR;

        // make the swap
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp
        );
    }

    
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }    
  
    
    function setBot(address _address, bool toggle) external onlyOwner {
        isBot[_address] = toggle;
        _setIsDividendExempt(_address, toggle);
    }
    
    
    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

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

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

    function setFee (uint256 _fee) external onlyOwner {
        require (_fee <= 4, "Fee can't exceed 4%");
        totalFee = _fee;
    }
  
    function manualSend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingWallet).transfer(contractETHBalance);
    }

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function claimDividend(address holder) external onlyOwner {
        distributor.claimDividend(holder);
    }
    
    function getClaimableDividendOf(address shareholder) public view returns (uint256) {
        return distributor.getClaimableDividendOf(shareholder);
    }
    
    function manualBurn(uint256 amount) external onlyOwner returns (bool) {
        return _basicTransfer(address(this), DEAD, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = payable(_marketingWallet);
    } 

    function getTotalDividends() external view returns (uint256) {
        return distributor.totalDividends();
    }    

    function getTotalClaimed() external view returns (uint256) {
        return distributor.totalClaimed();
    }

     function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        return distributor.getDividendsClaimedOf(shareholder);
    }

    function removeBuyLimit() external onlyOwner {
        buyLimit = false;
    }

    function checkBot(address account) public view returns (bool) {
        return isBot[account];
    }

    function setBlacklistEnabled() external onlyOwner {
        require (blacklistEnabled == false, "can only be called once");
        blacklistEnabled = true;
    }

    function setSwapThresholdAmount (uint256 amount) external onlyOwner {
        require (amount <= _totalSupply.div(100), "can't exceed 1%");
        numTokensSellToAddToLiquidity = amount * 10 ** 9;
    } 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":"FOUR","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"blacklistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","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":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","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":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073244b797d622d4dee8b188b03546acaabd0cf91a073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506009600a620000e0919062000a8b565b631a7daf1c620000f1919062000adc565b6004556004546005556004600c556064600d557330609a85d673290afbd75693594e5008f65297ae600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260016101000a81548160ff0219169083151502179055506009600a62000184919062000a8b565b6215451362000194919062000adc565b60135565fd8e281a5e006014556000601560146101000a81548160ff021916908315150217905550348015620001c957600080fd5b5060405162006909380380620069098339818101604052810190620001ef919062000ba7565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000ba7565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000ba7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044c92919062000bea565b6020604051808303816000875af11580156200046c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000492919062000ba7565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080604051620005a490620008e3565b620005b0919062000c17565b604051809103906000f080158015620005cd573d6000803e3d6000fd5b50601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620008d4919062000c45565b60405180910390a35062000c62565b611ace8062004e3b83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200097f57808604811115620009575762000956620008f1565b5b6001851615620009675780820291505b8081029050620009778562000920565b945062000937565b94509492505050565b6000826200099a576001905062000a6d565b81620009aa576000905062000a6d565b8160018114620009c35760028114620009ce5762000a04565b600191505062000a6d565b60ff841115620009e357620009e2620008f1565b5b8360020a915084821115620009fd57620009fc620008f1565b5b5062000a6d565b5060208310610133831016604e8410600b841016171562000a3e5782820a90508381111562000a385762000a37620008f1565b5b62000a6d565b62000a4d84848460016200092d565b9250905081840481111562000a675762000a66620008f1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a988262000a74565b915062000aa58362000a7e565b925062000ad47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000988565b905092915050565b600062000ae98262000a74565b915062000af68362000a74565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b325762000b31620008f1565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b6f8262000b42565b9050919050565b62000b818162000b62565b811462000b8d57600080fd5b50565b60008151905062000ba18162000b76565b92915050565b60006020828403121562000bc05762000bbf62000b3d565b5b600062000bd08482850162000b90565b91505092915050565b62000be48162000b62565b82525050565b600060408201905062000c01600083018562000bd9565b62000c10602083018462000bd9565b9392505050565b600060208201905062000c2e600083018462000bd9565b92915050565b62000c3f8162000a74565b82525050565b600060208201905062000c5c600083018462000c34565b92915050565b6080516141a862000c93600039600081816116f201528181612ad601528181612b74015261330c01526141a86000f3fe6080604052600436106102345760003560e01c8063736a83a11161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610874578063f2fde38b1461088b578063f4293890146108b4578063f708a64f146108cb578063f887ea40146108f45761023b565b8063bf56b3711461079f578063bffb691d146107ca578063c9567bf9146107f5578063d12a76881461080c578063dd62ed3e146108375761023b565b806395d89b41116100f257806395d89b41146106a4578063a8aa1b31146106cf578063a9059cbb146106fa578063b1a4e0dc14610737578063b3945036146107745761023b565b8063736a83a1146105cf57806375f0a874146105fa578063764ca51214610625578063893d20e81461063c5780638ecc37fb146106675761023b565b8063313ce567116101bc5780635d098b38116101805780635d098b38146104ec578063658d4b7f1461051557806367ee5f091461053e57806369fe0e2d1461056957806370a08231146105925761023b565b8063313ce56714610407578063342aa8b5146104325780633e07ce5b1461045b578063571ac8b0146104725780635cc33f74146104af5761023b565b806323b635851161020357806323b63585146102fc57806323b872dd1461033957806329e04b4a146103765780632b112e491461039f5780632f54bf6e146103ca5761023b565b806306fdde0314610240578063095ea7b31461026b57806315f7e05e146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561091f565b6040516102629190613526565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906135e1565b61095c565b60405161029f919061363c565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613657565b610a4e565b005b3480156102dd57600080fd5b506102e6610b26565b6040516102f39190613693565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906136ae565b610b30565b604051610330919061363c565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b91906136db565b610bae565b60405161036d919061363c565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906136ae565b610dae565b005b3480156103ab57600080fd5b506103b4610e67565b6040516103c19190613693565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190613657565b610ee9565b6040516103fe919061363c565b60405180910390f35b34801561041357600080fd5b5061041c610f42565b604051610429919061374a565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190613791565b610f4b565b005b34801561046757600080fd5b50610470610ff8565b005b34801561047e57600080fd5b5061049960048036038101906104949190613657565b61105d565b6040516104a6919061363c565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613657565b611090565b6040516104e39190613693565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190613657565b611135565b005b34801561052157600080fd5b5061053c60048036038101906105379190613791565b6111c1565b005b34801561054a57600080fd5b50610553611264565b6040516105609190613693565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b91906136ae565b6112fc565b005b34801561059e57600080fd5b506105b960048036038101906105b49190613657565b611392565b6040516105c69190613693565b60405180910390f35b3480156105db57600080fd5b506105e46113db565b6040516105f19190613693565b60405180910390f35b34801561060657600080fd5b5061060f611473565b60405161061c91906137f2565b60405180910390f35b34801561063157600080fd5b5061063a611499565b005b34801561064857600080fd5b50610651611554565b60405161065e919061381c565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613657565b61157d565b60405161069b9190613693565b60405180910390f35b3480156106b057600080fd5b506106b9611622565b6040516106c69190613526565b60405180910390f35b3480156106db57600080fd5b506106e461165f565b6040516106f1919061381c565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c91906135e1565b611685565b60405161072e919061363c565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190613657565b61169a565b60405161076b919061363c565b60405180910390f35b34801561078057600080fd5b506107896116f0565b604051610796919061381c565b60405180910390f35b3480156107ab57600080fd5b506107b4611714565b6040516107c19190613693565b60405180910390f35b3480156107d657600080fd5b506107df61171a565b6040516107ec919061363c565b60405180910390f35b34801561080157600080fd5b5061080a61172d565b005b34801561081857600080fd5b50610821611799565b60405161082e9190613693565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190613837565b61179f565b60405161086b9190613693565b60405180910390f35b34801561088057600080fd5b50610889611826565b005b34801561089757600080fd5b506108b260048036038101906108ad91906138a3565b6118b5565b005b3480156108c057600080fd5b506108c9611977565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190613791565b611a30565b005b34801561090057600080fd5b50610909611a86565b604051610916919061392f565b60405180910390f35b60606040518060400160405280600e81526020017f5072696e742054686520466f7572000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c9190613693565b60405180910390a36001905092915050565b610a5733610ee9565b610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90613996565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610af1919061381c565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b3b33610ee9565b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7190613996565b60405180910390fd5b610ba730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611aac565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9a57610d19826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da5848484611ce3565b90509392505050565b610db733610ee9565b610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90613996565b60405180910390fd5b610e0c606460045461272990919063ffffffff16565b811115610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590613a02565b60405180910390fd5b633b9aca0081610e5e9190613a51565b60148190555050565b6000610ee4610e97600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611392565b610ed6610ec5600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611392565b60045461277390919063ffffffff16565b61277390919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610f5433610ee9565b610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a90613996565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ff482826127bd565b5050565b61100133610ee9565b611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790613996565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000611089827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61095c565b9050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016110ed919061381c565b602060405180830381865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e9190613ac0565b9050919050565b61113e33610ee9565b61117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613996565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111ca33610ee9565b611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090613996565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f79190613ac0565b905090565b61130533610ee9565b611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90613996565b60405180910390fd5b6004811115611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90613b39565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613ac0565b905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114a233610ee9565b6114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890613996565b60405180910390fd5b60001515601560149054906101000a900460ff16151514611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e90613ba5565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115da919061381c565b602060405180830381865afa1580156115f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161b9190613ac0565b9050919050565b60606040518060400160405280600381526020017f5054460000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611692338484611ce3565b905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60115481565b601560149054906101000a900460ff1681565b61173633610ee9565b611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613996565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b60145481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611881919061381c565b600060405180830381600087803b15801561189b57600080fd5b505af11580156118af573d6000803e3d6000fd5b50505050565b6118be33610ee9565b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613996565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161196c9190613be6565b60405180910390a150565b61198033610ee9565b6119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613996565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a2c573d6000803e3d6000fd5b5050565b611a3933610ee9565b611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90613996565b60405180910390fd5b611a8282826127bd565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b37826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bcc82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6c9190613693565b60405180910390a3600190509392505050565b6000838311158290611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe9190613526565b60405180910390fd5b5060008385611cd69190613c01565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d8e575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611de357601260009054906101000a900460ff16611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990613c81565b60405180910390fd5b5b601560149054906101000a900460ff1615611edc57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e9c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290613ced565b60405180910390fd5b5b601260019054906101000a900460ff1615611fe55760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f99575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fe457601354821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613d59565b60405180910390fd5b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120905750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e65750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121875742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061213657600080fd5b603c426121439190613d79565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60158054906101000a900460ff16156121ac576121a5848484611aac565b9050612722565b60006121b730611392565b905060006014548210159050600081801561221f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156122335750600061223130611392565b115b9050801561224457612243612a73565b5b6122cd856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061231c8888612d50565b6123265785612331565b6123308887612ead565b5b905061238581600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156124705750600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253e57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612511929190613dcf565b600060405180830381600087803b15801561252b57600080fd5b505af192505050801561253c575060015b505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156125e65750600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126b457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612687929190613dcf565b600060405180830381600087803b1580156126a157600080fd5b505af19250505080156126b2575060015b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127119190613693565b60405180910390a360019450505050505b9392505050565b600061276b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ff1565b905092915050565b60006127b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c7f565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128475750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61285057600080fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561294257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161290b929190613e33565b600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b50505050612a11565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129de929190613dcf565b600060405180830381600087803b1580156129f857600080fd5b505af1158015612a0c573d6000803e3d6000fd5b505050505b5050565b6000808284612a249190613d79565b905083811015612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090613ea8565b60405180910390fd5b8091505092915050565b60016015806101000a81548160ff0219169083151502179055506000612a9830611392565b9050612ab6612ab160028361272990919063ffffffff16565b613054565b612ad2612acd60028361272990919063ffffffff16565b6131fc565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b2d919061381c565b602060405180830381865afa158015612b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6e9190613ac0565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612bef929190613dcf565b6020604051808303816000875af1158015612c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c329190613edd565b90508015612cc857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b8152600401612c959190613693565b600060405180830381600087803b158015612caf57600080fd5b505af1158015612cc3573d6000803e3d6000fd5b505050505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612d30573d6000803e3d6000fd5b5050505060006015806101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612df35750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ea55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612ea45750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612ed9600d54612ecb600c548661341390919063ffffffff16565b61272990919063ffffffff16565b9050612f2d81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fcd9190613693565b60405180910390a3612fe8818461277390919063ffffffff16565b91505092915050565b60008083118290613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f9190613526565b60405180910390fd5b50600083856130479190613f39565b9050809150509392505050565b6000600267ffffffffffffffff81111561307157613070613f6a565b5b60405190808252806020026020018201604052801561309f5781602001602082028036833780820191505090505b50905030816000815181106130b7576130b6613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061312857613127613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131c6959493929190614086565b600060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff81111561321957613218613f6a565b5b6040519080825280602002602001820160405280156132475781602001602082028036833780820191505090505b509050308160008151811061325f5761325e613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106132d0576132cf613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160028151811061333f5761333e613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016133dd959493929190614086565b600060405180830381600087803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b505050505050565b60008083036134255760009050613487565b600082846134339190613a51565b90508284826134429190613f39565b14613482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347990614152565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134c75780820151818401526020810190506134ac565b838111156134d6576000848401525b50505050565b6000601f19601f8301169050919050565b60006134f88261348d565b6135028185613498565b93506135128185602086016134a9565b61351b816134dc565b840191505092915050565b6000602082019050818103600083015261354081846134ed565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135788261354d565b9050919050565b6135888161356d565b811461359357600080fd5b50565b6000813590506135a58161357f565b92915050565b6000819050919050565b6135be816135ab565b81146135c957600080fd5b50565b6000813590506135db816135b5565b92915050565b600080604083850312156135f8576135f7613548565b5b600061360685828601613596565b9250506020613617858286016135cc565b9150509250929050565b60008115159050919050565b61363681613621565b82525050565b6000602082019050613651600083018461362d565b92915050565b60006020828403121561366d5761366c613548565b5b600061367b84828501613596565b91505092915050565b61368d816135ab565b82525050565b60006020820190506136a86000830184613684565b92915050565b6000602082840312156136c4576136c3613548565b5b60006136d2848285016135cc565b91505092915050565b6000806000606084860312156136f4576136f3613548565b5b600061370286828701613596565b935050602061371386828701613596565b9250506040613724868287016135cc565b9150509250925092565b600060ff82169050919050565b6137448161372e565b82525050565b600060208201905061375f600083018461373b565b92915050565b61376e81613621565b811461377957600080fd5b50565b60008135905061378b81613765565b92915050565b600080604083850312156137a8576137a7613548565b5b60006137b685828601613596565b92505060206137c78582860161377c565b9150509250929050565b60006137dc8261354d565b9050919050565b6137ec816137d1565b82525050565b600060208201905061380760008301846137e3565b92915050565b6138168161356d565b82525050565b6000602082019050613831600083018461380d565b92915050565b6000806040838503121561384e5761384d613548565b5b600061385c85828601613596565b925050602061386d85828601613596565b9150509250929050565b613880816137d1565b811461388b57600080fd5b50565b60008135905061389d81613877565b92915050565b6000602082840312156138b9576138b8613548565b5b60006138c78482850161388e565b91505092915050565b6000819050919050565b60006138f56138f06138eb8461354d565b6138d0565b61354d565b9050919050565b6000613907826138da565b9050919050565b6000613919826138fc565b9050919050565b6139298161390e565b82525050565b60006020820190506139446000830184613920565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613980600683613498565b915061398b8261394a565b602082019050919050565b600060208201905081810360008301526139af81613973565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b60006139ec600f83613498565b91506139f7826139b6565b602082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5c826135ab565b9150613a67836135ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613aa057613a9f613a22565b5b828202905092915050565b600081519050613aba816135b5565b92915050565b600060208284031215613ad657613ad5613548565b5b6000613ae484828501613aab565b91505092915050565b7f4665652063616e27742065786365656420342500000000000000000000000000600082015250565b6000613b23601383613498565b9150613b2e82613aed565b602082019050919050565b60006020820190508181036000830152613b5281613b16565b9050919050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613b8f601783613498565b9150613b9a82613b59565b602082019050919050565b60006020820190508181036000830152613bbe81613b82565b9050919050565b6000613bd0826138fc565b9050919050565b613be081613bc5565b82525050565b6000602082019050613bfb6000830184613bd7565b92915050565b6000613c0c826135ab565b9150613c17836135ab565b925082821015613c2a57613c29613a22565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000613c6b601883613498565b9150613c7682613c35565b602082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b6000613cd7600483613498565b9150613ce282613ca1565b602082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613d43600c83613498565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b6000613d84826135ab565b9150613d8f836135ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613dc457613dc3613a22565b5b828201905092915050565b6000604082019050613de4600083018561380d565b613df16020830184613684565b9392505050565b6000819050919050565b6000613e1d613e18613e1384613df8565b6138d0565b6135ab565b9050919050565b613e2d81613e02565b82525050565b6000604082019050613e48600083018561380d565b613e556020830184613e24565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e92601b83613498565b9150613e9d82613e5c565b602082019050919050565b60006020820190508181036000830152613ec181613e85565b9050919050565b600081519050613ed781613765565b92915050565b600060208284031215613ef357613ef2613548565b5b6000613f0184828501613ec8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f44826135ab565b9150613f4f836135ab565b925082613f5f57613f5e613f0a565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ffd8161356d565b82525050565b600061400f8383613ff4565b60208301905092915050565b6000602082019050919050565b600061403382613fc8565b61403d8185613fd3565b935061404883613fe4565b8060005b838110156140795781516140608882614003565b975061406b8361401b565b92505060018101905061404c565b5085935050505092915050565b600060a08201905061409b6000830188613684565b6140a86020830187613e24565b81810360408301526140ba8186614028565b90506140c9606083018561380d565b6140d66080830184613684565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061413c602183613498565b9150614147826140e0565b604082019050919050565b6000602082019050818103600083015261416b8161412f565b905091905056fea26469706673582212207f1f7148fdafa98b0f9fdfdb9ef0f5efe1d85f3647d8e9de7df951d1f219b8f964736f6c634300080d003360a060405273244b797d622d4dee8b188b03546acaabd0cf91a073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506ec097ce7bc90715b34b9f10000000006009553480156200006b57600080fd5b5060405162001ace38038062001ace833981810160405281019062000091919062000183565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001b5565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200014b826200011e565b9050919050565b6200015d816200013e565b81146200016957600080fd5b50565b6000815190506200017d8162000152565b92915050565b6000602082840312156200019c576200019b62000119565b5b6000620001ac848285016200016c565b91505092915050565b6080516118f6620001d8600039600081816109710152610c5a01526118f66000f3fe6080604052600436106100e15760003560e01c8063b2bdfa7b1161007f578063ce7c2ac211610059578063ce7c2ac2146102b7578063d54ad2a1146102f6578063e2d2e21914610321578063ecd0c0c31461034c576100e8565b8063b2bdfa7b14610238578063b394503614610263578063b6b55f251461028e576100e8565b80633a98ef39116100bb5780633a98ef39146101685780635cc33f74146101935780638ecc37fb146101d0578063997664d71461020d576100e8565b80631014edf5146100ed57806314b6ca961461011657806315f7e05e1461013f576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112b1565b610377565b005b34801561012257600080fd5b5061013d600480360381019061013891906112f1565b610431565b005b34801561014b57600080fd5b5061016660048036038101906101619190611331565b6106f0565b005b34801561017457600080fd5b5061017d610754565b60405161018a919061136d565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b59190611331565b61075a565b6040516101c7919061136d565b60405180910390f35b3480156101dc57600080fd5b506101f760048036038101906101f29190611331565b61082a565b604051610204919061136d565b60405180910390f35b34801561021957600080fd5b50610222610943565b60405161022f919061136d565b60405180910390f35b34801561024457600080fd5b5061024d610949565b60405161025a9190611397565b60405180910390f35b34801561026f57600080fd5b5061027861096f565b6040516102859190611397565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b091906113b2565b610993565b005b3480156102c357600080fd5b506102de60048036038101906102d99190611331565b610a56565b6040516102ed939291906113df565b60405180910390f35b34801561030257600080fd5b5061030b610a80565b604051610318919061136d565b60405180910390f35b34801561032d57600080fd5b50610336610a86565b604051610343919061136d565b60405180910390f35b34801561035857600080fd5b50610361610a8c565b60405161036e9190611397565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d157600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc600085116103fe5782610400565b845b9081150290604051600060405180830381858888f1935050505015801561042b573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461048957600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104de576104dd82610ab0565b5b60008111801561053057506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105435761053e82610cfd565b6105a5565b60008114801561059557506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105a4576105a382610dac565b5b5b61060e81610600600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600554610fb390919063ffffffff16565b610ffd90919063ffffffff16565b60058190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106a6600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461074857600080fd5b61075181610ab0565b50565b60055481565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d790611499565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540361087e576000905061093e565b60006108cb600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116109265760009250505061093e565b6109398183610fb390919063ffffffff16565b925050505b919050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109eb57600080fd5b6000811115610a5357610a0981600654610ffd90919063ffffffff16565b600681905550610a4c610a3b600554610a2d8460095461108d90919063ffffffff16565b61110790919063ffffffff16565b600854610ffd90919063ffffffff16565b6008819055505b50565b60046020528060005260406000206000915090508060000154908060010154908060020154905083565b60075481565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540315610cfa576000610b068261082a565b90506000811115610cf857610b2681600754610ffd90919063ffffffff16565b600781905550610b8181600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ffd90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c12600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610cb39291906114b9565b6020604051808303816000875af1158015610cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf6919061151a565b505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026001600280549050610dc09190611576565b81548110610dd157610dd06115aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4f57610e4e6115aa565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060026001600280549050610eef9190611576565b81548110610f0057610eff6115aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002805480610f7b57610f7a6115d9565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610ff583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611151565b905092915050565b600080828461100c9190611608565b905083811015611051576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611048906116aa565b60405180910390fd5b8091505092915050565b60006110866009546110786008548561108d90919063ffffffff16565b61110790919063ffffffff16565b9050919050565b600080830361109f5760009050611101565b600082846110ad91906116ca565b90508284826110bc9190611753565b146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f3906117f6565b60405180910390fd5b809150505b92915050565b600061114983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b5565b905092915050565b6000838311158290611199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611190919061189e565b60405180910390fd5b50600083856111a89190611576565b9050809150509392505050565b600080831182906111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f3919061189e565b60405180910390fd5b506000838561120b9190611753565b9050809150509392505050565b600080fd5b6000819050919050565b6112308161121d565b811461123b57600080fd5b50565b60008135905061124d81611227565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061127e82611253565b9050919050565b61128e81611273565b811461129957600080fd5b50565b6000813590506112ab81611285565b92915050565b600080604083850312156112c8576112c7611218565b5b60006112d68582860161123e565b92505060206112e78582860161129c565b9150509250929050565b6000806040838503121561130857611307611218565b5b60006113168582860161129c565b92505060206113278582860161123e565b9150509250929050565b60006020828403121561134757611346611218565b5b60006113558482850161129c565b91505092915050565b6113678161121d565b82525050565b6000602082019050611382600083018461135e565b92915050565b61139181611273565b82525050565b60006020820190506113ac6000830184611388565b92915050565b6000602082840312156113c8576113c7611218565b5b60006113d68482850161123e565b91505092915050565b60006060820190506113f4600083018661135e565b611401602083018561135e565b61140e604083018461135e565b949350505050565b600082825260208201905092915050565b7f596f75277265206e6f742061205052494e544552207368617265686f6c64657260008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b6000611483602183611416565b915061148e82611427565b604082019050919050565b600060208201905081810360008301526114b281611476565b9050919050565b60006040820190506114ce6000830185611388565b6114db602083018461135e565b9392505050565b60008115159050919050565b6114f7816114e2565b811461150257600080fd5b50565b600081519050611514816114ee565b92915050565b6000602082840312156115305761152f611218565b5b600061153e84828501611505565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115818261121d565b915061158c8361121d565b92508282101561159f5761159e611547565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006116138261121d565b915061161e8361121d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561165357611652611547565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611694601b83611416565b915061169f8261165e565b602082019050919050565b600060208201905081810360008301526116c381611687565b9050919050565b60006116d58261121d565b91506116e08361121d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561171957611718611547565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061175e8261121d565b91506117698361121d565b92508261177957611778611724565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006117e0602183611416565b91506117eb82611784565b604082019050919050565b6000602082019050818103600083015261180f816117d3565b9050919050565b600081519050919050565b60005b8381101561183f578082015181840152602081019050611824565b8381111561184e576000848401525b50505050565b6000601f19601f8301169050919050565b600061187082611816565b61187a8185611416565b935061188a818560208601611821565b61189381611854565b840191505092915050565b600060208201905081810360008301526118b88184611865565b90509291505056fea26469706673582212203bc24a348b9da5255ab487ea9362939ce5899ecba5a7c77b42c867c61e5cd36464736f6c634300080d003300000000000000000000000030609a85d673290afbd75693594e5008f65297ae

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063736a83a11161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610874578063f2fde38b1461088b578063f4293890146108b4578063f708a64f146108cb578063f887ea40146108f45761023b565b8063bf56b3711461079f578063bffb691d146107ca578063c9567bf9146107f5578063d12a76881461080c578063dd62ed3e146108375761023b565b806395d89b41116100f257806395d89b41146106a4578063a8aa1b31146106cf578063a9059cbb146106fa578063b1a4e0dc14610737578063b3945036146107745761023b565b8063736a83a1146105cf57806375f0a874146105fa578063764ca51214610625578063893d20e81461063c5780638ecc37fb146106675761023b565b8063313ce567116101bc5780635d098b38116101805780635d098b38146104ec578063658d4b7f1461051557806367ee5f091461053e57806369fe0e2d1461056957806370a08231146105925761023b565b8063313ce56714610407578063342aa8b5146104325780633e07ce5b1461045b578063571ac8b0146104725780635cc33f74146104af5761023b565b806323b635851161020357806323b63585146102fc57806323b872dd1461033957806329e04b4a146103765780632b112e491461039f5780632f54bf6e146103ca5761023b565b806306fdde0314610240578063095ea7b31461026b57806315f7e05e146102a857806318160ddd146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561091f565b6040516102629190613526565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906135e1565b61095c565b60405161029f919061363c565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613657565b610a4e565b005b3480156102dd57600080fd5b506102e6610b26565b6040516102f39190613693565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e91906136ae565b610b30565b604051610330919061363c565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b91906136db565b610bae565b60405161036d919061363c565b60405180910390f35b34801561038257600080fd5b5061039d600480360381019061039891906136ae565b610dae565b005b3480156103ab57600080fd5b506103b4610e67565b6040516103c19190613693565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190613657565b610ee9565b6040516103fe919061363c565b60405180910390f35b34801561041357600080fd5b5061041c610f42565b604051610429919061374a565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190613791565b610f4b565b005b34801561046757600080fd5b50610470610ff8565b005b34801561047e57600080fd5b5061049960048036038101906104949190613657565b61105d565b6040516104a6919061363c565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613657565b611090565b6040516104e39190613693565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190613657565b611135565b005b34801561052157600080fd5b5061053c60048036038101906105379190613791565b6111c1565b005b34801561054a57600080fd5b50610553611264565b6040516105609190613693565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b91906136ae565b6112fc565b005b34801561059e57600080fd5b506105b960048036038101906105b49190613657565b611392565b6040516105c69190613693565b60405180910390f35b3480156105db57600080fd5b506105e46113db565b6040516105f19190613693565b60405180910390f35b34801561060657600080fd5b5061060f611473565b60405161061c91906137f2565b60405180910390f35b34801561063157600080fd5b5061063a611499565b005b34801561064857600080fd5b50610651611554565b60405161065e919061381c565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613657565b61157d565b60405161069b9190613693565b60405180910390f35b3480156106b057600080fd5b506106b9611622565b6040516106c69190613526565b60405180910390f35b3480156106db57600080fd5b506106e461165f565b6040516106f1919061381c565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c91906135e1565b611685565b60405161072e919061363c565b60405180910390f35b34801561074357600080fd5b5061075e60048036038101906107599190613657565b61169a565b60405161076b919061363c565b60405180910390f35b34801561078057600080fd5b506107896116f0565b604051610796919061381c565b60405180910390f35b3480156107ab57600080fd5b506107b4611714565b6040516107c19190613693565b60405180910390f35b3480156107d657600080fd5b506107df61171a565b6040516107ec919061363c565b60405180910390f35b34801561080157600080fd5b5061080a61172d565b005b34801561081857600080fd5b50610821611799565b60405161082e9190613693565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190613837565b61179f565b60405161086b9190613693565b60405180910390f35b34801561088057600080fd5b50610889611826565b005b34801561089757600080fd5b506108b260048036038101906108ad91906138a3565b6118b5565b005b3480156108c057600080fd5b506108c9611977565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190613791565b611a30565b005b34801561090057600080fd5b50610909611a86565b604051610916919061392f565b60405180910390f35b60606040518060400160405280600e81526020017f5072696e742054686520466f7572000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c9190613693565b60405180910390a36001905092915050565b610a5733610ee9565b610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90613996565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610af1919061381c565b600060405180830381600087803b158015610b0b57600080fd5b505af1158015610b1f573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b3b33610ee9565b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7190613996565b60405180910390fd5b610ba730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611aac565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9a57610d19826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da5848484611ce3565b90509392505050565b610db733610ee9565b610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90613996565b60405180910390fd5b610e0c606460045461272990919063ffffffff16565b811115610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590613a02565b60405180910390fd5b633b9aca0081610e5e9190613a51565b60148190555050565b6000610ee4610e97600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611392565b610ed6610ec5600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611392565b60045461277390919063ffffffff16565b61277390919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610f5433610ee9565b610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a90613996565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ff482826127bd565b5050565b61100133610ee9565b611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790613996565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000611089827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61095c565b9050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016110ed919061381c565b602060405180830381865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e9190613ac0565b9050919050565b61113e33610ee9565b61117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613996565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111ca33610ee9565b611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090613996565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f79190613ac0565b905090565b61130533610ee9565b611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90613996565b60405180910390fd5b6004811115611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90613b39565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613ac0565b905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114a233610ee9565b6114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890613996565b60405180910390fd5b60001515601560149054906101000a900460ff16151514611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e90613ba5565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115da919061381c565b602060405180830381865afa1580156115f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161b9190613ac0565b9050919050565b60606040518060400160405280600381526020017f5054460000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611692338484611ce3565b905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f000000000000000000000000244b797d622d4dee8b188b03546acaabd0cf91a081565b60115481565b601560149054906101000a900460ff1681565b61173633610ee9565b611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613996565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b60145481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611881919061381c565b600060405180830381600087803b15801561189b57600080fd5b505af11580156118af573d6000803e3d6000fd5b50505050565b6118be33610ee9565b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613996565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161196c9190613be6565b60405180910390a150565b61198033610ee9565b6119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613996565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a2c573d6000803e3d6000fd5b5050565b611a3933610ee9565b611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90613996565b60405180910390fd5b611a8282826127bd565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b37826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bcc82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6c9190613693565b60405180910390a3600190509392505050565b6000838311158290611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe9190613526565b60405180910390fd5b5060008385611cd69190613c01565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d8e575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611de357601260009054906101000a900460ff16611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990613c81565b60405180910390fd5b5b601560149054906101000a900460ff1615611edc57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e9c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290613ced565b60405180910390fd5b5b601260019054906101000a900460ff1615611fe55760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f99575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fe457601354821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613d59565b60405180910390fd5b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120905750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e65750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121875742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061213657600080fd5b603c426121439190613d79565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60158054906101000a900460ff16156121ac576121a5848484611aac565b9050612722565b60006121b730611392565b905060006014548210159050600081801561221f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156122335750600061223130611392565b115b9050801561224457612243612a73565b5b6122cd856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061231c8888612d50565b6123265785612331565b6123308887612ead565b5b905061238581600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156124705750600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253e57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612511929190613dcf565b600060405180830381600087803b15801561252b57600080fd5b505af192505050801561253c575060015b505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156125e65750600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126b457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612687929190613dcf565b600060405180830381600087803b1580156126a157600080fd5b505af19250505080156126b2575060015b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127119190613693565b60405180910390a360019450505050505b9392505050565b600061276b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ff1565b905092915050565b60006127b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c7f565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128475750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61285057600080fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561294257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161290b929190613e33565b600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b50505050612a11565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129de929190613dcf565b600060405180830381600087803b1580156129f857600080fd5b505af1158015612a0c573d6000803e3d6000fd5b505050505b5050565b6000808284612a249190613d79565b905083811015612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090613ea8565b60405180910390fd5b8091505092915050565b60016015806101000a81548160ff0219169083151502179055506000612a9830611392565b9050612ab6612ab160028361272990919063ffffffff16565b613054565b612ad2612acd60028361272990919063ffffffff16565b6131fc565b60007f000000000000000000000000244b797d622d4dee8b188b03546acaabd0cf91a073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b2d919061381c565b602060405180830381865afa158015612b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6e9190613ac0565b905060007f000000000000000000000000244b797d622d4dee8b188b03546acaabd0cf91a073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612bef929190613dcf565b6020604051808303816000875af1158015612c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c329190613edd565b90508015612cc857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b8152600401612c959190613693565b600060405180830381600087803b158015612caf57600080fd5b505af1158015612cc3573d6000803e3d6000fd5b505050505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612d30573d6000803e3d6000fd5b5050505060006015806101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612df35750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ea55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612ea45750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612ed9600d54612ecb600c548661341390919063ffffffff16565b61272990919063ffffffff16565b9050612f2d81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fcd9190613693565b60405180910390a3612fe8818461277390919063ffffffff16565b91505092915050565b60008083118290613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f9190613526565b60405180910390fd5b50600083856130479190613f39565b9050809150509392505050565b6000600267ffffffffffffffff81111561307157613070613f6a565b5b60405190808252806020026020018201604052801561309f5781602001602082028036833780820191505090505b50905030816000815181106130b7576130b6613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061312857613127613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131c6959493929190614086565b600060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff81111561321957613218613f6a565b5b6040519080825280602002602001820160405280156132475781602001602082028036833780820191505090505b509050308160008151811061325f5761325e613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106132d0576132cf613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000244b797d622d4dee8b188b03546acaabd0cf91a08160028151811061333f5761333e613f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016133dd959493929190614086565b600060405180830381600087803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b505050505050565b60008083036134255760009050613487565b600082846134339190613a51565b90508284826134429190613f39565b14613482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347990614152565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134c75780820151818401526020810190506134ac565b838111156134d6576000848401525b50505050565b6000601f19601f8301169050919050565b60006134f88261348d565b6135028185613498565b93506135128185602086016134a9565b61351b816134dc565b840191505092915050565b6000602082019050818103600083015261354081846134ed565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135788261354d565b9050919050565b6135888161356d565b811461359357600080fd5b50565b6000813590506135a58161357f565b92915050565b6000819050919050565b6135be816135ab565b81146135c957600080fd5b50565b6000813590506135db816135b5565b92915050565b600080604083850312156135f8576135f7613548565b5b600061360685828601613596565b9250506020613617858286016135cc565b9150509250929050565b60008115159050919050565b61363681613621565b82525050565b6000602082019050613651600083018461362d565b92915050565b60006020828403121561366d5761366c613548565b5b600061367b84828501613596565b91505092915050565b61368d816135ab565b82525050565b60006020820190506136a86000830184613684565b92915050565b6000602082840312156136c4576136c3613548565b5b60006136d2848285016135cc565b91505092915050565b6000806000606084860312156136f4576136f3613548565b5b600061370286828701613596565b935050602061371386828701613596565b9250506040613724868287016135cc565b9150509250925092565b600060ff82169050919050565b6137448161372e565b82525050565b600060208201905061375f600083018461373b565b92915050565b61376e81613621565b811461377957600080fd5b50565b60008135905061378b81613765565b92915050565b600080604083850312156137a8576137a7613548565b5b60006137b685828601613596565b92505060206137c78582860161377c565b9150509250929050565b60006137dc8261354d565b9050919050565b6137ec816137d1565b82525050565b600060208201905061380760008301846137e3565b92915050565b6138168161356d565b82525050565b6000602082019050613831600083018461380d565b92915050565b6000806040838503121561384e5761384d613548565b5b600061385c85828601613596565b925050602061386d85828601613596565b9150509250929050565b613880816137d1565b811461388b57600080fd5b50565b60008135905061389d81613877565b92915050565b6000602082840312156138b9576138b8613548565b5b60006138c78482850161388e565b91505092915050565b6000819050919050565b60006138f56138f06138eb8461354d565b6138d0565b61354d565b9050919050565b6000613907826138da565b9050919050565b6000613919826138fc565b9050919050565b6139298161390e565b82525050565b60006020820190506139446000830184613920565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613980600683613498565b915061398b8261394a565b602082019050919050565b600060208201905081810360008301526139af81613973565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b60006139ec600f83613498565b91506139f7826139b6565b602082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5c826135ab565b9150613a67836135ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613aa057613a9f613a22565b5b828202905092915050565b600081519050613aba816135b5565b92915050565b600060208284031215613ad657613ad5613548565b5b6000613ae484828501613aab565b91505092915050565b7f4665652063616e27742065786365656420342500000000000000000000000000600082015250565b6000613b23601383613498565b9150613b2e82613aed565b602082019050919050565b60006020820190508181036000830152613b5281613b16565b9050919050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613b8f601783613498565b9150613b9a82613b59565b602082019050919050565b60006020820190508181036000830152613bbe81613b82565b9050919050565b6000613bd0826138fc565b9050919050565b613be081613bc5565b82525050565b6000602082019050613bfb6000830184613bd7565b92915050565b6000613c0c826135ab565b9150613c17836135ab565b925082821015613c2a57613c29613a22565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000613c6b601883613498565b9150613c7682613c35565b602082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b6000613cd7600483613498565b9150613ce282613ca1565b602082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613d43600c83613498565b9150613d4e82613d0d565b602082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b6000613d84826135ab565b9150613d8f836135ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613dc457613dc3613a22565b5b828201905092915050565b6000604082019050613de4600083018561380d565b613df16020830184613684565b9392505050565b6000819050919050565b6000613e1d613e18613e1384613df8565b6138d0565b6135ab565b9050919050565b613e2d81613e02565b82525050565b6000604082019050613e48600083018561380d565b613e556020830184613e24565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e92601b83613498565b9150613e9d82613e5c565b602082019050919050565b60006020820190508181036000830152613ec181613e85565b9050919050565b600081519050613ed781613765565b92915050565b600060208284031215613ef357613ef2613548565b5b6000613f0184828501613ec8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f44826135ab565b9150613f4f836135ab565b925082613f5f57613f5e613f0a565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ffd8161356d565b82525050565b600061400f8383613ff4565b60208301905092915050565b6000602082019050919050565b600061403382613fc8565b61403d8185613fd3565b935061404883613fe4565b8060005b838110156140795781516140608882614003565b975061406b8361401b565b92505060018101905061404c565b5085935050505092915050565b600060a08201905061409b6000830188613684565b6140a86020830187613e24565b81810360408301526140ba8186614028565b90506140c9606083018561380d565b6140d66080830184613684565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061413c602183613498565b9150614147826140e0565b604082019050919050565b6000602082019050818103600083015261416b8161412f565b905091905056fea26469706673582212207f1f7148fdafa98b0f9fdfdb9ef0f5efe1d85f3647d8e9de7df951d1f219b8f964736f6c634300080d0033

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

00000000000000000000000030609a85d673290afbd75693594e5008f65297ae

-----Decoded View---------------
Arg [0] : _owner (address): 0x30609a85D673290AFbD75693594e5008f65297Ae

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000030609a85d673290afbd75693594e5008f65297ae


Deployed Bytecode Sourcemap

9349:11705:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12084:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12506:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19326:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11814:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19616:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13024:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20844:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19767:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2877:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11908:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18107:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20473:80;;;;;;;;;;;;;:::i;:::-;;12730:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20308:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19917:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18768:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20061:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18895:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12254:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20188:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10407:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20671:165;;;;;;;;;;;;;:::i;:::-;;12170:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19448:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11994:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10539:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12860:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20561:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9602:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10567:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10850:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17972:115;;;;;;;;;;;;;:::i;:::-;;10724:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12365:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19224:90;;;;;;;;;;;;;:::i;:::-;;3105:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19042:174;;;;;;;;;;;;;:::i;:::-;;18628:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10508:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12084:80;12132:13;12156:5;;;;;;;;;;;;;;;;;12149:12;;12084:80;:::o;12506:216::-;12581:4;12633:6;12598:11;:23;12610:10;12598:23;;;;;;;;;;;;;;;:32;12622:7;12598:32;;;;;;;;;;;;;;;:41;;;;12676:7;12655:37;;12664:10;12655:37;;;12685:6;12655:37;;;;;;:::i;:::-;;;;;;;;12710:4;12703:11;;12506:216;;;;:::o;19326:110::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19395:11:::1;;;;;;;;;;;:25;;;19421:6;19395:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19326:110:::0;:::o;11814:88::-;11869:7;11887:12;;11880:19;;11814:88;:::o;19616:139::-;19680:4;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19704:43:::1;19727:4;19734;;;;;;;;;;;19740:6;19704:14;:43::i;:::-;19697:50;;19616:139:::0;;;:::o;13024:370::-;13124:4;13179:17;13144:11;:19;13156:6;13144:19;;;;;;;;;;;;;;;:31;13164:10;13144:31;;;;;;;;;;;;;;;;:52;13141:186;;13246:69;13282:6;13246:69;;;;;;;;;;;;;;;;;:11;:19;13258:6;13246:19;;;;;;;;;;;;;;;:31;13266:10;13246:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13212:11;:19;13224:6;13212:19;;;;;;;;;;;;;;;:31;13232:10;13212:31;;;;;;;;;;;;;;;:103;;;;13141:186;13346:40;13360:6;13368:9;13379:6;13346:13;:40::i;:::-;13339:47;;13024:370;;;;;:::o;20844:206::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20942:21:::1;20959:3;20942:12;;:16;;:21;;;;:::i;:::-;20932:6;:31;;20923:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21035:7;21026:6;:16;;;;:::i;:::-;20994:29;:48;;;;20844:206:::0;:::o;19767:142::-;19820:7;19847:54;19885:15;19895:4;;;;;;;;;;;19885:9;:15::i;:::-;19847:33;19864:15;19874:4;;;;;;;;;;;19864:9;:15::i;:::-;19847:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19840:61;;19767:142;:::o;2877:103::-;2932:4;2967:5;;;;;;;;;;;2956:16;;:7;:16;;;2949:23;;2877:103;;;:::o;11908:80::-;11960:5;9837:1;11969:16;;11908:80;:::o;18107:158::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18202:6:::1;18184:5;:15;18190:8;18184:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;18219:38;18240:8;18250:6;18219:20;:38::i;:::-;18107:158:::0;;:::o;20473:80::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20540:5:::1;20529:8;;:16;;;;;;;;;;;;;;;;;;20473:80::o:0;12730:122::-;12785:4;12809:35;12817:7;12826:17;12809:7;:35::i;:::-;12802:42;;12730:122;;;:::o;20308:157::-;20384:7;20411:11;;;;;;;;;;;:33;;;20445:11;20411:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20404:53;;20308:157;;;:::o;19917:135::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20027:16:::1;20001:15;;:43;;;;;;;;;;;;;;;;;;19917:135:::0;:::o;18768:119::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18873:6:::1;18851:11;:19;18863:6;18851:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18768:119:::0;;:::o;20061:115::-;20113:7;20140:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20133:35;;20061:115;:::o;18895:137::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18973:1:::1;18965:4;:9;;18956:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;19020:4;19009:8;:15;;;;18895:137:::0;:::o;12254:105::-;12320:7;12338:9;:18;12348:7;12338:18;;;;;;;;;;;;;;;;12331:25;;12254:105;;;:::o;20188:111::-;20238:7;20265:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20258:33;;20188:111;:::o;10407:92::-;;;;;;;;;;;;;:::o;20671:165::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20761:5:::1;20741:25;;:16;;;;;;;;;;;:25;;;20732:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20824:4;20805:16;;:23;;;;;;;;;;;;;;;;;;20671:165::o:0;12170:78::-;12222:7;12240:5;;;;;;;;;;;12233:12;;12170:78;:::o;19448:156::-;19522:7;19549:11;;;;;;;;;;;:34;;;19584:11;19549:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19542:54;;19448:156;;;:::o;11994:84::-;12044:13;12068:7;;;;;;;;;;;;;;;;;12061:14;;11994:84;:::o;10539:19::-;;;;;;;;;;;;;:::o;12860:156::-;12940:4;12964:44;12978:10;12990:9;13001:6;12964:13;:44::i;:::-;12957:51;;12860:156;;;;:::o;20561:102::-;20617:4;20641:5;:14;20647:7;20641:14;;;;;;;;;;;;;;;;;;;;;;;;;20634:21;;20561:102;;;:::o;9602:83::-;;;:::o;10567:25::-;;;;:::o;10850:36::-;;;;;;;;;;;;;:::o;17972:115::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18038:12:::1;18025:10;:25;;;;18075:4;18061:11;;:18;;;;;;;;;;;;;;;;;;17972:115::o:0;10724:61::-;;;;:::o;12365:133::-;12449:7;12467:11;:19;12479:6;12467:19;;;;;;;;;;;;;;;:28;12487:7;12467:28;;;;;;;;;;;;;;;;12460:35;;12365:133;;;;:::o;19224:90::-;19269:11;;;;;;;;;;;:25;;;19295:10;19269:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19224:90::o;3105:136::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3189:3:::1;3181:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3208:25;3229:3;3208:25;;;;;;:::i;:::-;;;;;;;;3105:136:::0;:::o;19042:174::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19094:26:::1;19123:21;19094:50;;19163:15;;;;;;;;;;;19155:33;;:53;19189:18;19155:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19083:133;19042:174::o:0;18628:132::-;2776:19;2784:10;2776:7;:19::i;:::-;2768:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18716:36:::1;18737:6;18745;18716:20;:36::i;:::-;18628:132:::0;;:::o;10508:24::-;;;;;;;;;;;;;:::o;15166:330::-;15259:4;15296:53;15318:6;15296:53;;;;;;;;;;;;;;;;;:9;:17;15306:6;15296:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15276:9;:17;15286:6;15276:17;;;;;;;;;;;;;;;:73;;;;15383:32;15408:6;15383:9;:20;15393:9;15383:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15360:9;:20;15370:9;15360:20;;;;;;;;;;;;;;;:55;;;;15448:9;15431:35;;15440:6;15431:35;;;15459:6;15431:35;;;;;;:::i;:::-;;;;;;;;15484:4;15477:11;;15166:330;;;;;:::o;539:192::-;625:7;658:1;653;:6;;661:12;645:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;685:9;701:1;697;:5;;;;:::i;:::-;685:17;;722:1;715:8;;;539:192;;;;;:::o;13402:1752::-;13494:4;13524:5;;;;;;;;;;;13515:14;;:6;:14;;;;:35;;;;;13545:5;;;;;;;;;;13533:17;;:9;:17;;;;13515:35;13511:89;;;13560:11;;;;;;;;;;;13552:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13511:89;13655:16;;;;;;;;;;;13651:102;;;13698:5;:13;13704:6;13698:13;;;;;;;;;;;;;;;;;;;;;;;;;13697:14;:35;;;;;13716:5;:16;13722:9;13716:16;;;;;;;;;;;;;;;;;;;;;;;;;13715:17;13697:35;13688:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13651:102;13767:8;;;;;;;;;;;13763:130;;;13805:5;;;;;;;;;;13797:13;;:6;:13;;;;:34;;;;;13826:5;;;;;;;;;;13814:17;;:9;:17;;;;13797:34;13793:80;;;13850:6;;13842;:14;;13833:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13793:80;13763:130;13919:4;;;;;;;;;;;13909:14;;:6;:14;;;:46;;;;;13948:6;;;;;;;;;;;13927:28;;:9;:28;;;;13909:46;:73;;;;;13960:11;:22;13972:9;13960:22;;;;;;;;;;;;;;;;;;;;;;;;;13959:23;13909:73;13905:219;;;14030:15;14008:8;:19;14017:9;14008:19;;;;;;;;;;;;;;;;:37;13999:47;;;;;;14101:10;14083:15;:28;;;;:::i;:::-;14061:8;:19;14070:9;14061:19;;;;;;;;;;;;;;;:50;;;;13905:219;14146:6;;;;;;;;;;14143:63;;;14162:41;14177:6;14185:9;14196:6;14162:14;:41::i;:::-;14155:48;;;;14143:63;14224:28;14255:24;14273:4;14255:9;:24::i;:::-;14224:55;;14292:24;14343:29;;14319:20;:53;;14292:80;;14389:19;14412;:38;;;;;14446:4;;;;;;;;;;;14435:15;;:9;:15;;;14412:38;:70;;;;;14481:1;14454:24;14472:4;14454:9;:24::i;:::-;:28;14412:70;14389:94;;14497:14;14494:33;;;14514:10;:8;:10::i;:::-;14494:33;14559:53;14581:6;14559:53;;;;;;;;;;;;;;;;;:9;:17;14569:6;14559:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14539:9;:17;14549:6;14539:17;;;;;;;;;;;;;;;:73;;;;14625:22;14650:32;14664:6;14672:9;14650:13;:32::i;:::-;:67;;14711:6;14650:67;;;14685:23;14693:6;14701;14685:7;:23::i;:::-;14650:67;14625:92;;14761:40;14786:14;14761:9;:20;14771:9;14761:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14738:9;:20;14748:9;14738:20;;;;;;;;;;;;;;;:63;;;;14827:4;;;;;;;;;;;14817:14;;:6;:14;;;;:43;;;;;14836:16;:24;14853:6;14836:24;;;;;;;;;;;;;;;;;;;;;;;;;14835:25;14817:43;14814:114;;;14867:11;;;;;;;;;;;:20;;;14888:6;14896:9;:17;14906:6;14896:17;;;;;;;;;;;;;;;;14867:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14863:63;14814:114;14954:4;;;;;;;;;;;14941:17;;:9;:17;;;;:49;;;;;14963:16;:27;14980:9;14963:27;;;;;;;;;;;;;;;;;;;;;;;;;14962:28;14941:49;14938:126;;;14997:11;;;;;;;;;;;:20;;;15018:9;15029;:20;15039:9;15029:20;;;;;;;;;;;;;;;;14997:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14993:69;14938:126;15098:9;15081:43;;15090:6;15081:43;;;15109:14;15081:43;;;;;;:::i;:::-;;;;;;;;15142:4;15135:11;;;;;;13402:1752;;;;;;:::o;993:132::-;1051:7;1078:39;1082:1;1085;1078:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1071:46;;993:132;;;;:::o;397:136::-;455:7;482:43;486:1;489;482:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;475:50;;397:136;;;;:::o;18283:337::-;18388:4;18370:23;;:6;:23;;;;:41;;;;;18407:4;;;;;;;;;;;18397:14;;:6;:14;;;;18370:41;18362:50;;;;;;18450:6;18423:16;:24;18440:6;18423:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18470:6;18467:146;;;18492:11;;;;;;;;;;;:20;;;18513:6;18521:1;18492:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18467:146;;;18554:11;;;;;;;;;;;:20;;;18575:6;18583:9;:17;18593:6;18583:17;;;;;;;;;;;;;;;;18554:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18467:146;18283:337;;:::o;210:181::-;268:7;288:9;304:1;300;:5;;;;:::i;:::-;288:17;;329:1;324;:6;;316:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;382:1;375:8;;;210:181;;;;:::o;16088:549::-;10950:4;10941:6;;:13;;;;;;;;;;;;;;;;;;16139:20:::1;16162:24;16180:4;16162:9;:24::i;:::-;16139:47;;16207:37;16224:19;16241:1;16224:12;:16;;:19;;;;:::i;:::-;16207:16;:37::i;:::-;16255:38;16273:19;16290:1;16273:12;:16;;:19;;;;:::i;:::-;16255:17;:38::i;:::-;16306:17;16333:4;16326:22;;;16357:4;16326:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16306:57;;16376:12;16398:4;16391:21;;;16421:11;;;;;;;;;;;16435:9;16391:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16376:69;;16462:7;16458:82;;;16486:11;;;;;;;;;;;:19;;;16506:9;16486:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16458:82;16573:15;;;;;;;;;;;16565:33;;:56;16599:21;16565:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16126:511;;;10968:5:::0;10959:6;;:14;;;;;;;;;;;;;;;;;;16088:549::o;15507:206::-;15588:4;15616:11;:19;15628:6;15616:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15639:11;:22;15651:9;15639:22;;;;;;;;;;;;;;;;;;;;;;;;;15616:45;15614:48;:90;;;;;15678:4;;;;;;;;;;;15668:14;;:6;:14;;;:35;;;;15699:4;;;;;;;;;;;15686:17;;:9;:17;;;15668:35;15614:90;15605:101;;15507:206;;;;:::o;15721:354::-;15788:7;15808:17;15848:40;15873:14;;15848:20;15859:8;;15848:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;15836:52;;15926:39;15955:9;15926;:24;15944:4;15926:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15899:9;:24;15917:4;15899:24;;;;;;;;;;;;;;;:66;;;;16006:4;15981:42;;15990:6;15981:42;;;16013:9;15981:42;;;;;;:::i;:::-;;;;;;;;16046:21;16057:9;16046:6;:10;;:21;;;;:::i;:::-;16039:28;;;15721:354;;;;:::o;1131:345::-;1217:7;1316:1;1312;:5;1319:12;1304:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1343:9;1359:1;1355;:5;;;;:::i;:::-;1343:17;;1467:1;1460:8;;;1131:345;;;;;:::o;17091:489::-;17219:21;17257:1;17243:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17219:40;;17288:4;17270;17275:1;17270:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17314:4;;;;;;;;;;;17304;17309:1;17304:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;17357:6;;;;;;;;;;;:57;;;17429:11;17455:1;17499:4;17526;17546:15;17357:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17146:434;17091:489;:::o;16653:430::-;16722:21;16760:1;16746:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16722:40;;16791:4;16773;16778:1;16773:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16817:4;;;;;;;;;;;16807;16812:1;16807:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16842:4;16832;16837:1;16832:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16885:6;;;;;;;;;;;:60;;;16960:11;16986:1;17002:4;17029;17049:15;16885:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16709:374;16653:430;:::o;737:250::-;795:7;824:1;819;:6;815:47;;849:1;842:8;;;;815:47;874:9;890:1;886;:5;;;;:::i;:::-;874:17;;919:1;914;910;:5;;;;:::i;:::-;:10;902:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;978:1;971:8;;;737:250;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:619::-;4593:6;4601;4609;4658:2;4646:9;4637:7;4633:23;4629:32;4626:119;;;4664:79;;:::i;:::-;4626:119;4784:1;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4755:117;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;5039:2;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5010:118;4516:619;;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:468::-;5897:6;5905;5954:2;5942:9;5933:7;5929:23;5925:32;5922:119;;;5960:79;;:::i;:::-;5922:119;6080:1;6105:53;6150:7;6141:6;6130:9;6126:22;6105:53;:::i;:::-;6095:63;;6051:117;6207:2;6233:50;6275:7;6266:6;6255:9;6251:22;6233:50;:::i;:::-;6223:60;;6178:115;5832:468;;;;;:::o;6306:104::-;6351:7;6380:24;6398:5;6380:24;:::i;:::-;6369:35;;6306:104;;;:::o;6416:142::-;6519:32;6545:5;6519:32;:::i;:::-;6514:3;6507:45;6416:142;;:::o;6564:254::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:87;6808:1;6797:9;6793:17;6784:6;6724:87;:::i;:::-;6564:254;;;;:::o;6824:118::-;6911:24;6929:5;6911:24;:::i;:::-;6906:3;6899:37;6824:118;;:::o;6948:222::-;7041:4;7079:2;7068:9;7064:18;7056:26;;7092:71;7160:1;7149:9;7145:17;7136:6;7092:71;:::i;:::-;6948:222;;;;:::o;7176:474::-;7244:6;7252;7301:2;7289:9;7280:7;7276:23;7272:32;7269:119;;;7307:79;;:::i;:::-;7269:119;7427:1;7452:53;7497:7;7488:6;7477:9;7473:22;7452:53;:::i;:::-;7442:63;;7398:117;7554:2;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7525:118;7176:474;;;;;:::o;7656:138::-;7737:32;7763:5;7737:32;:::i;:::-;7730:5;7727:43;7717:71;;7784:1;7781;7774:12;7717:71;7656:138;:::o;7800:155::-;7854:5;7892:6;7879:20;7870:29;;7908:41;7943:5;7908:41;:::i;:::-;7800:155;;;;:::o;7961:345::-;8028:6;8077:2;8065:9;8056:7;8052:23;8048:32;8045:119;;;8083:79;;:::i;:::-;8045:119;8203:1;8228:61;8281:7;8272:6;8261:9;8257:22;8228:61;:::i;:::-;8218:71;;8174:125;7961:345;;;;:::o;8312:60::-;8340:3;8361:5;8354:12;;8312:60;;;:::o;8378:142::-;8428:9;8461:53;8479:34;8488:24;8506:5;8488:24;:::i;:::-;8479:34;:::i;:::-;8461:53;:::i;:::-;8448:66;;8378:142;;;:::o;8526:126::-;8576:9;8609:37;8640:5;8609:37;:::i;:::-;8596:50;;8526:126;;;:::o;8658:144::-;8726:9;8759:37;8790:5;8759:37;:::i;:::-;8746:50;;8658:144;;;:::o;8808:167::-;8913:55;8962:5;8913:55;:::i;:::-;8908:3;8901:68;8808:167;;:::o;8981:258::-;9092:4;9130:2;9119:9;9115:18;9107:26;;9143:89;9229:1;9218:9;9214:17;9205:6;9143:89;:::i;:::-;8981:258;;;;:::o;9245:156::-;9385:8;9381:1;9373:6;9369:14;9362:32;9245:156;:::o;9407:365::-;9549:3;9570:66;9634:1;9629:3;9570:66;:::i;:::-;9563:73;;9645:93;9734:3;9645:93;:::i;:::-;9763:2;9758:3;9754:12;9747:19;;9407:365;;;:::o;9778:419::-;9944:4;9982:2;9971:9;9967:18;9959:26;;10031:9;10025:4;10021:20;10017:1;10006:9;10002:17;9995:47;10059:131;10185:4;10059:131;:::i;:::-;10051:139;;9778:419;;;:::o;10203:165::-;10343:17;10339:1;10331:6;10327:14;10320:41;10203:165;:::o;10374:366::-;10516:3;10537:67;10601:2;10596:3;10537:67;:::i;:::-;10530:74;;10613:93;10702:3;10613:93;:::i;:::-;10731:2;10726:3;10722:12;10715:19;;10374:366;;;:::o;10746:419::-;10912:4;10950:2;10939:9;10935:18;10927:26;;10999:9;10993:4;10989:20;10985:1;10974:9;10970:17;10963:47;11027:131;11153:4;11027:131;:::i;:::-;11019:139;;10746:419;;;:::o;11171:180::-;11219:77;11216:1;11209:88;11316:4;11313:1;11306:15;11340:4;11337:1;11330:15;11357:348;11397:7;11420:20;11438:1;11420:20;:::i;:::-;11415:25;;11454:20;11472:1;11454:20;:::i;:::-;11449:25;;11642:1;11574:66;11570:74;11567:1;11564:81;11559:1;11552:9;11545:17;11541:105;11538:131;;;11649:18;;:::i;:::-;11538:131;11697:1;11694;11690:9;11679:20;;11357:348;;;;:::o;11711:143::-;11768:5;11799:6;11793:13;11784:22;;11815:33;11842:5;11815:33;:::i;:::-;11711:143;;;;:::o;11860:351::-;11930:6;11979:2;11967:9;11958:7;11954:23;11950:32;11947:119;;;11985:79;;:::i;:::-;11947:119;12105:1;12130:64;12186:7;12177:6;12166:9;12162:22;12130:64;:::i;:::-;12120:74;;12076:128;11860:351;;;;:::o;12217:169::-;12357:21;12353:1;12345:6;12341:14;12334:45;12217:169;:::o;12392:366::-;12534:3;12555:67;12619:2;12614:3;12555:67;:::i;:::-;12548:74;;12631:93;12720:3;12631:93;:::i;:::-;12749:2;12744:3;12740:12;12733:19;;12392:366;;;:::o;12764:419::-;12930:4;12968:2;12957:9;12953:18;12945:26;;13017:9;13011:4;13007:20;13003:1;12992:9;12988:17;12981:47;13045:131;13171:4;13045:131;:::i;:::-;13037:139;;12764:419;;;:::o;13189:173::-;13329:25;13325:1;13317:6;13313:14;13306:49;13189:173;:::o;13368:366::-;13510:3;13531:67;13595:2;13590:3;13531:67;:::i;:::-;13524:74;;13607:93;13696:3;13607:93;:::i;:::-;13725:2;13720:3;13716:12;13709:19;;13368:366;;;:::o;13740:419::-;13906:4;13944:2;13933:9;13929:18;13921:26;;13993:9;13987:4;13983:20;13979:1;13968:9;13964:17;13957:47;14021:131;14147:4;14021:131;:::i;:::-;14013:139;;13740:419;;;:::o;14165:134::-;14223:9;14256:37;14287:5;14256:37;:::i;:::-;14243:50;;14165:134;;;:::o;14305:147::-;14400:45;14439:5;14400:45;:::i;:::-;14395:3;14388:58;14305:147;;:::o;14458:238::-;14559:4;14597:2;14586:9;14582:18;14574:26;;14610:79;14686:1;14675:9;14671:17;14662:6;14610:79;:::i;:::-;14458:238;;;;:::o;14702:191::-;14742:4;14762:20;14780:1;14762:20;:::i;:::-;14757:25;;14796:20;14814:1;14796:20;:::i;:::-;14791:25;;14835:1;14832;14829:8;14826:34;;;14840:18;;:::i;:::-;14826:34;14885:1;14882;14878:9;14870:17;;14702:191;;;;:::o;14899:174::-;15039:26;15035:1;15027:6;15023:14;15016:50;14899:174;:::o;15079:366::-;15221:3;15242:67;15306:2;15301:3;15242:67;:::i;:::-;15235:74;;15318:93;15407:3;15318:93;:::i;:::-;15436:2;15431:3;15427:12;15420:19;;15079:366;;;:::o;15451:419::-;15617:4;15655:2;15644:9;15640:18;15632:26;;15704:9;15698:4;15694:20;15690:1;15679:9;15675:17;15668:47;15732:131;15858:4;15732:131;:::i;:::-;15724:139;;15451:419;;;:::o;15876:154::-;16016:6;16012:1;16004:6;16000:14;15993:30;15876:154;:::o;16036:365::-;16178:3;16199:66;16263:1;16258:3;16199:66;:::i;:::-;16192:73;;16274:93;16363:3;16274:93;:::i;:::-;16392:2;16387:3;16383:12;16376:19;;16036:365;;;:::o;16407:419::-;16573:4;16611:2;16600:9;16596:18;16588:26;;16660:9;16654:4;16650:20;16646:1;16635:9;16631:17;16624:47;16688:131;16814:4;16688:131;:::i;:::-;16680:139;;16407:419;;;:::o;16832:162::-;16972:14;16968:1;16960:6;16956:14;16949:38;16832:162;:::o;17000:366::-;17142:3;17163:67;17227:2;17222:3;17163:67;:::i;:::-;17156:74;;17239:93;17328:3;17239:93;:::i;:::-;17357:2;17352:3;17348:12;17341:19;;17000:366;;;:::o;17372:419::-;17538:4;17576:2;17565:9;17561:18;17553:26;;17625:9;17619:4;17615:20;17611:1;17600:9;17596:17;17589:47;17653:131;17779:4;17653:131;:::i;:::-;17645:139;;17372:419;;;:::o;17797:305::-;17837:3;17856:20;17874:1;17856:20;:::i;:::-;17851:25;;17890:20;17908:1;17890:20;:::i;:::-;17885:25;;18044:1;17976:66;17972:74;17969:1;17966:81;17963:107;;;18050:18;;:::i;:::-;17963:107;18094:1;18091;18087:9;18080:16;;17797:305;;;;:::o;18108:332::-;18229:4;18267:2;18256:9;18252:18;18244:26;;18280:71;18348:1;18337:9;18333:17;18324:6;18280:71;:::i;:::-;18361:72;18429:2;18418:9;18414:18;18405:6;18361:72;:::i;:::-;18108:332;;;;;:::o;18446:85::-;18491:7;18520:5;18509:16;;18446:85;;;:::o;18537:158::-;18595:9;18628:61;18646:42;18655:32;18681:5;18655:32;:::i;:::-;18646:42;:::i;:::-;18628:61;:::i;:::-;18615:74;;18537:158;;;:::o;18701:147::-;18796:45;18835:5;18796:45;:::i;:::-;18791:3;18784:58;18701:147;;:::o;18854:348::-;18983:4;19021:2;19010:9;19006:18;18998:26;;19034:71;19102:1;19091:9;19087:17;19078:6;19034:71;:::i;:::-;19115:80;19191:2;19180:9;19176:18;19167:6;19115:80;:::i;:::-;18854:348;;;;;:::o;19208:177::-;19348:29;19344:1;19336:6;19332:14;19325:53;19208:177;:::o;19391:366::-;19533:3;19554:67;19618:2;19613:3;19554:67;:::i;:::-;19547:74;;19630:93;19719:3;19630:93;:::i;:::-;19748:2;19743:3;19739:12;19732:19;;19391:366;;;:::o;19763:419::-;19929:4;19967:2;19956:9;19952:18;19944:26;;20016:9;20010:4;20006:20;20002:1;19991:9;19987:17;19980:47;20044:131;20170:4;20044:131;:::i;:::-;20036:139;;19763:419;;;:::o;20188:137::-;20242:5;20273:6;20267:13;20258:22;;20289:30;20313:5;20289:30;:::i;:::-;20188:137;;;;:::o;20331:345::-;20398:6;20447:2;20435:9;20426:7;20422:23;20418:32;20415:119;;;20453:79;;:::i;:::-;20415:119;20573:1;20598:61;20651:7;20642:6;20631:9;20627:22;20598:61;:::i;:::-;20588:71;;20544:125;20331:345;;;;:::o;20682:180::-;20730:77;20727:1;20720:88;20827:4;20824:1;20817:15;20851:4;20848:1;20841:15;20868:185;20908:1;20925:20;20943:1;20925:20;:::i;:::-;20920:25;;20959:20;20977:1;20959:20;:::i;:::-;20954:25;;20998:1;20988:35;;21003:18;;:::i;:::-;20988:35;21045:1;21042;21038:9;21033:14;;20868:185;;;;:::o;21059:180::-;21107:77;21104:1;21097:88;21204:4;21201:1;21194:15;21228:4;21225:1;21218:15;21245:180;21293:77;21290:1;21283:88;21390:4;21387:1;21380:15;21414:4;21411:1;21404:15;21431:114;21498:6;21532:5;21526:12;21516:22;;21431:114;;;:::o;21551:184::-;21650:11;21684:6;21679:3;21672:19;21724:4;21719:3;21715:14;21700:29;;21551:184;;;;:::o;21741:132::-;21808:4;21831:3;21823:11;;21861:4;21856:3;21852:14;21844:22;;21741:132;;;:::o;21879:108::-;21956:24;21974:5;21956:24;:::i;:::-;21951:3;21944:37;21879:108;;:::o;21993:179::-;22062:10;22083:46;22125:3;22117:6;22083:46;:::i;:::-;22161:4;22156:3;22152:14;22138:28;;21993:179;;;;:::o;22178:113::-;22248:4;22280;22275:3;22271:14;22263:22;;22178:113;;;:::o;22327:732::-;22446:3;22475:54;22523:5;22475:54;:::i;:::-;22545:86;22624:6;22619:3;22545:86;:::i;:::-;22538:93;;22655:56;22705:5;22655:56;:::i;:::-;22734:7;22765:1;22750:284;22775:6;22772:1;22769:13;22750:284;;;22851:6;22845:13;22878:63;22937:3;22922:13;22878:63;:::i;:::-;22871:70;;22964:60;23017:6;22964:60;:::i;:::-;22954:70;;22810:224;22797:1;22794;22790:9;22785:14;;22750:284;;;22754:14;23050:3;23043:10;;22451:608;;;22327:732;;;;:::o;23065:831::-;23328:4;23366:3;23355:9;23351:19;23343:27;;23380:71;23448:1;23437:9;23433:17;23424:6;23380:71;:::i;:::-;23461:80;23537:2;23526:9;23522:18;23513:6;23461:80;:::i;:::-;23588:9;23582:4;23578:20;23573:2;23562:9;23558:18;23551:48;23616:108;23719:4;23710:6;23616:108;:::i;:::-;23608:116;;23734:72;23802:2;23791:9;23787:18;23778:6;23734:72;:::i;:::-;23816:73;23884:3;23873:9;23869:19;23860:6;23816:73;:::i;:::-;23065:831;;;;;;;;:::o;23902:220::-;24042:34;24038:1;24030:6;24026:14;24019:58;24111:3;24106:2;24098:6;24094:15;24087:28;23902:220;:::o;24128:366::-;24270:3;24291:67;24355:2;24350:3;24291:67;:::i;:::-;24284:74;;24367:93;24456:3;24367:93;:::i;:::-;24485:2;24480:3;24476:12;24469:19;;24128:366;;;:::o;24500:419::-;24666:4;24704:2;24693:9;24689:18;24681:26;;24753:9;24747:4;24743:20;24739:1;24728:9;24724:17;24717:47;24781:131;24907:4;24781:131;:::i;:::-;24773:139;;24500:419;;;:::o

Swarm Source

ipfs://3bc24a348b9da5255ab487ea9362939ce5899ecba5a7c77b42c867c61e5cd364

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.