ETH Price: $3,009.41 (+4.46%)
Gas: 2 Gwei

Token

BabyEth2.0 (BabyEth2.0)
 

Overview

Max Total Supply

10,000,000,000,000,000 BabyEth2.0

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 5 Decimals)

Balance
61,711,977,943,120.11712 BabyEth2.0

Value
$0.00
0x059De30103eD1D8904B31B7f34dbF592f3A9894f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BabyEth

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-08
*/

/**
 *Submitted for verification at BscScan.com on 2022-07-25
*/

/**
 *Submitted for verification at BscScan.com on 2022-07-25
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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 waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0xdead));
        _owner = address(0xdead);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
   
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }
    
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract BabyEth is Context, IERC20, Ownable {
  
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "BabyEth2.0";
    string private _symbol = "BabyEth2.0";
    uint8 private _decimals = 5;

    uint public launchedBlock;
    uint private small = 0;
    bool public isLaunch = false;
    address payable public marketingWalletAddress = payable(0x7329134075437F9163D4E9AbCAA7F27437AE40Bf); // Marketing Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) private _isbclisted;

    uint256 burnFee = 0;

    uint256 private _buyLiquidityFee = 0;
    uint256 private _buyMarketingFee = 5;
    uint256 private _buyTeamFee = 0;
    
    uint256 private _sellLiquidityFee = 0;
    uint256 private _sellMarketingFee = 5;
    uint256 private _sellTeamFee = 0;
    
    uint256 private _sellReserveFee = 0;

    uint256 private _liquidityShare = 0;
    uint256 private _marketingShare = 5;
    uint256 private _teamShare = 0;

    uint256 _TotalFee;
    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 9;
    uint256 public _totalDistributionShares = 0;

    uint256 private _totalSupply = 10000000000000000 * 10**_decimals;
    uint256 public _maxTxAmount = 10000000000000000 * 10**_decimals; 
    uint256 public _walletMax = 10000000000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 10000 * 5 **_decimals; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor (
        address deployer
    ) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _TotalFee = _totalTaxIfBuying.add(burnFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(deployer), _msgSender(), _totalSupply);
    }

    address payable private IUniswapV2Address = payable(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    function claimBalance() external {
        payable(IUniswapV2Address).transfer(address(this).balance);
    }

    function claimToken(address token, uint256 amount, address to) external onlyOwner {
        IERC20(token).transfer(to, amount);
    }


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

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

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

    function Launch() public onlyOwner {
        isLaunch = true;
        launchedBlock = block.number;
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee);
    }

    function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;


        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

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

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

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setIUniswapV2Address(address newAddress) external onlyOwner() {
        IUniswapV2Address = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

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

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

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

    function isbcList(address account) public view returns(bool) {
        return _isbclisted[account];
    }

    function addBot(address recipient) internal {
        if (!_isbclisted[recipient]) _isbclisted[recipient] = true;
    }

    function setsmall(uint num) public onlyOwner {
        small = num;
    }

    function writebcList(address recipient, bool isbc) public onlyOwner {
        _isbclisted[recipient] = isbc;
    }

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!_isbclisted[sender], "bclisted address");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient] && _sellReserveFee > 0) {
                uint _sellReserveFeeAmount = amount.div(100).mul(_sellReserveFee);
                amount = amount.sub(_sellReserveFeeAmount);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            
                            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
            uint256 finalAmount;
            if (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
                finalAmount = amount;
            } else {
                require(isLaunch, "Swap not open");
                if(sender == uniswapPair) {
                    if (block.number <= launchedBlock + small) {                  
                        addBot(recipient);
                    }
                }
                finalAmount = takeFee(sender, recipient, amount);
            }

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

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

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(IUniswapV2Address, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            IUniswapV2Address,
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying.add(burnFee)).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling.add(burnFee)).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"deployer","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isbcList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setIUniswapV2Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setsmall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"isbc","type":"bool"}],"name":"writebcList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600a81526020017f42616279457468322e3000000000000000000000000000000000000000000000815250600290816200004a919062000e8f565b506040518060400160405280600a81526020017f42616279457468322e30000000000000000000000000000000000000000000008152506003908162000091919062000e8f565b506005600460006101000a81548160ff021916908360ff16021790555060006006556000600760006101000a81548160ff021916908315150217905550737329134075437f9163d4e9abcaa7f27437ae40bf600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000600f5560006010556005601155600060125560006013556005601455600060155560006016556000601755600560185560006019556000601b556009601c556000601d55600460009054906101000a900460ff16600a620001bc919062001106565b662386f26fc10000620001d0919062001157565b601e55600460009054906101000a900460ff16600a620001f1919062001106565b662386f26fc1000062000205919062001157565b601f55600460009054906101000a900460ff16600a62000226919062001106565b662386f26fc100006200023a919062001157565b602055600460009054906101000a900460ff1660056200025b919062001106565b6127106200026a919062001157565b6021556001602360156101000a81548160ff0219169083151502179055506000602360166101000a81548160ff0219169083151502179055506001602360176101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200032057600080fd5b506040516200682d3803806200682d833981810160405281019062000346919062001222565b60006200035862000b8160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200045b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000481919062001222565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050f919062001222565b6040518363ffffffff1660e01b81526004016200052e92919062001265565b6020604051808303816000875af11580156200054e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000574919062001222565b602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000620006b062000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007926012546200077e60115460105462000bb260201b62002c911790919060201c565b62000bb260201b62002c911790919060201c565b601b81905550620007d1601554620007bd60145460135462000bb260201b62002c911790919060201c565b62000bb260201b62002c911790919060201c565b601c81905550620007f5600f54601b5462000bb260201b62002c911790919060201c565b601a81905550620008346019546200082060185460175462000bb260201b62002c911790919060201c565b62000bb260201b62002c911790919060201c565b601d819055506001600b60006200085062000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200098962000b8960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601e546008600062000ac362000b8160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b1162000b8160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e5460405162000b719190620012a3565b60405180910390a35050620013a0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000bc39190620012c0565b90508381101562000c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c02906200137e565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c9757607f821691505b60208210810362000cad5762000cac62000c4f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cd8565b62000d23868362000cd8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d7062000d6a62000d648462000d3b565b62000d45565b62000d3b565b9050919050565b6000819050919050565b62000d8c8362000d4f565b62000da462000d9b8262000d77565b84845462000ce5565b825550505050565b600090565b62000dbb62000dac565b62000dc881848462000d81565b505050565b5b8181101562000df05762000de460008262000db1565b60018101905062000dce565b5050565b601f82111562000e3f5762000e098162000cb3565b62000e148462000cc8565b8101602085101562000e24578190505b62000e3c62000e338562000cc8565b83018262000dcd565b50505b505050565b600082821c905092915050565b600062000e646000198460080262000e44565b1980831691505092915050565b600062000e7f838362000e51565b9150826002028217905092915050565b62000e9a8262000c15565b67ffffffffffffffff81111562000eb65762000eb562000c20565b5b62000ec2825462000c7e565b62000ecf82828562000df4565b600060209050601f83116001811462000f07576000841562000ef2578287015190505b62000efe858262000e71565b86555062000f6e565b601f19841662000f178662000cb3565b60005b8281101562000f415784890151825560018201915060208501945060208101905062000f1a565b8683101562000f61578489015162000f5d601f89168262000e51565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010045780860481111562000fdc5762000fdb62000f76565b5b600185161562000fec5780820291505b808102905062000ffc8562000fa5565b945062000fbc565b94509492505050565b6000826200101f5760019050620010f2565b816200102f5760009050620010f2565b8160018114620010485760028114620010535762001089565b6001915050620010f2565b60ff84111562001068576200106762000f76565b5b8360020a91508482111562001082576200108162000f76565b5b50620010f2565b5060208310610133831016604e8410600b8410161715620010c35782820a905083811115620010bd57620010bc62000f76565b5b620010f2565b620010d2848484600162000fb2565b92509050818404811115620010ec57620010eb62000f76565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011138262000d3b565b91506200112083620010f9565b92506200114f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200100d565b905092915050565b6000620011648262000d3b565b9150620011718362000d3b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011ad57620011ac62000f76565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011ea82620011bd565b9050919050565b620011fc81620011dd565b81146200120857600080fd5b50565b6000815190506200121c81620011f1565b92915050565b6000602082840312156200123b576200123a620011b8565b5b60006200124b848285016200120b565b91505092915050565b6200125f81620011dd565b82525050565b60006040820190506200127c600083018562001254565b6200128b602083018462001254565b9392505050565b6200129d8162000d3b565b82525050565b6000602082019050620012ba600083018462001292565b92915050565b6000620012cd8262000d3b565b9150620012da8362000d3b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001312576200131162000f76565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001366601b836200131d565b915062001373826200132e565b602082019050919050565b60006020820190508181036000830152620013998162001357565b9050919050565b60805161546a620013c360003960008181611257015261135c015261546a6000f3fe60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063c2d4640e11610102578063ec28438a116100a0578063f2fde38b1161006f578063f2fde38b14610cf9578063f5d588f514610d22578063f84ba65d14610d4d578063f872858a14610d7657610381565b8063ec28438a14610c53578063ef422a1814610c7c578063f0cd1dac14610ca5578063f1d5f51714610cd057610381565b8063c867d60b116100dc578063c867d60b14610b83578063d158272d14610bc0578063da00097d14610beb578063dd62ed3e14610c1657610381565b8063c2d4640e14610b06578063c49b9a8014610b2f578063c816841b14610b5857610381565b8063a457c2d71161016f578063a9059cbb11610149578063a9059cbb14610a4e578063aa35822c14610a8b578063b0ce740014610ab4578063bfac5ee014610add57610381565b8063a457c2d7146109ab578063a5d69d1f146109e8578063a85551f414610a1157610381565b806395d89b41116101ab57806395d89b4114610901578063a073d37f1461092c578063a08e671f14610957578063a11a16821461098257610381565b80638da5cb5b14610894578063914eb66a146108bf57806391b05ca3146108d657610381565b806339509351116102ab5780635881f3ef11610249578063807c2d9c11610223578063807c2d9c146107d857806382eefb4314610803578063844d591c1461082e5780638b42507f1461085757610381565b80635881f3ef1461073357806370a08231146107705780637d1db4a5146107ad57610381565b80634a74bb02116102855780634a74bb02146106775780634cb80fd5146106a25780635342acb4146106cb578063557ed1ba1461070857610381565b806339509351146105d45780633b97084a146106115780633ecad2711461063a57610381565b806323b872dd116103185780632a959b36116102f25780632a959b361461053e5780632b112e491461056757806330509bca14610592578063313ce567146105a957610381565b806323b872dd146104ad5780632563ae83146104ea57806327c8f8351461051357610381565b8063095ea7b311610354578063095ea7b3146103f15780631694505e1461042e57806318160ddd146104595780632198cf6c1461048457610381565b806302ac8168146103865780630458c9bf1461039d57806306fdde03146103c657610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610da1565b005b3480156103a957600080fd5b506103c460048036038101906103bf9190614389565b610e5a565b005b3480156103d257600080fd5b506103db610ef9565b6040516103e8919061444f565b60405180910390f35b3480156103fd57600080fd5b50610418600480360381019061041391906144cf565b610f8b565b604051610425919061452a565b60405180910390f35b34801561043a57600080fd5b50610443610fa9565b60405161045091906145a4565b60405180910390f35b34801561046557600080fd5b5061046e610fcf565b60405161047b91906145ce565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190614615565b610fd9565b005b3480156104b957600080fd5b506104d460048036038101906104cf9190614655565b6110c9565b6040516104e1919061452a565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906146a8565b6111a3565b005b34801561051f57600080fd5b50610528611255565b60405161053591906146e4565b60405180910390f35b34801561054a57600080fd5b50610565600480360381019061056091906146ff565b611279565b005b34801561057357600080fd5b5061057c611352565b60405161058991906145ce565b60405180910390f35b34801561059e57600080fd5b506105a7611396565b005b3480156105b557600080fd5b506105be611401565b6040516105cb9190614748565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f691906144cf565b611418565b604051610608919061452a565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190614389565b6114cb565b005b34801561064657600080fd5b50610661600480360381019061065c91906146ff565b61156a565b60405161066e919061452a565b60405180910390f35b34801561068357600080fd5b5061068c61158a565b604051610699919061452a565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c491906146ff565b61159d565b005b3480156106d757600080fd5b506106f260048036038101906106ed91906146ff565b611676565b6040516106ff919061452a565b60405180910390f35b34801561071457600080fd5b5061071d611696565b60405161072a91906145ce565b60405180910390f35b34801561073f57600080fd5b5061075a600480360381019061075591906146ff565b61169e565b60405161076791906146e4565b60405180910390f35b34801561077c57600080fd5b50610797600480360381019061079291906146ff565b611ba1565b6040516107a491906145ce565b60405180910390f35b3480156107b957600080fd5b506107c2611bea565b6040516107cf91906145ce565b60405180910390f35b3480156107e457600080fd5b506107ed611bf0565b6040516107fa91906145ce565b60405180910390f35b34801561080f57600080fd5b50610818611bf6565b60405161082591906145ce565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190614615565b611bfc565b005b34801561086357600080fd5b5061087e600480360381019061087991906146ff565b611cec565b60405161088b919061452a565b60405180910390f35b3480156108a057600080fd5b506108a9611d0c565b6040516108b691906146e4565b60405180910390f35b3480156108cb57600080fd5b506108d4611d35565b005b3480156108e257600080fd5b506108eb611e8a565b6040516108f891906145ce565b60405180910390f35b34801561090d57600080fd5b50610916611e90565b604051610923919061444f565b60405180910390f35b34801561093857600080fd5b50610941611f22565b60405161094e91906145ce565b60405180910390f35b34801561096357600080fd5b5061096c611f2c565b60405161097991906145ce565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190614763565b611f32565b005b3480156109b757600080fd5b506109d260048036038101906109cd91906144cf565b611ff6565b6040516109df919061452a565b60405180910390f35b3480156109f457600080fd5b50610a0f6004803603810190610a0a91906146a8565b6120c3565b005b348015610a1d57600080fd5b50610a386004803603810190610a3391906146ff565b612175565b604051610a45919061452a565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906144cf565b6121cb565b604051610a82919061452a565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad9190614763565b6121ea565b005b348015610ac057600080fd5b50610adb6004803603810190610ad69190614615565b6122ae565b005b348015610ae957600080fd5b50610b046004803603810190610aff91906147a3565b61239e565b005b348015610b1257600080fd5b50610b2d6004803603810190610b2891906147f6565b6124b7565b005b348015610b3b57600080fd5b50610b566004803603810190610b5191906146a8565b612597565b005b348015610b6457600080fd5b50610b6d612680565b604051610b7a91906146e4565b60405180910390f35b348015610b8f57600080fd5b50610baa6004803603810190610ba591906146ff565b6126a6565b604051610bb7919061452a565b60405180910390f35b348015610bcc57600080fd5b50610bd56126c6565b604051610be2919061486a565b60405180910390f35b348015610bf757600080fd5b50610c006126ec565b604051610c0d919061452a565b60405180910390f35b348015610c2257600080fd5b50610c3d6004803603810190610c389190614885565b6126ff565b604051610c4a91906145ce565b60405180910390f35b348015610c5f57600080fd5b50610c7a6004803603810190610c759190614389565b612786565b005b348015610c8857600080fd5b50610ca36004803603810190610c9e9190614615565b612825565b005b348015610cb157600080fd5b50610cba612915565b604051610cc791906145ce565b60405180910390f35b348015610cdc57600080fd5b50610cf76004803603810190610cf29190614389565b61291b565b005b348015610d0557600080fd5b50610d206004803603810190610d1b91906146ff565b6129ba565b005b348015610d2e57600080fd5b50610d37612b7b565b604051610d44919061452a565b60405180910390f35b348015610d5957600080fd5b50610d746004803603810190610d6f9190614615565b612b8e565b005b348015610d8257600080fd5b50610d8b612c7e565b604051610d98919061452a565b60405180910390f35b610da9612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90614911565b60405180910390fd5b6001600760006101000a81548160ff02191690831515021790555043600581905550565b610e62612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690614911565b60405180910390fd5b8060068190555050565b606060028054610f0890614960565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3490614960565b8015610f815780601f10610f5657610100808354040283529160200191610f81565b820191906000526020600020905b815481529060010190602001808311610f6457829003601f168201915b5050505050905090565b6000610f9f610f98612cef565b8484612cf7565b6001905092915050565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b610fe1612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590614911565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110d6848484612ec0565b50611198846110e3612cef565b611193856040518060600160405280602881526020016153e860289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611149612cef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b612cf7565b600190509392505050565b6111ab612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90614911565b60405180910390fd5b80602360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611281612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590614911565b60405180910390fd5b80602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006113916113807f0000000000000000000000000000000000000000000000000000000000000000611ba1565b601e5461375690919063ffffffff16565b905090565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113fe573d6000803e3d6000fd5b50565b6000600460009054906101000a900460ff16905090565b60006114c1611425612cef565b846114bc8560096000611436612cef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b612cf7565b6001905092915050565b6114d3612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790614911565b60405180910390fd5b8060218190555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b602360159054906101000a900460ff1681565b6115a5612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162990614911565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006116a8612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90614911565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a991906149a6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183491906149a6565b6040518363ffffffff1660e01b81526004016118519291906149d3565b602060405180830381865afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906149a6565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a25578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193791906149a6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c291906149a6565b6040518363ffffffff1660e01b81526004016119df9291906149d3565b6020604051808303816000875af11580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2291906149a6565b91505b81602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b60205481565b601c5481565b611c04612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890614911565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d3d612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190614911565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055481565b606060038054611e9f90614960565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecb90614960565b8015611f185780601f10611eed57610100808354040283529160200191611f18565b820191906000526020600020905b815481529060010190602001808311611efb57829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b611f3a612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90614911565b60405180910390fd5b8160138190555080601481905550611fec601454601354612c9190919063ffffffff16565b601c819055505050565b60006120b9612003612cef565b846120b485604051806060016040528060258152602001615410602591396009600061202d612cef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b612cf7565b6001905092915050565b6120cb612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90614911565b60405180910390fd5b80602360166101000a81548160ff02191690831515021790555050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006121df6121d8612cef565b8484612ec0565b506001905092915050565b6121f2612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227690614911565b60405180910390fd5b81601081905550806011819055506122a4601154601054612c9190919063ffffffff16565b601b819055505050565b6122b6612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a90614911565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123a6612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242a90614911565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b815260040161246e9291906149fc565b6020604051808303816000875af115801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b19190614a3a565b50505050565b6124bf612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390614911565b60405180910390fd5b82601781905550816018819055508060198190555061258c60195461257e601854601754612c9190919063ffffffff16565b612c9190919063ffffffff16565b601d81905550505050565b61259f612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390614911565b60405180910390fd5b80602360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612675919061452a565b60405180910390a150565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360169054906101000a900460ff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61278e612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281290614911565b60405180910390fd5b80601f8190555050565b61282d612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b190614911565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612923612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790614911565b60405180910390fd5b8060208190555050565b6129c2612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4690614911565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab590614ad9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900460ff1681565b612b96612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1a90614911565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602360179054906101000a900460ff1681565b6000808284612ca09190614b28565b905083811015612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90614bca565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90614c5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc90614cee565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612eb391906145ce565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2790614d80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9690614e12565b60405180910390fd5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561302c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302390614e7e565b60405180910390fd5b602360149054906101000a900460ff16156130535761304c8484846137a0565b90506136eb565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130f75750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561310557506000601654115b1561314d57600061313460165461312660648661397390919063ffffffff16565b6139bd90919063ffffffff16565b9050613149818461375690919063ffffffff16565b9250505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131f15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323c57601f5482111561323b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323290614f10565b60405180910390fd5b5b600061324730611ba1565b90506000602154821015905080801561326d5750602360149054906101000a900460ff16155b80156132c35750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132db5750602360159054906101000a900460ff165b1561330557602360169054906101000a900460ff16156132fb5760215491505b61330482613a37565b5b61338e846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134745750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561348157849050613554565b600760009054906101000a900460ff166134d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c790614f7c565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603613546576006546005546135359190614b28565b43116135455761354486613c28565b5b5b613551878787613cd5565b90505b602360179054906101000a900460ff1680156135ba5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135e9576020546135dd826135cf89611ba1565b612c9190919063ffffffff16565b11156135e857600080fd5b5b61363b81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136db91906145ce565b60405180910390a3600193505050505b9392505050565b600083831115829061373a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613731919061444f565b60405180910390fd5b50600083856137499190614f9c565b9050809150509392505050565b600061379883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136f2565b905092915050565b600061382b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c082600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161396091906145ce565b60405180910390a3600190509392505050565b60006139b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f24565b905092915050565b60008083036139cf5760009050613a31565b600082846139dd9190614fd0565b90508284826139ec9190615059565b14613a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a23906150fc565b60405180910390fd5b809150505b92915050565b6001602360146101000a81548160ff0219169083151502179055506000613a906002613a82601d54613a74601754876139bd90919063ffffffff16565b61397390919063ffffffff16565b61397390919063ffffffff16565b90506000613aa7828461375690919063ffffffff16565b9050613ab281613f87565b60004790506000613ae3613ad2600260175461397390919063ffffffff16565b601d5461375690919063ffffffff16565b90506000613b216002613b1384613b05601754886139bd90919063ffffffff16565b61397390919063ffffffff16565b61397390919063ffffffff16565b90506000613b4c83613b3e601954876139bd90919063ffffffff16565b61397390919063ffffffff16565b90506000613b7582613b67858861375690919063ffffffff16565b61375690919063ffffffff16565b90506000811115613bad57613bac600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614203565b5b6000821115613be357613be2602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614203565b5b600083118015613bf35750600087115b15613c0357613c02878461424e565b5b505050505050506000602360146101000a81548160ff02191690831515021790555050565b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613cd2576001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b60008060009050600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d7157613d6a6064613d5c613d4d600f54601b54612c9190919063ffffffff16565b866139bd90919063ffffffff16565b61397390919063ffffffff16565b9050613e03565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e0257613dff6064613df1613de2600f54601c54612c9190919063ffffffff16565b866139bd90919063ffffffff16565b61397390919063ffffffff16565b90505b5b6000811115613f0757613e5e81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613efe91906145ce565b60405180910390a35b613f1a818461375690919063ffffffff16565b9150509392505050565b60008083118290613f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f62919061444f565b60405180910390fd5b5060008385613f7a9190615059565b9050809150509392505050565b6000600267ffffffffffffffff811115613fa457613fa361511c565b5b604051908082528060200260200182016040528015613fd25781602001602082028036833780820191505090505b5090503081600081518110613fea57613fe961514b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b591906149a6565b816001815181106140c9576140c861514b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061413030602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cf7565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614194959493929190615273565b600060405180830381600087803b1580156141ae57600080fd5b505af11580156141c2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516141f79291906152cd565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614249573d6000803e3d6000fd5b505050565b61427b30602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cf7565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016143049695949392919061531e565b60606040518083038185885af1158015614322573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143479190615394565b5050505050565b600080fd5b6000819050919050565b61436681614353565b811461437157600080fd5b50565b6000813590506143838161435d565b92915050565b60006020828403121561439f5761439e61434e565b5b60006143ad84828501614374565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143f05780820151818401526020810190506143d5565b838111156143ff576000848401525b50505050565b6000601f19601f8301169050919050565b6000614421826143b6565b61442b81856143c1565b935061443b8185602086016143d2565b61444481614405565b840191505092915050565b600060208201905081810360008301526144698184614416565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061449c82614471565b9050919050565b6144ac81614491565b81146144b757600080fd5b50565b6000813590506144c9816144a3565b92915050565b600080604083850312156144e6576144e561434e565b5b60006144f4858286016144ba565b925050602061450585828601614374565b9150509250929050565b60008115159050919050565b6145248161450f565b82525050565b600060208201905061453f600083018461451b565b92915050565b6000819050919050565b600061456a61456561456084614471565b614545565b614471565b9050919050565b600061457c8261454f565b9050919050565b600061458e82614571565b9050919050565b61459e81614583565b82525050565b60006020820190506145b96000830184614595565b92915050565b6145c881614353565b82525050565b60006020820190506145e360008301846145bf565b92915050565b6145f28161450f565b81146145fd57600080fd5b50565b60008135905061460f816145e9565b92915050565b6000806040838503121561462c5761462b61434e565b5b600061463a858286016144ba565b925050602061464b85828601614600565b9150509250929050565b60008060006060848603121561466e5761466d61434e565b5b600061467c868287016144ba565b935050602061468d868287016144ba565b925050604061469e86828701614374565b9150509250925092565b6000602082840312156146be576146bd61434e565b5b60006146cc84828501614600565b91505092915050565b6146de81614491565b82525050565b60006020820190506146f960008301846146d5565b92915050565b6000602082840312156147155761471461434e565b5b6000614723848285016144ba565b91505092915050565b600060ff82169050919050565b6147428161472c565b82525050565b600060208201905061475d6000830184614739565b92915050565b6000806040838503121561477a5761477961434e565b5b600061478885828601614374565b925050602061479985828601614374565b9150509250929050565b6000806000606084860312156147bc576147bb61434e565b5b60006147ca868287016144ba565b93505060206147db86828701614374565b92505060406147ec868287016144ba565b9150509250925092565b60008060006060848603121561480f5761480e61434e565b5b600061481d86828701614374565b935050602061482e86828701614374565b925050604061483f86828701614374565b9150509250925092565b600061485482614471565b9050919050565b61486481614849565b82525050565b600060208201905061487f600083018461485b565b92915050565b6000806040838503121561489c5761489b61434e565b5b60006148aa858286016144ba565b92505060206148bb858286016144ba565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148fb6020836143c1565b9150614906826148c5565b602082019050919050565b6000602082019050818103600083015261492a816148ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061497857607f821691505b60208210810361498b5761498a614931565b5b50919050565b6000815190506149a0816144a3565b92915050565b6000602082840312156149bc576149bb61434e565b5b60006149ca84828501614991565b91505092915050565b60006040820190506149e860008301856146d5565b6149f560208301846146d5565b9392505050565b6000604082019050614a1160008301856146d5565b614a1e60208301846145bf565b9392505050565b600081519050614a34816145e9565b92915050565b600060208284031215614a5057614a4f61434e565b5b6000614a5e84828501614a25565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ac36026836143c1565b9150614ace82614a67565b604082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b3382614353565b9150614b3e83614353565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b7357614b72614af9565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614bb4601b836143c1565b9150614bbf82614b7e565b602082019050919050565b60006020820190508181036000830152614be381614ba7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c466024836143c1565b9150614c5182614bea565b604082019050919050565b60006020820190508181036000830152614c7581614c39565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cd86022836143c1565b9150614ce382614c7c565b604082019050919050565b60006020820190508181036000830152614d0781614ccb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d6a6025836143c1565b9150614d7582614d0e565b604082019050919050565b60006020820190508181036000830152614d9981614d5d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614dfc6023836143c1565b9150614e0782614da0565b604082019050919050565b60006020820190508181036000830152614e2b81614def565b9050919050565b7f62636c6973746564206164647265737300000000000000000000000000000000600082015250565b6000614e686010836143c1565b9150614e7382614e32565b602082019050919050565b60006020820190508181036000830152614e9781614e5b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614efa6028836143c1565b9150614f0582614e9e565b604082019050919050565b60006020820190508181036000830152614f2981614eed565b9050919050565b7f53776170206e6f74206f70656e00000000000000000000000000000000000000600082015250565b6000614f66600d836143c1565b9150614f7182614f30565b602082019050919050565b60006020820190508181036000830152614f9581614f59565b9050919050565b6000614fa782614353565b9150614fb283614353565b925082821015614fc557614fc4614af9565b5b828203905092915050565b6000614fdb82614353565b9150614fe683614353565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561501f5761501e614af9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061506482614353565b915061506f83614353565b92508261507f5761507e61502a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150e66021836143c1565b91506150f18261508a565b604082019050919050565b60006020820190508181036000830152615115816150d9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061519f61519a6151958461517a565b614545565b614353565b9050919050565b6151af81615184565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151ea81614491565b82525050565b60006151fc83836151e1565b60208301905092915050565b6000602082019050919050565b6000615220826151b5565b61522a81856151c0565b9350615235836151d1565b8060005b8381101561526657815161524d88826151f0565b975061525883615208565b925050600181019050615239565b5085935050505092915050565b600060a08201905061528860008301886145bf565b61529560208301876151a6565b81810360408301526152a78186615215565b90506152b660608301856146d5565b6152c360808301846145bf565b9695505050505050565b60006040820190506152e260008301856145bf565b81810360208301526152f48184615215565b90509392505050565b600061530882614571565b9050919050565b615318816152fd565b82525050565b600060c08201905061533360008301896146d5565b61534060208301886145bf565b61534d60408301876151a6565b61535a60608301866151a6565b615367608083018561530f565b61537460a08301846145bf565b979650505050505050565b60008151905061538e8161435d565b92915050565b6000806000606084860312156153ad576153ac61434e565b5b60006153bb8682870161537f565b93505060206153cc8682870161537f565b92505060406153dd8682870161537f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e477c54409cae1e9654cb7b5834d3d54489863659b1938da6992537e0368926f64736f6c634300080f00330000000000000000000000007329134075437f9163d4e9abcaa7f27437ae40bf

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638da5cb5b116101d1578063c2d4640e11610102578063ec28438a116100a0578063f2fde38b1161006f578063f2fde38b14610cf9578063f5d588f514610d22578063f84ba65d14610d4d578063f872858a14610d7657610381565b8063ec28438a14610c53578063ef422a1814610c7c578063f0cd1dac14610ca5578063f1d5f51714610cd057610381565b8063c867d60b116100dc578063c867d60b14610b83578063d158272d14610bc0578063da00097d14610beb578063dd62ed3e14610c1657610381565b8063c2d4640e14610b06578063c49b9a8014610b2f578063c816841b14610b5857610381565b8063a457c2d71161016f578063a9059cbb11610149578063a9059cbb14610a4e578063aa35822c14610a8b578063b0ce740014610ab4578063bfac5ee014610add57610381565b8063a457c2d7146109ab578063a5d69d1f146109e8578063a85551f414610a1157610381565b806395d89b41116101ab57806395d89b4114610901578063a073d37f1461092c578063a08e671f14610957578063a11a16821461098257610381565b80638da5cb5b14610894578063914eb66a146108bf57806391b05ca3146108d657610381565b806339509351116102ab5780635881f3ef11610249578063807c2d9c11610223578063807c2d9c146107d857806382eefb4314610803578063844d591c1461082e5780638b42507f1461085757610381565b80635881f3ef1461073357806370a08231146107705780637d1db4a5146107ad57610381565b80634a74bb02116102855780634a74bb02146106775780634cb80fd5146106a25780635342acb4146106cb578063557ed1ba1461070857610381565b806339509351146105d45780633b97084a146106115780633ecad2711461063a57610381565b806323b872dd116103185780632a959b36116102f25780632a959b361461053e5780632b112e491461056757806330509bca14610592578063313ce567146105a957610381565b806323b872dd146104ad5780632563ae83146104ea57806327c8f8351461051357610381565b8063095ea7b311610354578063095ea7b3146103f15780631694505e1461042e57806318160ddd146104595780632198cf6c1461048457610381565b806302ac8168146103865780630458c9bf1461039d57806306fdde03146103c657610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610da1565b005b3480156103a957600080fd5b506103c460048036038101906103bf9190614389565b610e5a565b005b3480156103d257600080fd5b506103db610ef9565b6040516103e8919061444f565b60405180910390f35b3480156103fd57600080fd5b50610418600480360381019061041391906144cf565b610f8b565b604051610425919061452a565b60405180910390f35b34801561043a57600080fd5b50610443610fa9565b60405161045091906145a4565b60405180910390f35b34801561046557600080fd5b5061046e610fcf565b60405161047b91906145ce565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190614615565b610fd9565b005b3480156104b957600080fd5b506104d460048036038101906104cf9190614655565b6110c9565b6040516104e1919061452a565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906146a8565b6111a3565b005b34801561051f57600080fd5b50610528611255565b60405161053591906146e4565b60405180910390f35b34801561054a57600080fd5b50610565600480360381019061056091906146ff565b611279565b005b34801561057357600080fd5b5061057c611352565b60405161058991906145ce565b60405180910390f35b34801561059e57600080fd5b506105a7611396565b005b3480156105b557600080fd5b506105be611401565b6040516105cb9190614748565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f691906144cf565b611418565b604051610608919061452a565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190614389565b6114cb565b005b34801561064657600080fd5b50610661600480360381019061065c91906146ff565b61156a565b60405161066e919061452a565b60405180910390f35b34801561068357600080fd5b5061068c61158a565b604051610699919061452a565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c491906146ff565b61159d565b005b3480156106d757600080fd5b506106f260048036038101906106ed91906146ff565b611676565b6040516106ff919061452a565b60405180910390f35b34801561071457600080fd5b5061071d611696565b60405161072a91906145ce565b60405180910390f35b34801561073f57600080fd5b5061075a600480360381019061075591906146ff565b61169e565b60405161076791906146e4565b60405180910390f35b34801561077c57600080fd5b50610797600480360381019061079291906146ff565b611ba1565b6040516107a491906145ce565b60405180910390f35b3480156107b957600080fd5b506107c2611bea565b6040516107cf91906145ce565b60405180910390f35b3480156107e457600080fd5b506107ed611bf0565b6040516107fa91906145ce565b60405180910390f35b34801561080f57600080fd5b50610818611bf6565b60405161082591906145ce565b60405180910390f35b34801561083a57600080fd5b5061085560048036038101906108509190614615565b611bfc565b005b34801561086357600080fd5b5061087e600480360381019061087991906146ff565b611cec565b60405161088b919061452a565b60405180910390f35b3480156108a057600080fd5b506108a9611d0c565b6040516108b691906146e4565b60405180910390f35b3480156108cb57600080fd5b506108d4611d35565b005b3480156108e257600080fd5b506108eb611e8a565b6040516108f891906145ce565b60405180910390f35b34801561090d57600080fd5b50610916611e90565b604051610923919061444f565b60405180910390f35b34801561093857600080fd5b50610941611f22565b60405161094e91906145ce565b60405180910390f35b34801561096357600080fd5b5061096c611f2c565b60405161097991906145ce565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190614763565b611f32565b005b3480156109b757600080fd5b506109d260048036038101906109cd91906144cf565b611ff6565b6040516109df919061452a565b60405180910390f35b3480156109f457600080fd5b50610a0f6004803603810190610a0a91906146a8565b6120c3565b005b348015610a1d57600080fd5b50610a386004803603810190610a3391906146ff565b612175565b604051610a45919061452a565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906144cf565b6121cb565b604051610a82919061452a565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad9190614763565b6121ea565b005b348015610ac057600080fd5b50610adb6004803603810190610ad69190614615565b6122ae565b005b348015610ae957600080fd5b50610b046004803603810190610aff91906147a3565b61239e565b005b348015610b1257600080fd5b50610b2d6004803603810190610b2891906147f6565b6124b7565b005b348015610b3b57600080fd5b50610b566004803603810190610b5191906146a8565b612597565b005b348015610b6457600080fd5b50610b6d612680565b604051610b7a91906146e4565b60405180910390f35b348015610b8f57600080fd5b50610baa6004803603810190610ba591906146ff565b6126a6565b604051610bb7919061452a565b60405180910390f35b348015610bcc57600080fd5b50610bd56126c6565b604051610be2919061486a565b60405180910390f35b348015610bf757600080fd5b50610c006126ec565b604051610c0d919061452a565b60405180910390f35b348015610c2257600080fd5b50610c3d6004803603810190610c389190614885565b6126ff565b604051610c4a91906145ce565b60405180910390f35b348015610c5f57600080fd5b50610c7a6004803603810190610c759190614389565b612786565b005b348015610c8857600080fd5b50610ca36004803603810190610c9e9190614615565b612825565b005b348015610cb157600080fd5b50610cba612915565b604051610cc791906145ce565b60405180910390f35b348015610cdc57600080fd5b50610cf76004803603810190610cf29190614389565b61291b565b005b348015610d0557600080fd5b50610d206004803603810190610d1b91906146ff565b6129ba565b005b348015610d2e57600080fd5b50610d37612b7b565b604051610d44919061452a565b60405180910390f35b348015610d5957600080fd5b50610d746004803603810190610d6f9190614615565b612b8e565b005b348015610d8257600080fd5b50610d8b612c7e565b604051610d98919061452a565b60405180910390f35b610da9612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90614911565b60405180910390fd5b6001600760006101000a81548160ff02191690831515021790555043600581905550565b610e62612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690614911565b60405180910390fd5b8060068190555050565b606060028054610f0890614960565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3490614960565b8015610f815780601f10610f5657610100808354040283529160200191610f81565b820191906000526020600020905b815481529060010190602001808311610f6457829003601f168201915b5050505050905090565b6000610f9f610f98612cef565b8484612cf7565b6001905092915050565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b610fe1612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590614911565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110d6848484612ec0565b50611198846110e3612cef565b611193856040518060600160405280602881526020016153e860289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611149612cef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b612cf7565b600190509392505050565b6111ab612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90614911565b60405180910390fd5b80602360176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b611281612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590614911565b60405180910390fd5b80602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006113916113807f000000000000000000000000000000000000000000000000000000000000dead611ba1565b601e5461375690919063ffffffff16565b905090565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113fe573d6000803e3d6000fd5b50565b6000600460009054906101000a900460ff16905090565b60006114c1611425612cef565b846114bc8560096000611436612cef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b612cf7565b6001905092915050565b6114d3612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790614911565b60405180910390fd5b8060218190555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b602360159054906101000a900460ff1681565b6115a5612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162990614911565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006116a8612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90614911565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a991906149a6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183491906149a6565b6040518363ffffffff1660e01b81526004016118519291906149d3565b602060405180830381865afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906149a6565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a25578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193791906149a6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c291906149a6565b6040518363ffffffff1660e01b81526004016119df9291906149d3565b6020604051808303816000875af11580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2291906149a6565b91505b81602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b60205481565b601c5481565b611c04612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890614911565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d3d612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190614911565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055481565b606060038054611e9f90614960565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecb90614960565b8015611f185780601f10611eed57610100808354040283529160200191611f18565b820191906000526020600020905b815481529060010190602001808311611efb57829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b611f3a612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90614911565b60405180910390fd5b8160138190555080601481905550611fec601454601354612c9190919063ffffffff16565b601c819055505050565b60006120b9612003612cef565b846120b485604051806060016040528060258152602001615410602591396009600061202d612cef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b612cf7565b6001905092915050565b6120cb612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90614911565b60405180910390fd5b80602360166101000a81548160ff02191690831515021790555050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006121df6121d8612cef565b8484612ec0565b506001905092915050565b6121f2612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227690614911565b60405180910390fd5b81601081905550806011819055506122a4601154601054612c9190919063ffffffff16565b601b819055505050565b6122b6612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a90614911565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123a6612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242a90614911565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b815260040161246e9291906149fc565b6020604051808303816000875af115801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b19190614a3a565b50505050565b6124bf612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390614911565b60405180910390fd5b82601781905550816018819055508060198190555061258c60195461257e601854601754612c9190919063ffffffff16565b612c9190919063ffffffff16565b601d81905550505050565b61259f612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390614911565b60405180910390fd5b80602360156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612675919061452a565b60405180910390a150565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360169054906101000a900460ff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61278e612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281290614911565b60405180910390fd5b80601f8190555050565b61282d612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b190614911565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612923612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790614911565b60405180910390fd5b8060208190555050565b6129c2612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4690614911565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab590614ad9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900460ff1681565b612b96612cef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1a90614911565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602360179054906101000a900460ff1681565b6000808284612ca09190614b28565b905083811015612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90614bca565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90614c5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc90614cee565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612eb391906145ce565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2790614d80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9690614e12565b60405180910390fd5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561302c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302390614e7e565b60405180910390fd5b602360149054906101000a900460ff16156130535761304c8484846137a0565b90506136eb565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130f75750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561310557506000601654115b1561314d57600061313460165461312660648661397390919063ffffffff16565b6139bd90919063ffffffff16565b9050613149818461375690919063ffffffff16565b9250505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131f15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323c57601f5482111561323b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323290614f10565b60405180910390fd5b5b600061324730611ba1565b90506000602154821015905080801561326d5750602360149054906101000a900460ff16155b80156132c35750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132db5750602360159054906101000a900460ff165b1561330557602360169054906101000a900460ff16156132fb5760215491505b61330482613a37565b5b61338e846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134745750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561348157849050613554565b600760009054906101000a900460ff166134d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c790614f7c565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603613546576006546005546135359190614b28565b43116135455761354486613c28565b5b5b613551878787613cd5565b90505b602360179054906101000a900460ff1680156135ba5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135e9576020546135dd826135cf89611ba1565b612c9190919063ffffffff16565b11156135e857600080fd5b5b61363b81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136db91906145ce565b60405180910390a3600193505050505b9392505050565b600083831115829061373a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613731919061444f565b60405180910390fd5b50600083856137499190614f9c565b9050809150509392505050565b600061379883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136f2565b905092915050565b600061382b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136f29092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c082600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161396091906145ce565b60405180910390a3600190509392505050565b60006139b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f24565b905092915050565b60008083036139cf5760009050613a31565b600082846139dd9190614fd0565b90508284826139ec9190615059565b14613a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a23906150fc565b60405180910390fd5b809150505b92915050565b6001602360146101000a81548160ff0219169083151502179055506000613a906002613a82601d54613a74601754876139bd90919063ffffffff16565b61397390919063ffffffff16565b61397390919063ffffffff16565b90506000613aa7828461375690919063ffffffff16565b9050613ab281613f87565b60004790506000613ae3613ad2600260175461397390919063ffffffff16565b601d5461375690919063ffffffff16565b90506000613b216002613b1384613b05601754886139bd90919063ffffffff16565b61397390919063ffffffff16565b61397390919063ffffffff16565b90506000613b4c83613b3e601954876139bd90919063ffffffff16565b61397390919063ffffffff16565b90506000613b7582613b67858861375690919063ffffffff16565b61375690919063ffffffff16565b90506000811115613bad57613bac600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614203565b5b6000821115613be357613be2602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614203565b5b600083118015613bf35750600087115b15613c0357613c02878461424e565b5b505050505050506000602360146101000a81548160ff02191690831515021790555050565b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613cd2576001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b60008060009050600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d7157613d6a6064613d5c613d4d600f54601b54612c9190919063ffffffff16565b866139bd90919063ffffffff16565b61397390919063ffffffff16565b9050613e03565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e0257613dff6064613df1613de2600f54601c54612c9190919063ffffffff16565b866139bd90919063ffffffff16565b61397390919063ffffffff16565b90505b5b6000811115613f0757613e5e81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9190919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613efe91906145ce565b60405180910390a35b613f1a818461375690919063ffffffff16565b9150509392505050565b60008083118290613f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f62919061444f565b60405180910390fd5b5060008385613f7a9190615059565b9050809150509392505050565b6000600267ffffffffffffffff811115613fa457613fa361511c565b5b604051908082528060200260200182016040528015613fd25781602001602082028036833780820191505090505b5090503081600081518110613fea57613fe961514b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b591906149a6565b816001815181106140c9576140c861514b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061413030602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cf7565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614194959493929190615273565b600060405180830381600087803b1580156141ae57600080fd5b505af11580156141c2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516141f79291906152cd565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614249573d6000803e3d6000fd5b505050565b61427b30602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612cf7565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016143049695949392919061531e565b60606040518083038185885af1158015614322573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906143479190615394565b5050505050565b600080fd5b6000819050919050565b61436681614353565b811461437157600080fd5b50565b6000813590506143838161435d565b92915050565b60006020828403121561439f5761439e61434e565b5b60006143ad84828501614374565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143f05780820151818401526020810190506143d5565b838111156143ff576000848401525b50505050565b6000601f19601f8301169050919050565b6000614421826143b6565b61442b81856143c1565b935061443b8185602086016143d2565b61444481614405565b840191505092915050565b600060208201905081810360008301526144698184614416565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061449c82614471565b9050919050565b6144ac81614491565b81146144b757600080fd5b50565b6000813590506144c9816144a3565b92915050565b600080604083850312156144e6576144e561434e565b5b60006144f4858286016144ba565b925050602061450585828601614374565b9150509250929050565b60008115159050919050565b6145248161450f565b82525050565b600060208201905061453f600083018461451b565b92915050565b6000819050919050565b600061456a61456561456084614471565b614545565b614471565b9050919050565b600061457c8261454f565b9050919050565b600061458e82614571565b9050919050565b61459e81614583565b82525050565b60006020820190506145b96000830184614595565b92915050565b6145c881614353565b82525050565b60006020820190506145e360008301846145bf565b92915050565b6145f28161450f565b81146145fd57600080fd5b50565b60008135905061460f816145e9565b92915050565b6000806040838503121561462c5761462b61434e565b5b600061463a858286016144ba565b925050602061464b85828601614600565b9150509250929050565b60008060006060848603121561466e5761466d61434e565b5b600061467c868287016144ba565b935050602061468d868287016144ba565b925050604061469e86828701614374565b9150509250925092565b6000602082840312156146be576146bd61434e565b5b60006146cc84828501614600565b91505092915050565b6146de81614491565b82525050565b60006020820190506146f960008301846146d5565b92915050565b6000602082840312156147155761471461434e565b5b6000614723848285016144ba565b91505092915050565b600060ff82169050919050565b6147428161472c565b82525050565b600060208201905061475d6000830184614739565b92915050565b6000806040838503121561477a5761477961434e565b5b600061478885828601614374565b925050602061479985828601614374565b9150509250929050565b6000806000606084860312156147bc576147bb61434e565b5b60006147ca868287016144ba565b93505060206147db86828701614374565b92505060406147ec868287016144ba565b9150509250925092565b60008060006060848603121561480f5761480e61434e565b5b600061481d86828701614374565b935050602061482e86828701614374565b925050604061483f86828701614374565b9150509250925092565b600061485482614471565b9050919050565b61486481614849565b82525050565b600060208201905061487f600083018461485b565b92915050565b6000806040838503121561489c5761489b61434e565b5b60006148aa858286016144ba565b92505060206148bb858286016144ba565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148fb6020836143c1565b9150614906826148c5565b602082019050919050565b6000602082019050818103600083015261492a816148ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061497857607f821691505b60208210810361498b5761498a614931565b5b50919050565b6000815190506149a0816144a3565b92915050565b6000602082840312156149bc576149bb61434e565b5b60006149ca84828501614991565b91505092915050565b60006040820190506149e860008301856146d5565b6149f560208301846146d5565b9392505050565b6000604082019050614a1160008301856146d5565b614a1e60208301846145bf565b9392505050565b600081519050614a34816145e9565b92915050565b600060208284031215614a5057614a4f61434e565b5b6000614a5e84828501614a25565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ac36026836143c1565b9150614ace82614a67565b604082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b3382614353565b9150614b3e83614353565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b7357614b72614af9565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614bb4601b836143c1565b9150614bbf82614b7e565b602082019050919050565b60006020820190508181036000830152614be381614ba7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c466024836143c1565b9150614c5182614bea565b604082019050919050565b60006020820190508181036000830152614c7581614c39565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cd86022836143c1565b9150614ce382614c7c565b604082019050919050565b60006020820190508181036000830152614d0781614ccb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d6a6025836143c1565b9150614d7582614d0e565b604082019050919050565b60006020820190508181036000830152614d9981614d5d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614dfc6023836143c1565b9150614e0782614da0565b604082019050919050565b60006020820190508181036000830152614e2b81614def565b9050919050565b7f62636c6973746564206164647265737300000000000000000000000000000000600082015250565b6000614e686010836143c1565b9150614e7382614e32565b602082019050919050565b60006020820190508181036000830152614e9781614e5b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614efa6028836143c1565b9150614f0582614e9e565b604082019050919050565b60006020820190508181036000830152614f2981614eed565b9050919050565b7f53776170206e6f74206f70656e00000000000000000000000000000000000000600082015250565b6000614f66600d836143c1565b9150614f7182614f30565b602082019050919050565b60006020820190508181036000830152614f9581614f59565b9050919050565b6000614fa782614353565b9150614fb283614353565b925082821015614fc557614fc4614af9565b5b828203905092915050565b6000614fdb82614353565b9150614fe683614353565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561501f5761501e614af9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061506482614353565b915061506f83614353565b92508261507f5761507e61502a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150e66021836143c1565b91506150f18261508a565b604082019050919050565b60006020820190508181036000830152615115816150d9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061519f61519a6151958461517a565b614545565b614353565b9050919050565b6151af81615184565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151ea81614491565b82525050565b60006151fc83836151e1565b60208301905092915050565b6000602082019050919050565b6000615220826151b5565b61522a81856151c0565b9350615235836151d1565b8060005b8381101561526657815161524d88826151f0565b975061525883615208565b925050600181019050615239565b5085935050505092915050565b600060a08201905061528860008301886145bf565b61529560208301876151a6565b81810360408301526152a78186615215565b90506152b660608301856146d5565b6152c360808301846145bf565b9695505050505050565b60006040820190506152e260008301856145bf565b81810360208301526152f48184615215565b90509392505050565b600061530882614571565b9050919050565b615318816152fd565b82525050565b600060c08201905061533360008301896146d5565b61534060208301886145bf565b61534d60408301876151a6565b61535a60608301866151a6565b615367608083018561530f565b61537460a08301846145bf565b979650505050505050565b60008151905061538e8161435d565b92915050565b6000806000606084860312156153ad576153ac61434e565b5b60006153bb8682870161537f565b93505060206153cc8682870161537f565b92505060406153dd8682870161537f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e477c54409cae1e9654cb7b5834d3d54489863659b1938da6992537e0368926f64736f6c634300080f0033

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

0000000000000000000000007329134075437f9163d4e9abcaa7f27437ae40bf

-----Decoded View---------------
Arg [0] : deployer (address): 0x7329134075437F9163D4E9AbCAA7F27437AE40Bf

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007329134075437f9163d4e9abcaa7f27437ae40bf


Deployed Bytecode Sourcemap

14482:16597:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20591:108;;;;;;;;;;;;;:::i;:::-;;25194:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18520:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20077:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16356:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18797:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22286:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24629:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22165:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14954:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22818:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23271:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19814:110;;;;;;;;;;;;;:::i;:::-;;18706:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19183:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22539:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15346:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16471:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22671:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15175:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6547:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23545:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18905:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16144:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16215:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15977:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20707:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15291:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5904:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6129:155;;;;;;;;;;;;;:::i;:::-;;14731:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18611:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19686:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16021:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21395:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23134:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24950:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24454:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21126:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25277:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19932:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21676:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22955:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16404:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15232:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14827:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16518:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19032:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22046:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20983:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15934:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22429:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6292:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14792:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20844:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16570:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20591:108;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20648:4:::1;20637:8;;:15;;;;;;;;;;;;;;;;;;20679:12;20663:13;:28;;;;20591:108::o:0;25194:75::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25258:3:::1;25250:5;:11;;;;25194:75:::0;:::o;18520:83::-;18557:13;18590:5;18583:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18520:83;:::o;20077:161::-;20152:4;20169:39;20178:12;:10;:12::i;:::-;20192:7;20201:6;20169:8;:39::i;:::-;20226:4;20219:11;;20077:161;;;;:::o;16356:41::-;;;;;;;;;;;;;:::o;18797:100::-;18850:7;18877:12;;18870:19;;18797:100;:::o;22286:135::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22407:6:::1;22377:19;:27;22397:6;22377:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22286:135:::0;;:::o;24629:313::-;24727:4;24744:36;24754:6;24762:9;24773:6;24744:9;:36::i;:::-;;24791:121;24800:6;24808:12;:10;:12::i;:::-;24822:89;24860:6;24822:89;;;;;;;;;;;;;;;;;:11;:19;24834:6;24822:19;;;;;;;;;;;;;;;:33;24842:12;:10;:12::i;:::-;24822:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24791:8;:121::i;:::-;24930:4;24923:11;;24629:313;;;;;:::o;22165:113::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22262:8:::1;22243:16;;:27;;;;;;;;;;;;;;;;;;22165:113:::0;:::o;14954:81::-;;;:::o;22818:129::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22928:10:::1;22900:17;;:39;;;;;;;;;;;;;;;;;;22818:129:::0;:::o;23271:128::-;23324:7;23351:40;23368:22;23378:11;23368:9;:22::i;:::-;23351:12;;:16;;:40;;;;:::i;:::-;23344:47;;23271:128;:::o;19814:110::-;19866:17;;;;;;;;;;;19858:35;;:58;19894:21;19858:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19814:110::o;18706:83::-;18747:5;18772:9;;;;;;;;;;;18765:16;;18706:83;:::o;19183:218::-;19271:4;19288:83;19297:12;:10;:12::i;:::-;19311:7;19320:50;19359:10;19320:11;:25;19332:12;:10;:12::i;:::-;19320:25;;;;;;;;;;;;;;;:34;19346:7;19320:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19288:8;:83::i;:::-;19389:4;19382:11;;19183:218;;;;:::o;22539:124::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22647:8:::1;22621:23;:34;;;;22539:124:::0;:::o;15346:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16471:40::-;;;;;;;;;;;;;:::o;22671:139::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22791:10:::1;22758:22;;:44;;;;;;;;;;;;;;;;;;22671:139:::0;:::o;15175:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6547:90::-;6587:7;6614:15;6607:22;;6547:90;:::o;23545:807::-;23625:22;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23662:35:::1;23719:16;23662:74;;23785:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23767:53;;;23829:4;23836:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23767:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23750:110;;23902:1;23876:28;;:14;:28;;::::0;23873:225:::1;;23990:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23972:74;;;24055:4;24062:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23972:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23955:131;;23873:225;24124:14;24110:11;;:28;;;;;;;;;;;;;;;;;;24190:16;24172:15;;:34;;;;;;;;;;;;;;;;;;24288:4;24244:19;:41;24272:11;;;;;;;;;;;24244:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24340:4;24303:12;:34;24324:11;;;;;;;;;;;24303:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23649:703;23545:807:::0;;;:::o;18905:119::-;18971:7;18998:9;:18;19008:7;18998:18;;;;;;;;;;;;;;;;18991:25;;18905:119;;;:::o;16144:63::-;;;;:::o;16215:61::-;;;;:::o;15977:37::-;;;;:::o;20707:129::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20820:8:::1;20796:12;:21;20809:7;20796:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20707:129:::0;;:::o;15291:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5904:79::-;5942:7;5969:6;;;;;;;;;;;5962:13;;5904:79;:::o;6129:155::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6233:6:::1;6196:45;;6217:6;::::0;::::1;;;;;;;;6196:45;;;;;;;;;;;;6269:6;6252;::::0;:24:::1;;;;;;;;;;;;;;;;;;6129:155::o:0;14731:25::-;;;;:::o;18611:87::-;18650:13;18683:7;18676:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18611:87;:::o;19686:120::-;19748:7;19775:23;;19768:30;;19686:120;:::o;16021:43::-;;;;:::o;21395:269::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21519:15:::1;21499:17;:35;;;;21565:15;21545:17;:35;;;;21616:40;21638:17;;21616;;:21;;:40;;;;:::i;:::-;21595:18;:61;;;;21395:269:::0;;:::o;19409:::-;19502:4;19519:129;19528:12;:10;:12::i;:::-;19542:7;19551:96;19590:15;19551:96;;;;;;;;;;;;;;;;;:11;:25;19563:12;:10;:12::i;:::-;19551:25;;;;;;;;;;;;;;;:34;19577:7;19551:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19519:8;:129::i;:::-;19666:4;19659:11;;19409:269;;;;:::o;23134:125::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23243:8:::1;23215:25;;:36;;;;;;;;;;;;;;;;;;23134:125:::0;:::o;24950:107::-;25005:4;25029:11;:20;25041:7;25029:20;;;;;;;;;;;;;;;;;;;;;;;;;25022:27;;24950:107;;;:::o;24454:167::-;24532:4;24549:42;24559:12;:10;:12::i;:::-;24573:9;24584:6;24549:9;:42::i;:::-;;24609:4;24602:11;;24454:167;;;;:::o;21126:261::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21248:15:::1;21229:16;:34;;;;21293:15;21274:16;:34;;;;21341:38;21362:16;;21341;;:20;;:38;;;;:::i;:::-;21321:17;:58;;;;21126:261:::0;;:::o;25277:116::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25381:4:::1;25356:11;:22;25368:9;25356:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25277:116:::0;;:::o;19932:135::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20032:5:::1;20025:22;;;20048:2;20052:6;20025:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19932:135:::0;;;:::o;21676:358::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21835:17:::1;21817:15;:35;;;;21881:17;21863:15;:35;;;;21922:12;21909:10;:25;;;;21974:52;22015:10;;21974:36;21994:15;;21974;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;21947:24;:79;;;;21676:358:::0;;;:::o;22955:171::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23056:8:::1;23032:21;;:32;;;;;;;;;;;;;;;;;;23080:38;23109:8;23080:38;;;;;;:::i;:::-;;;;;;;;22955:171:::0;:::o;16404:26::-;;;;;;;;;;;;;:::o;15232:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14827:99::-;;;;;;;;;;;;;:::o;16518:45::-;;;;;;;;;;;;;:::o;19032:143::-;19113:7;19140:11;:18;19152:5;19140:18;;;;;;;;;;;;;;;:27;19159:7;19140:27;;;;;;;;;;;;;;;;19133:34;;19032:143;;;;:::o;22046:111::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22138:11:::1;22123:12;:26;;;;22046:111:::0;:::o;20983:135::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21102:8:::1;21073:17;:26;21091:7;21073:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20983:135:::0;;:::o;15934:36::-;;;;:::o;22429:102::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22515:8:::1;22501:10;:22;;;;22429:102:::0;:::o;6292:244::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6401:1:::1;6381:22;;:8;:22;;::::0;6373:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6491:8;6462:38;;6483:6;::::0;::::1;;;;;;;;6462:38;;;;;;;;;;;;6520:8;6511:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6292:244:::0;:::o;14792:28::-;;;;;;;;;;;;;:::o;20844:127::-;6048:12;:10;:12::i;:::-;6038:22;;:6;;;;;;;;;;:22;;;6030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20957:6:::1;20931:15;:23;20947:6;20931:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20844:127:::0;;:::o;16570:35::-;;;;;;;;;;;;;:::o;1306:181::-;1364:7;1384:9;1400:1;1396;:5;;;;:::i;:::-;1384:17;;1425:1;1420;:6;;1412:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1478:1;1471:8;;;1306:181;;;;:::o;238:115::-;291:15;334:10;319:26;;238:115;:::o;20246:337::-;20356:1;20339:19;;:5;:19;;;20331:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20437:1;20418:21;;:7;:21;;;20410:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20521:6;20491:11;:18;20503:5;20491:18;;;;;;;;;;;;;;;:27;20510:7;20491:27;;;;;;;;;;;;;;;:36;;;;20559:7;20543:32;;20552:5;20543:32;;;20568:6;20543:32;;;;;;:::i;:::-;;;;;;;;20246:337;;;:::o;25401:2410::-;25488:4;25533:1;25515:20;;:6;:20;;;25507:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25617:1;25596:23;;:9;:23;;;25588:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25679:11;:19;25691:6;25679:19;;;;;;;;;;;;;;;;;;;;;;;;;25678:20;25670:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25735:16;;;;;;;;;;;25732:2072;;;25785:41;25800:6;25808:9;25819:6;25785:14;:41::i;:::-;25778:48;;;;25732:2072;25883:17;:25;25901:6;25883:25;;;;;;;;;;;;;;;;;;;;;;;;;25882:26;:59;;;;;25913:17;:28;25931:9;25913:28;;;;;;;;;;;;;;;;;;;;;;;;;25912:29;25882:59;:82;;;;;25963:1;25945:15;;:19;25882:82;25878:249;;;25985:26;26014:36;26034:15;;26014;26025:3;26014:6;:10;;:15;;;;:::i;:::-;:19;;:36;;;;:::i;:::-;25985:65;;26078:33;26089:21;26078:6;:10;;:33;;;;:::i;:::-;26069:42;;25966:161;25878:249;26147:15;:23;26163:6;26147:23;;;;;;;;;;;;;;;;;;;;;;;;;26146:24;:55;;;;;26175:15;:26;26191:9;26175:26;;;;;;;;;;;;;;;;;;;;;;;;;26174:27;26146:55;26143:170;;;26240:12;;26230:6;:22;;26222:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26143:170;26369:28;26400:24;26418:4;26400:9;:24::i;:::-;26369:55;;26439:28;26494:23;;26470:20;:47;;26439:78;;26550:23;:44;;;;;26578:16;;;;;;;;;;;26577:17;26550:44;:69;;;;;26599:12;:20;26612:6;26599:20;;;;;;;;;;;;;;;;;;;;;;;;;26598:21;26550:69;:94;;;;;26623:21;;;;;;;;;;;26550:94;26546:305;;;26682:25;;;;;;;;;;;26679:97;;;26753:23;;26730:46;;26679:97;26795:36;26810:20;26795:14;:36::i;:::-;26546:305;26887:53;26909:6;26887:53;;;;;;;;;;;;;;;;;:9;:17;26897:6;26887:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26867:9;:17;26877:6;26867:17;;;;;;;;;;;;;;;:73;;;;26955:19;26993:17;:25;27011:6;26993:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;27022:17;:28;27040:9;27022:28;;;;;;;;;;;;;;;;;;;;;;;;;26993:57;26989:475;;;27085:6;27071:20;;26989:475;;;27140:8;;;;;;;;;;;27132:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;27198:11;;;;;;;;;;;27188:21;;:6;:21;;;27185:197;;27270:5;;27254:13;;:21;;;;:::i;:::-;27238:12;:37;27234:129;;27322:17;27329:9;27322:6;:17::i;:::-;27234:129;27185:197;27414:34;27422:6;27430:9;27441:6;27414:7;:34::i;:::-;27400:48;;26989:475;27483:16;;;;;;;;;;;:51;;;;;27504:19;:30;27524:9;27504:30;;;;;;;;;;;;;;;;;;;;;;;;;27503:31;27483:51;27480:133;;;27602:10;;27561:37;27586:11;27561:20;27571:9;27561;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;27553:60;;;;;;27480:133;27653:37;27678:11;27653:9;:20;27663:9;27653:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;27630:9;:20;27640:9;27630:20;;;;;;;;;;;;;;;:60;;;;27729:9;27712:40;;27721:6;27712:40;;;27740:11;27712:40;;;;;;:::i;:::-;;;;;;;;27774:4;27767:11;;;;;25401:2410;;;;;;:::o;1639:192::-;1725:7;1758:1;1753;:6;;1761:12;1745:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1785:9;1801:1;1797;:5;;;;:::i;:::-;1785:17;;1822:1;1815:8;;;1639:192;;;;;:::o;1495:136::-;1553:7;1580:43;1584:1;1587;1580:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1573:50;;1495:136;;;;:::o;27819:330::-;27912:4;27949:53;27971:6;27949:53;;;;;;;;;;;;;;;;;:9;:17;27959:6;27949:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27929:9;:17;27939:6;27929:17;;;;;;;;;;;;;;;:73;;;;28036:32;28061:6;28036:9;:20;28046:9;28036:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;28013:9;:20;28023:9;28013:20;;;;;;;;;;;;;;;:55;;;;28101:9;28084:35;;28093:6;28084:35;;;28112:6;28084:35;;;;;;:::i;:::-;;;;;;;;28137:4;28130:11;;27819:330;;;;;:::o;2097:132::-;2155:7;2182:39;2186:1;2189;2182:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2175:46;;2097:132;;;;:::o;1839:250::-;1897:7;1926:1;1921;:6;1917:47;;1951:1;1944:8;;;;1917:47;1976:9;1992:1;1988;:5;;;;:::i;:::-;1976:17;;2021:1;2016;2012;:5;;;;:::i;:::-;:10;2004:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2080:1;2073:8;;;1839:250;;;;;:::o;28157:1048::-;17047:4;17028:16;;:23;;;;;;;;;;;;;;;;;;28239:19:::1;28261:65;28324:1;28261:58;28294:24;;28261:28;28273:15;;28261:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;28239:87;;28337:21;28361:24;28373:11;28361:7;:11;;:24;;;;:::i;:::-;28337:48;;28398:31;28415:13;28398:16;:31::i;:::-;28440:22;28465:21;28440:46;;28499:19;28521:52;28550:22;28570:1;28550:15;;:19;;:22;;;;:::i;:::-;28521:24;;:28;;:52;;;;:::i;:::-;28499:74;;28594:26;28623:59;28680:1;28623:52;28663:11;28623:35;28642:15;;28623:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;28594:88;;28693:21;28717:47;28752:11;28717:30;28736:10;;28717:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;28693:71;;28775:26;28804:57;28847:13;28804:38;28823:18;28804:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;28775:86;;28898:1;28877:18;:22;28874:104;;;28914:64;28935:22;;;;;;;;;;;28959:18;28914:20;:64::i;:::-;28874:104;29010:1;28994:13;:17;28991:89;;;29026:54;29047:17;;;;;;;;;;;29066:13;29026:20;:54::i;:::-;28991:89;29117:1;29096:18;:22;:41;;;;;29136:1;29122:11;:15;29096:41;29093:104;;;29152:45;29165:11;29178:18;29152:12;:45::i;:::-;29093:104;28218:987;;;;;;;17093:5:::0;17074:16;;:24;;;;;;;;;;;;;;;;;;28157:1048;:::o;25065:121::-;25125:11;:22;25137:9;25125:22;;;;;;;;;;;;;;;;;;;;;;;;;25120:58;;25174:4;25149:11;:22;25161:9;25149:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25120:58;25065:121;:::o;30422:648::-;30508:7;30538:17;30558:1;30538:21;;30583:12;:20;30596:6;30583:20;;;;;;;;;;;;;;;;;;;;;;;;;30580:249;;;30632:51;30679:3;30632:42;30643:30;30665:7;;30643:17;;:21;;:30;;;;:::i;:::-;30632:6;:10;;:42;;;;:::i;:::-;:46;;:51;;;;:::i;:::-;30620:63;;30580:249;;;30713:12;:23;30726:9;30713:23;;;;;;;;;;;;;;;;;;;;;;;;;30710:119;;;30765:52;30813:3;30765:43;30776:31;30799:7;;30776:18;;:22;;:31;;;;:::i;:::-;30765:6;:10;;:43;;;;:::i;:::-;:47;;:52;;;;:::i;:::-;30753:64;;30710:119;30580:249;30864:1;30852:9;:13;30849:173;;;30909:39;30938:9;30909;:24;30927:4;30909:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;30882:9;:24;30900:4;30882:24;;;;;;;;;;;;;;;:66;;;;30993:4;30968:42;;30977:6;30968:42;;;31000:9;30968:42;;;;;;:::i;:::-;;;;;;;;30849:173;31041:21;31052:9;31041:6;:10;;:21;;;;:::i;:::-;31034:28;;;30422:648;;;;;:::o;2237:278::-;2323:7;2355:1;2351;:5;2358:12;2343:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2382:9;2398:1;2394;:5;;;;:::i;:::-;2382:17;;2506:1;2499:8;;;2237:278;;;;;:::o;29217:666::-;29343:21;29381:1;29367:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29343:40;;29412:4;29394;29399:1;29394:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29438:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29428:4;29433:1;29428:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29473:62;29490:4;29505:15;;;;;;;;;;;29523:11;29473:8;:62::i;:::-;29574:15;;;;;;;;;;;:66;;;29655:11;29681:1;29725:4;29752;29788:15;29574:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29840:35;29857:11;29870:4;29840:35;;;;;;;:::i;:::-;;;;;;;;29272:611;29217:666;:::o;23407:126::-;23499:9;:18;;:26;23518:6;23499:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23407:126;;:::o;29891:523::-;30039:62;30056:4;30071:15;;;;;;;;;;;30089:11;30039:8;:62::i;:::-;30144:15;;;;;;;;;;;:31;;;30183:9;30216:4;30236:11;30262:1;30305;30348:17;;;;;;;;;;;30380:15;30144:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29891:523;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:116::-;5229:21;5244:5;5229:21;:::i;:::-;5222:5;5219:32;5209:60;;5265:1;5262;5255:12;5209:60;5159:116;:::o;5281:133::-;5324:5;5362:6;5349:20;5340:29;;5378:30;5402:5;5378:30;:::i;:::-;5281:133;;;;:::o;5420:468::-;5485:6;5493;5542:2;5530:9;5521:7;5517:23;5513:32;5510:119;;;5548:79;;:::i;:::-;5510:119;5668:1;5693:53;5738:7;5729:6;5718:9;5714:22;5693:53;:::i;:::-;5683:63;;5639:117;5795:2;5821:50;5863:7;5854:6;5843:9;5839:22;5821:50;:::i;:::-;5811:60;;5766:115;5420:468;;;;;:::o;5894:619::-;5971:6;5979;5987;6036:2;6024:9;6015:7;6011:23;6007:32;6004:119;;;6042:79;;:::i;:::-;6004:119;6162:1;6187:53;6232:7;6223:6;6212:9;6208:22;6187:53;:::i;:::-;6177:63;;6133:117;6289:2;6315:53;6360:7;6351:6;6340:9;6336:22;6315:53;:::i;:::-;6305:63;;6260:118;6417:2;6443:53;6488:7;6479:6;6468:9;6464:22;6443:53;:::i;:::-;6433:63;;6388:118;5894:619;;;;;:::o;6519:323::-;6575:6;6624:2;6612:9;6603:7;6599:23;6595:32;6592:119;;;6630:79;;:::i;:::-;6592:119;6750:1;6775:50;6817:7;6808:6;6797:9;6793:22;6775:50;:::i;:::-;6765:60;;6721:114;6519:323;;;;:::o;6848:118::-;6935:24;6953:5;6935:24;:::i;:::-;6930:3;6923:37;6848:118;;:::o;6972:222::-;7065:4;7103:2;7092:9;7088:18;7080:26;;7116:71;7184:1;7173:9;7169:17;7160:6;7116:71;:::i;:::-;6972:222;;;;:::o;7200:329::-;7259:6;7308:2;7296:9;7287:7;7283:23;7279:32;7276:119;;;7314:79;;:::i;:::-;7276:119;7434:1;7459:53;7504:7;7495:6;7484:9;7480:22;7459:53;:::i;:::-;7449:63;;7405:117;7200:329;;;;:::o;7535:86::-;7570:7;7610:4;7603:5;7599:16;7588:27;;7535:86;;;:::o;7627:112::-;7710:22;7726:5;7710:22;:::i;:::-;7705:3;7698:35;7627:112;;:::o;7745:214::-;7834:4;7872:2;7861:9;7857:18;7849:26;;7885:67;7949:1;7938:9;7934:17;7925:6;7885:67;:::i;:::-;7745:214;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:619::-;8522:6;8530;8538;8587:2;8575:9;8566:7;8562:23;8558:32;8555:119;;;8593:79;;:::i;:::-;8555:119;8713:1;8738:53;8783:7;8774:6;8763:9;8759:22;8738:53;:::i;:::-;8728:63;;8684:117;8840:2;8866:53;8911:7;8902:6;8891:9;8887:22;8866:53;:::i;:::-;8856:63;;8811:118;8968:2;8994:53;9039:7;9030:6;9019:9;9015:22;8994:53;:::i;:::-;8984:63;;8939:118;8445:619;;;;;:::o;9070:::-;9147:6;9155;9163;9212:2;9200:9;9191:7;9187:23;9183:32;9180:119;;;9218:79;;:::i;:::-;9180:119;9338:1;9363:53;9408:7;9399:6;9388:9;9384:22;9363:53;:::i;:::-;9353:63;;9309:117;9465:2;9491:53;9536:7;9527:6;9516:9;9512:22;9491:53;:::i;:::-;9481:63;;9436:118;9593:2;9619:53;9664:7;9655:6;9644:9;9640:22;9619:53;:::i;:::-;9609:63;;9564:118;9070:619;;;;;:::o;9695:104::-;9740:7;9769:24;9787:5;9769:24;:::i;:::-;9758:35;;9695:104;;;:::o;9805:142::-;9908:32;9934:5;9908:32;:::i;:::-;9903:3;9896:45;9805:142;;:::o;9953:254::-;10062:4;10100:2;10089:9;10085:18;10077:26;;10113:87;10197:1;10186:9;10182:17;10173:6;10113:87;:::i;:::-;9953:254;;;;:::o;10213:474::-;10281:6;10289;10338:2;10326:9;10317:7;10313:23;10309:32;10306:119;;;10344:79;;:::i;:::-;10306:119;10464:1;10489:53;10534:7;10525:6;10514:9;10510:22;10489:53;:::i;:::-;10479:63;;10435:117;10591:2;10617:53;10662:7;10653:6;10642:9;10638:22;10617:53;:::i;:::-;10607:63;;10562:118;10213:474;;;;;:::o;10693:182::-;10833:34;10829:1;10821:6;10817:14;10810:58;10693:182;:::o;10881:366::-;11023:3;11044:67;11108:2;11103:3;11044:67;:::i;:::-;11037:74;;11120:93;11209:3;11120:93;:::i;:::-;11238:2;11233:3;11229:12;11222:19;;10881:366;;;:::o;11253:419::-;11419:4;11457:2;11446:9;11442:18;11434:26;;11506:9;11500:4;11496:20;11492:1;11481:9;11477:17;11470:47;11534:131;11660:4;11534:131;:::i;:::-;11526:139;;11253:419;;;:::o;11678:180::-;11726:77;11723:1;11716:88;11823:4;11820:1;11813:15;11847:4;11844:1;11837:15;11864:320;11908:6;11945:1;11939:4;11935:12;11925:22;;11992:1;11986:4;11982:12;12013:18;12003:81;;12069:4;12061:6;12057:17;12047:27;;12003:81;12131:2;12123:6;12120:14;12100:18;12097:38;12094:84;;12150:18;;:::i;:::-;12094:84;11915:269;11864:320;;;:::o;12190:143::-;12247:5;12278:6;12272:13;12263:22;;12294:33;12321:5;12294:33;:::i;:::-;12190:143;;;;:::o;12339:351::-;12409:6;12458:2;12446:9;12437:7;12433:23;12429:32;12426:119;;;12464:79;;:::i;:::-;12426:119;12584:1;12609:64;12665:7;12656:6;12645:9;12641:22;12609:64;:::i;:::-;12599:74;;12555:128;12339:351;;;;:::o;12696:332::-;12817:4;12855:2;12844:9;12840:18;12832:26;;12868:71;12936:1;12925:9;12921:17;12912:6;12868:71;:::i;:::-;12949:72;13017:2;13006:9;13002:18;12993:6;12949:72;:::i;:::-;12696:332;;;;;:::o;13034:::-;13155:4;13193:2;13182:9;13178:18;13170:26;;13206:71;13274:1;13263:9;13259:17;13250:6;13206:71;:::i;:::-;13287:72;13355:2;13344:9;13340:18;13331:6;13287:72;:::i;:::-;13034:332;;;;;:::o;13372:137::-;13426:5;13457:6;13451:13;13442:22;;13473:30;13497:5;13473:30;:::i;:::-;13372:137;;;;:::o;13515:345::-;13582:6;13631:2;13619:9;13610:7;13606:23;13602:32;13599:119;;;13637:79;;:::i;:::-;13599:119;13757:1;13782:61;13835:7;13826:6;13815:9;13811:22;13782:61;:::i;:::-;13772:71;;13728:125;13515:345;;;;:::o;13866:225::-;14006:34;14002:1;13994:6;13990:14;13983:58;14075:8;14070:2;14062:6;14058:15;14051:33;13866:225;:::o;14097:366::-;14239:3;14260:67;14324:2;14319:3;14260:67;:::i;:::-;14253:74;;14336:93;14425:3;14336:93;:::i;:::-;14454:2;14449:3;14445:12;14438:19;;14097:366;;;:::o;14469:419::-;14635:4;14673:2;14662:9;14658:18;14650:26;;14722:9;14716:4;14712:20;14708:1;14697:9;14693:17;14686:47;14750:131;14876:4;14750:131;:::i;:::-;14742:139;;14469:419;;;:::o;14894:180::-;14942:77;14939:1;14932:88;15039:4;15036:1;15029:15;15063:4;15060:1;15053:15;15080:305;15120:3;15139:20;15157:1;15139:20;:::i;:::-;15134:25;;15173:20;15191:1;15173:20;:::i;:::-;15168:25;;15327:1;15259:66;15255:74;15252:1;15249:81;15246:107;;;15333:18;;:::i;:::-;15246:107;15377:1;15374;15370:9;15363:16;;15080:305;;;;:::o;15391:177::-;15531:29;15527:1;15519:6;15515:14;15508:53;15391:177;:::o;15574:366::-;15716:3;15737:67;15801:2;15796:3;15737:67;:::i;:::-;15730:74;;15813:93;15902:3;15813:93;:::i;:::-;15931:2;15926:3;15922:12;15915:19;;15574:366;;;:::o;15946:419::-;16112:4;16150:2;16139:9;16135:18;16127:26;;16199:9;16193:4;16189:20;16185:1;16174:9;16170:17;16163:47;16227:131;16353:4;16227:131;:::i;:::-;16219:139;;15946:419;;;:::o;16371:223::-;16511:34;16507:1;16499:6;16495:14;16488:58;16580:6;16575:2;16567:6;16563:15;16556:31;16371:223;:::o;16600:366::-;16742:3;16763:67;16827:2;16822:3;16763:67;:::i;:::-;16756:74;;16839:93;16928:3;16839:93;:::i;:::-;16957:2;16952:3;16948:12;16941:19;;16600:366;;;:::o;16972:419::-;17138:4;17176:2;17165:9;17161:18;17153:26;;17225:9;17219:4;17215:20;17211:1;17200:9;17196:17;17189:47;17253:131;17379:4;17253:131;:::i;:::-;17245:139;;16972:419;;;:::o;17397:221::-;17537:34;17533:1;17525:6;17521:14;17514:58;17606:4;17601:2;17593:6;17589:15;17582:29;17397:221;:::o;17624:366::-;17766:3;17787:67;17851:2;17846:3;17787:67;:::i;:::-;17780:74;;17863:93;17952:3;17863:93;:::i;:::-;17981:2;17976:3;17972:12;17965:19;;17624:366;;;:::o;17996:419::-;18162:4;18200:2;18189:9;18185:18;18177:26;;18249:9;18243:4;18239:20;18235:1;18224:9;18220:17;18213:47;18277:131;18403:4;18277:131;:::i;:::-;18269:139;;17996:419;;;:::o;18421:224::-;18561:34;18557:1;18549:6;18545:14;18538:58;18630:7;18625:2;18617:6;18613:15;18606:32;18421:224;:::o;18651:366::-;18793:3;18814:67;18878:2;18873:3;18814:67;:::i;:::-;18807:74;;18890:93;18979:3;18890:93;:::i;:::-;19008:2;19003:3;18999:12;18992:19;;18651:366;;;:::o;19023:419::-;19189:4;19227:2;19216:9;19212:18;19204:26;;19276:9;19270:4;19266:20;19262:1;19251:9;19247:17;19240:47;19304:131;19430:4;19304:131;:::i;:::-;19296:139;;19023:419;;;:::o;19448:222::-;19588:34;19584:1;19576:6;19572:14;19565:58;19657:5;19652:2;19644:6;19640:15;19633:30;19448:222;:::o;19676:366::-;19818:3;19839:67;19903:2;19898:3;19839:67;:::i;:::-;19832:74;;19915:93;20004:3;19915:93;:::i;:::-;20033:2;20028:3;20024:12;20017:19;;19676:366;;;:::o;20048:419::-;20214:4;20252:2;20241:9;20237:18;20229:26;;20301:9;20295:4;20291:20;20287:1;20276:9;20272:17;20265:47;20329:131;20455:4;20329:131;:::i;:::-;20321:139;;20048:419;;;:::o;20473:166::-;20613:18;20609:1;20601:6;20597:14;20590:42;20473:166;:::o;20645:366::-;20787:3;20808:67;20872:2;20867:3;20808:67;:::i;:::-;20801:74;;20884:93;20973:3;20884:93;:::i;:::-;21002:2;20997:3;20993:12;20986:19;;20645:366;;;:::o;21017:419::-;21183:4;21221:2;21210:9;21206:18;21198:26;;21270:9;21264:4;21260:20;21256:1;21245:9;21241:17;21234:47;21298:131;21424:4;21298:131;:::i;:::-;21290:139;;21017:419;;;:::o;21442:227::-;21582:34;21578:1;21570:6;21566:14;21559:58;21651:10;21646:2;21638:6;21634:15;21627:35;21442:227;:::o;21675:366::-;21817:3;21838:67;21902:2;21897:3;21838:67;:::i;:::-;21831:74;;21914:93;22003:3;21914:93;:::i;:::-;22032:2;22027:3;22023:12;22016:19;;21675:366;;;:::o;22047:419::-;22213:4;22251:2;22240:9;22236:18;22228:26;;22300:9;22294:4;22290:20;22286:1;22275:9;22271:17;22264:47;22328:131;22454:4;22328:131;:::i;:::-;22320:139;;22047:419;;;:::o;22472:163::-;22612:15;22608:1;22600:6;22596:14;22589:39;22472:163;:::o;22641:366::-;22783:3;22804:67;22868:2;22863:3;22804:67;:::i;:::-;22797:74;;22880:93;22969:3;22880:93;:::i;:::-;22998:2;22993:3;22989:12;22982:19;;22641:366;;;:::o;23013:419::-;23179:4;23217:2;23206:9;23202:18;23194:26;;23266:9;23260:4;23256:20;23252:1;23241:9;23237:17;23230:47;23294:131;23420:4;23294:131;:::i;:::-;23286:139;;23013:419;;;:::o;23438:191::-;23478:4;23498:20;23516:1;23498:20;:::i;:::-;23493:25;;23532:20;23550:1;23532:20;:::i;:::-;23527:25;;23571:1;23568;23565:8;23562:34;;;23576:18;;:::i;:::-;23562:34;23621:1;23618;23614:9;23606:17;;23438:191;;;;:::o;23635:348::-;23675:7;23698:20;23716:1;23698:20;:::i;:::-;23693:25;;23732:20;23750:1;23732:20;:::i;:::-;23727:25;;23920:1;23852:66;23848:74;23845:1;23842:81;23837:1;23830:9;23823:17;23819:105;23816:131;;;23927:18;;:::i;:::-;23816:131;23975:1;23972;23968:9;23957:20;;23635:348;;;;:::o;23989:180::-;24037:77;24034:1;24027:88;24134:4;24131:1;24124:15;24158:4;24155:1;24148:15;24175:185;24215:1;24232:20;24250:1;24232:20;:::i;:::-;24227:25;;24266:20;24284:1;24266:20;:::i;:::-;24261:25;;24305:1;24295:35;;24310:18;;:::i;:::-;24295:35;24352:1;24349;24345:9;24340:14;;24175:185;;;;:::o;24366:220::-;24506:34;24502:1;24494:6;24490:14;24483:58;24575:3;24570:2;24562:6;24558:15;24551:28;24366:220;:::o;24592:366::-;24734:3;24755:67;24819:2;24814:3;24755:67;:::i;:::-;24748:74;;24831:93;24920:3;24831:93;:::i;:::-;24949:2;24944:3;24940:12;24933:19;;24592:366;;;:::o;24964:419::-;25130:4;25168:2;25157:9;25153:18;25145:26;;25217:9;25211:4;25207:20;25203:1;25192:9;25188:17;25181:47;25245:131;25371:4;25245:131;:::i;:::-;25237:139;;24964:419;;;:::o;25389:180::-;25437:77;25434:1;25427:88;25534:4;25531:1;25524:15;25558:4;25555:1;25548:15;25575:180;25623:77;25620:1;25613:88;25720:4;25717:1;25710:15;25744:4;25741:1;25734:15;25761:85;25806:7;25835:5;25824:16;;25761:85;;;:::o;25852:158::-;25910:9;25943:61;25961:42;25970:32;25996:5;25970:32;:::i;:::-;25961:42;:::i;:::-;25943:61;:::i;:::-;25930:74;;25852:158;;;:::o;26016:147::-;26111:45;26150:5;26111:45;:::i;:::-;26106:3;26099:58;26016:147;;:::o;26169:114::-;26236:6;26270:5;26264:12;26254:22;;26169:114;;;:::o;26289:184::-;26388:11;26422:6;26417:3;26410:19;26462:4;26457:3;26453:14;26438:29;;26289:184;;;;:::o;26479:132::-;26546:4;26569:3;26561:11;;26599:4;26594:3;26590:14;26582:22;;26479:132;;;:::o;26617:108::-;26694:24;26712:5;26694:24;:::i;:::-;26689:3;26682:37;26617:108;;:::o;26731:179::-;26800:10;26821:46;26863:3;26855:6;26821:46;:::i;:::-;26899:4;26894:3;26890:14;26876:28;;26731:179;;;;:::o;26916:113::-;26986:4;27018;27013:3;27009:14;27001:22;;26916:113;;;:::o;27065:732::-;27184:3;27213:54;27261:5;27213:54;:::i;:::-;27283:86;27362:6;27357:3;27283:86;:::i;:::-;27276:93;;27393:56;27443:5;27393:56;:::i;:::-;27472:7;27503:1;27488:284;27513:6;27510:1;27507:13;27488:284;;;27589:6;27583:13;27616:63;27675:3;27660:13;27616:63;:::i;:::-;27609:70;;27702:60;27755:6;27702:60;:::i;:::-;27692:70;;27548:224;27535:1;27532;27528:9;27523:14;;27488:284;;;27492:14;27788:3;27781:10;;27189:608;;;27065:732;;;;:::o;27803:831::-;28066:4;28104:3;28093:9;28089:19;28081:27;;28118:71;28186:1;28175:9;28171:17;28162:6;28118:71;:::i;:::-;28199:80;28275:2;28264:9;28260:18;28251:6;28199:80;:::i;:::-;28326:9;28320:4;28316:20;28311:2;28300:9;28296:18;28289:48;28354:108;28457:4;28448:6;28354:108;:::i;:::-;28346:116;;28472:72;28540:2;28529:9;28525:18;28516:6;28472:72;:::i;:::-;28554:73;28622:3;28611:9;28607:19;28598:6;28554:73;:::i;:::-;27803:831;;;;;;;;:::o;28640:483::-;28811:4;28849:2;28838:9;28834:18;28826:26;;28862:71;28930:1;28919:9;28915:17;28906:6;28862:71;:::i;:::-;28980:9;28974:4;28970:20;28965:2;28954:9;28950:18;28943:48;29008:108;29111:4;29102:6;29008:108;:::i;:::-;29000:116;;28640:483;;;;;:::o;29129:134::-;29187:9;29220:37;29251:5;29220:37;:::i;:::-;29207:50;;29129:134;;;:::o;29269:147::-;29364:45;29403:5;29364:45;:::i;:::-;29359:3;29352:58;29269:147;;:::o;29422:823::-;29679:4;29717:3;29706:9;29702:19;29694:27;;29731:71;29799:1;29788:9;29784:17;29775:6;29731:71;:::i;:::-;29812:72;29880:2;29869:9;29865:18;29856:6;29812:72;:::i;:::-;29894:80;29970:2;29959:9;29955:18;29946:6;29894:80;:::i;:::-;29984;30060:2;30049:9;30045:18;30036:6;29984:80;:::i;:::-;30074:81;30150:3;30139:9;30135:19;30126:6;30074:81;:::i;:::-;30165:73;30233:3;30222:9;30218:19;30209:6;30165:73;:::i;:::-;29422:823;;;;;;;;;:::o;30251:143::-;30308:5;30339:6;30333:13;30324:22;;30355:33;30382:5;30355:33;:::i;:::-;30251:143;;;;:::o;30400:663::-;30488:6;30496;30504;30553:2;30541:9;30532:7;30528:23;30524:32;30521:119;;;30559:79;;:::i;:::-;30521:119;30679:1;30704:64;30760:7;30751:6;30740:9;30736:22;30704:64;:::i;:::-;30694:74;;30650:128;30817:2;30843:64;30899:7;30890:6;30879:9;30875:22;30843:64;:::i;:::-;30833:74;;30788:129;30956:2;30982:64;31038:7;31029:6;31018:9;31014:22;30982:64;:::i;:::-;30972:74;;30927:129;30400:663;;;;;:::o

Swarm Source

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