ETH Price: $2,644.43 (-0.10%)

Token

Vampire Inu (VAMP)
 

Overview

Max Total Supply

1,000,000,000,000 VAMP

Holders

187 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
882,901,572.4219412 VAMP

Value
$0.00
0x5e1a208a91433229b22c0569a338ede22a76298e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Vampire Inu is a deflationary ERC-20 token revamping crypto investment approaches, providing fun and sustainable means for holders to grow investments. Its BloodyBuybacks protocol is an innovative and engaging mechanism by which token value and liquidity pool are simultaneously kept healthy.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
vamp

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-21
*/

/**

SPDX-License-Identifier: UNLICENSED 
*/
pragma solidity ^0.8.4;

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

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);
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if(a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    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;
    }
}

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

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

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

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

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

}  

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract vamp is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    mapping (address => bool) private _isBlackListedBot;
    address[] private _blackListedBots;
    
    mapping (address => User) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1 * 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = unicode"Vampire Inu";
    string private constant _symbol = unicode"VAMP";
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 1;
    uint256 private _teamFee = 9;
    uint256 private _launchTime;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    uint256 private _maxBuyAmount;
    uint256 public maxWallet =  _tTotal * 2 / 100; 
    
    address payable private _FeeAddress;
    address payable private _FeeAddress2;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private _cooldownEnabled = true;
    bool private inSwap = false;
    uint256 private buyLimitEnd;

    

    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event CooldownEnabledUpdated(bool _cooldown);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable FeeAddress, address payable FeeAddress2) {
        _FeeAddress = FeeAddress;
        _FeeAddress2 = FeeAddress2;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        _isExcludedFromFee[FeeAddress] = true;
        _isExcludedFromFee[FeeAddress2] = true;
        
        _isBlackListedBot[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true;
        _blackListedBots.push(address(0x66f049111958809841Bbe4b81c034Da2D953AA0c));
        
        _isBlackListedBot[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true;
        _blackListedBots.push(address(0x000000005736775Feb0C8568e7DEe77222a26880));
        
        _isBlackListedBot[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        _blackListedBots.push(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40));
        
        _isBlackListedBot[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        _blackListedBots.push(address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D));

        _isBlackListedBot[address(0xbcC7f6355bc08f6b7d3a41322CE4627118314763)] = true;
        _blackListedBots.push(address(0xbcC7f6355bc08f6b7d3a41322CE4627118314763));

        _isBlackListedBot[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        _blackListedBots.push(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d));

        _isBlackListedBot[address(0x000000000035B5e5ad9019092C665357240f594e)] = true;
        _blackListedBots.push(address(0x000000000035B5e5ad9019092C665357240f594e));

        _isBlackListedBot[address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC)] = true;
        _blackListedBots.push(address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC));

        _isBlackListedBot[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        _blackListedBots.push(address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D));

        _isBlackListedBot[address(0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C)] = true;
        _blackListedBots.push(address(0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C));

        _isBlackListedBot[address(0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA)] = true;
        _blackListedBots.push(address(0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA));
        
        _isBlackListedBot[address(0x42c1b5e32d625b6C618A02ae15189035e0a92FE7)] = true;
        _blackListedBots.push(address(0x42c1b5e32d625b6C618A02ae15189035e0a92FE7));

        _isBlackListedBot[address(0xA94E56EFc384088717bb6edCccEc289A72Ec2381)] = true;
        _blackListedBots.push(address(0xA94E56EFc384088717bb6edCccEc289A72Ec2381));

        _isBlackListedBot[address(0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31)] = true;
        _blackListedBots.push(address(0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31));

        _isBlackListedBot[address(0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27)] = true;
        _blackListedBots.push(address(0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27));

        _isBlackListedBot[address(0xEE2A9147ffC94A73f6b945A6DB532f8466B78830)] = true;
        _blackListedBots.push(address(0xEE2A9147ffC94A73f6b945A6DB532f8466B78830));

        _isBlackListedBot[address(0xdE2a6d80989C3992e11B155430c3F59792FF8Bb7)] = true;
        _blackListedBots.push(address(0xdE2a6d80989C3992e11B155430c3F59792FF8Bb7));

        _isBlackListedBot[address(0x1e62A12D4981e428D3F4F28DF261fdCB2CE743Da)] = true;
        _blackListedBots.push(address(0x1e62A12D4981e428D3F4F28DF261fdCB2CE743Da));

        _isBlackListedBot[address(0x5136a9A5D077aE4247C7706b577F77153C32A01C)] = true;
        _blackListedBots.push(address(0x5136a9A5D077aE4247C7706b577F77153C32A01C));

        _isBlackListedBot[address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be)] = true;
        _blackListedBots.push(address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be));

        _isBlackListedBot[address(0x255D9BA73a51e02d26a5ab90d534DB8a80974a12)] = true;
        _blackListedBots.push(address(0x255D9BA73a51e02d26a5ab90d534DB8a80974a12));

        _isBlackListedBot[address(0xA682A66Ea044Aa1DC3EE315f6C36414F73054b47)] = true;
        _blackListedBots.push(address(0xA682A66Ea044Aa1DC3EE315f6C36414F73054b47));

        _isBlackListedBot[address(0x80e09203480A49f3Cf30a4714246f7af622ba470)] = true;
        _blackListedBots.push(address(0x80e09203480A49f3Cf30a4714246f7af622ba470));

        _isBlackListedBot[address(0x12e48B837AB8cB9104C5B95700363547bA81c8a4)] = true;
        _blackListedBots.push(address(0x12e48B837AB8cB9104C5B95700363547bA81c8a4));

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    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);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlackListedBot[to], "You have no power here!");
        require(!_isBlackListedBot[msg.sender], "You have no power here!");

        if(from != owner() && to != owner()) {
            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }

            // buy
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                _taxFee = 1;
                _teamFee = 9;
                if(_cooldownEnabled) {
                    if(buyLimitEnd > block.timestamp) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[to].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[to].buy = block.timestamp + (15 seconds);
                    }
                }
            }

            // sell
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _taxFee = 1;
                _teamFee = 9;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(!inSwap && from != uniswapV2Pair && tradingOpen) {
                if(contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _FeeAddress.transfer(amount.div(2));
        _FeeAddress2.transfer(amount.div(2));
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function addLiquidity() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        _maxBuyAmount = 4500000000 * 10**9; // 0.45% TX LIMIT 
        _launchTime = block.timestamp;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
        buyLimitEnd = block.timestamp + (300 seconds);
    }

    function manualswap() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        _cooldownEnabled = onoff;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }
    
    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }
    
    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function isBlackListed(address account) public view returns (bool) {
        return _isBlackListedBot[account];
    }
    
    function addBotToBlackList(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.');
        require(!_isBlackListedBot[account], "Account is already blacklisted");
        _isBlackListedBot[account] = true;
        _blackListedBots.push(account);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 100)/1e9, "Cannot set maxWallet lower than 2%");
        maxWallet = newNum * (10**9);
    }
    
    function removeBotFromBlackList(address account) external onlyOwner() {
        require(_isBlackListedBot[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _blackListedBots.length; i++) {
            if (_blackListedBots[i] == account) {
                _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                _isBlackListedBot[account] = false;
                _blackListedBots.pop();
                break;
            }
        }
    }
    
    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function cooldownEnabled() public view returns (bool) {
        return _cooldownEnabled;
    }

    function timeToBuy(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].buy;
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","type":"address"},{"internalType":"address payable","name":"FeeAddress2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","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":[],"name":"amountInPool","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":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"timeToBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d919062001b4a565b6000196200002c919062001ad1565b600b556001600d556009600e55600d54601055600e5460115560646002683635c9adc5dea000006200005f919062001a70565b6200006b919062001a38565b6013556001601760156101000a81548160ff0219169083151502179055506000601760166101000a81548160ff021916908315150217905550348015620000b157600080fd5b50604051620076f4380380620076f48339818101604052810190620000d79190620019c9565b6000620000e96200198160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5460026000620002206200198160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002746200198960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860007366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097366f049111958809841bbe4b81c034da2d953aa0c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096f5736775feb0c8568e7dee77222a268809080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006e3b3cc22af3ae1eac0440bcee416b4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e3b3cc22af3ae1eac0440bcee416b409080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973d8e83d3d1a91dfefafd8b854511c44685a20fa3d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073bcc7f6355bc08f6b7d3a41322ce462711831476373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973bcc7f6355bc08f6b7d3a41322ce46271183147639080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731d6e8bac6ea3730825bde4b005ed7b2b39a2932d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731d6e8bac6ea3730825bde4b005ed7b2b39a2932d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006e35b5e5ad9019092c665357240f594e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e35b5e5ad9019092c665357240f594e9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731315c6c26123383a2eb369a53fb72c4b9f227eec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731315c6c26123383a2eb369a53fb72c4b9f227eec9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973d8e83d3d1a91dfefafd8b854511c44685a20fa3d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007390484bb9bc05fd3b5ff1fe412a492676cd81790c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097390484bb9bc05fd3b5ff1fe412a492676cd81790c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a62c5ba4d3c95b3ddb247eabaa2c8e56bac9d6da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a62c5ba4d3c95b3ddb247eabaa2c8e56bac9d6da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007342c1b5e32d625b6c618a02ae15189035e0a92fe773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097342c1b5e32d625b6c618a02ae15189035e0a92fe79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a94e56efc384088717bb6edcccec289a72ec238173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a94e56efc384088717bb6edcccec289a72ec23819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073f13ffadd3682fed42183af8f3f0b409a9a0fde3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973f13ffadd3682fed42183af8f3f0b409a9a0fde319080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073376a6efe8e98f3ae2af230b3d45b8cc5e962bc2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973376a6efe8e98f3ae2af230b3d45b8cc5e962bc279080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073ee2a9147ffc94a73f6b945a6db532f8466b7883073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973ee2a9147ffc94a73f6b945a6db532f8466b788309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073de2a6d80989c3992e11b155430c3f59792ff8bb773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973de2a6d80989c3992e11b155430c3f59792ff8bb79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731e62a12d4981e428d3f4f28df261fdcb2ce743da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731e62a12d4981e428d3f4f28df261fdcb2ce743da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000735136a9a5d077ae4247c7706b577f77153c32a01c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009735136a9a5d077ae4247c7706b577f77153c32a01c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000730e388888309d64e97f97a4740ec9ed3dadca71be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009730e388888309d64e97f97a4740ec9ed3dadca71be9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073255d9ba73a51e02d26a5ab90d534db8a80974a1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973255d9ba73a51e02d26a5ab90d534db8a80974a129080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a682a66ea044aa1dc3ee315f6c36414f73054b4773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a682a66ea044aa1dc3ee315f6c36414f73054b479080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007380e09203480a49f3cf30a4714246f7af622ba47073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097380e09203480a49f3cf30a4714246f7af622ba4709080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007312e48b837ab8cb9104c5b95700363547ba81c8a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097312e48b837ab8cb9104c5b95700363547ba81c8a49080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620019096200198160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162001971919062001a1b565b60405180910390a3505062001bfa565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620019c38162001be0565b92915050565b60008060408385031215620019dd57600080fd5b6000620019ed85828601620019b2565b925050602062001a0085828601620019b2565b9150509250929050565b62001a158162001b40565b82525050565b600060208201905062001a32600083018462001a0a565b92915050565b600062001a458262001b40565b915062001a528362001b40565b92508262001a655762001a6462001bb1565b5b828204905092915050565b600062001a7d8262001b40565b915062001a8a8362001b40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001ac65762001ac562001b82565b5b828202905092915050565b600062001ade8262001b40565b915062001aeb8362001b40565b92508282101562001b015762001b0062001b82565b5b828203905092915050565b600062001b198262001b20565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062001b578262001b40565b915062001b648362001b40565b92508262001b775762001b7662001bb1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b62001beb8162001b0c565b811462001bf757600080fd5b50565b615aea8062001c0a6000396000f3fe6080604052600436106101d15760003560e01c806395d89b41116100f7578063cba0e99611610095578063e8078d9411610064578063e8078d9414610683578063f2cc0c181461069a578063f84354f1146106c3578063f8b45b05146106ec576101d8565b8063cba0e996146105a1578063db92dbb6146105de578063dd62ed3e14610609578063e47d606014610646576101d8565b8063af9549e0116100d1578063af9549e014610521578063c18bc1951461054a578063c3c8cd8014610573578063c9567bf91461058a576101d8565b806395d89b411461048e578063a9059cbb146104b9578063a985ceef146104f6576101d8565b80635342acb41161016f57806370a082311161013e57806370a08231146103e6578063715018a6146104235780637ded4d6a1461043a5780638da5cb5b14610463576101d8565b80635342acb41461032c5780635932ead11461036957806368a3a6a5146103925780636fc3eaec146103cf576101d8565b806323b872dd116101ab57806323b872dd1461027057806327f3a72a146102ad578063313ce567146102d85780634303443d14610303576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190614f83565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906149cf565b610754565b60405161023c9190614f68565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190615225565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190614944565b610783565b6040516102a49190614f68565b60405180910390f35b3480156102b957600080fd5b506102c261085c565b6040516102cf9190615225565b60405180910390f35b3480156102e457600080fd5b506102ed61086c565b6040516102fa919061529a565b60405180910390f35b34801561030f57600080fd5b5061032a600480360381019061032591906148b6565b610875565b005b34801561033857600080fd5b50610353600480360381019061034e91906148b6565b610ad8565b6040516103609190614f68565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190614a0b565b610b2e565b005b34801561039e57600080fd5b506103b960048036038101906103b491906148b6565b610c26565b6040516103c69190615225565b60405180910390f35b3480156103db57600080fd5b506103e4610c7d565b005b3480156103f257600080fd5b5061040d600480360381019061040891906148b6565b610cef565b60405161041a9190615225565b60405180910390f35b34801561042f57600080fd5b50610438610d40565b005b34801561044657600080fd5b50610461600480360381019061045c91906148b6565b610e93565b005b34801561046f57600080fd5b50610478611235565b6040516104859190614e9a565b60405180910390f35b34801561049a57600080fd5b506104a361125e565b6040516104b09190614f83565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db91906149cf565b61129b565b6040516104ed9190614f68565b60405180910390f35b34801561050257600080fd5b5061050b6112b9565b6040516105189190614f68565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190614993565b6112d0565b005b34801561055657600080fd5b50610571600480360381019061056c9190614a5d565b6113c0565b005b34801561057f57600080fd5b506105886114df565b005b34801561059657600080fd5b5061059f611559565b005b3480156105ad57600080fd5b506105c860048036038101906105c391906148b6565b61161f565b6040516105d59190614f68565b60405180910390f35b3480156105ea57600080fd5b506105f3611675565b6040516106009190615225565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190614908565b6116a7565b60405161063d9190615225565b60405180910390f35b34801561065257600080fd5b5061066d600480360381019061066891906148b6565b61172e565b60405161067a9190614f68565b60405180910390f35b34801561068f57600080fd5b50610698611784565b005b3480156106a657600080fd5b506106c160048036038101906106bc91906148b6565b611c96565b005b3480156106cf57600080fd5b506106ea60048036038101906106e591906148b6565b611fcd565b005b3480156106f857600080fd5b506107016123b4565b60405161070e9190615225565b60405180910390f35b60606040518060400160405280600b81526020017f56616d7069726520496e75000000000000000000000000000000000000000000815250905090565b60006107686107616123ba565b84846123c2565b6001905092915050565b6000683635c9adc5dea00000905090565b600061079084848461258d565b6108518461079c6123ba565b61084c85604051806060016040528060288152602001615a8d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108026123ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99092919063ffffffff16565b6123c2565b600190509392505050565b600061086730610cef565b905090565b60006009905090565b61087d6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098490615105565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1190615065565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b366123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906150a5565b60405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601760159054906101000a900460ff16604051610c1b9190614f68565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610c7691906153eb565b9050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cbe6123ba565b73ffffffffffffffffffffffffffffffffffffffff1614610cde57600080fd5b6000479050610cec81612f0d565b50565b6000610d39600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b9050919050565b610d486123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906150a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9b6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f906150a5565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906150e5565b60405180910390fd5b60005b600980549050811015611231578173ffffffffffffffffffffffffffffffffffffffff1660098281548110611015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561121e576009600160098054905061107091906153eb565b815481106110a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061110c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806111e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611231565b8080611229906154b9565b915050610fb7565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f56414d5000000000000000000000000000000000000000000000000000000000815250905090565b60006112af6112a86123ba565b848461258d565b6001905092915050565b6000601760159054906101000a900460ff16905090565b6112d86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906150a5565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113c86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906150a5565b60405180910390fd5b633b9aca0060646002611466610772565b6114709190615391565b61147a9190615360565b6114849190615360565b8110156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906151a5565b60405180910390fd5b633b9aca00816114d69190615391565b60138190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115206123ba565b73ffffffffffffffffffffffffffffffffffffffff161461154057600080fd5b600061154b30610cef565b905061155681613076565b50565b6115616123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e5906150a5565b60405180910390fd5b6001601760146101000a81548160ff02191690831515021790555061012c42611617919061530a565b601881905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006116a2601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610cef565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61178c6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611810906150a5565b60405180910390fd5b601760149054906101000a900460ff1615611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090615165565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118f930601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123c2565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197791906148df565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906148df565b6040518363ffffffff1660e01b8152600401611a2e929190614eb5565b602060405180830381600087803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8091906148df565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b0930610cef565b600080611b14611235565b426040518863ffffffff1660e01b8152600401611b3696959493929190614f07565b6060604051808303818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b889190614a86565b505050673e7336287142000060128190555042600f81905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c40929190614ede565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614a34565b5050565b611c9e6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d22906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da5906151e5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290615045565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f0f57611ecb600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fd56123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906150a5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590615045565b60405180910390fd5b60005b6007805490508110156123b0578173ffffffffffffffffffffffffffffffffffffffff166007828154811061214f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561239d57600760016007805490506121aa91906153eb565b815481106121e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110612246577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480612363577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556123b0565b80806123a8906154b9565b9150506120f1565b5050565b60135481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242990615145565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614fe5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125809190615225565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490615125565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266490614fa5565b60405180910390fd5b600081116126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a7906150c5565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490615205565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190615205565b60405180910390fd5b6127d2611235565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128405750612810611235565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612de657601760159054906101000a900460ff161561294657600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16612945576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129f15750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a475750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0b57601760149054906101000a900460ff16612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a92906151c5565b60405180910390fd5b601354612aa783610cef565b82612ab2919061530a565b1115612af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aea90615185565b60405180910390fd5b6001600d819055506009600e81905550601760159054906101000a900460ff1615612c0a57426018541115612c0957601254811115612b3157600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac90615005565b60405180910390fd5b600f42612bc2919061530a565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612cb65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d22576001600d819055506009600e819055505b6000612d2d30610cef565b9050601760169054906101000a900460ff16158015612d9a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612db25750601760149054906101000a900460ff165b15612de4576000811115612dca57612dc981613076565b5b60004790506000811115612de257612de147612f0d565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e8d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e9757600090505b612ea384848484613370565b50505050565b6000838311158290612ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee89190614f83565b60405180910390fd5b5060008385612f0091906153eb565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612f5d60028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612f88573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612fd960028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613004573d6000803e3d6000fd5b5050565b6000600b5482111561304f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304690614fc5565b60405180910390fd5b60006130596136cb565b905061306e818461368190919063ffffffff16565b915050919050565b6001601760166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156130d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156131025781602001602082028036833780820191505090505b5090503081600081518110613140577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e257600080fd5b505afa1580156131f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321a91906148df565b81600181518110613254577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132bb30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c2565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161331f959493929190615240565b600060405180830381600087803b15801561333957600080fd5b505af115801561334d573d6000803e3d6000fd5b50505050506000601760166101000a81548160ff02191690831515021790555050565b8061337e5761337d6136f6565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134215750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561343657613431848484613739565b61366d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d95750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ee576134e9848484613999565b61366c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135925750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135a7576135a2848484613bf9565b61366b565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136495750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561365e57613659848484613dc4565b61366a565b613669848484613bf9565b5b5b5b5b8061367b5761367a6140b9565b5b50505050565b60006136c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140cd565b905092915050565b60008060006136d8614130565b915091506136ef818361368190919063ffffffff16565b9250505090565b6000600d5414801561370a57506000600e54145b1561371457613737565b600d54601081905550600e546011819055506000600d819055506000600e819055505b565b60008060008060008061374b87614497565b9550955095509550955095506137a987600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061391f816145a7565b6139298483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139869190615225565b60405180910390a3505050505050505050565b6000806000806000806139ab87614497565b955095509550955095509550613a0986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b7f816145a7565b613b898483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613be69190615225565b60405180910390a3505050505050505050565b600080600080600080613c0b87614497565b955095509550955095509550613c6986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cfe85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4a816145a7565b613d548483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613db19190615225565b60405180910390a3505050505050505050565b600080600080600080613dd687614497565b955095509550955095509550613e3487600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ec986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f5e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ff385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061403f816145a7565b6140498483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a69190615225565b60405180910390a3505050505050505050565b601054600d81905550601154600e81905550565b60008083118290614114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410b9190614f83565b60405180910390fd5b50600083856141239190615360565b9050809150509392505050565b6000806000600b5490506000683635c9adc5dea00000905060005b60078054905081101561444c57826002600060078481548110614197577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806142ab5750816003600060078481548110614243577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156142c957600b54683635c9adc5dea0000094509450505050614493565b61437f600260006007848154811061430a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846144ff90919063ffffffff16565b925061443760036000600784815481106143c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836144ff90919063ffffffff16565b91508080614444906154b9565b91505061414b565b5061446b683635c9adc5dea00000600b5461368190919063ffffffff16565b82101561448a57600b54683635c9adc5dea00000935093505050614493565b81819350935050505b9091565b60008060008060008060008060006144b48a600d54600e5461469e565b92509250925060006144c46136cb565b905060008060006144d78e878787614734565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061454183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ea9565b905092915050565b6000808284614558919061530a565b90508381101561459d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459490615025565b60405180910390fd5b8091505092915050565b60006145b16136cb565b905060006145c882846147bd90919063ffffffff16565b905061461c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61467982600b546144ff90919063ffffffff16565b600b8190555061469481600c5461454990919063ffffffff16565b600c819055505050565b6000806000806146ca60646146bc888a6147bd90919063ffffffff16565b61368190919063ffffffff16565b905060006146f460646146e6888b6147bd90919063ffffffff16565b61368190919063ffffffff16565b9050600061471d8261470f858c6144ff90919063ffffffff16565b6144ff90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061474d85896147bd90919063ffffffff16565b9050600061476486896147bd90919063ffffffff16565b9050600061477b87896147bd90919063ffffffff16565b905060006147a48261479685876144ff90919063ffffffff16565b6144ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156147d05760009050614832565b600082846147de9190615391565b90508284826147ed9190615360565b1461482d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161482490615085565b60405180910390fd5b809150505b92915050565b60008135905061484781615a47565b92915050565b60008151905061485c81615a47565b92915050565b60008135905061487181615a5e565b92915050565b60008151905061488681615a5e565b92915050565b60008135905061489b81615a75565b92915050565b6000815190506148b081615a75565b92915050565b6000602082840312156148c857600080fd5b60006148d684828501614838565b91505092915050565b6000602082840312156148f157600080fd5b60006148ff8482850161484d565b91505092915050565b6000806040838503121561491b57600080fd5b600061492985828601614838565b925050602061493a85828601614838565b9150509250929050565b60008060006060848603121561495957600080fd5b600061496786828701614838565b935050602061497886828701614838565b92505060406149898682870161488c565b9150509250925092565b600080604083850312156149a657600080fd5b60006149b485828601614838565b92505060206149c585828601614862565b9150509250929050565b600080604083850312156149e257600080fd5b60006149f085828601614838565b9250506020614a018582860161488c565b9150509250929050565b600060208284031215614a1d57600080fd5b6000614a2b84828501614862565b91505092915050565b600060208284031215614a4657600080fd5b6000614a5484828501614877565b91505092915050565b600060208284031215614a6f57600080fd5b6000614a7d8482850161488c565b91505092915050565b600080600060608486031215614a9b57600080fd5b6000614aa9868287016148a1565b9350506020614aba868287016148a1565b9250506040614acb868287016148a1565b9150509250925092565b6000614ae18383614aed565b60208301905092915050565b614af68161541f565b82525050565b614b058161541f565b82525050565b6000614b16826152c5565b614b2081856152e8565b9350614b2b836152b5565b8060005b83811015614b5c578151614b438882614ad5565b9750614b4e836152db565b925050600181019050614b2f565b5085935050505092915050565b614b7281615431565b82525050565b614b8181615474565b82525050565b6000614b92826152d0565b614b9c81856152f9565b9350614bac818560208601615486565b614bb581615560565b840191505092915050565b6000614bcd6023836152f9565b9150614bd882615571565b604082019050919050565b6000614bf0602a836152f9565b9150614bfb826155c0565b604082019050919050565b6000614c136022836152f9565b9150614c1e8261560f565b604082019050919050565b6000614c366022836152f9565b9150614c418261565e565b604082019050919050565b6000614c59601b836152f9565b9150614c64826156ad565b602082019050919050565b6000614c7c601b836152f9565b9150614c87826156d6565b602082019050919050565b6000614c9f601e836152f9565b9150614caa826156ff565b602082019050919050565b6000614cc26021836152f9565b9150614ccd82615728565b604082019050919050565b6000614ce56020836152f9565b9150614cf082615777565b602082019050919050565b6000614d086029836152f9565b9150614d13826157a0565b604082019050919050565b6000614d2b601a836152f9565b9150614d36826157ef565b602082019050919050565b6000614d4e6024836152f9565b9150614d5982615818565b604082019050919050565b6000614d716025836152f9565b9150614d7c82615867565b604082019050919050565b6000614d946024836152f9565b9150614d9f826158b6565b604082019050919050565b6000614db76017836152f9565b9150614dc282615905565b602082019050919050565b6000614dda6013836152f9565b9150614de58261592e565b602082019050919050565b6000614dfd6022836152f9565b9150614e0882615957565b604082019050919050565b6000614e206018836152f9565b9150614e2b826159a6565b602082019050919050565b6000614e436022836152f9565b9150614e4e826159cf565b604082019050919050565b6000614e666017836152f9565b9150614e7182615a1e565b602082019050919050565b614e858161545d565b82525050565b614e9481615467565b82525050565b6000602082019050614eaf6000830184614afc565b92915050565b6000604082019050614eca6000830185614afc565b614ed76020830184614afc565b9392505050565b6000604082019050614ef36000830185614afc565b614f006020830184614e7c565b9392505050565b600060c082019050614f1c6000830189614afc565b614f296020830188614e7c565b614f366040830187614b78565b614f436060830186614b78565b614f506080830185614afc565b614f5d60a0830184614e7c565b979650505050505050565b6000602082019050614f7d6000830184614b69565b92915050565b60006020820190508181036000830152614f9d8184614b87565b905092915050565b60006020820190508181036000830152614fbe81614bc0565b9050919050565b60006020820190508181036000830152614fde81614be3565b9050919050565b60006020820190508181036000830152614ffe81614c06565b9050919050565b6000602082019050818103600083015261501e81614c29565b9050919050565b6000602082019050818103600083015261503e81614c4c565b9050919050565b6000602082019050818103600083015261505e81614c6f565b9050919050565b6000602082019050818103600083015261507e81614c92565b9050919050565b6000602082019050818103600083015261509e81614cb5565b9050919050565b600060208201905081810360008301526150be81614cd8565b9050919050565b600060208201905081810360008301526150de81614cfb565b9050919050565b600060208201905081810360008301526150fe81614d1e565b9050919050565b6000602082019050818103600083015261511e81614d41565b9050919050565b6000602082019050818103600083015261513e81614d64565b9050919050565b6000602082019050818103600083015261515e81614d87565b9050919050565b6000602082019050818103600083015261517e81614daa565b9050919050565b6000602082019050818103600083015261519e81614dcd565b9050919050565b600060208201905081810360008301526151be81614df0565b9050919050565b600060208201905081810360008301526151de81614e13565b9050919050565b600060208201905081810360008301526151fe81614e36565b9050919050565b6000602082019050818103600083015261521e81614e59565b9050919050565b600060208201905061523a6000830184614e7c565b92915050565b600060a0820190506152556000830188614e7c565b6152626020830187614b78565b81810360408301526152748186614b0b565b90506152836060830185614afc565b6152906080830184614e7c565b9695505050505050565b60006020820190506152af6000830184614e8b565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006153158261545d565b91506153208361545d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561535557615354615502565b5b828201905092915050565b600061536b8261545d565b91506153768361545d565b92508261538657615385615531565b5b828204905092915050565b600061539c8261545d565b91506153a78361545d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153e0576153df615502565b5b828202905092915050565b60006153f68261545d565b91506154018361545d565b92508282101561541457615413615502565b5b828203905092915050565b600061542a8261543d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061547f8261545d565b9050919050565b60005b838110156154a4578082015181840152602081019050615489565b838111156154b3576000848401525b50505050565b60006154c48261545d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154f7576154f6615502565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3225000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615a508161541f565b8114615a5b57600080fd5b50565b615a6781615431565b8114615a7257600080fd5b50565b615a7e8161545d565b8114615a8957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b985bdce98ace1b5d6ed35b9a946669c53e9065839bb795b68c6d51c6d75f1264736f6c63430008040033000000000000000000000000e480d7b6ade295f906b0033577431874888eba6d000000000000000000000000e480d7b6ade295f906b0033577431874888eba6d

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806395d89b41116100f7578063cba0e99611610095578063e8078d9411610064578063e8078d9414610683578063f2cc0c181461069a578063f84354f1146106c3578063f8b45b05146106ec576101d8565b8063cba0e996146105a1578063db92dbb6146105de578063dd62ed3e14610609578063e47d606014610646576101d8565b8063af9549e0116100d1578063af9549e014610521578063c18bc1951461054a578063c3c8cd8014610573578063c9567bf91461058a576101d8565b806395d89b411461048e578063a9059cbb146104b9578063a985ceef146104f6576101d8565b80635342acb41161016f57806370a082311161013e57806370a08231146103e6578063715018a6146104235780637ded4d6a1461043a5780638da5cb5b14610463576101d8565b80635342acb41461032c5780635932ead11461036957806368a3a6a5146103925780636fc3eaec146103cf576101d8565b806323b872dd116101ab57806323b872dd1461027057806327f3a72a146102ad578063313ce567146102d85780634303443d14610303576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190614f83565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906149cf565b610754565b60405161023c9190614f68565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190615225565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190614944565b610783565b6040516102a49190614f68565b60405180910390f35b3480156102b957600080fd5b506102c261085c565b6040516102cf9190615225565b60405180910390f35b3480156102e457600080fd5b506102ed61086c565b6040516102fa919061529a565b60405180910390f35b34801561030f57600080fd5b5061032a600480360381019061032591906148b6565b610875565b005b34801561033857600080fd5b50610353600480360381019061034e91906148b6565b610ad8565b6040516103609190614f68565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190614a0b565b610b2e565b005b34801561039e57600080fd5b506103b960048036038101906103b491906148b6565b610c26565b6040516103c69190615225565b60405180910390f35b3480156103db57600080fd5b506103e4610c7d565b005b3480156103f257600080fd5b5061040d600480360381019061040891906148b6565b610cef565b60405161041a9190615225565b60405180910390f35b34801561042f57600080fd5b50610438610d40565b005b34801561044657600080fd5b50610461600480360381019061045c91906148b6565b610e93565b005b34801561046f57600080fd5b50610478611235565b6040516104859190614e9a565b60405180910390f35b34801561049a57600080fd5b506104a361125e565b6040516104b09190614f83565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db91906149cf565b61129b565b6040516104ed9190614f68565b60405180910390f35b34801561050257600080fd5b5061050b6112b9565b6040516105189190614f68565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190614993565b6112d0565b005b34801561055657600080fd5b50610571600480360381019061056c9190614a5d565b6113c0565b005b34801561057f57600080fd5b506105886114df565b005b34801561059657600080fd5b5061059f611559565b005b3480156105ad57600080fd5b506105c860048036038101906105c391906148b6565b61161f565b6040516105d59190614f68565b60405180910390f35b3480156105ea57600080fd5b506105f3611675565b6040516106009190615225565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190614908565b6116a7565b60405161063d9190615225565b60405180910390f35b34801561065257600080fd5b5061066d600480360381019061066891906148b6565b61172e565b60405161067a9190614f68565b60405180910390f35b34801561068f57600080fd5b50610698611784565b005b3480156106a657600080fd5b506106c160048036038101906106bc91906148b6565b611c96565b005b3480156106cf57600080fd5b506106ea60048036038101906106e591906148b6565b611fcd565b005b3480156106f857600080fd5b506107016123b4565b60405161070e9190615225565b60405180910390f35b60606040518060400160405280600b81526020017f56616d7069726520496e75000000000000000000000000000000000000000000815250905090565b60006107686107616123ba565b84846123c2565b6001905092915050565b6000683635c9adc5dea00000905090565b600061079084848461258d565b6108518461079c6123ba565b61084c85604051806060016040528060288152602001615a8d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108026123ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99092919063ffffffff16565b6123c2565b600190509392505050565b600061086730610cef565b905090565b60006009905090565b61087d6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098490615105565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1190615065565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b366123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906150a5565b60405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601760159054906101000a900460ff16604051610c1b9190614f68565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610c7691906153eb565b9050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cbe6123ba565b73ffffffffffffffffffffffffffffffffffffffff1614610cde57600080fd5b6000479050610cec81612f0d565b50565b6000610d39600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b9050919050565b610d486123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc906150a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9b6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f906150a5565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906150e5565b60405180910390fd5b60005b600980549050811015611231578173ffffffffffffffffffffffffffffffffffffffff1660098281548110611015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561121e576009600160098054905061107091906153eb565b815481106110a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061110c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806111e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611231565b8080611229906154b9565b915050610fb7565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f56414d5000000000000000000000000000000000000000000000000000000000815250905090565b60006112af6112a86123ba565b848461258d565b6001905092915050565b6000601760159054906101000a900460ff16905090565b6112d86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906150a5565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113c86123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906150a5565b60405180910390fd5b633b9aca0060646002611466610772565b6114709190615391565b61147a9190615360565b6114849190615360565b8110156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906151a5565b60405180910390fd5b633b9aca00816114d69190615391565b60138190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115206123ba565b73ffffffffffffffffffffffffffffffffffffffff161461154057600080fd5b600061154b30610cef565b905061155681613076565b50565b6115616123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e5906150a5565b60405180910390fd5b6001601760146101000a81548160ff02191690831515021790555061012c42611617919061530a565b601881905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006116a2601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610cef565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61178c6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611810906150a5565b60405180910390fd5b601760149054906101000a900460ff1615611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090615165565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118f930601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123c2565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197791906148df565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906148df565b6040518363ffffffff1660e01b8152600401611a2e929190614eb5565b602060405180830381600087803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8091906148df565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b0930610cef565b600080611b14611235565b426040518863ffffffff1660e01b8152600401611b3696959493929190614f07565b6060604051808303818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b889190614a86565b505050673e7336287142000060128190555042600f81905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c40929190614ede565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614a34565b5050565b611c9e6123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d22906150a5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da5906151e5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290615045565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f0f57611ecb600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613008565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fd56123ba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906150a5565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590615045565b60405180910390fd5b60005b6007805490508110156123b0578173ffffffffffffffffffffffffffffffffffffffff166007828154811061214f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561239d57600760016007805490506121aa91906153eb565b815481106121e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110612246577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480612363577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556123b0565b80806123a8906154b9565b9150506120f1565b5050565b60135481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242990615145565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614fe5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125809190615225565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490615125565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266490614fa5565b60405180910390fd5b600081116126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a7906150c5565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490615205565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190615205565b60405180910390fd5b6127d2611235565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128405750612810611235565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612de657601760159054906101000a900460ff161561294657600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16612945576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129f15750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a475750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c0b57601760149054906101000a900460ff16612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a92906151c5565b60405180910390fd5b601354612aa783610cef565b82612ab2919061530a565b1115612af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aea90615185565b60405180910390fd5b6001600d819055506009600e81905550601760159054906101000a900460ff1615612c0a57426018541115612c0957601254811115612b3157600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac90615005565b60405180910390fd5b600f42612bc2919061530a565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612cb65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d22576001600d819055506009600e819055505b6000612d2d30610cef565b9050601760169054906101000a900460ff16158015612d9a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612db25750601760149054906101000a900460ff165b15612de4576000811115612dca57612dc981613076565b5b60004790506000811115612de257612de147612f0d565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e8d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e9757600090505b612ea384848484613370565b50505050565b6000838311158290612ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee89190614f83565b60405180910390fd5b5060008385612f0091906153eb565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612f5d60028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612f88573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612fd960028461368190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613004573d6000803e3d6000fd5b5050565b6000600b5482111561304f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304690614fc5565b60405180910390fd5b60006130596136cb565b905061306e818461368190919063ffffffff16565b915050919050565b6001601760166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156130d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156131025781602001602082028036833780820191505090505b5090503081600081518110613140577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e257600080fd5b505afa1580156131f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321a91906148df565b81600181518110613254577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132bb30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123c2565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161331f959493929190615240565b600060405180830381600087803b15801561333957600080fd5b505af115801561334d573d6000803e3d6000fd5b50505050506000601760166101000a81548160ff02191690831515021790555050565b8061337e5761337d6136f6565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134215750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561343657613431848484613739565b61366d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d95750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ee576134e9848484613999565b61366c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135925750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135a7576135a2848484613bf9565b61366b565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136495750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561365e57613659848484613dc4565b61366a565b613669848484613bf9565b5b5b5b5b8061367b5761367a6140b9565b5b50505050565b60006136c383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140cd565b905092915050565b60008060006136d8614130565b915091506136ef818361368190919063ffffffff16565b9250505090565b6000600d5414801561370a57506000600e54145b1561371457613737565b600d54601081905550600e546011819055506000600d819055506000600e819055505b565b60008060008060008061374b87614497565b9550955095509550955095506137a987600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061391f816145a7565b6139298483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139869190615225565b60405180910390a3505050505050505050565b6000806000806000806139ab87614497565b955095509550955095509550613a0986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b7f816145a7565b613b898483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613be69190615225565b60405180910390a3505050505050505050565b600080600080600080613c0b87614497565b955095509550955095509550613c6986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cfe85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4a816145a7565b613d548483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613db19190615225565b60405180910390a3505050505050505050565b600080600080600080613dd687614497565b955095509550955095509550613e3487600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ec986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144ff90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f5e83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ff385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061403f816145a7565b6140498483614664565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a69190615225565b60405180910390a3505050505050505050565b601054600d81905550601154600e81905550565b60008083118290614114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410b9190614f83565b60405180910390fd5b50600083856141239190615360565b9050809150509392505050565b6000806000600b5490506000683635c9adc5dea00000905060005b60078054905081101561444c57826002600060078481548110614197577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806142ab5750816003600060078481548110614243577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156142c957600b54683635c9adc5dea0000094509450505050614493565b61437f600260006007848154811061430a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846144ff90919063ffffffff16565b925061443760036000600784815481106143c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836144ff90919063ffffffff16565b91508080614444906154b9565b91505061414b565b5061446b683635c9adc5dea00000600b5461368190919063ffffffff16565b82101561448a57600b54683635c9adc5dea00000935093505050614493565b81819350935050505b9091565b60008060008060008060008060006144b48a600d54600e5461469e565b92509250925060006144c46136cb565b905060008060006144d78e878787614734565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061454183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ea9565b905092915050565b6000808284614558919061530a565b90508381101561459d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459490615025565b60405180910390fd5b8091505092915050565b60006145b16136cb565b905060006145c882846147bd90919063ffffffff16565b905061461c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461454990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61467982600b546144ff90919063ffffffff16565b600b8190555061469481600c5461454990919063ffffffff16565b600c819055505050565b6000806000806146ca60646146bc888a6147bd90919063ffffffff16565b61368190919063ffffffff16565b905060006146f460646146e6888b6147bd90919063ffffffff16565b61368190919063ffffffff16565b9050600061471d8261470f858c6144ff90919063ffffffff16565b6144ff90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061474d85896147bd90919063ffffffff16565b9050600061476486896147bd90919063ffffffff16565b9050600061477b87896147bd90919063ffffffff16565b905060006147a48261479685876144ff90919063ffffffff16565b6144ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156147d05760009050614832565b600082846147de9190615391565b90508284826147ed9190615360565b1461482d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161482490615085565b60405180910390fd5b809150505b92915050565b60008135905061484781615a47565b92915050565b60008151905061485c81615a47565b92915050565b60008135905061487181615a5e565b92915050565b60008151905061488681615a5e565b92915050565b60008135905061489b81615a75565b92915050565b6000815190506148b081615a75565b92915050565b6000602082840312156148c857600080fd5b60006148d684828501614838565b91505092915050565b6000602082840312156148f157600080fd5b60006148ff8482850161484d565b91505092915050565b6000806040838503121561491b57600080fd5b600061492985828601614838565b925050602061493a85828601614838565b9150509250929050565b60008060006060848603121561495957600080fd5b600061496786828701614838565b935050602061497886828701614838565b92505060406149898682870161488c565b9150509250925092565b600080604083850312156149a657600080fd5b60006149b485828601614838565b92505060206149c585828601614862565b9150509250929050565b600080604083850312156149e257600080fd5b60006149f085828601614838565b9250506020614a018582860161488c565b9150509250929050565b600060208284031215614a1d57600080fd5b6000614a2b84828501614862565b91505092915050565b600060208284031215614a4657600080fd5b6000614a5484828501614877565b91505092915050565b600060208284031215614a6f57600080fd5b6000614a7d8482850161488c565b91505092915050565b600080600060608486031215614a9b57600080fd5b6000614aa9868287016148a1565b9350506020614aba868287016148a1565b9250506040614acb868287016148a1565b9150509250925092565b6000614ae18383614aed565b60208301905092915050565b614af68161541f565b82525050565b614b058161541f565b82525050565b6000614b16826152c5565b614b2081856152e8565b9350614b2b836152b5565b8060005b83811015614b5c578151614b438882614ad5565b9750614b4e836152db565b925050600181019050614b2f565b5085935050505092915050565b614b7281615431565b82525050565b614b8181615474565b82525050565b6000614b92826152d0565b614b9c81856152f9565b9350614bac818560208601615486565b614bb581615560565b840191505092915050565b6000614bcd6023836152f9565b9150614bd882615571565b604082019050919050565b6000614bf0602a836152f9565b9150614bfb826155c0565b604082019050919050565b6000614c136022836152f9565b9150614c1e8261560f565b604082019050919050565b6000614c366022836152f9565b9150614c418261565e565b604082019050919050565b6000614c59601b836152f9565b9150614c64826156ad565b602082019050919050565b6000614c7c601b836152f9565b9150614c87826156d6565b602082019050919050565b6000614c9f601e836152f9565b9150614caa826156ff565b602082019050919050565b6000614cc26021836152f9565b9150614ccd82615728565b604082019050919050565b6000614ce56020836152f9565b9150614cf082615777565b602082019050919050565b6000614d086029836152f9565b9150614d13826157a0565b604082019050919050565b6000614d2b601a836152f9565b9150614d36826157ef565b602082019050919050565b6000614d4e6024836152f9565b9150614d5982615818565b604082019050919050565b6000614d716025836152f9565b9150614d7c82615867565b604082019050919050565b6000614d946024836152f9565b9150614d9f826158b6565b604082019050919050565b6000614db76017836152f9565b9150614dc282615905565b602082019050919050565b6000614dda6013836152f9565b9150614de58261592e565b602082019050919050565b6000614dfd6022836152f9565b9150614e0882615957565b604082019050919050565b6000614e206018836152f9565b9150614e2b826159a6565b602082019050919050565b6000614e436022836152f9565b9150614e4e826159cf565b604082019050919050565b6000614e666017836152f9565b9150614e7182615a1e565b602082019050919050565b614e858161545d565b82525050565b614e9481615467565b82525050565b6000602082019050614eaf6000830184614afc565b92915050565b6000604082019050614eca6000830185614afc565b614ed76020830184614afc565b9392505050565b6000604082019050614ef36000830185614afc565b614f006020830184614e7c565b9392505050565b600060c082019050614f1c6000830189614afc565b614f296020830188614e7c565b614f366040830187614b78565b614f436060830186614b78565b614f506080830185614afc565b614f5d60a0830184614e7c565b979650505050505050565b6000602082019050614f7d6000830184614b69565b92915050565b60006020820190508181036000830152614f9d8184614b87565b905092915050565b60006020820190508181036000830152614fbe81614bc0565b9050919050565b60006020820190508181036000830152614fde81614be3565b9050919050565b60006020820190508181036000830152614ffe81614c06565b9050919050565b6000602082019050818103600083015261501e81614c29565b9050919050565b6000602082019050818103600083015261503e81614c4c565b9050919050565b6000602082019050818103600083015261505e81614c6f565b9050919050565b6000602082019050818103600083015261507e81614c92565b9050919050565b6000602082019050818103600083015261509e81614cb5565b9050919050565b600060208201905081810360008301526150be81614cd8565b9050919050565b600060208201905081810360008301526150de81614cfb565b9050919050565b600060208201905081810360008301526150fe81614d1e565b9050919050565b6000602082019050818103600083015261511e81614d41565b9050919050565b6000602082019050818103600083015261513e81614d64565b9050919050565b6000602082019050818103600083015261515e81614d87565b9050919050565b6000602082019050818103600083015261517e81614daa565b9050919050565b6000602082019050818103600083015261519e81614dcd565b9050919050565b600060208201905081810360008301526151be81614df0565b9050919050565b600060208201905081810360008301526151de81614e13565b9050919050565b600060208201905081810360008301526151fe81614e36565b9050919050565b6000602082019050818103600083015261521e81614e59565b9050919050565b600060208201905061523a6000830184614e7c565b92915050565b600060a0820190506152556000830188614e7c565b6152626020830187614b78565b81810360408301526152748186614b0b565b90506152836060830185614afc565b6152906080830184614e7c565b9695505050505050565b60006020820190506152af6000830184614e8b565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006153158261545d565b91506153208361545d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561535557615354615502565b5b828201905092915050565b600061536b8261545d565b91506153768361545d565b92508261538657615385615531565b5b828204905092915050565b600061539c8261545d565b91506153a78361545d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153e0576153df615502565b5b828202905092915050565b60006153f68261545d565b91506154018361545d565b92508282101561541457615413615502565b5b828203905092915050565b600061542a8261543d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061547f8261545d565b9050919050565b60005b838110156154a4578082015181840152602081019050615489565b838111156154b3576000848401525b50505050565b60006154c48261545d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154f7576154f6615502565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3225000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615a508161541f565b8114615a5b57600080fd5b50565b615a6781615431565b8114615a7257600080fd5b50565b615a7e8161545d565b8114615a8957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b985bdce98ace1b5d6ed35b9a946669c53e9065839bb795b68c6d51c6d75f1264736f6c63430008040033

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

000000000000000000000000e480d7b6ade295f906b0033577431874888eba6d000000000000000000000000e480d7b6ade295f906b0033577431874888eba6d

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0xe480D7B6aDe295f906B0033577431874888eBa6D
Arg [1] : FeeAddress2 (address): 0xe480D7B6aDe295f906B0033577431874888eBa6D

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e480d7b6ade295f906b0033577431874888eba6d
Arg [1] : 000000000000000000000000e480d7b6ade295f906b0033577431874888eba6d


Deployed Bytecode Sourcemap

3835:21805:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10364:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11216:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10641:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11385:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25192:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10550:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23953:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23687:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22452:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25404:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22254:190;;;;;;;;;;;;;:::i;:::-;;10744:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2914:148;;;;;;;;;;;;;:::i;:::-;;24535:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2700:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10455:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10890:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25300:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25047:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24313:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22051:191;;;;;;;;;;;;;:::i;:::-;;21910:133;;;;;;;;;;;;;:::i;:::-;;22624:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25536:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11065:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23822:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21117:785;;;;;;;;;;;;;:::i;:::-;;22746:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23197:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4983:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10364:83;10401:13;10434:5;;;;;;;;;;;;;;;;;10427:12;;10364:83;:::o;11216:161::-;11291:4;11308:39;11317:12;:10;:12::i;:::-;11331:7;11340:6;11308:8;:39::i;:::-;11365:4;11358:11;;11216:161;;;;:::o;10641:95::-;10694:7;4478:16;10714:14;;10641:95;:::o;11385:313::-;11483:4;11500:36;11510:6;11518:9;11529:6;11500:9;:36::i;:::-;11547:121;11556:6;11564:12;:10;:12::i;:::-;11578:89;11616:6;11578:89;;;;;;;;;;;;;;;;;:11;:19;11590:6;11578:19;;;;;;;;;;;;;;;:33;11598:12;:10;:12::i;:::-;11578:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11547:8;:121::i;:::-;11686:4;11679:11;;11385:313;;;;;:::o;25192:100::-;25236:4;25260:24;25278:4;25260:9;:24::i;:::-;25253:31;;25192:100;:::o;10550:83::-;10591:5;4738:1;10609:16;;10550:83;:::o;23953:352::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24048:42:::1;24037:53;;:7;:53;;;;24029:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24151:17;:26;24169:7;24151:26;;;;;;;;;;;;;;;;;;;;;;;;;24150:27;24142:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24252:4;24223:17;:26;24241:7;24223:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24267:16;24289:7;24267:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23953:352:::0;:::o;23687:123::-;23751:4;23775:18;:27;23794:7;23775:27;;;;;;;;;;;;;;;;;;;;;;;;;23768:34;;23687:123;;;:::o;22452:160::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22543:5:::1;22524:16;;:24;;;;;;;;;;;;;;;;;;22564:40;22587:16;;;;;;;;;;;22564:40;;;;;;:::i;:::-;;;;;;;;22452:160:::0;:::o;25404:124::-;25459:4;25501:8;:15;25510:5;25501:15;;;;;;;;;;;;;;;:19;;;25483:15;:37;;;;:::i;:::-;25476:44;;25404:124;;;:::o;22254:190::-;22320:11;;;;;;;;;;;22304:27;;:12;:10;:12::i;:::-;:27;;;22296:36;;;;;;22343:26;22372:21;22343:50;;22404:32;22417:18;22404:12;:32::i;:::-;22254:190;:::o;10744:138::-;10810:7;10837:37;10857:7;:16;10865:7;10857:16;;;;;;;;;;;;;;;;10837:19;:37::i;:::-;10830:44;;10744:138;;;:::o;2914:148::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3021:1:::1;2984:40;;3005:6;::::0;::::1;;;;;;;;2984:40;;;;;;;;;;;;3052:1;3035:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2914:148::o:0;24535:500::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24624:17:::1;:26;24642:7;24624:26;;;;;;;;;;;;;;;;;;;;;;;;;24616:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24697:9;24692:336;24716:16;:23;;;;24712:1;:27;24692:336;;;24788:7;24765:30;;:16;24782:1;24765:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;24761:256;;;24838:16;24881:1;24855:16;:23;;;;:27;;;;:::i;:::-;24838:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24816:16;24833:1;24816:19;;;;;;;;;;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;24931:5;24902:17;:26;24920:7;24902:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24955:16;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24996:5;;24761:256;24741:3;;;;;:::i;:::-;;;;24692:336;;;;24535:500:::0;:::o;2700:79::-;2738:7;2765:6;;;;;;;;;;;2758:13;;2700:79;:::o;10455:87::-;10494:13;10527:7;;;;;;;;;;;;;;;;;10520:14;;10455:87;:::o;10890:167::-;10968:4;10985:42;10995:12;:10;:12::i;:::-;11009:9;11020:6;10985:9;:42::i;:::-;11045:4;11038:11;;10890:167;;;;:::o;25300:96::-;25348:4;25372:16;;;;;;;;;;;25365:23;;25300:96;:::o;25047:137::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25168:8:::1;25138:18;:27;25157:7;25138:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25047:137:::0;;:::o;24313:210::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24434:3:::1;24429;24425:1;24409:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;24408:29;;;;:::i;:::-;24398:6;:39;;24390:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24509:5;24499:6;:16;;;;:::i;:::-;24487:9;:28;;;;24313:210:::0;:::o;22051:191::-;22117:11;;;;;;;;;;;22101:27;;:12;:10;:12::i;:::-;:27;;;22093:36;;;;;;22140:23;22166:24;22184:4;22166:9;:24::i;:::-;22140:50;;22201:33;22218:15;22201:16;:33::i;:::-;22051:191;:::o;21910:133::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21975:4:::1;21961:11;;:18;;;;;;;;;;;;;;;;;;22023:11;22004:15;:31;;;;:::i;:::-;21990:11;:45;;;;21910:133::o:0;22624:110::-;22682:4;22706:11;:20;22718:7;22706:20;;;;;;;;;;;;;;;;;;;;;;;;;22699:27;;22624:110;;;:::o;25536:101::-;25581:4;25605:24;25615:13;;;;;;;;;;;25605:9;:24::i;:::-;25598:31;;25536:101;:::o;11065:143::-;11146:7;11173:11;:18;11185:5;11173:18;;;;;;;;;;;;;;;:27;11192:7;11173:27;;;;;;;;;;;;;;;;11166:34;;11065:143;;;;:::o;23822:119::-;23883:4;23907:17;:26;23925:7;23907:26;;;;;;;;;;;;;;;;;;;;;;;;;23900:33;;23822:119;;;:::o;21117:785::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21182:11:::1;;;;;;;;;;;21181:12;21173:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21231:35;21288:42;21231:100;;21360:16;21342:15;;:34;;;;;;;;;;;;;;;;;;21387:58;21404:4;21419:15;;;;;;;;;;;4478:16;21387:8;:58::i;:::-;21490:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21472:56;;;21537:4;21544:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21472:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21456:13;;:112;;;;;;;;;;;;;;;;;;21579:15;;;;;;;;;;;:31;;;21618:21;21649:4;21655:24;21673:4;21655:9;:24::i;:::-;21680:1;21682::::0;21684:7:::1;:5;:7::i;:::-;21692:15;21579:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21735:18;21719:13;:34;;;;21797:15;21783:11;:29;;;;21830:13;;;;;;;;;;;21823:29;;;21861:15;;;;;;;;;;;21879:14;21823:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2897:1;21117:785::o:0;22746:443::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22838:42:::1;22827:53;;:7;:53;;;;22819:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22939:11;:20;22951:7;22939:20;;;;;;;;;;;;;;;;;;;;;;;;;22938:21;22930:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23024:1;23005:7;:16;23013:7;23005:16;;;;;;;;;;;;;;;;:20;23002:108;;;23061:37;23081:7;:16;23089:7;23081:16;;;;;;;;;;;;;;;;23061:19;:37::i;:::-;23042:7;:16;23050:7;23042:16;;;;;;;;;;;;;;;:56;;;;23002:108;23143:4;23120:11;:20;23132:7;23120:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23158:9;23173:7;23158:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22746:443:::0;:::o;23197:478::-;2837:12;:10;:12::i;:::-;2827:22;;:6;;;;;;;;;;:22;;;2819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23278:11:::1;:20;23290:7;23278:20;;;;;;;;;;;;;;;;;;;;;;;;;23270:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23346:9;23341:327;23365:9;:16;;;;23361:1;:20;23341:327;;;23423:7;23407:23;;:9;23417:1;23407:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;23403:254;;;23466:9;23495:1;23476:9;:16;;;;:20;;;;:::i;:::-;23466:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23451:9;23461:1;23451:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23535:1;23516:7;:16;23524:7;23516:16;;;;;;;;;;;;;;;:20;;;;23578:5;23555:11;:20;23567:7;23555:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23602:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23636:5;;23403:254;23383:3;;;;;:::i;:::-;;;;23341:327;;;;23197:478:::0;:::o;4983:45::-;;;;:::o;109:98::-;162:7;189:10;182:17;;109:98;:::o;12313:335::-;12423:1;12406:19;;:5;:19;;;;12398:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12504:1;12485:21;;:7;:21;;;;12477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12586:6;12556:11;:18;12568:5;12556:18;;;;;;;;;;;;;;;:27;12575:7;12556:27;;;;;;;;;;;;;;;:36;;;;12624:7;12608:32;;12617:5;12608:32;;;12633:6;12608:32;;;;;;:::i;:::-;;;;;;;;12313:335;;;:::o;12656:2320::-;12760:1;12744:18;;:4;:18;;;;12736:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12837:1;12823:16;;:2;:16;;;;12815:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12907:1;12898:6;:10;12890:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12974:17;:21;12992:2;12974:21;;;;;;;;;;;;;;;;;;;;;;;;;12973:22;12965:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13043:17;:29;13061:10;13043:29;;;;;;;;;;;;;;;;;;;;;;;;;13042:30;13034:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13124:7;:5;:7::i;:::-;13116:15;;:4;:15;;;;:32;;;;;13141:7;:5;:7::i;:::-;13135:13;;:2;:13;;;;13116:32;13113:1659;;;13168:16;;;;;;;;;;;13165:168;;;13209:8;:20;13218:10;13209:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13205:113;;13284:14;;;;;;;;13289:1;13284:14;;;;13291:1;13284:14;;;;13293:4;13284:14;;;;;13261:8;:20;13270:10;13261:20;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13205:113;13165:168;13380:13;;;;;;;;;;;13372:21;;:4;:21;;;:55;;;;;13411:15;;;;;;;;;;;13397:30;;:2;:30;;;;13372:55;:82;;;;;13432:18;:22;13451:2;13432:22;;;;;;;;;;;;;;;;;;;;;;;;;13431:23;13372:82;13369:699;;;13483:11;;;;;;;;;;;13475:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13576:9;;13559:13;13569:2;13559:9;:13::i;:::-;13550:6;:22;;;;:::i;:::-;:35;;13542:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13638:1;13628:7;:11;;;;13669:1;13658:8;:12;;;;13692:16;;;;;;;;;;;13689:364;;;13750:15;13736:11;;:29;13733:301;;;13812:13;;13802:6;:23;;13794:32;;;;;;13880:15;13861:8;:12;13870:2;13861:12;;;;;;;;;;;;;;;:16;;;:34;13853:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;13999:10;13980:15;:30;;;;:::i;:::-;13961:8;:12;13970:2;13961:12;;;;;;;;;;;;;;;:16;;:49;;;;13733:301;13689:364;13369:699;14115:13;;;;;;;;;;;14109:19;;:2;:19;;;:55;;;;;14148:15;;;;;;;;;;;14132:32;;:4;:32;;;;14109:55;:85;;;;;14170:18;:24;14189:4;14170:24;;;;;;;;;;;;;;;;;;;;;;;;;14168:26;14109:85;14105:168;;;14225:1;14215:7;:11;;;;14256:1;14245:8;:12;;;;14105:168;14289:28;14320:24;14338:4;14320:9;:24::i;:::-;14289:55;;14377:6;;;;;;;;;;;14376:7;:32;;;;;14395:13;;;;;;;;;;;14387:21;;:4;:21;;;;14376:32;:47;;;;;14412:11;;;;;;;;;;;14376:47;14373:388;;;14470:1;14447:20;:24;14444:110;;;14496:38;14513:20;14496:16;:38::i;:::-;14444:110;14572:26;14601:21;14572:50;;14665:1;14644:18;:22;14641:105;;;14691:35;14704:21;14691:12;:35::i;:::-;14641:105;14373:388;;13113:1659;;14782:12;14797:4;14782:19;;14817:18;:24;14836:4;14817:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14845:18;:22;14864:2;14845:22;;;;;;;;;;;;;;;;;;;;;;;;;14817:50;14814:96;;;14893:5;14883:15;;14814:96;14930:38;14945:4;14950:2;14953:6;14960:7;14930:14;:38::i;:::-;12656:2320;;;;:::o;1246:190::-;1332:7;1365:1;1360;:6;;1368:12;1352:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1392:9;1408:1;1404;:5;;;;:::i;:::-;1392:17;;1427:1;1420:8;;;1246:190;;;;;:::o;15483:147::-;15540:11;;;;;;;;;;;:20;;:35;15561:13;15572:1;15561:6;:10;;:13;;;;:::i;:::-;15540:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15586:12;;;;;;;;;;;:21;;:36;15608:13;15619:1;15608:6;:10;;:13;;;;:::i;:::-;15586:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15483:147;:::o;11706:254::-;11773:7;11812;;11801;:18;;11793:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11877:19;11900:10;:8;:10::i;:::-;11877:33;;11928:24;11940:11;11928:7;:11;;:24;;;;:::i;:::-;11921:31;;;11706:254;;;:::o;14984:483::-;5605:4;5596:6;;:13;;;;;;;;;;;;;;;;;;15062:21:::1;15100:1;15086:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15062:40;;15131:4;15113;15118:1;15113:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;15157:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15147:4;15152:1;15147:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;15190:62;15207:4;15222:15;;;;;;;;;;;15240:11;15190:8;:62::i;:::-;15263:15;;;;;;;;;;;:66;;;15344:11;15370:1;15386:4;15413;15433:15;15263:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5620:1;5641:5:::0;5632:6;;:14;;;;;;;;;;;;;;;;;;14984:483;:::o;15642:815::-;15754:7;15750:40;;15776:14;:12;:14::i;:::-;15750:40;15805:11;:19;15817:6;15805:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;15829:11;:22;15841:9;15829:22;;;;;;;;;;;;;;;;;;;;;;;;;15828:23;15805:46;15801:597;;;15868:48;15890:6;15898:9;15909:6;15868:21;:48::i;:::-;15801:597;;;15939:11;:19;15951:6;15939:19;;;;;;;;;;;;;;;;;;;;;;;;;15938:20;:46;;;;;15962:11;:22;15974:9;15962:22;;;;;;;;;;;;;;;;;;;;;;;;;15938:46;15934:464;;;16001:46;16021:6;16029:9;16040:6;16001:19;:46::i;:::-;15934:464;;;16070:11;:19;16082:6;16070:19;;;;;;;;;;;;;;;;;;;;;;;;;16069:20;:47;;;;;16094:11;:22;16106:9;16094:22;;;;;;;;;;;;;;;;;;;;;;;;;16093:23;16069:47;16065:333;;;16133:44;16151:6;16159:9;16170:6;16133:17;:44::i;:::-;16065:333;;;16199:11;:19;16211:6;16199:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;16222:11;:22;16234:9;16222:22;;;;;;;;;;;;;;;;;;;;;;;;;16199:45;16195:203;;;16261:48;16283:6;16291:9;16302:6;16261:21;:48::i;:::-;16195:203;;;16342:44;16360:6;16368:9;16379:6;16342:17;:44::i;:::-;16195:203;16065:333;15934:464;15801:597;16412:7;16408:41;;16434:15;:13;:15::i;:::-;16408:41;15642:815;;;;:::o;1697:132::-;1755:7;1782:39;1786:1;1789;1782:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1775:46;;1697:132;;;;:::o;19549:163::-;19590:7;19611:15;19628;19647:19;:17;:19::i;:::-;19610:56;;;;19684:20;19696:7;19684;:11;;:20;;;;:::i;:::-;19677:27;;;;19549:163;:::o;11968:210::-;12025:1;12014:7;;:12;:29;;;;;12042:1;12030:8;;:13;12014:29;12011:41;;;12045:7;;12011:41;12080:7;;12062:15;:25;;;;12117:8;;12098:16;:27;;;;12146:1;12136:7;:11;;;;12169:1;12158:8;:12;;;;11968:210;:::o;17529:549::-;17632:15;17649:23;17674:12;17688:23;17713:12;17727:13;17744:19;17755:7;17744:10;:19::i;:::-;17631:132;;;;;;;;;;;;17792:28;17812:7;17792;:15;17800:6;17792:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17774:7;:15;17782:6;17774:15;;;;;;;;;;;;;;;:46;;;;17849:28;17869:7;17849;:15;17857:6;17849:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17831:7;:15;17839:6;17831:15;;;;;;;;;;;;;;;:46;;;;17909:39;17932:15;17909:7;:18;17917:9;17909:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17888:7;:18;17896:9;17888:18;;;;;;;;;;;;;;;:60;;;;17960:16;17970:5;17960:9;:16::i;:::-;17987:23;17999:4;18005;17987:11;:23::i;:::-;18043:9;18026:44;;18035:6;18026:44;;;18054:15;18026:44;;;;;;:::i;:::-;;;;;;;;17529:549;;;;;;;;;:::o;16959:564::-;17060:15;17077:23;17102:12;17116:23;17141:12;17155:13;17172:19;17183:7;17172:10;:19::i;:::-;17059:132;;;;;;;;;;;;17220:28;17240:7;17220;:15;17228:6;17220:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17202:7;:15;17210:6;17202:15;;;;;;;;;;;;;;;:46;;;;17280:39;17303:15;17280:7;:18;17288:9;17280:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17259:7;:18;17267:9;17259:18;;;;;;;;;;;;;;;:60;;;;17351:39;17374:15;17351:7;:18;17359:9;17351:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17330:7;:18;17338:9;17330:18;;;;;;;;;;;;;;;:60;;;;17405:16;17415:5;17405:9;:16::i;:::-;17432:23;17444:4;17450;17432:11;:23::i;:::-;17488:9;17471:44;;17480:6;17471:44;;;17499:15;17471:44;;;;;;:::i;:::-;;;;;;;;16959:564;;;;;;;;;:::o;16465:488::-;16564:15;16581:23;16606:12;16620:23;16645:12;16659:13;16676:19;16687:7;16676:10;:19::i;:::-;16563:132;;;;;;;;;;;;16724:28;16744:7;16724;:15;16732:6;16724:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16706:7;:15;16714:6;16706:15;;;;;;;;;;;;;;;:46;;;;16784:39;16807:15;16784:7;:18;16792:9;16784:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16763:7;:18;16771:9;16763:18;;;;;;;;;;;;;;;:60;;;;16835:16;16845:5;16835:9;:16::i;:::-;16862:23;16874:4;16880;16862:11;:23::i;:::-;16918:9;16901:44;;16910:6;16901:44;;;16929:15;16901:44;;;;;;:::i;:::-;;;;;;;;16465:488;;;;;;;;;:::o;18084:622::-;18187:15;18204:23;18229:12;18243:23;18268:12;18282:13;18299:19;18310:7;18299:10;:19::i;:::-;18186:132;;;;;;;;;;;;18347:28;18367:7;18347;:15;18355:6;18347:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18329:7;:15;18337:6;18329:15;;;;;;;;;;;;;;;:46;;;;18404:28;18424:7;18404;:15;18412:6;18404:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18386:7;:15;18394:6;18386:15;;;;;;;;;;;;;;;:46;;;;18464:39;18487:15;18464:7;:18;18472:9;18464:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18443:7;:18;18451:9;18443:18;;;;;;;;;;;;;;;:60;;;;18535:39;18558:15;18535:7;:18;18543:9;18535:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18514:7;:18;18522:9;18514:18;;;;;;;;;;;;;;;:60;;;;18588:16;18598:5;18588:9;:16::i;:::-;18615:23;18627:4;18633;18615:11;:23::i;:::-;18671:9;18654:44;;18663:6;18654:44;;;18682:15;18654:44;;;;;;:::i;:::-;;;;;;;;18084:622;;;;;;;;;:::o;12190:115::-;12244:15;;12234:7;:25;;;;12281:16;;12270:8;:27;;;;12190:115::o;1837:189::-;1923:7;1955:1;1951;:5;1958:12;1943:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1982:9;1998:1;1994;:5;;;;:::i;:::-;1982:17;;2017:1;2010:8;;;1837:189;;;;;:::o;19720:554::-;19770:7;19779;19799:15;19817:7;;19799:25;;19835:15;4478:16;19835:25;;19876:9;19871:289;19895:9;:16;;;;19891:1;:20;19871:289;;;19961:7;19937;:21;19945:9;19955:1;19945:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19937:21;;;;;;;;;;;;;;;;:31;:66;;;;19996:7;19972;:21;19980:9;19990:1;19980:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19972:21;;;;;;;;;;;;;;;;:31;19937:66;19933:97;;;20013:7;;4478:16;20005:25;;;;;;;;;19933:97;20055:34;20067:7;:21;20075:9;20085:1;20075:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20067:21;;;;;;;;;;;;;;;;20055:7;:11;;:34;;;;:::i;:::-;20045:44;;20114:34;20126:7;:21;20134:9;20144:1;20134:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20126:21;;;;;;;;;;;;;;;;20114:7;:11;;:34;;;;:::i;:::-;20104:44;;19913:3;;;;;:::i;:::-;;;;19871:289;;;;20183:20;4478:16;20183:7;;:11;;:20;;;;:::i;:::-;20173:7;:30;20170:60;;;20213:7;;4478:16;20205:25;;;;;;;;20170:60;20249:7;20258;20241:25;;;;;;19720:554;;;:::o;18714:468::-;18773:7;18782;18791;18800;18809;18818;18839:23;18864:12;18878:13;18895:39;18907:7;18916;;18925:8;;18895:11;:39::i;:::-;18838:96;;;;;;18945:19;18968:10;:8;:10::i;:::-;18945:33;;18990:15;19007:23;19032:12;19048:46;19060:7;19069:4;19075:5;19082:11;19048;:46::i;:::-;18989:105;;;;;;19113:7;19122:15;19139:4;19145:15;19162:4;19168:5;19105:69;;;;;;;;;;;;;;;;;;;18714:468;;;;;;;:::o;1102:136::-;1160:7;1187:43;1191:1;1194;1187:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1180:50;;1102:136;;;;:::o;915:179::-;973:7;993:9;1009:1;1005;:5;;;;:::i;:::-;993:17;;1034:1;1029;:6;;1021:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1085:1;1078:8;;;915:179;;;;:::o;20699:214::-;20752:19;20775:10;:8;:10::i;:::-;20752:33;;20796:13;20812:22;20822:11;20812:5;:9;;:22;;;;:::i;:::-;20796:38;;20872:33;20899:5;20872:7;:22;20888:4;20872:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;20847:7;:22;20863:4;20847:22;;;;;;;;;;;;;;;:58;;;;20699:214;;;:::o;20921:147::-;20999:17;21011:4;20999:7;;:11;;:17;;;;:::i;:::-;20989:7;:27;;;;21040:20;21055:4;21040:10;;:14;;:20;;;;:::i;:::-;21027:10;:33;;;;20921:147;;:::o;19190:351::-;19283:7;19292;19301;19321:12;19336:28;19360:3;19336:19;19348:6;19336:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19321:43;;19375:13;19391:29;19416:3;19391:20;19403:7;19391;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;19375:45;;19431:23;19457:28;19479:5;19457:17;19469:4;19457:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;19431:54;;19504:15;19521:4;19527:5;19496:37;;;;;;;;;19190:351;;;;;;;:::o;20282:409::-;20392:7;20401;20410;20430:15;20448:24;20460:11;20448:7;:11;;:24;;;;:::i;:::-;20430:42;;20483:12;20498:21;20507:11;20498:4;:8;;:21;;;;:::i;:::-;20483:36;;20530:13;20546:22;20556:11;20546:5;:9;;:22;;;;:::i;:::-;20530:38;;20579:23;20605:28;20627:5;20605:17;20617:4;20605:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;20579:54;;20652:7;20661:15;20678:4;20644:39;;;;;;;;;;20282:409;;;;;;;;:::o;1444:245::-;1502:7;1530:1;1525;:6;1522:46;;;1555:1;1548:8;;;;1522:46;1578:9;1594:1;1590;:5;;;;:::i;:::-;1578:17;;1623:1;1618;1614;:5;;;;:::i;:::-;:10;1606:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1680:1;1673:8;;;1444:245;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:262::-;936:6;985:2;973:9;964:7;960:23;956:32;953:2;;;1001:1;998;991:12;953:2;1044:1;1069:53;1114:7;1105:6;1094:9;1090:22;1069:53;:::i;:::-;1059:63;;1015:117;943:196;;;;:::o;1145:284::-;1215:6;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1280:1;1277;1270:12;1232:2;1323:1;1348:64;1404:7;1395:6;1384:9;1380:22;1348:64;:::i;:::-;1338:74;;1294:128;1222:207;;;;:::o;1435:407::-;1503:6;1511;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;1576:1;1573;1566:12;1528:2;1619:1;1644:53;1689:7;1680:6;1669:9;1665:22;1644:53;:::i;:::-;1634:63;;1590:117;1746:2;1772:53;1817:7;1808:6;1797:9;1793:22;1772:53;:::i;:::-;1762:63;;1717:118;1518:324;;;;;:::o;1848:552::-;1925:6;1933;1941;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2049:1;2074:53;2119:7;2110:6;2099:9;2095:22;2074:53;:::i;:::-;2064:63;;2020:117;2176:2;2202:53;2247:7;2238:6;2227:9;2223:22;2202:53;:::i;:::-;2192:63;;2147:118;2304:2;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2275:118;1948:452;;;;;:::o;2406:401::-;2471:6;2479;2528:2;2516:9;2507:7;2503:23;2499:32;2496:2;;;2544:1;2541;2534:12;2496:2;2587:1;2612:53;2657:7;2648:6;2637:9;2633:22;2612:53;:::i;:::-;2602:63;;2558:117;2714:2;2740:50;2782:7;2773:6;2762:9;2758:22;2740:50;:::i;:::-;2730:60;;2685:115;2486:321;;;;;:::o;2813:407::-;2881:6;2889;2938:2;2926:9;2917:7;2913:23;2909:32;2906:2;;;2954:1;2951;2944:12;2906:2;2997:1;3022:53;3067:7;3058:6;3047:9;3043:22;3022:53;:::i;:::-;3012:63;;2968:117;3124:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3095:118;2896:324;;;;;:::o;3226:256::-;3282:6;3331:2;3319:9;3310:7;3306:23;3302:32;3299:2;;;3347:1;3344;3337:12;3299:2;3390:1;3415:50;3457:7;3448:6;3437:9;3433:22;3415:50;:::i;:::-;3405:60;;3361:114;3289:193;;;;:::o;3488:278::-;3555:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:2;;;3620:1;3617;3610:12;3572:2;3663:1;3688:61;3741:7;3732:6;3721:9;3717:22;3688:61;:::i;:::-;3678:71;;3634:125;3562:204;;;;:::o;3772:262::-;3831:6;3880:2;3868:9;3859:7;3855:23;3851:32;3848:2;;;3896:1;3893;3886:12;3848:2;3939:1;3964:53;4009:7;4000:6;3989:9;3985:22;3964:53;:::i;:::-;3954:63;;3910:117;3838:196;;;;:::o;4040:596::-;4128:6;4136;4144;4193:2;4181:9;4172:7;4168:23;4164:32;4161:2;;;4209:1;4206;4199:12;4161:2;4252:1;4277:64;4333:7;4324:6;4313:9;4309:22;4277:64;:::i;:::-;4267:74;;4223:128;4390:2;4416:64;4472:7;4463:6;4452:9;4448:22;4416:64;:::i;:::-;4406:74;;4361:129;4529:2;4555:64;4611:7;4602:6;4591:9;4587:22;4555:64;:::i;:::-;4545:74;;4500:129;4151:485;;;;;:::o;4642:179::-;4711:10;4732:46;4774:3;4766:6;4732:46;:::i;:::-;4810:4;4805:3;4801:14;4787:28;;4722:99;;;;:::o;4827:108::-;4904:24;4922:5;4904:24;:::i;:::-;4899:3;4892:37;4882:53;;:::o;4941:118::-;5028:24;5046:5;5028:24;:::i;:::-;5023:3;5016:37;5006:53;;:::o;5095:732::-;5214:3;5243:54;5291:5;5243:54;:::i;:::-;5313:86;5392:6;5387:3;5313:86;:::i;:::-;5306:93;;5423:56;5473:5;5423:56;:::i;:::-;5502:7;5533:1;5518:284;5543:6;5540:1;5537:13;5518:284;;;5619:6;5613:13;5646:63;5705:3;5690:13;5646:63;:::i;:::-;5639:70;;5732:60;5785:6;5732:60;:::i;:::-;5722:70;;5578:224;5565:1;5562;5558:9;5553:14;;5518:284;;;5522:14;5818:3;5811:10;;5219:608;;;;;;;:::o;5833:109::-;5914:21;5929:5;5914:21;:::i;:::-;5909:3;5902:34;5892:50;;:::o;5948:147::-;6043:45;6082:5;6043:45;:::i;:::-;6038:3;6031:58;6021:74;;:::o;6101:364::-;6189:3;6217:39;6250:5;6217:39;:::i;:::-;6272:71;6336:6;6331:3;6272:71;:::i;:::-;6265:78;;6352:52;6397:6;6392:3;6385:4;6378:5;6374:16;6352:52;:::i;:::-;6429:29;6451:6;6429:29;:::i;:::-;6424:3;6420:39;6413:46;;6193:272;;;;;:::o;6471:366::-;6613:3;6634:67;6698:2;6693:3;6634:67;:::i;:::-;6627:74;;6710:93;6799:3;6710:93;:::i;:::-;6828:2;6823:3;6819:12;6812:19;;6617:220;;;:::o;6843:366::-;6985:3;7006:67;7070:2;7065:3;7006:67;:::i;:::-;6999:74;;7082:93;7171:3;7082:93;:::i;:::-;7200:2;7195:3;7191:12;7184:19;;6989:220;;;:::o;7215:366::-;7357:3;7378:67;7442:2;7437:3;7378:67;:::i;:::-;7371:74;;7454:93;7543:3;7454:93;:::i;:::-;7572:2;7567:3;7563:12;7556:19;;7361:220;;;:::o;7587:366::-;7729:3;7750:67;7814:2;7809:3;7750:67;:::i;:::-;7743:74;;7826:93;7915:3;7826:93;:::i;:::-;7944:2;7939:3;7935:12;7928:19;;7733:220;;;:::o;7959:366::-;8101:3;8122:67;8186:2;8181:3;8122:67;:::i;:::-;8115:74;;8198:93;8287:3;8198:93;:::i;:::-;8316:2;8311:3;8307:12;8300:19;;8105:220;;;:::o;8331:366::-;8473:3;8494:67;8558:2;8553:3;8494:67;:::i;:::-;8487:74;;8570:93;8659:3;8570:93;:::i;:::-;8688:2;8683:3;8679:12;8672:19;;8477:220;;;:::o;8703:366::-;8845:3;8866:67;8930:2;8925:3;8866:67;:::i;:::-;8859:74;;8942:93;9031:3;8942:93;:::i;:::-;9060:2;9055:3;9051:12;9044:19;;8849:220;;;:::o;9075:366::-;9217:3;9238:67;9302:2;9297:3;9238:67;:::i;:::-;9231:74;;9314:93;9403:3;9314:93;:::i;:::-;9432:2;9427:3;9423:12;9416:19;;9221:220;;;:::o;9447:366::-;9589:3;9610:67;9674:2;9669:3;9610:67;:::i;:::-;9603:74;;9686:93;9775:3;9686:93;:::i;:::-;9804:2;9799:3;9795:12;9788:19;;9593:220;;;:::o;9819:366::-;9961:3;9982:67;10046:2;10041:3;9982:67;:::i;:::-;9975:74;;10058:93;10147:3;10058:93;:::i;:::-;10176:2;10171:3;10167:12;10160:19;;9965:220;;;:::o;10191:366::-;10333:3;10354:67;10418:2;10413:3;10354:67;:::i;:::-;10347:74;;10430:93;10519:3;10430:93;:::i;:::-;10548:2;10543:3;10539:12;10532:19;;10337:220;;;:::o;10563:366::-;10705:3;10726:67;10790:2;10785:3;10726:67;:::i;:::-;10719:74;;10802:93;10891:3;10802:93;:::i;:::-;10920:2;10915:3;10911:12;10904:19;;10709:220;;;:::o;10935:366::-;11077:3;11098:67;11162:2;11157:3;11098:67;:::i;:::-;11091:74;;11174:93;11263:3;11174:93;:::i;:::-;11292:2;11287:3;11283:12;11276:19;;11081:220;;;:::o;11307:366::-;11449:3;11470:67;11534:2;11529:3;11470:67;:::i;:::-;11463:74;;11546:93;11635:3;11546:93;:::i;:::-;11664:2;11659:3;11655:12;11648:19;;11453:220;;;:::o;11679:366::-;11821:3;11842:67;11906:2;11901:3;11842:67;:::i;:::-;11835:74;;11918:93;12007:3;11918:93;:::i;:::-;12036:2;12031:3;12027:12;12020:19;;11825:220;;;:::o;12051:366::-;12193:3;12214:67;12278:2;12273:3;12214:67;:::i;:::-;12207:74;;12290:93;12379:3;12290:93;:::i;:::-;12408:2;12403:3;12399:12;12392:19;;12197:220;;;:::o;12423:366::-;12565:3;12586:67;12650:2;12645:3;12586:67;:::i;:::-;12579:74;;12662:93;12751:3;12662:93;:::i;:::-;12780:2;12775:3;12771:12;12764:19;;12569:220;;;:::o;12795:366::-;12937:3;12958:67;13022:2;13017:3;12958:67;:::i;:::-;12951:74;;13034:93;13123:3;13034:93;:::i;:::-;13152:2;13147:3;13143:12;13136:19;;12941:220;;;:::o;13167:366::-;13309:3;13330:67;13394:2;13389:3;13330:67;:::i;:::-;13323:74;;13406:93;13495:3;13406:93;:::i;:::-;13524:2;13519:3;13515:12;13508:19;;13313:220;;;:::o;13539:366::-;13681:3;13702:67;13766:2;13761:3;13702:67;:::i;:::-;13695:74;;13778:93;13867:3;13778:93;:::i;:::-;13896:2;13891:3;13887:12;13880:19;;13685:220;;;:::o;13911:118::-;13998:24;14016:5;13998:24;:::i;:::-;13993:3;13986:37;13976:53;;:::o;14035:112::-;14118:22;14134:5;14118:22;:::i;:::-;14113:3;14106:35;14096:51;;:::o;14153:222::-;14246:4;14284:2;14273:9;14269:18;14261:26;;14297:71;14365:1;14354:9;14350:17;14341:6;14297:71;:::i;:::-;14251:124;;;;:::o;14381:332::-;14502:4;14540:2;14529:9;14525:18;14517:26;;14553:71;14621:1;14610:9;14606:17;14597:6;14553:71;:::i;:::-;14634:72;14702:2;14691:9;14687:18;14678:6;14634:72;:::i;:::-;14507:206;;;;;:::o;14719:332::-;14840:4;14878:2;14867:9;14863:18;14855:26;;14891:71;14959:1;14948:9;14944:17;14935:6;14891:71;:::i;:::-;14972:72;15040:2;15029:9;15025:18;15016:6;14972:72;:::i;:::-;14845:206;;;;;:::o;15057:807::-;15306:4;15344:3;15333:9;15329:19;15321:27;;15358:71;15426:1;15415:9;15411:17;15402:6;15358:71;:::i;:::-;15439:72;15507:2;15496:9;15492:18;15483:6;15439:72;:::i;:::-;15521:80;15597:2;15586:9;15582:18;15573:6;15521:80;:::i;:::-;15611;15687:2;15676:9;15672:18;15663:6;15611:80;:::i;:::-;15701:73;15769:3;15758:9;15754:19;15745:6;15701:73;:::i;:::-;15784;15852:3;15841:9;15837:19;15828:6;15784:73;:::i;:::-;15311:553;;;;;;;;;:::o;15870:210::-;15957:4;15995:2;15984:9;15980:18;15972:26;;16008:65;16070:1;16059:9;16055:17;16046:6;16008:65;:::i;:::-;15962:118;;;;:::o;16086:313::-;16199:4;16237:2;16226:9;16222:18;16214:26;;16286:9;16280:4;16276:20;16272:1;16261:9;16257:17;16250:47;16314:78;16387:4;16378:6;16314:78;:::i;:::-;16306:86;;16204:195;;;;:::o;16405:419::-;16571:4;16609:2;16598:9;16594:18;16586:26;;16658:9;16652:4;16648:20;16644:1;16633:9;16629:17;16622:47;16686:131;16812:4;16686:131;:::i;:::-;16678:139;;16576:248;;;:::o;16830:419::-;16996:4;17034:2;17023:9;17019:18;17011:26;;17083:9;17077:4;17073:20;17069:1;17058:9;17054:17;17047:47;17111:131;17237:4;17111:131;:::i;:::-;17103:139;;17001:248;;;:::o;17255:419::-;17421:4;17459:2;17448:9;17444:18;17436:26;;17508:9;17502:4;17498:20;17494:1;17483:9;17479:17;17472:47;17536:131;17662:4;17536:131;:::i;:::-;17528:139;;17426:248;;;:::o;17680:419::-;17846:4;17884:2;17873:9;17869:18;17861:26;;17933:9;17927:4;17923:20;17919:1;17908:9;17904:17;17897:47;17961:131;18087:4;17961:131;:::i;:::-;17953:139;;17851:248;;;:::o;18105:419::-;18271:4;18309:2;18298:9;18294:18;18286:26;;18358:9;18352:4;18348:20;18344:1;18333:9;18329:17;18322:47;18386:131;18512:4;18386:131;:::i;:::-;18378:139;;18276:248;;;:::o;18530:419::-;18696:4;18734:2;18723:9;18719:18;18711:26;;18783:9;18777:4;18773:20;18769:1;18758:9;18754:17;18747:47;18811:131;18937:4;18811:131;:::i;:::-;18803:139;;18701:248;;;:::o;18955:419::-;19121:4;19159:2;19148:9;19144:18;19136:26;;19208:9;19202:4;19198:20;19194:1;19183:9;19179:17;19172:47;19236:131;19362:4;19236:131;:::i;:::-;19228:139;;19126:248;;;:::o;19380:419::-;19546:4;19584:2;19573:9;19569:18;19561:26;;19633:9;19627:4;19623:20;19619:1;19608:9;19604:17;19597:47;19661:131;19787:4;19661:131;:::i;:::-;19653:139;;19551:248;;;:::o;19805:419::-;19971:4;20009:2;19998:9;19994:18;19986:26;;20058:9;20052:4;20048:20;20044:1;20033:9;20029:17;20022:47;20086:131;20212:4;20086:131;:::i;:::-;20078:139;;19976:248;;;:::o;20230:419::-;20396:4;20434:2;20423:9;20419:18;20411:26;;20483:9;20477:4;20473:20;20469:1;20458:9;20454:17;20447:47;20511:131;20637:4;20511:131;:::i;:::-;20503:139;;20401:248;;;:::o;20655:419::-;20821:4;20859:2;20848:9;20844:18;20836:26;;20908:9;20902:4;20898:20;20894:1;20883:9;20879:17;20872:47;20936:131;21062:4;20936:131;:::i;:::-;20928:139;;20826:248;;;:::o;21080:419::-;21246:4;21284:2;21273:9;21269:18;21261:26;;21333:9;21327:4;21323:20;21319:1;21308:9;21304:17;21297:47;21361:131;21487:4;21361:131;:::i;:::-;21353:139;;21251:248;;;:::o;21505:419::-;21671:4;21709:2;21698:9;21694:18;21686:26;;21758:9;21752:4;21748:20;21744:1;21733:9;21729:17;21722:47;21786:131;21912:4;21786:131;:::i;:::-;21778:139;;21676:248;;;:::o;21930:419::-;22096:4;22134:2;22123:9;22119:18;22111:26;;22183:9;22177:4;22173:20;22169:1;22158:9;22154:17;22147:47;22211:131;22337:4;22211:131;:::i;:::-;22203:139;;22101:248;;;:::o;22355:419::-;22521:4;22559:2;22548:9;22544:18;22536:26;;22608:9;22602:4;22598:20;22594:1;22583:9;22579:17;22572:47;22636:131;22762:4;22636:131;:::i;:::-;22628:139;;22526:248;;;:::o;22780:419::-;22946:4;22984:2;22973:9;22969:18;22961:26;;23033:9;23027:4;23023:20;23019:1;23008:9;23004:17;22997:47;23061:131;23187:4;23061:131;:::i;:::-;23053:139;;22951:248;;;:::o;23205:419::-;23371:4;23409:2;23398:9;23394:18;23386:26;;23458:9;23452:4;23448:20;23444:1;23433:9;23429:17;23422:47;23486:131;23612:4;23486:131;:::i;:::-;23478:139;;23376:248;;;:::o;23630:419::-;23796:4;23834:2;23823:9;23819:18;23811:26;;23883:9;23877:4;23873:20;23869:1;23858:9;23854:17;23847:47;23911:131;24037:4;23911:131;:::i;:::-;23903:139;;23801:248;;;:::o;24055:419::-;24221:4;24259:2;24248:9;24244:18;24236:26;;24308:9;24302:4;24298:20;24294:1;24283:9;24279:17;24272:47;24336:131;24462:4;24336:131;:::i;:::-;24328:139;;24226:248;;;:::o;24480:419::-;24646:4;24684:2;24673:9;24669:18;24661:26;;24733:9;24727:4;24723:20;24719:1;24708:9;24704:17;24697:47;24761:131;24887:4;24761:131;:::i;:::-;24753:139;;24651:248;;;:::o;24905:222::-;24998:4;25036:2;25025:9;25021:18;25013:26;;25049:71;25117:1;25106:9;25102:17;25093:6;25049:71;:::i;:::-;25003:124;;;;:::o;25133:831::-;25396:4;25434:3;25423:9;25419:19;25411:27;;25448:71;25516:1;25505:9;25501:17;25492:6;25448:71;:::i;:::-;25529:80;25605:2;25594:9;25590:18;25581:6;25529:80;:::i;:::-;25656:9;25650:4;25646:20;25641:2;25630:9;25626:18;25619:48;25684:108;25787:4;25778:6;25684:108;:::i;:::-;25676:116;;25802:72;25870:2;25859:9;25855:18;25846:6;25802:72;:::i;:::-;25884:73;25952:3;25941:9;25937:19;25928:6;25884:73;:::i;:::-;25401:563;;;;;;;;:::o;25970:214::-;26059:4;26097:2;26086:9;26082:18;26074:26;;26110:67;26174:1;26163:9;26159:17;26150:6;26110:67;:::i;:::-;26064:120;;;;:::o;26190:132::-;26257:4;26280:3;26272:11;;26310:4;26305:3;26301:14;26293:22;;26262:60;;;:::o;26328:114::-;26395:6;26429:5;26423:12;26413:22;;26402:40;;;:::o;26448:99::-;26500:6;26534:5;26528:12;26518:22;;26507:40;;;:::o;26553:113::-;26623:4;26655;26650:3;26646:14;26638:22;;26628:38;;;:::o;26672:184::-;26771:11;26805:6;26800:3;26793:19;26845:4;26840:3;26836:14;26821:29;;26783:73;;;;:::o;26862:169::-;26946:11;26980:6;26975:3;26968:19;27020:4;27015:3;27011:14;26996:29;;26958:73;;;;:::o;27037:305::-;27077:3;27096:20;27114:1;27096:20;:::i;:::-;27091:25;;27130:20;27148:1;27130:20;:::i;:::-;27125:25;;27284:1;27216:66;27212:74;27209:1;27206:81;27203:2;;;27290:18;;:::i;:::-;27203:2;27334:1;27331;27327:9;27320:16;;27081:261;;;;:::o;27348:185::-;27388:1;27405:20;27423:1;27405:20;:::i;:::-;27400:25;;27439:20;27457:1;27439:20;:::i;:::-;27434:25;;27478:1;27468:2;;27483:18;;:::i;:::-;27468:2;27525:1;27522;27518:9;27513:14;;27390:143;;;;:::o;27539:348::-;27579:7;27602:20;27620:1;27602:20;:::i;:::-;27597:25;;27636:20;27654:1;27636:20;:::i;:::-;27631:25;;27824:1;27756:66;27752:74;27749:1;27746:81;27741:1;27734:9;27727:17;27723:105;27720:2;;;27831:18;;:::i;:::-;27720:2;27879:1;27876;27872:9;27861:20;;27587:300;;;;:::o;27893:191::-;27933:4;27953:20;27971:1;27953:20;:::i;:::-;27948:25;;27987:20;28005:1;27987:20;:::i;:::-;27982:25;;28026:1;28023;28020:8;28017:2;;;28031:18;;:::i;:::-;28017:2;28076:1;28073;28069:9;28061:17;;27938:146;;;;:::o;28090:96::-;28127:7;28156:24;28174:5;28156:24;:::i;:::-;28145:35;;28135:51;;;:::o;28192:90::-;28226:7;28269:5;28262:13;28255:21;28244:32;;28234:48;;;:::o;28288:126::-;28325:7;28365:42;28358:5;28354:54;28343:65;;28333:81;;;:::o;28420:77::-;28457:7;28486:5;28475:16;;28465:32;;;:::o;28503:86::-;28538:7;28578:4;28571:5;28567:16;28556:27;;28546:43;;;:::o;28595:121::-;28653:9;28686:24;28704:5;28686:24;:::i;:::-;28673:37;;28663:53;;;:::o;28722:307::-;28790:1;28800:113;28814:6;28811:1;28808:13;28800:113;;;28899:1;28894:3;28890:11;28884:18;28880:1;28875:3;28871:11;28864:39;28836:2;28833:1;28829:10;28824:15;;28800:113;;;28931:6;28928:1;28925:13;28922:2;;;29011:1;29002:6;28997:3;28993:16;28986:27;28922:2;28771:258;;;;:::o;29035:233::-;29074:3;29097:24;29115:5;29097:24;:::i;:::-;29088:33;;29143:66;29136:5;29133:77;29130:2;;;29213:18;;:::i;:::-;29130:2;29260:1;29253:5;29249:13;29242:20;;29078:190;;;:::o;29274:180::-;29322:77;29319:1;29312:88;29419:4;29416:1;29409:15;29443:4;29440:1;29433:15;29460:180;29508:77;29505:1;29498:88;29605:4;29602:1;29595:15;29629:4;29626:1;29619:15;29646:102;29687:6;29738:2;29734:7;29729:2;29722:5;29718:14;29714:28;29704:38;;29694:54;;;:::o;29754:222::-;29894:34;29890:1;29882:6;29878:14;29871:58;29963:5;29958:2;29950:6;29946:15;29939:30;29860:116;:::o;29982:229::-;30122:34;30118:1;30110:6;30106:14;30099:58;30191:12;30186:2;30178:6;30174:15;30167:37;30088:123;:::o;30217:221::-;30357:34;30353:1;30345:6;30341:14;30334:58;30426:4;30421:2;30413:6;30409:15;30402:29;30323:115;:::o;30444:221::-;30584:34;30580:1;30572:6;30568:14;30561:58;30653:4;30648:2;30640:6;30636:15;30629:29;30550:115;:::o;30671:177::-;30811:29;30807:1;30799:6;30795:14;30788:53;30777:71;:::o;30854:177::-;30994:29;30990:1;30982:6;30978:14;30971:53;30960:71;:::o;31037:180::-;31177:32;31173:1;31165:6;31161:14;31154:56;31143:74;:::o;31223:220::-;31363:34;31359:1;31351:6;31347:14;31340:58;31432:3;31427:2;31419:6;31415:15;31408:28;31329:114;:::o;31449:182::-;31589:34;31585:1;31577:6;31573:14;31566:58;31555:76;:::o;31637:228::-;31777:34;31773:1;31765:6;31761:14;31754:58;31846:11;31841:2;31833:6;31829:15;31822:36;31743:122;:::o;31871:176::-;32011:28;32007:1;31999:6;31995:14;31988:52;31977:70;:::o;32053:223::-;32193:34;32189:1;32181:6;32177:14;32170:58;32262:6;32257:2;32249:6;32245:15;32238:31;32159:117;:::o;32282:224::-;32422:34;32418:1;32410:6;32406:14;32399:58;32491:7;32486:2;32478:6;32474:15;32467:32;32388:118;:::o;32512:223::-;32652:34;32648:1;32640:6;32636:14;32629:58;32721:6;32716:2;32708:6;32704:15;32697:31;32618:117;:::o;32741:173::-;32881:25;32877:1;32869:6;32865:14;32858:49;32847:67;:::o;32920:169::-;33060:21;33056:1;33048:6;33044:14;33037:45;33026:63;:::o;33095:221::-;33235:34;33231:1;33223:6;33219:14;33212:58;33304:4;33299:2;33291:6;33287:15;33280:29;33201:115;:::o;33322:174::-;33462:26;33458:1;33450:6;33446:14;33439:50;33428:68;:::o;33502:221::-;33642:34;33638:1;33630:6;33626:14;33619:58;33711:4;33706:2;33698:6;33694:15;33687:29;33608:115;:::o;33729:173::-;33869:25;33865:1;33857:6;33853:14;33846:49;33835:67;:::o;33908:122::-;33981:24;33999:5;33981:24;:::i;:::-;33974:5;33971:35;33961:2;;34020:1;34017;34010:12;33961:2;33951:79;:::o;34036:116::-;34106:21;34121:5;34106:21;:::i;:::-;34099:5;34096:32;34086:2;;34142:1;34139;34132:12;34086:2;34076:76;:::o;34158:122::-;34231:24;34249:5;34231:24;:::i;:::-;34224:5;34221:35;34211:2;;34270:1;34267;34260:12;34211:2;34201:79;:::o

Swarm Source

ipfs://3b985bdce98ace1b5d6ed35b9a946669c53e9065839bb795b68c6d51c6d75f12
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.