ETH Price: $2,413.99 (+3.20%)

Contract

0x32E066d863e5faF63E14d1c6daDa736831A7E99d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve181189962023-09-12 8:15:11367 days ago1694506511IN
0x32E066d8...831A7E99d
0 ETH0.0005890112.45150323
Approve179879202023-08-24 23:45:11385 days ago1692920711IN
0x32E066d8...831A7E99d
0 ETH0.0009038119.10622079
Approve179870202023-08-24 20:44:11385 days ago1692909851IN
0x32E066d8...831A7E99d
0 ETH0.0011826225
Approve179791872023-08-23 18:25:59386 days ago1692815159IN
0x32E066d8...831A7E99d
0 ETH0.0018575339.31716497
Approve179789972023-08-23 17:47:47386 days ago1692812867IN
0x32E066d8...831A7E99d
0 ETH0.0012398226.41697918
Approve179789972023-08-23 17:47:47386 days ago1692812867IN
0x32E066d8...831A7E99d
0 ETH0.0012439826.33041493
Transfer179789942023-08-23 17:47:11386 days ago1692812831IN
0x32E066d8...831A7E99d
0 ETH0.001558327.59713882
Transfer179789732023-08-23 17:42:59386 days ago1692812579IN
0x32E066d8...831A7E99d
0 ETH0.0018609625.29657143
Approve179789342023-08-23 17:35:11386 days ago1692812111IN
0x32E066d8...831A7E99d
0 ETH0.0015845133.53829524
Approve179789302023-08-23 17:34:23386 days ago1692812063IN
0x32E066d8...831A7E99d
0 ETH0.0016818335.59821236
Transfer179788982023-08-23 17:27:59386 days ago1692811679IN
0x32E066d8...831A7E99d
0 ETH0.0071373637.2111636
Approve179788912023-08-23 17:26:35386 days ago1692811595IN
0x32E066d8...831A7E99d
0 ETH0.0018654239.43393805
Approve179788882023-08-23 17:25:59386 days ago1692811559IN
0x32E066d8...831A7E99d
0 ETH0.0018904839.96364512
Approve179788852023-08-23 17:25:23386 days ago1692811523IN
0x32E066d8...831A7E99d
0 ETH0.0019243340.67920965
Transfer179788742023-08-23 17:23:11386 days ago1692811391IN
0x32E066d8...831A7E99d
0 ETH0.0022935840.77480558
Approve179788372023-08-23 17:15:47386 days ago1692810947IN
0x32E066d8...831A7E99d
0 ETH0.0029289961.91719567
Transfer179788312023-08-23 17:14:35386 days ago1692810875IN
0x32E066d8...831A7E99d
0 ETH0.0033866757.28378269
Approve179788252023-08-23 17:13:11386 days ago1692810791IN
0x32E066d8...831A7E99d
0 ETH0.002706957.67595831
Approve179788252023-08-23 17:13:11386 days ago1692810791IN
0x32E066d8...831A7E99d
0 ETH0.0028651860.56824032
Approve179788142023-08-23 17:10:59386 days ago1692810659IN
0x32E066d8...831A7E99d
0 ETH0.0025168953.20576655
Approve179788102023-08-23 17:10:11386 days ago1692810611IN
0x32E066d8...831A7E99d
0 ETH0.0024270951.30744691
Approve179787462023-08-23 16:57:11386 days ago1692809831IN
0x32E066d8...831A7E99d
0 ETH0.0023630249.95298703
Transfer179787372023-08-23 16:55:23386 days ago1692809723IN
0x32E066d8...831A7E99d
0 ETH0.0030028739.39696925
Approve179787372023-08-23 16:55:23386 days ago1692809723IN
0x32E066d8...831A7E99d
0 ETH0.0020008542.29696925
Approve179787252023-08-23 16:52:59386 days ago1692809579IN
0x32E066d8...831A7E99d
0 ETH0.002086344.10336215
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
179790422023-08-23 17:56:59386 days ago1692813419
0x32E066d8...831A7E99d
0.01073661 ETH
179790422023-08-23 17:56:59386 days ago1692813419
0x32E066d8...831A7E99d
0.01073661 ETH
179788982023-08-23 17:27:59386 days ago1692811679
0x32E066d8...831A7E99d
0.04984002 ETH
179788982023-08-23 17:27:59386 days ago1692811679
0x32E066d8...831A7E99d
0.04984002 ETH
179787312023-08-23 16:54:11386 days ago1692809651
0x32E066d8...831A7E99d
0.07275588 ETH
179787312023-08-23 16:54:11386 days ago1692809651
0x32E066d8...831A7E99d
0.07275588 ETH
179785772023-08-23 16:23:11387 days ago1692807791
0x32E066d8...831A7E99d
0.05125038 ETH
179785772023-08-23 16:23:11387 days ago1692807791
0x32E066d8...831A7E99d
0.05125038 ETH
179785432023-08-23 16:16:23387 days ago1692807383
0x32E066d8...831A7E99d
0.03643455 ETH
179785432023-08-23 16:16:23387 days ago1692807383
0x32E066d8...831A7E99d
0.03643455 ETH
179785262023-08-23 16:12:59387 days ago1692807179
0x32E066d8...831A7E99d
0.02449994 ETH
179785262023-08-23 16:12:59387 days ago1692807179
0x32E066d8...831A7E99d
0.02449994 ETH
179785252023-08-23 16:12:47387 days ago1692807167
0x32E066d8...831A7E99d
0.0262328 ETH
179785252023-08-23 16:12:47387 days ago1692807167
0x32E066d8...831A7E99d
0.0262328 ETH
179785242023-08-23 16:12:35387 days ago1692807155
0x32E066d8...831A7E99d
0.02925851 ETH
179785242023-08-23 16:12:35387 days ago1692807155
0x32E066d8...831A7E99d
0.02925851 ETH
179785242023-08-23 16:12:35387 days ago1692807155
0x32E066d8...831A7E99d
0.03283991 ETH
179785242023-08-23 16:12:35387 days ago1692807155
0x32E066d8...831A7E99d
0.03283991 ETH
179785202023-08-23 16:11:47387 days ago1692807107
0x32E066d8...831A7E99d
0.03283991 ETH
179785202023-08-23 16:11:47387 days ago1692807107
0x32E066d8...831A7E99d
0.03283991 ETH
179785182023-08-23 16:11:23387 days ago1692807083
0x32E066d8...831A7E99d
0.03712193 ETH
179785182023-08-23 16:11:23387 days ago1692807083
0x32E066d8...831A7E99d
0.03712193 ETH
179785142023-08-23 16:10:35387 days ago1692807035
0x32E066d8...831A7E99d
0.04230007 ETH
179785142023-08-23 16:10:35387 days ago1692807035
0x32E066d8...831A7E99d
0.04230007 ETH
179785132023-08-23 16:10:23387 days ago1692807023
0x32E066d8...831A7E99d
0.04170155 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bitcoin

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

// https://t.me/BTCMorseCode

// https://btcmorsecode.com

// https://x.com/btcmorsecode

// SPDX-License-Identifier:MIT

pragma solidity ^0.8.10;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract Bitcoin is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "-... .. - -.-. --- .. -."; // token name
    string private _symbol = "Bitcoin"; // token ticker
    uint8 private _decimals = 9; // token decimals

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint256 public totalBuyFee = 150;
    uint256 public totalSellFee = 150;

    address public MarketingWallet = address(0x4726ce65533B50f483E6a057024181f4BdE5654F);
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isBot;

    uint256 private _totalSupply = 21_000_000 * 10**_decimals;

    uint256 feedenominator = 1000;

    uint256 public _maxTxAmount =  _totalSupply.mul(10).div(1000);    
    uint256 public _walletMax = _totalSupply.mul(10).div(1000);    
    uint256 public swapThreshold = 20_100 * 10**_decimals;

    bool public trading; 

    bool public swapEnabled = true;
    bool public swapByLimit = true;
    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    mapping (address => bool) public isTokenWL;

    IDexSwapRouter public DexRouter;
    address public DexPair;

    bool inSwap;
    
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        DexPair = IDexSwapFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        DexRouter = _dexRouter;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(DexRouter)] = true;
        isExcludedFromFee[address(MarketingWallet)] = true;

        isTokenWL[address(msg.sender)] = true;
        isTokenWL[address(this)] = true;
        isTokenWL[address(DexRouter)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(DexPair)] = true;
        isWalletLimitExempt[address(DexRouter)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(MarketingWallet)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;
        
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[zeroAddress] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(DexRouter)] = true;
        isTxLimitExempt[address(MarketingWallet)] = true;

        isMarketPair[address(DexPair)] = true;

        _allowances[address(this)][address(DexRouter)] = ~uint256(0);
        _allowances[address(this)][address(DexPair)] = ~uint256(0);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        require(!isBot[sender], "ERC20: Bot detected");
        require(!isBot[msg.sender], "ERC20: Bot detected");
        require(!isBot[tx.origin], "ERC20: Bot detected");

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

            if (!isTokenWL[sender] && !isTokenWL[recipient]) {
                require(trading, "ERC20: trading not enable yet");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (overMinimumTokenBalance && !inSwap && !isMarketPair[sender] && swapEnabled) {
                swapBack(contractTokenBalance);
            }
            
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

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

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { //buy
                feeAmount = amount.mul(totalBuyFee).div(feedenominator);
            } 
            else if(isMarketPair[recipient]) { //sell
                feeAmount = amount.mul(totalSellFee).div(feedenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapBack(uint contractBalance) internal swapping {

        uint256 totalShares = totalBuyFee.add(totalSellFee);

        if(totalShares == 0) return;

        if(swapByLimit) {
            contractBalance =  swapThreshold;
        }

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0) payable(MarketingWallet).transfer(amountReceived);
    }

    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] = DexRouter.WETH();

        _approve(address(this), address(DexRouter), tokenAmount);

        // make the swap
        DexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function startTrading() external onlyOwner {
        require(!trading, "ERC20: Already Enabled");
        trading = true;
    }

    //To Rescue Stucked Balance
    function rescueFunds() external onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) external onlyOwner {
        adr.transfer(recipient,amount);
    }

    function updateSetting(address[] calldata _adr, bool _status) external onlyOwner {
        for(uint i = 0; i < _adr.length; i++){
            isTokenWL[_adr[i]] = _status;
        }
    }

    function addOrRemoveBots(address[] calldata accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++) {
            isBot[accounts[i]] = value;
        }
    }

    function setBuyFee(uint _newBuy, uint _newSell) external onlyOwner {
        totalBuyFee = _newBuy;
        totalSellFee = _newSell;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }
    
    function setMarketingWallet(address _newWallet) external onlyOwner {
        MarketingWallet = _newWallet;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        isWalletLimitExempt[_pair] = _status;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        swapByLimit = _limited;
    }

    function setManualRouter(address _router) external onlyOwner {
        DexRouter = IDexSwapRouter(_router);
    }

    function setManualPair(address _pair) external onlyOwner {
        DexPair = _pair;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"DexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"addOrRemoveBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTokenWL","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuy","type":"uint256"},{"internalType":"uint256","name":"_newSell","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapByLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_adr","type":"address[]"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280601881526020017f2d2e2e2e202e2e202d202d2e2d2e202d2d2d202e2e202d2e0000000000000000815250600190805190602001906200005192919062001178565b506040518060400160405280600781526020017f426974636f696e00000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001178565b506009600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1681525060966004556096600555734726ce65533b50f483e6a057024181f4bde5654f600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900460ff16600a620001a29190620013c2565b6301406f40620001b3919062001413565b600e556103e8600f55620001f46103e8620001e0600a600e5462000f6e60201b6200247e1790919060201c565b62000ff260201b620024f91790919060201c565b6010556200022f6103e86200021b600a600e5462000f6e60201b6200247e1790919060201c565b62000ff260201b620024f91790919060201c565b601155600360009054906101000a900460ff16600a620002509190620013c2565b614e846200025f919062001413565b6012556001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff0219169083151502179055506001601360036101000a81548160ff0219169083151502179055506001601360046101000a81548160ff021916908315150217905550348015620002db57600080fd5b50620002fc620002f06200104460201b60201c565b6200104c60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000361573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003879190620014de565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004159190620014de565b6040518363ffffffff1660e01b81526004016200043492919062001521565b6020604051808303816000875af115801562000454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047a9190620014de565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600019600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e54600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e5460405162000f5f91906200155f565b60405180910390a350620017a8565b60008083141562000f83576000905062000fec565b6000828462000f93919062001413565b905082848262000fa49190620015ab565b1462000fe7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fde906200166a565b60405180910390fd5b809150505b92915050565b60006200103c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200111060201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080831182906200115a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200115191906200171f565b60405180910390fd5b50600083856200116b9190620015ab565b9050809150509392505050565b828054620011869062001772565b90600052602060002090601f016020900481019282620011aa5760008555620011f6565b82601f10620011c557805160ff1916838001178555620011f6565b82800160010185558215620011f6579182015b82811115620011f5578251825591602001919060010190620011d8565b5b50905062001205919062001209565b5090565b5b80821115620012245760008160009055506001016200120a565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620012b6578086048111156200128e576200128d62001228565b5b60018516156200129e5780820291505b8081029050620012ae8562001257565b94506200126e565b94509492505050565b600082620012d15760019050620013a4565b81620012e15760009050620013a4565b8160018114620012fa576002811462001305576200133b565b6001915050620013a4565b60ff8411156200131a576200131962001228565b5b8360020a91508482111562001334576200133362001228565b5b50620013a4565b5060208310610133831016604e8410600b8410161715620013755782820a9050838111156200136f576200136e62001228565b5b620013a4565b62001384848484600162001264565b925090508184048111156200139e576200139d62001228565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620013cf82620013ab565b9150620013dc83620013b5565b92506200140b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620012bf565b905092915050565b60006200142082620013ab565b91506200142d83620013ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001469576200146862001228565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620014a68262001479565b9050919050565b620014b88162001499565b8114620014c457600080fd5b50565b600081519050620014d881620014ad565b92915050565b600060208284031215620014f757620014f662001474565b5b60006200150784828501620014c7565b91505092915050565b6200151b8162001499565b82525050565b600060408201905062001538600083018562001510565b62001547602083018462001510565b9392505050565b6200155981620013ab565b82525050565b60006020820190506200157660008301846200154e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015b882620013ab565b9150620015c583620013ab565b925082620015d857620015d76200157c565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062001652602183620015e3565b91506200165f82620015f4565b604082019050919050565b60006020820190508181036000830152620016858162001643565b9050919050565b600081519050919050565b60005b83811015620016b75780820151818401526020810190506200169a565b83811115620016c7576000848401525b50505050565b6000601f19601f8301169050919050565b6000620016eb826200168c565b620016f78185620015e3565b93506200170981856020860162001697565b6200171481620016cd565b840191505092915050565b600060208201905081810360008301526200173b8184620016de565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200178b57607f821691505b60208210811415620017a257620017a162001743565b5b50919050565b60805160a051614de1620017dc60003960008181610d90015261113201526000818161101d015261115e0152614de16000f3fe6080604052600436106103395760003560e01c8063715018a6116101ab578063a9059cbb116100f7578063e6b2603b11610095578063f2fde38b1161006f578063f2fde38b14610c3d578063f71b9bbf14610c66578063f872858a14610c8f578063fb0ecfa414610cba57610340565b8063e6b2603b14610bd2578063ec44acf214610be9578063ee828db314610c1457610340565b8063c867d60b116100d1578063c867d60b14610b06578063cea9d26f14610b43578063dd62ed3e14610b6c578063df8408fe14610ba957610340565b8063a9059cbb14610a77578063ae85ade614610ab4578063c16dd4a414610add57610340565b8063807c2d9c1161016457806395d89b411161013e57806395d89b41146109bb57806395fc8fdf146109e65780639d9241ec14610a0f578063a457c2d714610a3a57610340565b8063807c2d9c146109285780638b42507f146109535780638da5cb5b1461099057610340565b8063715018a61461083e57806372460e7f14610855578063728d41c914610880578063736ce0d4146108a95780637d1db4a5146108d45780637daf4b2b146108ff57610340565b8063313ce5671161028557806359fac517116102235780635e42358c116101fd5780635e42358c14610782578063651a8987146107ad5780636ddd1713146107d657806370a082311461080157610340565b806359fac517146107075780635c85974f146107305780635d098b381461075957610340565b80633ecad2711161025f5780633ecad271146106395780634974d88f146106765780635342acb41461069f57806359b107b9146106dc57610340565b8063313ce5671461059457806339509351146105bf5780633bbac579146105fc57610340565b806310a60f02116102f25780632598cdb2116102cc5780632598cdb2146104fc57806327c8f83514610527578063293230b8146105525780632b112e491461056957610340565b806310a60f021461046b57806318160ddd1461049457806323b872dd146104bf57610340565b80630445b667146103455780630634f4381461037057806306fdde031461039b5780630930907b146103c6578063095ea7b3146103f15780630f3fc4311461042e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ce3565b6040516103679190613abf565b60405180910390f35b34801561037c57600080fd5b50610385610ce9565b6040516103929190613af5565b60405180910390f35b3480156103a757600080fd5b506103b0610cfc565b6040516103bd9190613ba9565b60405180910390f35b3480156103d257600080fd5b506103db610d8e565b6040516103e89190613c0c565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613c89565b610db2565b6040516104259190613af5565b60405180910390f35b34801561043a57600080fd5b5061045560048036038101906104509190613cc9565b610dd0565b6040516104629190613af5565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190613d87565b610df0565b005b3480156104a057600080fd5b506104a9610f11565b6040516104b69190613abf565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190613de7565b610f1b565b6040516104f39190613af5565b60405180910390f35b34801561050857600080fd5b50610511610ff5565b60405161051e9190613c0c565b60405180910390f35b34801561053357600080fd5b5061053c61101b565b6040516105499190613c0c565b60405180910390f35b34801561055e57600080fd5b5061056761103f565b005b34801561057557600080fd5b5061057e611128565b60405161058b9190613abf565b60405180910390f35b3480156105a057600080fd5b506105a96111a6565b6040516105b69190613e56565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190613c89565b6111bd565b6040516105f39190613af5565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190613cc9565b611270565b6040516106309190613af5565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190613cc9565b611290565b60405161066d9190613af5565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613e71565b6112b0565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190613cc9565b611349565b6040516106d39190613af5565b60405180910390f35b3480156106e857600080fd5b506106f1611369565b6040516106fe9190613abf565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613cc9565b61136f565b005b34801561073c57600080fd5b5061075760048036038101906107529190613e9e565b61142f565b005b34801561076557600080fd5b50610780600480360381019061077b9190613cc9565b6114b5565b005b34801561078e57600080fd5b50610797611575565b6040516107a49190613af5565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf9190613ecb565b611588565b005b3480156107e257600080fd5b506107eb61165f565b6040516107f89190613af5565b60405180910390f35b34801561080d57600080fd5b5061082860048036038101906108239190613cc9565b611672565b6040516108359190613abf565b60405180910390f35b34801561084a57600080fd5b506108536116bb565b005b34801561086157600080fd5b5061086a611743565b6040516108779190613c0c565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a29190613e9e565b611769565b005b3480156108b557600080fd5b506108be6117ef565b6040516108cb9190613f6a565b60405180910390f35b3480156108e057600080fd5b506108e9611815565b6040516108f69190613abf565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190613f85565b61181b565b005b34801561093457600080fd5b5061093d6118d7565b60405161094a9190613abf565b60405180910390f35b34801561095f57600080fd5b5061097a60048036038101906109759190613cc9565b6118dd565b6040516109879190613af5565b60405180910390f35b34801561099c57600080fd5b506109a56118fd565b6040516109b29190613c0c565b60405180910390f35b3480156109c757600080fd5b506109d0611926565b6040516109dd9190613ba9565b60405180910390f35b3480156109f257600080fd5b50610a0d6004803603810190610a089190613d87565b6119b8565b005b348015610a1b57600080fd5b50610a24611ad9565b604051610a319190613abf565b60405180910390f35b348015610a4657600080fd5b50610a616004803603810190610a5c9190613c89565b611adf565b604051610a6e9190613af5565b60405180910390f35b348015610a8357600080fd5b50610a9e6004803603810190610a999190613c89565b611bac565b604051610aab9190613af5565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad69190613ecb565b611bcb565b005b348015610ae957600080fd5b50610b046004803603810190610aff9190613ecb565b611ca2565b005b348015610b1257600080fd5b50610b2d6004803603810190610b289190613cc9565b611dd0565b604051610b3a9190613af5565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b659190614016565b611df0565b005b348015610b7857600080fd5b50610b936004803603810190610b8e9190614069565b611ef0565b604051610ba09190613abf565b60405180910390f35b348015610bb557600080fd5b50610bd06004803603810190610bcb9190613ecb565b611f77565b005b348015610bde57600080fd5b50610be761204e565b005b348015610bf557600080fd5b50610bfe612179565b604051610c0b9190613af5565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190613e71565b61218c565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190613cc9565b612225565b005b348015610c7257600080fd5b50610c8d6004803603810190610c889190613cc9565b61231d565b005b348015610c9b57600080fd5b50610ca46123dd565b604051610cb19190613af5565b60405180910390f35b348015610cc657600080fd5b50610ce16004803603810190610cdc91906140a9565b6123f0565b005b60125481565b601360029054906101000a900460ff1681565b606060018054610d0b90614118565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3790614118565b8015610d845780601f10610d5957610100808354040283529160200191610d84565b820191906000526020600020905b815481529060010190602001808311610d6757829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610dc6610dbf612543565b848461254b565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b610df8612543565b73ffffffffffffffffffffffffffffffffffffffff16610e166118fd565b73ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390614196565b60405180910390fd5b60005b83839050811015610f0b5781600d6000868685818110610e9257610e916141b6565b5b9050602002016020810190610ea79190613cc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f0390614214565b915050610e6f565b50505050565b6000600e54905090565b6000610f28848484612716565b50610fea84610f35612543565b610fe585604051806060016040528060288152602001614d5f60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f9b612543565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b61254b565b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b611047612543565b73ffffffffffffffffffffffffffffffffffffffff166110656118fd565b73ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290614196565b60405180910390fd5b601360009054906101000a900460ff161561110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906142a9565b60405180910390fd5b6001601360006101000a81548160ff021916908315150217905550565b60006111a16111567f0000000000000000000000000000000000000000000000000000000000000000611672565b6111936111827f0000000000000000000000000000000000000000000000000000000000000000611672565b600e54612fde90919063ffffffff16565b612fde90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006112666111ca612543565b8461126185600860006111db612543565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b61254b565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6112b8612543565b73ffffffffffffffffffffffffffffffffffffffff166112d66118fd565b73ffffffffffffffffffffffffffffffffffffffff161461132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390614196565b60405180910390fd5b80601360046101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b60045481565b611377612543565b73ffffffffffffffffffffffffffffffffffffffff166113956118fd565b73ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290614196565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611437612543565b73ffffffffffffffffffffffffffffffffffffffff166114556118fd565b73ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290614196565b60405180910390fd5b8060108190555050565b6114bd612543565b73ffffffffffffffffffffffffffffffffffffffff166114db6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890614196565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360039054906101000a900460ff1681565b611590612543565b73ffffffffffffffffffffffffffffffffffffffff166115ae6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90614196565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116c3612543565b73ffffffffffffffffffffffffffffffffffffffff166116e16118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90614196565b60405180910390fd5b6117416000613086565b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611771612543565b73ffffffffffffffffffffffffffffffffffffffff1661178f6118fd565b73ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90614196565b60405180910390fd5b8060118190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611823612543565b73ffffffffffffffffffffffffffffffffffffffff166118416118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614196565b60405180910390fd5b82601360016101000a81548160ff0219169083151502179055508160128190555080601360026101000a81548160ff021916908315150217905550505050565b60115481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461193590614118565b80601f016020809104026020016040519081016040528092919081815260200182805461196190614118565b80156119ae5780601f10611983576101008083540402835291602001916119ae565b820191906000526020600020905b81548152906001019060200180831161199157829003601f168201915b5050505050905090565b6119c0612543565b73ffffffffffffffffffffffffffffffffffffffff166119de6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614196565b60405180910390fd5b60005b83839050811015611ad3578160146000868685818110611a5a57611a596141b6565b5b9050602002016020810190611a6f9190613cc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611acb90614214565b915050611a37565b50505050565b60055481565b6000611ba2611aec612543565b84611b9d85604051806060016040528060258152602001614d876025913960086000611b16612543565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b61254b565b6001905092915050565b6000611bc0611bb9612543565b8484612716565b506001905092915050565b611bd3612543565b73ffffffffffffffffffffffffffffffffffffffff16611bf16118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e90614196565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611caa612543565b73ffffffffffffffffffffffffffffffffffffffff16611cc86118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614196565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b611df8612543565b73ffffffffffffffffffffffffffffffffffffffff16611e166118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390614196565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611ea79291906142c9565b6020604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614307565b50505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f7f612543565b73ffffffffffffffffffffffffffffffffffffffff16611f9d6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90614196565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612056612543565b73ffffffffffffffffffffffffffffffffffffffff166120746118fd565b73ffffffffffffffffffffffffffffffffffffffff16146120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190614196565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516120f090614365565b60006040518083038185875af1925050503d806000811461212d576040519150601f19603f3d011682016040523d82523d6000602084013e612132565b606091505b5050905080612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d906143c6565b60405180910390fd5b50565b601360009054906101000a900460ff1681565b612194612543565b73ffffffffffffffffffffffffffffffffffffffff166121b26118fd565b73ffffffffffffffffffffffffffffffffffffffff1614612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90614196565b60405180910390fd5b80601360036101000a81548160ff02191690831515021790555050565b61222d612543565b73ffffffffffffffffffffffffffffffffffffffff1661224b6118fd565b73ffffffffffffffffffffffffffffffffffffffff16146122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229890614196565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230890614458565b60405180910390fd5b61231a81613086565b50565b612325612543565b73ffffffffffffffffffffffffffffffffffffffff166123436118fd565b73ffffffffffffffffffffffffffffffffffffffff1614612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090614196565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360049054906101000a900460ff1681565b6123f8612543565b73ffffffffffffffffffffffffffffffffffffffff166124166118fd565b73ffffffffffffffffffffffffffffffffffffffff161461246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390614196565b60405180910390fd5b81600481905550806005819055505050565b60008083141561249157600090506124f3565b6000828461249f9190614478565b90508284826124ae9190614501565b146124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e5906145a4565b60405180910390fd5b809150505b92915050565b600061253b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061314a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b290614636565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561262b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612622906146c8565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127099190613abf565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e9061475a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee906147ec565b60405180910390fd5b6000821161283a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128319061487e565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be906148ea565b60405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b906148ea565b60405180910390fd5b600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d8906148ea565b60405180910390fd5b601660149054906101000a900460ff1615612a0857612a018484846131ad565b9050612f73565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612aac5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0157601360009054906101000a900460ff16612b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af790614956565b60405180910390fd5b5b6000612b0c30611672565b905060006012548210159050808015612b325750601660149054906101000a900460ff16155b8015612b885750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ba05750601360019054906101000a900460ff165b15612baf57612bae82613380565b5b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c535750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c6b5750601360039054906101000a900460ff165b15612cb657601054841115612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac906149e8565b60405180910390fd5b5b612d3f846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612d8e878761349a565b612da257612d9d878787613605565b612da4565b845b9050601360049054906101000a900460ff168015612e0c5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e7157601154612e2f82612e2189611672565b61302890919063ffffffff16565b1115612e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6790614a54565b60405180910390fd5b5b612ec381600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f639190613abf565b60405180910390a3600193505050505b9392505050565b6000838311158290612fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb99190613ba9565b60405180910390fd5b5060008385612fd19190614a74565b9050809150509392505050565b600061302083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f7a565b905092915050565b60008082846130379190614aa8565b90508381101561307c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307390614b4a565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083118290613191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131889190613ba9565b60405180910390fd5b50600083856131a09190614501565b9050809150509392505050565b6000613238826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132cd82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161336d9190613abf565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff02191690831515021790555060006133b460055460045461302890919063ffffffff16565b905060008114156133c5575061347c565b601360029054906101000a900460ff16156133e05760125491505b60004790506133ee8361382a565b60006134038247612fde90919063ffffffff16565b9050600081111561347857600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613476573d6000803e3d6000fd5b505b5050505b6000601660146101000a81548160ff02191690831515021790555050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061353d5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561354b57600190506135ff565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135ec5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135fa57600090506135ff565b600090505b92915050565b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561368a57613683600f546136756004548661247e90919063ffffffff16565b6124f990919063ffffffff16565b9050613709565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561370857613705600f546136f76005548661247e90919063ffffffff16565b6124f990919063ffffffff16565b90505b5b600081111561380d5761376481600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138049190613abf565b60405180910390a35b6138208184612fde90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561384757613846614b6a565b5b6040519080825280602002602001820160405280156138755781602001602082028036833780820191505090505b509050308160008151811061388d5761388c6141b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139589190614bae565b8160018151811061396c5761396b6141b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139d330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461254b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a37959493929190614cd4565b600060405180830381600087803b158015613a5157600080fd5b505af1158015613a65573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a9a929190614d2e565b60405180910390a15050565b6000819050919050565b613ab981613aa6565b82525050565b6000602082019050613ad46000830184613ab0565b92915050565b60008115159050919050565b613aef81613ada565b82525050565b6000602082019050613b0a6000830184613ae6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b4a578082015181840152602081019050613b2f565b83811115613b59576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b7b82613b10565b613b858185613b1b565b9350613b95818560208601613b2c565b613b9e81613b5f565b840191505092915050565b60006020820190508181036000830152613bc38184613b70565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bf682613bcb565b9050919050565b613c0681613beb565b82525050565b6000602082019050613c216000830184613bfd565b92915050565b600080fd5b600080fd5b613c3a81613beb565b8114613c4557600080fd5b50565b600081359050613c5781613c31565b92915050565b613c6681613aa6565b8114613c7157600080fd5b50565b600081359050613c8381613c5d565b92915050565b60008060408385031215613ca057613c9f613c27565b5b6000613cae85828601613c48565b9250506020613cbf85828601613c74565b9150509250929050565b600060208284031215613cdf57613cde613c27565b5b6000613ced84828501613c48565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613d1b57613d1a613cf6565b5b8235905067ffffffffffffffff811115613d3857613d37613cfb565b5b602083019150836020820283011115613d5457613d53613d00565b5b9250929050565b613d6481613ada565b8114613d6f57600080fd5b50565b600081359050613d8181613d5b565b92915050565b600080600060408486031215613da057613d9f613c27565b5b600084013567ffffffffffffffff811115613dbe57613dbd613c2c565b5b613dca86828701613d05565b93509350506020613ddd86828701613d72565b9150509250925092565b600080600060608486031215613e0057613dff613c27565b5b6000613e0e86828701613c48565b9350506020613e1f86828701613c48565b9250506040613e3086828701613c74565b9150509250925092565b600060ff82169050919050565b613e5081613e3a565b82525050565b6000602082019050613e6b6000830184613e47565b92915050565b600060208284031215613e8757613e86613c27565b5b6000613e9584828501613d72565b91505092915050565b600060208284031215613eb457613eb3613c27565b5b6000613ec284828501613c74565b91505092915050565b60008060408385031215613ee257613ee1613c27565b5b6000613ef085828601613c48565b9250506020613f0185828601613d72565b9150509250929050565b6000819050919050565b6000613f30613f2b613f2684613bcb565b613f0b565b613bcb565b9050919050565b6000613f4282613f15565b9050919050565b6000613f5482613f37565b9050919050565b613f6481613f49565b82525050565b6000602082019050613f7f6000830184613f5b565b92915050565b600080600060608486031215613f9e57613f9d613c27565b5b6000613fac86828701613d72565b9350506020613fbd86828701613c74565b9250506040613fce86828701613d72565b9150509250925092565b6000613fe382613beb565b9050919050565b613ff381613fd8565b8114613ffe57600080fd5b50565b60008135905061401081613fea565b92915050565b60008060006060848603121561402f5761402e613c27565b5b600061403d86828701614001565b935050602061404e86828701613c48565b925050604061405f86828701613c74565b9150509250925092565b600080604083850312156140805761407f613c27565b5b600061408e85828601613c48565b925050602061409f85828601613c48565b9150509250929050565b600080604083850312156140c0576140bf613c27565b5b60006140ce85828601613c74565b92505060206140df85828601613c74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061413057607f821691505b60208210811415614144576141436140e9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614180602083613b1b565b915061418b8261414a565b602082019050919050565b600060208201905081810360008301526141af81614173565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061421f82613aa6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614252576142516141e5565b5b600182019050919050565b7f45524332303a20416c726561647920456e61626c656400000000000000000000600082015250565b6000614293601683613b1b565b915061429e8261425d565b602082019050919050565b600060208201905081810360008301526142c281614286565b9050919050565b60006040820190506142de6000830185613bfd565b6142eb6020830184613ab0565b9392505050565b60008151905061430181613d5b565b92915050565b60006020828403121561431d5761431c613c27565b5b600061432b848285016142f2565b91505092915050565b600081905092915050565b50565b600061434f600083614334565b915061435a8261433f565b600082019050919050565b600061437082614342565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006143b0601483613b1b565b91506143bb8261437a565b602082019050919050565b600060208201905081810360008301526143df816143a3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614442602683613b1b565b915061444d826143e6565b604082019050919050565b6000602082019050818103600083015261447181614435565b9050919050565b600061448382613aa6565b915061448e83613aa6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144c7576144c66141e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061450c82613aa6565b915061451783613aa6565b925082614527576145266144d2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061458e602183613b1b565b915061459982614532565b604082019050919050565b600060208201905081810360008301526145bd81614581565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614620602483613b1b565b915061462b826145c4565b604082019050919050565b6000602082019050818103600083015261464f81614613565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006146b2602283613b1b565b91506146bd82614656565b604082019050919050565b600060208201905081810360008301526146e1816146a5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614744602583613b1b565b915061474f826146e8565b604082019050919050565b6000602082019050818103600083015261477381614737565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147d6602383613b1b565b91506147e18261477a565b604082019050919050565b60006020820190508181036000830152614805816147c9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614868602983613b1b565b91506148738261480c565b604082019050919050565b600060208201905081810360008301526148978161485b565b9050919050565b7f45524332303a20426f7420646574656374656400000000000000000000000000600082015250565b60006148d4601383613b1b565b91506148df8261489e565b602082019050919050565b60006020820190508181036000830152614903816148c7565b9050919050565b7f45524332303a2074726164696e67206e6f7420656e61626c6520796574000000600082015250565b6000614940601d83613b1b565b915061494b8261490a565b602082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006149d2602883613b1b565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000614a3e601b83613b1b565b9150614a4982614a08565b602082019050919050565b60006020820190508181036000830152614a6d81614a31565b9050919050565b6000614a7f82613aa6565b9150614a8a83613aa6565b925082821015614a9d57614a9c6141e5565b5b828203905092915050565b6000614ab382613aa6565b9150614abe83613aa6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614af357614af26141e5565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614b34601b83613b1b565b9150614b3f82614afe565b602082019050919050565b60006020820190508181036000830152614b6381614b27565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614ba881613c31565b92915050565b600060208284031215614bc457614bc3613c27565b5b6000614bd284828501614b99565b91505092915050565b6000819050919050565b6000614c00614bfb614bf684614bdb565b613f0b565b613aa6565b9050919050565b614c1081614be5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c4b81613beb565b82525050565b6000614c5d8383614c42565b60208301905092915050565b6000602082019050919050565b6000614c8182614c16565b614c8b8185614c21565b9350614c9683614c32565b8060005b83811015614cc7578151614cae8882614c51565b9750614cb983614c69565b925050600181019050614c9a565b5085935050505092915050565b600060a082019050614ce96000830188613ab0565b614cf66020830187614c07565b8181036040830152614d088186614c76565b9050614d176060830185613bfd565b614d246080830184613ab0565b9695505050505050565b6000604082019050614d436000830185613ab0565b8181036020830152614d558184614c76565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064cacd5a05f759cb36f6a931975a53c28ccdcf4c2c5f81ed5a7c95525258156364736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c8063715018a6116101ab578063a9059cbb116100f7578063e6b2603b11610095578063f2fde38b1161006f578063f2fde38b14610c3d578063f71b9bbf14610c66578063f872858a14610c8f578063fb0ecfa414610cba57610340565b8063e6b2603b14610bd2578063ec44acf214610be9578063ee828db314610c1457610340565b8063c867d60b116100d1578063c867d60b14610b06578063cea9d26f14610b43578063dd62ed3e14610b6c578063df8408fe14610ba957610340565b8063a9059cbb14610a77578063ae85ade614610ab4578063c16dd4a414610add57610340565b8063807c2d9c1161016457806395d89b411161013e57806395d89b41146109bb57806395fc8fdf146109e65780639d9241ec14610a0f578063a457c2d714610a3a57610340565b8063807c2d9c146109285780638b42507f146109535780638da5cb5b1461099057610340565b8063715018a61461083e57806372460e7f14610855578063728d41c914610880578063736ce0d4146108a95780637d1db4a5146108d45780637daf4b2b146108ff57610340565b8063313ce5671161028557806359fac517116102235780635e42358c116101fd5780635e42358c14610782578063651a8987146107ad5780636ddd1713146107d657806370a082311461080157610340565b806359fac517146107075780635c85974f146107305780635d098b381461075957610340565b80633ecad2711161025f5780633ecad271146106395780634974d88f146106765780635342acb41461069f57806359b107b9146106dc57610340565b8063313ce5671461059457806339509351146105bf5780633bbac579146105fc57610340565b806310a60f02116102f25780632598cdb2116102cc5780632598cdb2146104fc57806327c8f83514610527578063293230b8146105525780632b112e491461056957610340565b806310a60f021461046b57806318160ddd1461049457806323b872dd146104bf57610340565b80630445b667146103455780630634f4381461037057806306fdde031461039b5780630930907b146103c6578063095ea7b3146103f15780630f3fc4311461042e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ce3565b6040516103679190613abf565b60405180910390f35b34801561037c57600080fd5b50610385610ce9565b6040516103929190613af5565b60405180910390f35b3480156103a757600080fd5b506103b0610cfc565b6040516103bd9190613ba9565b60405180910390f35b3480156103d257600080fd5b506103db610d8e565b6040516103e89190613c0c565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613c89565b610db2565b6040516104259190613af5565b60405180910390f35b34801561043a57600080fd5b5061045560048036038101906104509190613cc9565b610dd0565b6040516104629190613af5565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190613d87565b610df0565b005b3480156104a057600080fd5b506104a9610f11565b6040516104b69190613abf565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190613de7565b610f1b565b6040516104f39190613af5565b60405180910390f35b34801561050857600080fd5b50610511610ff5565b60405161051e9190613c0c565b60405180910390f35b34801561053357600080fd5b5061053c61101b565b6040516105499190613c0c565b60405180910390f35b34801561055e57600080fd5b5061056761103f565b005b34801561057557600080fd5b5061057e611128565b60405161058b9190613abf565b60405180910390f35b3480156105a057600080fd5b506105a96111a6565b6040516105b69190613e56565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190613c89565b6111bd565b6040516105f39190613af5565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190613cc9565b611270565b6040516106309190613af5565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190613cc9565b611290565b60405161066d9190613af5565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190613e71565b6112b0565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190613cc9565b611349565b6040516106d39190613af5565b60405180910390f35b3480156106e857600080fd5b506106f1611369565b6040516106fe9190613abf565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613cc9565b61136f565b005b34801561073c57600080fd5b5061075760048036038101906107529190613e9e565b61142f565b005b34801561076557600080fd5b50610780600480360381019061077b9190613cc9565b6114b5565b005b34801561078e57600080fd5b50610797611575565b6040516107a49190613af5565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf9190613ecb565b611588565b005b3480156107e257600080fd5b506107eb61165f565b6040516107f89190613af5565b60405180910390f35b34801561080d57600080fd5b5061082860048036038101906108239190613cc9565b611672565b6040516108359190613abf565b60405180910390f35b34801561084a57600080fd5b506108536116bb565b005b34801561086157600080fd5b5061086a611743565b6040516108779190613c0c565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a29190613e9e565b611769565b005b3480156108b557600080fd5b506108be6117ef565b6040516108cb9190613f6a565b60405180910390f35b3480156108e057600080fd5b506108e9611815565b6040516108f69190613abf565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190613f85565b61181b565b005b34801561093457600080fd5b5061093d6118d7565b60405161094a9190613abf565b60405180910390f35b34801561095f57600080fd5b5061097a60048036038101906109759190613cc9565b6118dd565b6040516109879190613af5565b60405180910390f35b34801561099c57600080fd5b506109a56118fd565b6040516109b29190613c0c565b60405180910390f35b3480156109c757600080fd5b506109d0611926565b6040516109dd9190613ba9565b60405180910390f35b3480156109f257600080fd5b50610a0d6004803603810190610a089190613d87565b6119b8565b005b348015610a1b57600080fd5b50610a24611ad9565b604051610a319190613abf565b60405180910390f35b348015610a4657600080fd5b50610a616004803603810190610a5c9190613c89565b611adf565b604051610a6e9190613af5565b60405180910390f35b348015610a8357600080fd5b50610a9e6004803603810190610a999190613c89565b611bac565b604051610aab9190613af5565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad69190613ecb565b611bcb565b005b348015610ae957600080fd5b50610b046004803603810190610aff9190613ecb565b611ca2565b005b348015610b1257600080fd5b50610b2d6004803603810190610b289190613cc9565b611dd0565b604051610b3a9190613af5565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b659190614016565b611df0565b005b348015610b7857600080fd5b50610b936004803603810190610b8e9190614069565b611ef0565b604051610ba09190613abf565b60405180910390f35b348015610bb557600080fd5b50610bd06004803603810190610bcb9190613ecb565b611f77565b005b348015610bde57600080fd5b50610be761204e565b005b348015610bf557600080fd5b50610bfe612179565b604051610c0b9190613af5565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190613e71565b61218c565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190613cc9565b612225565b005b348015610c7257600080fd5b50610c8d6004803603810190610c889190613cc9565b61231d565b005b348015610c9b57600080fd5b50610ca46123dd565b604051610cb19190613af5565b60405180910390f35b348015610cc657600080fd5b50610ce16004803603810190610cdc91906140a9565b6123f0565b005b60125481565b601360029054906101000a900460ff1681565b606060018054610d0b90614118565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3790614118565b8015610d845780601f10610d5957610100808354040283529160200191610d84565b820191906000526020600020905b815481529060010190602001808311610d6757829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610dc6610dbf612543565b848461254b565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b610df8612543565b73ffffffffffffffffffffffffffffffffffffffff16610e166118fd565b73ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390614196565b60405180910390fd5b60005b83839050811015610f0b5781600d6000868685818110610e9257610e916141b6565b5b9050602002016020810190610ea79190613cc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f0390614214565b915050610e6f565b50505050565b6000600e54905090565b6000610f28848484612716565b50610fea84610f35612543565b610fe585604051806060016040528060288152602001614d5f60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f9b612543565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b61254b565b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000dead81565b611047612543565b73ffffffffffffffffffffffffffffffffffffffff166110656118fd565b73ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290614196565b60405180910390fd5b601360009054906101000a900460ff161561110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906142a9565b60405180910390fd5b6001601360006101000a81548160ff021916908315150217905550565b60006111a16111567f0000000000000000000000000000000000000000000000000000000000000000611672565b6111936111827f000000000000000000000000000000000000000000000000000000000000dead611672565b600e54612fde90919063ffffffff16565b612fde90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006112666111ca612543565b8461126185600860006111db612543565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b61254b565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6112b8612543565b73ffffffffffffffffffffffffffffffffffffffff166112d66118fd565b73ffffffffffffffffffffffffffffffffffffffff161461132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390614196565b60405180910390fd5b80601360046101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b60045481565b611377612543565b73ffffffffffffffffffffffffffffffffffffffff166113956118fd565b73ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290614196565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611437612543565b73ffffffffffffffffffffffffffffffffffffffff166114556118fd565b73ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290614196565b60405180910390fd5b8060108190555050565b6114bd612543565b73ffffffffffffffffffffffffffffffffffffffff166114db6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890614196565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360039054906101000a900460ff1681565b611590612543565b73ffffffffffffffffffffffffffffffffffffffff166115ae6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb90614196565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116c3612543565b73ffffffffffffffffffffffffffffffffffffffff166116e16118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90614196565b60405180910390fd5b6117416000613086565b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611771612543565b73ffffffffffffffffffffffffffffffffffffffff1661178f6118fd565b73ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90614196565b60405180910390fd5b8060118190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611823612543565b73ffffffffffffffffffffffffffffffffffffffff166118416118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90614196565b60405180910390fd5b82601360016101000a81548160ff0219169083151502179055508160128190555080601360026101000a81548160ff021916908315150217905550505050565b60115481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461193590614118565b80601f016020809104026020016040519081016040528092919081815260200182805461196190614118565b80156119ae5780601f10611983576101008083540402835291602001916119ae565b820191906000526020600020905b81548152906001019060200180831161199157829003601f168201915b5050505050905090565b6119c0612543565b73ffffffffffffffffffffffffffffffffffffffff166119de6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614196565b60405180910390fd5b60005b83839050811015611ad3578160146000868685818110611a5a57611a596141b6565b5b9050602002016020810190611a6f9190613cc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611acb90614214565b915050611a37565b50505050565b60055481565b6000611ba2611aec612543565b84611b9d85604051806060016040528060258152602001614d876025913960086000611b16612543565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b61254b565b6001905092915050565b6000611bc0611bb9612543565b8484612716565b506001905092915050565b611bd3612543565b73ffffffffffffffffffffffffffffffffffffffff16611bf16118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e90614196565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611caa612543565b73ffffffffffffffffffffffffffffffffffffffff16611cc86118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614196565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b611df8612543565b73ffffffffffffffffffffffffffffffffffffffff16611e166118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390614196565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611ea79291906142c9565b6020604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614307565b50505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f7f612543565b73ffffffffffffffffffffffffffffffffffffffff16611f9d6118fd565b73ffffffffffffffffffffffffffffffffffffffff1614611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90614196565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612056612543565b73ffffffffffffffffffffffffffffffffffffffff166120746118fd565b73ffffffffffffffffffffffffffffffffffffffff16146120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190614196565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516120f090614365565b60006040518083038185875af1925050503d806000811461212d576040519150601f19603f3d011682016040523d82523d6000602084013e612132565b606091505b5050905080612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d906143c6565b60405180910390fd5b50565b601360009054906101000a900460ff1681565b612194612543565b73ffffffffffffffffffffffffffffffffffffffff166121b26118fd565b73ffffffffffffffffffffffffffffffffffffffff1614612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90614196565b60405180910390fd5b80601360036101000a81548160ff02191690831515021790555050565b61222d612543565b73ffffffffffffffffffffffffffffffffffffffff1661224b6118fd565b73ffffffffffffffffffffffffffffffffffffffff16146122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229890614196565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230890614458565b60405180910390fd5b61231a81613086565b50565b612325612543565b73ffffffffffffffffffffffffffffffffffffffff166123436118fd565b73ffffffffffffffffffffffffffffffffffffffff1614612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090614196565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360049054906101000a900460ff1681565b6123f8612543565b73ffffffffffffffffffffffffffffffffffffffff166124166118fd565b73ffffffffffffffffffffffffffffffffffffffff161461246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390614196565b60405180910390fd5b81600481905550806005819055505050565b60008083141561249157600090506124f3565b6000828461249f9190614478565b90508284826124ae9190614501565b146124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e5906145a4565b60405180910390fd5b809150505b92915050565b600061253b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061314a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b290614636565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561262b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612622906146c8565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127099190613abf565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e9061475a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee906147ec565b60405180910390fd5b6000821161283a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128319061487e565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128be906148ea565b60405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b906148ea565b60405180910390fd5b600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d8906148ea565b60405180910390fd5b601660149054906101000a900460ff1615612a0857612a018484846131ad565b9050612f73565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612aac5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0157601360009054906101000a900460ff16612b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af790614956565b60405180910390fd5b5b6000612b0c30611672565b905060006012548210159050808015612b325750601660149054906101000a900460ff16155b8015612b885750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ba05750601360019054906101000a900460ff165b15612baf57612bae82613380565b5b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c535750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c6b5750601360039054906101000a900460ff165b15612cb657601054841115612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac906149e8565b60405180910390fd5b5b612d3f846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612d8e878761349a565b612da257612d9d878787613605565b612da4565b845b9050601360049054906101000a900460ff168015612e0c5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e7157601154612e2f82612e2189611672565b61302890919063ffffffff16565b1115612e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6790614a54565b60405180910390fd5b5b612ec381600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f639190613abf565b60405180910390a3600193505050505b9392505050565b6000838311158290612fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb99190613ba9565b60405180910390fd5b5060008385612fd19190614a74565b9050809150509392505050565b600061302083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f7a565b905092915050565b60008082846130379190614aa8565b90508381101561307c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307390614b4a565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083118290613191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131889190613ba9565b60405180910390fd5b50600083856131a09190614501565b9050809150509392505050565b6000613238826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f7a9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132cd82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161336d9190613abf565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff02191690831515021790555060006133b460055460045461302890919063ffffffff16565b905060008114156133c5575061347c565b601360029054906101000a900460ff16156133e05760125491505b60004790506133ee8361382a565b60006134038247612fde90919063ffffffff16565b9050600081111561347857600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613476573d6000803e3d6000fd5b505b5050505b6000601660146101000a81548160ff02191690831515021790555050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061353d5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561354b57600190506135ff565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135ec5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135fa57600090506135ff565b600090505b92915050565b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561368a57613683600f546136756004548661247e90919063ffffffff16565b6124f990919063ffffffff16565b9050613709565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561370857613705600f546136f76005548661247e90919063ffffffff16565b6124f990919063ffffffff16565b90505b5b600081111561380d5761376481600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302890919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138049190613abf565b60405180910390a35b6138208184612fde90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561384757613846614b6a565b5b6040519080825280602002602001820160405280156138755781602001602082028036833780820191505090505b509050308160008151811061388d5761388c6141b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139589190614bae565b8160018151811061396c5761396b6141b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139d330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461254b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a37959493929190614cd4565b600060405180830381600087803b158015613a5157600080fd5b505af1158015613a65573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a9a929190614d2e565b60405180910390a15050565b6000819050919050565b613ab981613aa6565b82525050565b6000602082019050613ad46000830184613ab0565b92915050565b60008115159050919050565b613aef81613ada565b82525050565b6000602082019050613b0a6000830184613ae6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b4a578082015181840152602081019050613b2f565b83811115613b59576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b7b82613b10565b613b858185613b1b565b9350613b95818560208601613b2c565b613b9e81613b5f565b840191505092915050565b60006020820190508181036000830152613bc38184613b70565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bf682613bcb565b9050919050565b613c0681613beb565b82525050565b6000602082019050613c216000830184613bfd565b92915050565b600080fd5b600080fd5b613c3a81613beb565b8114613c4557600080fd5b50565b600081359050613c5781613c31565b92915050565b613c6681613aa6565b8114613c7157600080fd5b50565b600081359050613c8381613c5d565b92915050565b60008060408385031215613ca057613c9f613c27565b5b6000613cae85828601613c48565b9250506020613cbf85828601613c74565b9150509250929050565b600060208284031215613cdf57613cde613c27565b5b6000613ced84828501613c48565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613d1b57613d1a613cf6565b5b8235905067ffffffffffffffff811115613d3857613d37613cfb565b5b602083019150836020820283011115613d5457613d53613d00565b5b9250929050565b613d6481613ada565b8114613d6f57600080fd5b50565b600081359050613d8181613d5b565b92915050565b600080600060408486031215613da057613d9f613c27565b5b600084013567ffffffffffffffff811115613dbe57613dbd613c2c565b5b613dca86828701613d05565b93509350506020613ddd86828701613d72565b9150509250925092565b600080600060608486031215613e0057613dff613c27565b5b6000613e0e86828701613c48565b9350506020613e1f86828701613c48565b9250506040613e3086828701613c74565b9150509250925092565b600060ff82169050919050565b613e5081613e3a565b82525050565b6000602082019050613e6b6000830184613e47565b92915050565b600060208284031215613e8757613e86613c27565b5b6000613e9584828501613d72565b91505092915050565b600060208284031215613eb457613eb3613c27565b5b6000613ec284828501613c74565b91505092915050565b60008060408385031215613ee257613ee1613c27565b5b6000613ef085828601613c48565b9250506020613f0185828601613d72565b9150509250929050565b6000819050919050565b6000613f30613f2b613f2684613bcb565b613f0b565b613bcb565b9050919050565b6000613f4282613f15565b9050919050565b6000613f5482613f37565b9050919050565b613f6481613f49565b82525050565b6000602082019050613f7f6000830184613f5b565b92915050565b600080600060608486031215613f9e57613f9d613c27565b5b6000613fac86828701613d72565b9350506020613fbd86828701613c74565b9250506040613fce86828701613d72565b9150509250925092565b6000613fe382613beb565b9050919050565b613ff381613fd8565b8114613ffe57600080fd5b50565b60008135905061401081613fea565b92915050565b60008060006060848603121561402f5761402e613c27565b5b600061403d86828701614001565b935050602061404e86828701613c48565b925050604061405f86828701613c74565b9150509250925092565b600080604083850312156140805761407f613c27565b5b600061408e85828601613c48565b925050602061409f85828601613c48565b9150509250929050565b600080604083850312156140c0576140bf613c27565b5b60006140ce85828601613c74565b92505060206140df85828601613c74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061413057607f821691505b60208210811415614144576141436140e9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614180602083613b1b565b915061418b8261414a565b602082019050919050565b600060208201905081810360008301526141af81614173565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061421f82613aa6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614252576142516141e5565b5b600182019050919050565b7f45524332303a20416c726561647920456e61626c656400000000000000000000600082015250565b6000614293601683613b1b565b915061429e8261425d565b602082019050919050565b600060208201905081810360008301526142c281614286565b9050919050565b60006040820190506142de6000830185613bfd565b6142eb6020830184613ab0565b9392505050565b60008151905061430181613d5b565b92915050565b60006020828403121561431d5761431c613c27565b5b600061432b848285016142f2565b91505092915050565b600081905092915050565b50565b600061434f600083614334565b915061435a8261433f565b600082019050919050565b600061437082614342565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006143b0601483613b1b565b91506143bb8261437a565b602082019050919050565b600060208201905081810360008301526143df816143a3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614442602683613b1b565b915061444d826143e6565b604082019050919050565b6000602082019050818103600083015261447181614435565b9050919050565b600061448382613aa6565b915061448e83613aa6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144c7576144c66141e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061450c82613aa6565b915061451783613aa6565b925082614527576145266144d2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061458e602183613b1b565b915061459982614532565b604082019050919050565b600060208201905081810360008301526145bd81614581565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614620602483613b1b565b915061462b826145c4565b604082019050919050565b6000602082019050818103600083015261464f81614613565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006146b2602283613b1b565b91506146bd82614656565b604082019050919050565b600060208201905081810360008301526146e1816146a5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614744602583613b1b565b915061474f826146e8565b604082019050919050565b6000602082019050818103600083015261477381614737565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147d6602383613b1b565b91506147e18261477a565b604082019050919050565b60006020820190508181036000830152614805816147c9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614868602983613b1b565b91506148738261480c565b604082019050919050565b600060208201905081810360008301526148978161485b565b9050919050565b7f45524332303a20426f7420646574656374656400000000000000000000000000600082015250565b60006148d4601383613b1b565b91506148df8261489e565b602082019050919050565b60006020820190508181036000830152614903816148c7565b9050919050565b7f45524332303a2074726164696e67206e6f7420656e61626c6520796574000000600082015250565b6000614940601d83613b1b565b915061494b8261490a565b602082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006149d2602883613b1b565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000614a3e601b83613b1b565b9150614a4982614a08565b602082019050919050565b60006020820190508181036000830152614a6d81614a31565b9050919050565b6000614a7f82613aa6565b9150614a8a83613aa6565b925082821015614a9d57614a9c6141e5565b5b828203905092915050565b6000614ab382613aa6565b9150614abe83613aa6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614af357614af26141e5565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614b34601b83613b1b565b9150614b3f82614afe565b602082019050919050565b60006020820190508181036000830152614b6381614b27565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614ba881613c31565b92915050565b600060208284031215614bc457614bc3613c27565b5b6000614bd284828501614b99565b91505092915050565b6000819050919050565b6000614c00614bfb614bf684614bdb565b613f0b565b613aa6565b9050919050565b614c1081614be5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c4b81613beb565b82525050565b6000614c5d8383614c42565b60208301905092915050565b6000602082019050919050565b6000614c8182614c16565b614c8b8185614c21565b9350614c9683614c32565b8060005b83811015614cc7578151614cae8882614c51565b9750614cb983614c69565b925050600181019050614c9a565b5085935050505092915050565b600060a082019050614ce96000830188613ab0565b614cf66020830187614c07565b8181036040830152614d088186614c76565b9050614d176060830185613bfd565b614d246080830184613ab0565b9695505050505050565b6000604082019050614d436000830185613ab0565b8181036020830152614d558184614c76565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064cacd5a05f759cb36f6a931975a53c28ccdcf4c2c5f81ed5a7c95525258156364736f6c634300080a0033

Deployed Bytecode Sourcemap

7244:13441:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8508:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8636:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10996:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7602:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12334:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8756:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18712:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11273:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13108:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7773:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7514:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17984:130;;;;;;;;;;;;;:::i;:::-;;11667:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11182:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11831:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8216:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8050:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19200:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7993:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7692:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20464:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19821:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19934:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8673:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19443:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8599:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11381:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2004:94;;;;;;;;;;;;;:::i;:::-;;8845:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19707:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8807:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8367:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20230:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8439:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8161:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1695:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11087;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18513:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7731:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12057:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12933:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19579:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20056:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8102:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18373:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11512:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19313:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18155:178;;;;;;;;;;;;;:::i;:::-;;8570:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19094:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2106:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20587:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8712:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18945:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8508:53;;;;:::o;8636:30::-;;;;;;;;;;;;;:::o;10996:83::-;11033:13;11066:5;11059:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10996:83;:::o;7602:81::-;;;:::o;12334:161::-;12409:4;12426:39;12435:12;:10;:12::i;:::-;12449:7;12458:6;12426:8;:39::i;:::-;12483:4;12476:11;;12334:161;;;;:::o;8756:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18712:225::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18836:9:::1;18831:99;18855:8;;:15;;18851:1;:19;18831:99;;;18913:5;18892;:18;18898:8;;18907:1;18898:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18892:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;18872:3;;;;;:::i;:::-;;;;18831:99;;;;18712:225:::0;;;:::o;11273:100::-;11326:7;11353:12;;11346:19;;11273:100;:::o;13108:313::-;13206:4;13223:36;13233:6;13241:9;13252:6;13223:9;:36::i;:::-;;13270:121;13279:6;13287:12;:10;:12::i;:::-;13301:89;13339:6;13301:89;;;;;;;;;;;;;;;;;:11;:19;13313:6;13301:19;;;;;;;;;;;;;;;:33;13321:12;:10;:12::i;:::-;13301:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13270:8;:121::i;:::-;13409:4;13402:11;;13108:313;;;;;:::o;7773:84::-;;;;;;;;;;;;;:::o;7514:81::-;;;:::o;17984:130::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18047:7:::1;;;;;;;;;;;18046:8;18038:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;18102:4;18092:7;;:14;;;;;;;;;;;;;;;;;;17984:130::o:0;11667:156::-;11720:7;11747:68;11792:22;11802:11;11792:9;:22::i;:::-;11747:40;11764:22;11774:11;11764:9;:22::i;:::-;11747:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;11740:75;;11667:156;:::o;11182:83::-;11223:5;11248:9;;;;;;;;;;;11241:16;;11182:83;:::o;11831:218::-;11919:4;11936:83;11945:12;:10;:12::i;:::-;11959:7;11968:50;12007:10;11968:11;:25;11980:12;:10;:12::i;:::-;11968:25;;;;;;;;;;;;;;;:34;11994:7;11968:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11936:8;:83::i;:::-;12037:4;12030:11;;11831:218;;;;:::o;8216:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;8050:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;19200:105::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19290:7:::1;19271:16;;:26;;;;;;;;;;;;;;;;;;19200:105:::0;:::o;7993:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;7692:32::-;;;;:::o;20464:115::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20563:7:::1;20536:9;;:35;;;;;;;;;;;;;;;;;;20464:115:::0;:::o;19821:101::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19906:8:::1;19891:12;:23;;;;19821:101:::0;:::o;19934:114::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20030:10:::1;20012:15;;:28;;;;;;;;;;;;;;;;;;19934:114:::0;:::o;8673:32::-;;;;;;;;;;;;;:::o;19443:128::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19556:7:::1;19528:19;:25;19548:4;19528:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19443:128:::0;;:::o;8599:30::-;;;;;;;;;;;;;:::o;11381:123::-;11447:7;11473:9;:18;11483:7;11473:18;;;;;;;;;;;;;;;;11466:25;;11381:123;;;:::o;2004:94::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2069:21:::1;2087:1;2069:9;:21::i;:::-;2004:94::o:0;8845:22::-;;;;;;;;;;;;;:::o;19707:106::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19797:8:::1;19784:10;:21;;;;19707:106:::0;:::o;8807:31::-;;;;;;;;;;;;;:::o;8367:61::-;;;;:::o;20230:226::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20373:8:::1;20359:11;;:22;;;;;;;;;;;;;;;;;;20408:7;20392:13;:23;;;;20440:8;20426:11;;:22;;;;;;;;;;;;;;;;;;20230:226:::0;;;:::o;8439:58::-;;;;:::o;8161:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;1695:87::-;1741:7;1768:6;;;;;;;;;;;1761:13;;1695:87;:::o;11087:::-;11126:13;11159:7;11152:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11087:87;:::o;18513:191::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18609:6:::1;18605:92;18625:4;;:11;;18621:1;:15;18605:92;;;18678:7;18657:9;:18;18667:4;;18672:1;18667:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18657:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18638:3;;;;;:::i;:::-;;;;18605:92;;;;18513:191:::0;;;:::o;7731:33::-;;;;:::o;12057:269::-;12150:4;12167:129;12176:12;:10;:12::i;:::-;12190:7;12199:96;12238:15;12199:96;;;;;;;;;;;;;;;;;:11;:25;12211:12;:10;:12::i;:::-;12199:25;;;;;;;;;;;;;;;:34;12225:7;12199:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12167:8;:129::i;:::-;12314:4;12307:11;;12057:269;;;;:::o;12933:167::-;13011:4;13028:42;13038:12;:10;:12::i;:::-;13052:9;13063:6;13028:9;:42::i;:::-;;13088:4;13081:11;;12933:167;;;;:::o;19579:120::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19684:7:::1;19660:15;:21;19676:4;19660:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19579:120:::0;;:::o;20056:166::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20160:7:::1;20138:12;:19;20151:5;20138:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20207:7;20178:19;:26;20198:5;20178:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20056:166:::0;;:::o;8102:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18373:132::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18467:3:::1;:12;;;18480:9;18490:6;18467:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18373:132:::0;;;:::o;11512:143::-;11593:7;11620:11;:18;11632:5;11620:18;;;;;;;;;;;;;;;:27;11639:7;11620:27;;;;;;;;;;;;;;;;11613:34;;11512:143;;;;:::o;19313:122::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19420:7:::1;19394:17;:23;19412:4;19394:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19313:122:::0;;:::o;18155:178::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18210:7:::1;18230:10;18222:24;;18254:21;18222:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18209:71;;;18299:2;18291:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;18197:136;18155:178::o:0;8570:19::-;;;;;;;;;;;;;:::o;19094:98::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19177:7:::1;19161:13;;:23;;;;;;;;;;;;;;;;;;19094:98:::0;:::o;2106:229::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2229:1:::1;2209:22;;:8;:22;;;;2187:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2308:19;2318:8;2308:9;:19::i;:::-;2106:229:::0;:::o;20587:91::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20665:5:::1;20655:7;;:15;;;;;;;;;;;;;;;;;;20587:91:::0;:::o;8712:35::-;;;;;;;;;;;;;:::o;18945:141::-;1927:12;:10;:12::i;:::-;1916:23;;:7;:5;:7::i;:::-;:23;;;1908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19037:7:::1;19023:11;:21;;;;19070:8;19055:12;:23;;;;18945:141:::0;;:::o;3082:250::-;3140:7;3169:1;3164;:6;3160:47;;;3194:1;3187:8;;;;3160:47;3219:9;3235:1;3231;:5;;;;:::i;:::-;3219:17;;3264:1;3259;3255;:5;;;;:::i;:::-;:10;3247:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3323:1;3316:8;;;3082:250;;;;;:::o;3340:132::-;3398:7;3425:39;3429:1;3432;3425:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3418:46;;3340:132;;;;:::o;262:98::-;315:7;342:10;335:17;;262:98;:::o;12503:337::-;12613:1;12596:19;;:5;:19;;;;12588:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12694:1;12675:21;;:7;:21;;;;12667:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12778:6;12748:11;:18;12760:5;12748:18;;;;;;;;;;;;;;;:27;12767:7;12748:27;;;;;;;;;;;;;;;:36;;;;12816:7;12800:32;;12809:5;12800:32;;;12825:6;12800:32;;;;;;:::i;:::-;;;;;;;;12503:337;;;:::o;13429:1923::-;13516:4;13561:1;13543:20;;:6;:20;;;;13535:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13645:1;13624:23;;:9;:23;;;;13616:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13715:1;13706:6;:10;13698:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13792:5;:13;13798:6;13792:13;;;;;;;;;;;;;;;;;;;;;;;;;13791:14;13783:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13849:5;:17;13855:10;13849:17;;;;;;;;;;;;;;;;;;;;;;;;;13848:18;13840:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13910:5;:16;13916:9;13910:16;;;;;;;;;;;;;;;;;;;;;;;;;13909:17;13901:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13967:6;;;;;;;;;;;13963:1380;;;13997:41;14012:6;14020:9;14031:6;13997:14;:41::i;:::-;13990:48;;;;13963:1380;14087:9;:17;14097:6;14087:17;;;;;;;;;;;;;;;;;;;;;;;;;14086:18;:43;;;;;14109:9;:20;14119:9;14109:20;;;;;;;;;;;;;;;;;;;;;;;;;14108:21;14086:43;14082:133;;;14158:7;;;;;;;;;;;14150:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14082:133;14231:28;14262:24;14280:4;14262:9;:24::i;:::-;14231:55;;14301:28;14356:13;;14332:20;:37;;14301:68;;14390:23;:34;;;;;14418:6;;;;;;;;;;;14417:7;14390:34;:59;;;;;14429:12;:20;14442:6;14429:20;;;;;;;;;;;;;;;;;;;;;;;;;14428:21;14390:59;:74;;;;;14453:11;;;;;;;;;;;14390:74;14386:145;;;14485:30;14494:20;14485:8;:30::i;:::-;14386:145;14563:15;:23;14579:6;14563:23;;;;;;;;;;;;;;;;;;;;;;;;;14562:24;:55;;;;;14591:15;:26;14607:9;14591:26;;;;;;;;;;;;;;;;;;;;;;;;;14590:27;14562:55;:72;;;;;14621:13;;;;;;;;;;;14562:72;14559:187;;;14673:12;;14663:6;:22;;14655:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;14559:187;14795:53;14817:6;14795:53;;;;;;;;;;;;;;;;;:9;:17;14805:6;14795:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14775:9;:17;14785:6;14775:17;;;;;;;;;;;;;;;:73;;;;14865:19;14887:34;14904:6;14911:9;14887:16;:34::i;:::-;:80;;14933:34;14941:6;14949:9;14960:6;14933:7;:34::i;:::-;14887:80;;;14924:6;14887:80;14865:102;;14987:16;;;;;;;;;;;:51;;;;;15008:19;:30;15028:9;15008:30;;;;;;;;;;;;;;;;;;;;;;;;;15007:31;14987:51;14984:181;;;15108:10;;15067:37;15092:11;15067:20;15077:9;15067;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;15059:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14984:181;15204:37;15229:11;15204:9;:20;15214:9;15204:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15181:9;:20;15191:9;15181:20;;;;;;;;;;;;;;;:60;;;;15280:9;15263:40;;15272:6;15263:40;;;15291:11;15263:40;;;;;;:::i;:::-;;;;;;;;15325:4;15318:11;;;;;13429:1923;;;;;;:::o;2882:192::-;2968:7;3001:1;2996;:6;;3004:12;2988:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3028:9;3044:1;3040;:5;;;;:::i;:::-;3028:17;;3065:1;3058:8;;;2882:192;;;;;:::o;2738:136::-;2796:7;2823:43;2827:1;2830;2823:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2816:50;;2738:136;;;;:::o;2549:181::-;2607:7;2627:9;2643:1;2639;:5;;;;:::i;:::-;2627:17;;2668:1;2663;:6;;2655:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2721:1;2714:8;;;2549:181;;;;:::o;2343:173::-;2399:16;2418:6;;;;;;;;;;;2399:25;;2444:8;2435:6;;:17;;;;;;;;;;;;;;;;;;2499:8;2468:40;;2489:8;2468:40;;;;;;;;;;;;2388:128;2343:173;:::o;3480:278::-;3566:7;3598:1;3594;:5;3601:12;3586:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3625:9;3641:1;3637;:5;;;;:::i;:::-;3625:17;;3749:1;3742:8;;;3480:278;;;;;:::o;15360:330::-;15453:4;15490:53;15512:6;15490:53;;;;;;;;;;;;;;;;;:9;:17;15500:6;15490:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15470:9;:17;15480:6;15470:17;;;;;;;;;;;;;;;:73;;;;15577:32;15602:6;15577:9;:20;15587:9;15577:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15554:9;:20;15564:9;15554:20;;;;;;;;;;;;;;;:55;;;;15642:9;15625:35;;15634:6;15625:35;;;15653:6;15625:35;;;;;;:::i;:::-;;;;;;;;15678:4;15671:11;;15360:330;;;;;:::o;16798:522::-;8940:4;8931:6;;:13;;;;;;;;;;;;;;;;;;16869:19:::1;16891:29;16907:12;;16891:11;;:15;;:29;;;;:::i;:::-;16869:51;;16951:1;16936:11;:16;16933:28;;;16954:7;;;16933:28;16976:11;;;;;;;;;;;16973:75;;;17023:13;;17004:32;;16973:75;17060:22;17085:21;17060:46;;17117:33;17134:15;17117:16;:33::i;:::-;17161:22;17186:41;17212:14;17186:21;:25;;:41;;;;:::i;:::-;17161:66;;17260:1;17243:14;:18;17240:72;;;17271:15;;;;;;;;;;;17263:33;;:49;17297:14;17263:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17240:72;16856:464;;;8955:1;8976:5:::0;8967:6;;:14;;;;;;;;;;;;;;;;;;16798:522;:::o;15702:369::-;15786:4;15806:17;:25;15824:6;15806:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;15835:17;:28;15853:9;15835:28;;;;;;;;;;;;;;;;;;;;;;;;;15806:57;15803:261;;;15887:4;15880:11;;;;15803:261;15922:12;:20;15935:6;15922:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;15946:12;:23;15959:9;15946:23;;;;;;;;;;;;;;;;;;;;;;;;;15922:47;15918:146;;;15993:5;15986:12;;;;15918:146;16047:5;16040:12;;15702:369;;;;;:::o;16079:711::-;16165:7;16195:14;16252:12;:20;16265:6;16252:20;;;;;;;;;;;;;;;;;;;;;;;;;16249:267;;;16311:43;16339:14;;16311:23;16322:11;;16311:6;:10;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;16299:55;;16249:267;;;16393:12;:23;16406:9;16393:23;;;;;;;;;;;;;;;;;;;;;;;;;16390:126;;;16456:44;16485:14;;16456:24;16467:12;;16456:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;16444:56;;16390:126;16249:267;16547:1;16535:9;:13;16532:185;;;16596:39;16625:9;16596;:24;16614:4;16596:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16569:9;:24;16587:4;16569:24;;;;;;;;;;;;;;;:66;;;;16684:4;16659:42;;16668:6;16659:42;;;16691:9;16659:42;;;;;;:::i;:::-;;;;;;;;16532:185;16740:21;16751:9;16740:6;:10;;:21;;;;:::i;:::-;16733:28;;;16079:711;;;;;:::o;17328:648::-;17454:21;17492:1;17478:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17454:40;;17523:4;17505;17510:1;17505:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17549:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17539:4;17544:1;17539:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;17578:56;17595:4;17610:9;;;;;;;;;;;17622:11;17578:8;:56::i;:::-;17673:9;;;;;;;;;;;:60;;;17748:11;17774:1;17818:4;17845;17881:15;17673:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17933:35;17950:11;17963:4;17933:35;;;;;;;:::i;:::-;;;;;;;;17383:593;17328:648;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:90::-;476:7;519:5;512:13;505:21;494:32;;442:90;;;:::o;538:109::-;619:21;634:5;619:21;:::i;:::-;614:3;607:34;538:109;;:::o;653:210::-;740:4;778:2;767:9;763:18;755:26;;791:65;853:1;842:9;838:17;829:6;791:65;:::i;:::-;653:210;;;;:::o;869:99::-;921:6;955:5;949:12;939:22;;869:99;;;:::o;974:169::-;1058:11;1092:6;1087:3;1080:19;1132:4;1127:3;1123:14;1108:29;;974:169;;;;:::o;1149:307::-;1217:1;1227:113;1241:6;1238:1;1235:13;1227:113;;;1326:1;1321:3;1317:11;1311:18;1307:1;1302:3;1298:11;1291:39;1263:2;1260:1;1256:10;1251:15;;1227:113;;;1358:6;1355:1;1352:13;1349:101;;;1438:1;1429:6;1424:3;1420:16;1413:27;1349:101;1198:258;1149:307;;;:::o;1462:102::-;1503:6;1554:2;1550:7;1545:2;1538:5;1534:14;1530:28;1520:38;;1462:102;;;:::o;1570:364::-;1658:3;1686:39;1719:5;1686:39;:::i;:::-;1741:71;1805:6;1800:3;1741:71;:::i;:::-;1734:78;;1821:52;1866:6;1861:3;1854:4;1847:5;1843:16;1821:52;:::i;:::-;1898:29;1920:6;1898:29;:::i;:::-;1893:3;1889:39;1882:46;;1662:272;1570:364;;;;:::o;1940:313::-;2053:4;2091:2;2080:9;2076:18;2068:26;;2140:9;2134:4;2130:20;2126:1;2115:9;2111:17;2104:47;2168:78;2241:4;2232:6;2168:78;:::i;:::-;2160:86;;1940:313;;;;:::o;2259:126::-;2296:7;2336:42;2329:5;2325:54;2314:65;;2259:126;;;:::o;2391:96::-;2428:7;2457:24;2475:5;2457:24;:::i;:::-;2446:35;;2391:96;;;:::o;2493:118::-;2580:24;2598:5;2580:24;:::i;:::-;2575:3;2568:37;2493:118;;:::o;2617:222::-;2710:4;2748:2;2737:9;2733:18;2725:26;;2761:71;2829:1;2818:9;2814:17;2805:6;2761:71;:::i;:::-;2617:222;;;;:::o;2926:117::-;3035:1;3032;3025:12;3049:117;3158:1;3155;3148:12;3172:122;3245:24;3263:5;3245:24;:::i;:::-;3238:5;3235:35;3225:63;;3284:1;3281;3274:12;3225:63;3172:122;:::o;3300:139::-;3346:5;3384:6;3371:20;3362:29;;3400:33;3427:5;3400:33;:::i;:::-;3300:139;;;;:::o;3445:122::-;3518:24;3536:5;3518:24;:::i;:::-;3511:5;3508:35;3498:63;;3557:1;3554;3547:12;3498:63;3445:122;:::o;3573:139::-;3619:5;3657:6;3644:20;3635:29;;3673:33;3700:5;3673:33;:::i;:::-;3573:139;;;;:::o;3718:474::-;3786:6;3794;3843:2;3831:9;3822:7;3818:23;3814:32;3811:119;;;3849:79;;:::i;:::-;3811:119;3969:1;3994:53;4039:7;4030:6;4019:9;4015:22;3994:53;:::i;:::-;3984:63;;3940:117;4096:2;4122:53;4167:7;4158:6;4147:9;4143:22;4122:53;:::i;:::-;4112:63;;4067:118;3718:474;;;;;:::o;4198:329::-;4257:6;4306:2;4294:9;4285:7;4281:23;4277:32;4274:119;;;4312:79;;:::i;:::-;4274:119;4432:1;4457:53;4502:7;4493:6;4482:9;4478:22;4457:53;:::i;:::-;4447:63;;4403:117;4198:329;;;;:::o;4533:117::-;4642:1;4639;4632:12;4656:117;4765:1;4762;4755:12;4779:117;4888:1;4885;4878:12;4919:568;4992:8;5002:6;5052:3;5045:4;5037:6;5033:17;5029:27;5019:122;;5060:79;;:::i;:::-;5019:122;5173:6;5160:20;5150:30;;5203:18;5195:6;5192:30;5189:117;;;5225:79;;:::i;:::-;5189:117;5339:4;5331:6;5327:17;5315:29;;5393:3;5385:4;5377:6;5373:17;5363:8;5359:32;5356:41;5353:128;;;5400:79;;:::i;:::-;5353:128;4919:568;;;;;:::o;5493:116::-;5563:21;5578:5;5563:21;:::i;:::-;5556:5;5553:32;5543:60;;5599:1;5596;5589:12;5543:60;5493:116;:::o;5615:133::-;5658:5;5696:6;5683:20;5674:29;;5712:30;5736:5;5712:30;:::i;:::-;5615:133;;;;:::o;5754:698::-;5846:6;5854;5862;5911:2;5899:9;5890:7;5886:23;5882:32;5879:119;;;5917:79;;:::i;:::-;5879:119;6065:1;6054:9;6050:17;6037:31;6095:18;6087:6;6084:30;6081:117;;;6117:79;;:::i;:::-;6081:117;6230:80;6302:7;6293:6;6282:9;6278:22;6230:80;:::i;:::-;6212:98;;;;6008:312;6359:2;6385:50;6427:7;6418:6;6407:9;6403:22;6385:50;:::i;:::-;6375:60;;6330:115;5754:698;;;;;:::o;6458:619::-;6535:6;6543;6551;6600:2;6588:9;6579:7;6575:23;6571:32;6568:119;;;6606:79;;:::i;:::-;6568:119;6726:1;6751:53;6796:7;6787:6;6776:9;6772:22;6751:53;:::i;:::-;6741:63;;6697:117;6853:2;6879:53;6924:7;6915:6;6904:9;6900:22;6879:53;:::i;:::-;6869:63;;6824:118;6981:2;7007:53;7052:7;7043:6;7032:9;7028:22;7007:53;:::i;:::-;6997:63;;6952:118;6458:619;;;;;:::o;7083:86::-;7118:7;7158:4;7151:5;7147:16;7136:27;;7083:86;;;:::o;7175:112::-;7258:22;7274:5;7258:22;:::i;:::-;7253:3;7246:35;7175:112;;:::o;7293:214::-;7382:4;7420:2;7409:9;7405:18;7397:26;;7433:67;7497:1;7486:9;7482:17;7473:6;7433:67;:::i;:::-;7293:214;;;;:::o;7513:323::-;7569:6;7618:2;7606:9;7597:7;7593:23;7589:32;7586:119;;;7624:79;;:::i;:::-;7586:119;7744:1;7769:50;7811:7;7802:6;7791:9;7787:22;7769:50;:::i;:::-;7759:60;;7715:114;7513:323;;;;:::o;7842:329::-;7901:6;7950:2;7938:9;7929:7;7925:23;7921:32;7918:119;;;7956:79;;:::i;:::-;7918:119;8076:1;8101:53;8146:7;8137:6;8126:9;8122:22;8101:53;:::i;:::-;8091:63;;8047:117;7842:329;;;;:::o;8177:468::-;8242:6;8250;8299:2;8287:9;8278:7;8274:23;8270:32;8267:119;;;8305:79;;:::i;:::-;8267:119;8425:1;8450:53;8495:7;8486:6;8475:9;8471:22;8450:53;:::i;:::-;8440:63;;8396:117;8552:2;8578:50;8620:7;8611:6;8600:9;8596:22;8578:50;:::i;:::-;8568:60;;8523:115;8177:468;;;;;:::o;8651:60::-;8679:3;8700:5;8693:12;;8651:60;;;:::o;8717:142::-;8767:9;8800:53;8818:34;8827:24;8845:5;8827:24;:::i;:::-;8818:34;:::i;:::-;8800:53;:::i;:::-;8787:66;;8717:142;;;:::o;8865:126::-;8915:9;8948:37;8979:5;8948:37;:::i;:::-;8935:50;;8865:126;;;:::o;8997:148::-;9069:9;9102:37;9133:5;9102:37;:::i;:::-;9089:50;;8997:148;;;:::o;9151:175::-;9260:59;9313:5;9260:59;:::i;:::-;9255:3;9248:72;9151:175;;:::o;9332:266::-;9447:4;9485:2;9474:9;9470:18;9462:26;;9498:93;9588:1;9577:9;9573:17;9564:6;9498:93;:::i;:::-;9332:266;;;;:::o;9604:607::-;9675:6;9683;9691;9740:2;9728:9;9719:7;9715:23;9711:32;9708:119;;;9746:79;;:::i;:::-;9708:119;9866:1;9891:50;9933:7;9924:6;9913:9;9909:22;9891:50;:::i;:::-;9881:60;;9837:114;9990:2;10016:53;10061:7;10052:6;10041:9;10037:22;10016:53;:::i;:::-;10006:63;;9961:118;10118:2;10144:50;10186:7;10177:6;10166:9;10162:22;10144:50;:::i;:::-;10134:60;;10089:115;9604:607;;;;;:::o;10217:109::-;10267:7;10296:24;10314:5;10296:24;:::i;:::-;10285:35;;10217:109;;;:::o;10332:148::-;10418:37;10449:5;10418:37;:::i;:::-;10411:5;10408:48;10398:76;;10470:1;10467;10460:12;10398:76;10332:148;:::o;10486:165::-;10545:5;10583:6;10570:20;10561:29;;10599:46;10639:5;10599:46;:::i;:::-;10486:165;;;;:::o;10657:645::-;10747:6;10755;10763;10812:2;10800:9;10791:7;10787:23;10783:32;10780:119;;;10818:79;;:::i;:::-;10780:119;10938:1;10963:66;11021:7;11012:6;11001:9;10997:22;10963:66;:::i;:::-;10953:76;;10909:130;11078:2;11104:53;11149:7;11140:6;11129:9;11125:22;11104:53;:::i;:::-;11094:63;;11049:118;11206:2;11232:53;11277:7;11268:6;11257:9;11253:22;11232:53;:::i;:::-;11222:63;;11177:118;10657:645;;;;;:::o;11308:474::-;11376:6;11384;11433:2;11421:9;11412:7;11408:23;11404:32;11401:119;;;11439:79;;:::i;:::-;11401:119;11559:1;11584:53;11629:7;11620:6;11609:9;11605:22;11584:53;:::i;:::-;11574:63;;11530:117;11686:2;11712:53;11757:7;11748:6;11737:9;11733:22;11712:53;:::i;:::-;11702:63;;11657:118;11308:474;;;;;:::o;11788:::-;11856:6;11864;11913:2;11901:9;11892:7;11888:23;11884:32;11881:119;;;11919:79;;:::i;:::-;11881:119;12039:1;12064:53;12109:7;12100:6;12089:9;12085:22;12064:53;:::i;:::-;12054:63;;12010:117;12166:2;12192:53;12237:7;12228:6;12217:9;12213:22;12192:53;:::i;:::-;12182:63;;12137:118;11788:474;;;;;:::o;12268:180::-;12316:77;12313:1;12306:88;12413:4;12410:1;12403:15;12437:4;12434:1;12427:15;12454:320;12498:6;12535:1;12529:4;12525:12;12515:22;;12582:1;12576:4;12572:12;12603:18;12593:81;;12659:4;12651:6;12647:17;12637:27;;12593:81;12721:2;12713:6;12710:14;12690:18;12687:38;12684:84;;;12740:18;;:::i;:::-;12684:84;12505:269;12454:320;;;:::o;12780:182::-;12920:34;12916:1;12908:6;12904:14;12897:58;12780:182;:::o;12968:366::-;13110:3;13131:67;13195:2;13190:3;13131:67;:::i;:::-;13124:74;;13207:93;13296:3;13207:93;:::i;:::-;13325:2;13320:3;13316:12;13309:19;;12968:366;;;:::o;13340:419::-;13506:4;13544:2;13533:9;13529:18;13521:26;;13593:9;13587:4;13583:20;13579:1;13568:9;13564:17;13557:47;13621:131;13747:4;13621:131;:::i;:::-;13613:139;;13340:419;;;:::o;13765:180::-;13813:77;13810:1;13803:88;13910:4;13907:1;13900:15;13934:4;13931:1;13924:15;13951:180;13999:77;13996:1;13989:88;14096:4;14093:1;14086:15;14120:4;14117:1;14110:15;14137:233;14176:3;14199:24;14217:5;14199:24;:::i;:::-;14190:33;;14245:66;14238:5;14235:77;14232:103;;;14315:18;;:::i;:::-;14232:103;14362:1;14355:5;14351:13;14344:20;;14137:233;;;:::o;14376:172::-;14516:24;14512:1;14504:6;14500:14;14493:48;14376:172;:::o;14554:366::-;14696:3;14717:67;14781:2;14776:3;14717:67;:::i;:::-;14710:74;;14793:93;14882:3;14793:93;:::i;:::-;14911:2;14906:3;14902:12;14895:19;;14554:366;;;:::o;14926:419::-;15092:4;15130:2;15119:9;15115:18;15107:26;;15179:9;15173:4;15169:20;15165:1;15154:9;15150:17;15143:47;15207:131;15333:4;15207:131;:::i;:::-;15199:139;;14926:419;;;:::o;15351:332::-;15472:4;15510:2;15499:9;15495:18;15487:26;;15523:71;15591:1;15580:9;15576:17;15567:6;15523:71;:::i;:::-;15604:72;15672:2;15661:9;15657:18;15648:6;15604:72;:::i;:::-;15351:332;;;;;:::o;15689:137::-;15743:5;15774:6;15768:13;15759:22;;15790:30;15814:5;15790:30;:::i;:::-;15689:137;;;;:::o;15832:345::-;15899:6;15948:2;15936:9;15927:7;15923:23;15919:32;15916:119;;;15954:79;;:::i;:::-;15916:119;16074:1;16099:61;16152:7;16143:6;16132:9;16128:22;16099:61;:::i;:::-;16089:71;;16045:125;15832:345;;;;:::o;16183:147::-;16284:11;16321:3;16306:18;;16183:147;;;;:::o;16336:114::-;;:::o;16456:398::-;16615:3;16636:83;16717:1;16712:3;16636:83;:::i;:::-;16629:90;;16728:93;16817:3;16728:93;:::i;:::-;16846:1;16841:3;16837:11;16830:18;;16456:398;;;:::o;16860:379::-;17044:3;17066:147;17209:3;17066:147;:::i;:::-;17059:154;;17230:3;17223:10;;16860:379;;;:::o;17245:170::-;17385:22;17381:1;17373:6;17369:14;17362:46;17245:170;:::o;17421:366::-;17563:3;17584:67;17648:2;17643:3;17584:67;:::i;:::-;17577:74;;17660:93;17749:3;17660:93;:::i;:::-;17778:2;17773:3;17769:12;17762:19;;17421:366;;;:::o;17793:419::-;17959:4;17997:2;17986:9;17982:18;17974:26;;18046:9;18040:4;18036:20;18032:1;18021:9;18017:17;18010:47;18074:131;18200:4;18074:131;:::i;:::-;18066:139;;17793:419;;;:::o;18218:225::-;18358:34;18354:1;18346:6;18342:14;18335:58;18427:8;18422:2;18414:6;18410:15;18403:33;18218:225;:::o;18449:366::-;18591:3;18612:67;18676:2;18671:3;18612:67;:::i;:::-;18605:74;;18688:93;18777:3;18688:93;:::i;:::-;18806:2;18801:3;18797:12;18790:19;;18449:366;;;:::o;18821:419::-;18987:4;19025:2;19014:9;19010:18;19002:26;;19074:9;19068:4;19064:20;19060:1;19049:9;19045:17;19038:47;19102:131;19228:4;19102:131;:::i;:::-;19094:139;;18821:419;;;:::o;19246:348::-;19286:7;19309:20;19327:1;19309:20;:::i;:::-;19304:25;;19343:20;19361:1;19343:20;:::i;:::-;19338:25;;19531:1;19463:66;19459:74;19456:1;19453:81;19448:1;19441:9;19434:17;19430:105;19427:131;;;19538:18;;:::i;:::-;19427:131;19586:1;19583;19579:9;19568:20;;19246:348;;;;:::o;19600:180::-;19648:77;19645:1;19638:88;19745:4;19742:1;19735:15;19769:4;19766:1;19759:15;19786:185;19826:1;19843:20;19861:1;19843:20;:::i;:::-;19838:25;;19877:20;19895:1;19877:20;:::i;:::-;19872:25;;19916:1;19906:35;;19921:18;;:::i;:::-;19906:35;19963:1;19960;19956:9;19951:14;;19786:185;;;;:::o;19977:220::-;20117:34;20113:1;20105:6;20101:14;20094:58;20186:3;20181:2;20173:6;20169:15;20162:28;19977:220;:::o;20203:366::-;20345:3;20366:67;20430:2;20425:3;20366:67;:::i;:::-;20359:74;;20442:93;20531:3;20442:93;:::i;:::-;20560:2;20555:3;20551:12;20544:19;;20203:366;;;:::o;20575:419::-;20741:4;20779:2;20768:9;20764:18;20756:26;;20828:9;20822:4;20818:20;20814:1;20803:9;20799:17;20792:47;20856:131;20982:4;20856:131;:::i;:::-;20848:139;;20575:419;;;:::o;21000:223::-;21140:34;21136:1;21128:6;21124:14;21117:58;21209:6;21204:2;21196:6;21192:15;21185:31;21000:223;:::o;21229:366::-;21371:3;21392:67;21456:2;21451:3;21392:67;:::i;:::-;21385:74;;21468:93;21557:3;21468:93;:::i;:::-;21586:2;21581:3;21577:12;21570:19;;21229:366;;;:::o;21601:419::-;21767:4;21805:2;21794:9;21790:18;21782:26;;21854:9;21848:4;21844:20;21840:1;21829:9;21825:17;21818:47;21882:131;22008:4;21882:131;:::i;:::-;21874:139;;21601:419;;;:::o;22026:221::-;22166:34;22162:1;22154:6;22150:14;22143:58;22235:4;22230:2;22222:6;22218:15;22211:29;22026:221;:::o;22253:366::-;22395:3;22416:67;22480:2;22475:3;22416:67;:::i;:::-;22409:74;;22492:93;22581:3;22492:93;:::i;:::-;22610:2;22605:3;22601:12;22594:19;;22253:366;;;:::o;22625:419::-;22791:4;22829:2;22818:9;22814:18;22806:26;;22878:9;22872:4;22868:20;22864:1;22853:9;22849:17;22842:47;22906:131;23032:4;22906:131;:::i;:::-;22898:139;;22625:419;;;:::o;23050:224::-;23190:34;23186:1;23178:6;23174:14;23167:58;23259:7;23254:2;23246:6;23242:15;23235:32;23050:224;:::o;23280:366::-;23422:3;23443:67;23507:2;23502:3;23443:67;:::i;:::-;23436:74;;23519:93;23608:3;23519:93;:::i;:::-;23637:2;23632:3;23628:12;23621:19;;23280:366;;;:::o;23652:419::-;23818:4;23856:2;23845:9;23841:18;23833:26;;23905:9;23899:4;23895:20;23891:1;23880:9;23876:17;23869:47;23933:131;24059:4;23933:131;:::i;:::-;23925:139;;23652:419;;;:::o;24077:222::-;24217:34;24213:1;24205:6;24201:14;24194:58;24286:5;24281:2;24273:6;24269:15;24262:30;24077:222;:::o;24305:366::-;24447:3;24468:67;24532:2;24527:3;24468:67;:::i;:::-;24461:74;;24544:93;24633:3;24544:93;:::i;:::-;24662:2;24657:3;24653:12;24646:19;;24305:366;;;:::o;24677:419::-;24843:4;24881:2;24870:9;24866:18;24858:26;;24930:9;24924:4;24920:20;24916:1;24905:9;24901:17;24894:47;24958:131;25084:4;24958:131;:::i;:::-;24950:139;;24677:419;;;:::o;25102:228::-;25242:34;25238:1;25230:6;25226:14;25219:58;25311:11;25306:2;25298:6;25294:15;25287:36;25102:228;:::o;25336:366::-;25478:3;25499:67;25563:2;25558:3;25499:67;:::i;:::-;25492:74;;25575:93;25664:3;25575:93;:::i;:::-;25693:2;25688:3;25684:12;25677:19;;25336:366;;;:::o;25708:419::-;25874:4;25912:2;25901:9;25897:18;25889:26;;25961:9;25955:4;25951:20;25947:1;25936:9;25932:17;25925:47;25989:131;26115:4;25989:131;:::i;:::-;25981:139;;25708:419;;;:::o;26133:169::-;26273:21;26269:1;26261:6;26257:14;26250:45;26133:169;:::o;26308:366::-;26450:3;26471:67;26535:2;26530:3;26471:67;:::i;:::-;26464:74;;26547:93;26636:3;26547:93;:::i;:::-;26665:2;26660:3;26656:12;26649:19;;26308:366;;;:::o;26680:419::-;26846:4;26884:2;26873:9;26869:18;26861:26;;26933:9;26927:4;26923:20;26919:1;26908:9;26904:17;26897:47;26961:131;27087:4;26961:131;:::i;:::-;26953:139;;26680:419;;;:::o;27105:179::-;27245:31;27241:1;27233:6;27229:14;27222:55;27105:179;:::o;27290:366::-;27432:3;27453:67;27517:2;27512:3;27453:67;:::i;:::-;27446:74;;27529:93;27618:3;27529:93;:::i;:::-;27647:2;27642:3;27638:12;27631:19;;27290:366;;;:::o;27662:419::-;27828:4;27866:2;27855:9;27851:18;27843:26;;27915:9;27909:4;27905:20;27901:1;27890:9;27886:17;27879:47;27943:131;28069:4;27943:131;:::i;:::-;27935:139;;27662:419;;;:::o;28087:227::-;28227:34;28223:1;28215:6;28211:14;28204:58;28296:10;28291:2;28283:6;28279:15;28272:35;28087:227;:::o;28320:366::-;28462:3;28483:67;28547:2;28542:3;28483:67;:::i;:::-;28476:74;;28559:93;28648:3;28559:93;:::i;:::-;28677:2;28672:3;28668:12;28661:19;;28320:366;;;:::o;28692:419::-;28858:4;28896:2;28885:9;28881:18;28873:26;;28945:9;28939:4;28935:20;28931:1;28920:9;28916:17;28909:47;28973:131;29099:4;28973:131;:::i;:::-;28965:139;;28692:419;;;:::o;29117:177::-;29257:29;29253:1;29245:6;29241:14;29234:53;29117:177;:::o;29300:366::-;29442:3;29463:67;29527:2;29522:3;29463:67;:::i;:::-;29456:74;;29539:93;29628:3;29539:93;:::i;:::-;29657:2;29652:3;29648:12;29641:19;;29300:366;;;:::o;29672:419::-;29838:4;29876:2;29865:9;29861:18;29853:26;;29925:9;29919:4;29915:20;29911:1;29900:9;29896:17;29889:47;29953:131;30079:4;29953:131;:::i;:::-;29945:139;;29672:419;;;:::o;30097:191::-;30137:4;30157:20;30175:1;30157:20;:::i;:::-;30152:25;;30191:20;30209:1;30191:20;:::i;:::-;30186:25;;30230:1;30227;30224:8;30221:34;;;30235:18;;:::i;:::-;30221:34;30280:1;30277;30273:9;30265:17;;30097:191;;;;:::o;30294:305::-;30334:3;30353:20;30371:1;30353:20;:::i;:::-;30348:25;;30387:20;30405:1;30387:20;:::i;:::-;30382:25;;30541:1;30473:66;30469:74;30466:1;30463:81;30460:107;;;30547:18;;:::i;:::-;30460:107;30591:1;30588;30584:9;30577:16;;30294:305;;;;:::o;30605:177::-;30745:29;30741:1;30733:6;30729:14;30722:53;30605:177;:::o;30788:366::-;30930:3;30951:67;31015:2;31010:3;30951:67;:::i;:::-;30944:74;;31027:93;31116:3;31027:93;:::i;:::-;31145:2;31140:3;31136:12;31129:19;;30788:366;;;:::o;31160:419::-;31326:4;31364:2;31353:9;31349:18;31341:26;;31413:9;31407:4;31403:20;31399:1;31388:9;31384:17;31377:47;31441:131;31567:4;31441:131;:::i;:::-;31433:139;;31160:419;;;:::o;31585:180::-;31633:77;31630:1;31623:88;31730:4;31727:1;31720:15;31754:4;31751:1;31744:15;31771:143;31828:5;31859:6;31853:13;31844:22;;31875:33;31902:5;31875:33;:::i;:::-;31771:143;;;;:::o;31920:351::-;31990:6;32039:2;32027:9;32018:7;32014:23;32010:32;32007:119;;;32045:79;;:::i;:::-;32007:119;32165:1;32190:64;32246:7;32237:6;32226:9;32222:22;32190:64;:::i;:::-;32180:74;;32136:128;31920:351;;;;:::o;32277:85::-;32322:7;32351:5;32340:16;;32277:85;;;:::o;32368:158::-;32426:9;32459:61;32477:42;32486:32;32512:5;32486:32;:::i;:::-;32477:42;:::i;:::-;32459:61;:::i;:::-;32446:74;;32368:158;;;:::o;32532:147::-;32627:45;32666:5;32627:45;:::i;:::-;32622:3;32615:58;32532:147;;:::o;32685:114::-;32752:6;32786:5;32780:12;32770:22;;32685:114;;;:::o;32805:184::-;32904:11;32938:6;32933:3;32926:19;32978:4;32973:3;32969:14;32954:29;;32805:184;;;;:::o;32995:132::-;33062:4;33085:3;33077:11;;33115:4;33110:3;33106:14;33098:22;;32995:132;;;:::o;33133:108::-;33210:24;33228:5;33210:24;:::i;:::-;33205:3;33198:37;33133:108;;:::o;33247:179::-;33316:10;33337:46;33379:3;33371:6;33337:46;:::i;:::-;33415:4;33410:3;33406:14;33392:28;;33247:179;;;;:::o;33432:113::-;33502:4;33534;33529:3;33525:14;33517:22;;33432:113;;;:::o;33581:732::-;33700:3;33729:54;33777:5;33729:54;:::i;:::-;33799:86;33878:6;33873:3;33799:86;:::i;:::-;33792:93;;33909:56;33959:5;33909:56;:::i;:::-;33988:7;34019:1;34004:284;34029:6;34026:1;34023:13;34004:284;;;34105:6;34099:13;34132:63;34191:3;34176:13;34132:63;:::i;:::-;34125:70;;34218:60;34271:6;34218:60;:::i;:::-;34208:70;;34064:224;34051:1;34048;34044:9;34039:14;;34004:284;;;34008:14;34304:3;34297:10;;33705:608;;;33581:732;;;;:::o;34319:831::-;34582:4;34620:3;34609:9;34605:19;34597:27;;34634:71;34702:1;34691:9;34687:17;34678:6;34634:71;:::i;:::-;34715:80;34791:2;34780:9;34776:18;34767:6;34715:80;:::i;:::-;34842:9;34836:4;34832:20;34827:2;34816:9;34812:18;34805:48;34870:108;34973:4;34964:6;34870:108;:::i;:::-;34862:116;;34988:72;35056:2;35045:9;35041:18;35032:6;34988:72;:::i;:::-;35070:73;35138:3;35127:9;35123:19;35114:6;35070:73;:::i;:::-;34319:831;;;;;;;;:::o;35156:483::-;35327:4;35365:2;35354:9;35350:18;35342:26;;35378:71;35446:1;35435:9;35431:17;35422:6;35378:71;:::i;:::-;35496:9;35490:4;35486:20;35481:2;35470:9;35466:18;35459:48;35524:108;35627:4;35618:6;35524:108;:::i;:::-;35516:116;;35156:483;;;;;:::o

Swarm Source

ipfs://64cacd5a05f759cb36f6a931975a53c28ccdcf4c2c5f81ed5a7c955252581563

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.