ETH Price: $2,683.16 (+10.25%)
Gas: 1 Gwei

Token

BMarvel Token (BMarvel)
 

Overview

Max Total Supply

1,000,000,000 BMarvel

Holders

13

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
BMarvel

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-27
*/

/**
    * Website : https://www.baby-marvel.com/
    * Twitter : https://twitter.com/BabyMarvel2023
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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 BMarvel is ERC20, Ownable {
    uint256 public buyFee = 5;
    uint256 public sellFee = 25;

    address public marketingWallet = 0xA27e68666C3C9a69FE4f1F1956f56D991D273455;

    bool public walletToWalletTransferWithoutFee = true;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;
    
    address private DEAD = 0x000000000000000000000000000000000000dEaD;

    bool    private swapping;
    uint256 public swapTokensAtAmount;

    bool    public  tradingEnabled;
    uint256 private launchedAt;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isExcludedFromMaxTxLimit;

    bool    public maxTransactionLimitEnabled = true;
    uint256 private maxTransactionRateBuy  = 10; // 10%
    uint256 private maxTransactionRateSell = 10; // 10%

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event FeesUpdated(uint256 buyFee, uint256 sellFee);
    event MarketingWalletChanged(address marketingWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend);
    event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
    event MaxTransactionLimitRatesChanged(uint256 maxTransferRateBuy, uint256 maxTransferRateSell);
    event MaxTransactionLimitStateChanged(bool maxTransactionLimit);

    constructor () ERC20("BMarvel Token", "BMarvel") 
    {       
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(0)] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[DEAD] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[address(this)] = true;
        
        _mint(owner(), 1e9 * (10 ** 9));
        swapTokensAtAmount = totalSupply() / 5000;
    }

    receive() external payable {
  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 30 && _sellFee <= 30, "Max buy fee is 30% and max sell fee is 30%");
        buyFee = _buyFee;
        sellFee = _sellFee;
        emit FeesUpdated(buyFee, sellFee);
    }

    function enableWalletToWalletTransferWithoutFee(bool enable) external onlyOwner {
        require(walletToWalletTransferWithoutFee != enable, "Wallet to wallet transfer without fee is already set to that value");
        walletToWalletTransferWithoutFee = enable;
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner {
        require(_marketingWallet != marketingWallet, "Marketing wallet is already that address");
        require(!isContract(_marketingWallet), "Marketing wallet cannot be a contract");
        marketingWallet = _marketingWallet;
        emit MarketingWalletChanged(marketingWallet);
    }

    function enableTrading() external onlyOwner {
        require(launchedAt == 0, "Trading already enabled");
        launchedAt = block.timestamp;
        tradingEnabled = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        require(
            tradingEnabled ||
            _isExcludedFromFees[from] || 
            _isExcludedFromFees[to],
            "Trading is not enabled yet"
        );

        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) {
            if (_isExcludedFromMaxTxLimit[from] == false
                && _isExcludedFromMaxTxLimit[to] == false
            ) {
                if (from == uniswapV2Pair) {
                    require(amount <= maxTransferAmountBuy(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }else{
                    require(amount <= maxTransferAmountSell(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( canSwap &&
            !swapping &&
            automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            
            if(contractTokenBalance > swapTokensAtAmount * 10){
                contractTokenBalance = swapTokensAtAmount * 10;
            }
            
            swapAndSendMarketing(contractTokenBalance);

            swapping = false;
        }

        bool takeFee = !swapping;

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if(walletToWalletTransferWithoutFee && from != uniswapV2Pair && to != uniswapV2Pair) {
            takeFee = false;
        }

        if(takeFee) {
            uint256 _totalFees;
            if(from == uniswapV2Pair) {
                _totalFees = buyFee;
            } else {
                _totalFees = sellFee;
            }
        	uint256 fees = amount * _totalFees / 100;
        	
        	amount = amount - fees;

            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);

    }

    function swapAndSendMarketing(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;

        sendETH(payable(marketingWallet), newBalance);

        emit SwapAndSendMarketing(tokenAmount, newBalance);
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 100000, "SwapTokensAtAmount must be greater than 0.001% of total supply");
        swapTokensAtAmount = newAmount;
    }

    function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already that state");
        maxTransactionLimitEnabled = enable;
        emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
    
    function maxTransferAmountBuy() public view returns (uint256) {
        return totalSupply() * maxTransactionRateBuy / 1000;
    }

    function maxTransferAmountSell() public view returns (uint256) {
        return totalSupply() * maxTransactionRateSell / 1000;
    }

    function setMaxTransactionRates_Denominator1000(uint256 _maxTransactionRateBuy, uint256 _maxTransactionRateSell) external onlyOwner {
        require(_maxTransactionRateSell >= 1 && _maxTransactionRateBuy >= 1, "Max Transaction limit cannot be lower than 0.1% of total supply"); 
        maxTransactionRateBuy  = _maxTransactionRateBuy;
        maxTransactionRateSell = _maxTransactionRateSell;
        emit MaxTransactionLimitRatesChanged(maxTransactionRateBuy, maxTransactionRateSell);
    }

    function setExcludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
        require(_isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        _isExcludedFromMaxTxLimit[account] = exclude;
        emit ExcludedFromMaxTransactionLimit(account, exclude);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransferRateBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransferRateSell","type":"uint256"}],"name":"MaxTransactionLimitRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"enableWalletToWalletTransferWithoutFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountSell","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionRateBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionRateSell","type":"uint256"}],"name":"setMaxTransactionRates_Denominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","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":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferWithoutFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600655601960075573a27e68666c3c9a69fe4f1f1956f56d991d273455600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff02191690831515021790555061dead600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260006101000a81548160ff021916908315150217905550600a601355600a601455348015620000f357600080fd5b506040518060400160405280600d81526020017f424d617276656c20546f6b656e000000000000000000000000000000000000008152506040518060400160405280600781526020017f424d617276656c00000000000000000000000000000000000000000000000000815250816003908162000171919062000f02565b50806004908162000183919062000f02565b505050600062000198620007c360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c4919062001053565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062001053565b6040518363ffffffff1660e01b81526004016200037192919062001096565b6020604051808303816000875af115801562000391573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b7919062001053565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200049030600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007cb60201b60201c565b620004a38160016200099c60201b60201c565b600160116000620004b962000ad260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60006200064a62000ad260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007966200078162000ad260201b60201c565b670de0b6b3a764000062000afc60201b60201c565b611388620007a962000c7460201b60201c565b620007b5919062001121565b600c8190555050506200140d565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200083d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083490620011e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a69062001278565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200098f9190620012ab565b60405180910390a3505050565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a28906200133e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6590620013b0565b60405180910390fd5b62000b826000838362000c7e60201b60201c565b806002600082825462000b969190620013d2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000bed9190620013d2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c549190620012ab565b60405180910390a362000c706000838362000c8360201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d0a57607f821691505b60208210810362000d205762000d1f62000cc2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d4b565b62000d96868362000d4b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000de362000ddd62000dd78462000dae565b62000db8565b62000dae565b9050919050565b6000819050919050565b62000dff8362000dc2565b62000e1762000e0e8262000dea565b84845462000d58565b825550505050565b600090565b62000e2e62000e1f565b62000e3b81848462000df4565b505050565b5b8181101562000e635762000e5760008262000e24565b60018101905062000e41565b5050565b601f82111562000eb25762000e7c8162000d26565b62000e878462000d3b565b8101602085101562000e97578190505b62000eaf62000ea68562000d3b565b83018262000e40565b50505b505050565b600082821c905092915050565b600062000ed76000198460080262000eb7565b1980831691505092915050565b600062000ef2838362000ec4565b9150826002028217905092915050565b62000f0d8262000c88565b67ffffffffffffffff81111562000f295762000f2862000c93565b5b62000f35825462000cf1565b62000f4282828562000e67565b600060209050601f83116001811462000f7a576000841562000f65578287015190505b62000f71858262000ee4565b86555062000fe1565b601f19841662000f8a8662000d26565b60005b8281101562000fb45784890151825560018201915060208501945060208101905062000f8d565b8683101562000fd4578489015162000fd0601f89168262000ec4565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200101b8262000fee565b9050919050565b6200102d816200100e565b81146200103957600080fd5b50565b6000815190506200104d8162001022565b92915050565b6000602082840312156200106c576200106b62000fe9565b5b60006200107c848285016200103c565b91505092915050565b62001090816200100e565b82525050565b6000604082019050620010ad600083018562001085565b620010bc602083018462001085565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200112e8262000dae565b91506200113b8362000dae565b9250826200114e576200114d620010c3565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620011c860248362001159565b9150620011d5826200116a565b604082019050919050565b60006020820190508181036000830152620011fb81620011b9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200126060228362001159565b91506200126d8262001202565b604082019050919050565b60006020820190508181036000830152620012938162001251565b9050919050565b620012a58162000dae565b82525050565b6000602082019050620012c260008301846200129a565b92915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200132660388362001159565b91506200133382620012c8565b604082019050919050565b60006020820190508181036000830152620013598162001317565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001398601f8362001159565b9150620013a58262001360565b602082019050919050565b60006020820190508181036000830152620013cb8162001389565b9050919050565b6000620013df8262000dae565b9150620013ec8362000dae565b9250828201905080821115620014075762001406620010f2565b5b92915050565b6147a6806200141d6000396000f3fe6080604052600436106102295760003560e01c806356a6cabf11610123578063a457c2d7116100ab578063c02466681161006f578063c02466681461082c578063dd62ed3e14610855578063e2f4560514610892578063f2fde38b146108bd578063f9d0831a146108e657610230565b8063a457c2d714610723578063a9059cbb14610760578063afa4f3b21461079d578063b62496f5146107c6578063bb85c6d11461080357610230565b8063715018a6116100f2578063715018a61461067457806375f0a8741461068b5780638a8c523c146106b65780638da5cb5b146106cd57806395d89b41146106f857610230565b806356a6cabf146105bc5780635e8217e1146105e55780636db794371461060e57806370a082311461063757610230565b80632b14ca56116101b1578063470624021161017557806347062402146104d557806349bd5a5e146105005780634ada218b1461052b5780634fbee193146105565780635654d0b31461059357610230565b80632b14ca56146103ec5780632ba86bf214610417578063313ce56714610442578063395093511461046d5780633d161d0f146104aa57610230565b80631529fbbf116101f85780631529fbbf146102f15780631694505e1461031c57806318160ddd1461034757806318d9ceae1461037257806323b872dd146103af57610230565b806306fdde03146102355780630795895314610260578063095ea7b31461028b578063150c880c146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a61090f565b604051610257919061319c565b60405180910390f35b34801561026c57600080fd5b506102756109a1565b60405161028291906131d7565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190613281565b6109ca565b6040516102bf91906132dc565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190613323565b6109e8565b005b3480156102fd57600080fd5b50610306610bba565b60405161031391906132dc565b60405180910390f35b34801561032857600080fd5b50610331610bcd565b60405161033e91906133c2565b60405180910390f35b34801561035357600080fd5b5061035c610bf3565b60405161036991906131d7565b60405180910390f35b34801561037e57600080fd5b50610399600480360381019061039491906133dd565b610bfd565b6040516103a691906132dc565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d1919061340a565b610c53565b6040516103e391906132dc565b60405180910390f35b3480156103f857600080fd5b50610401610d72565b60405161040e91906131d7565b60405180910390f35b34801561042357600080fd5b5061042c610d78565b60405161043991906132dc565b60405180910390f35b34801561044e57600080fd5b50610457610d8b565b6040516104649190613479565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613281565b610d94565b6040516104a191906132dc565b60405180910390f35b3480156104b657600080fd5b506104bf610e40565b6040516104cc91906131d7565b60405180910390f35b3480156104e157600080fd5b506104ea610e69565b6040516104f791906131d7565b60405180910390f35b34801561050c57600080fd5b50610515610e6f565b60405161052291906134a3565b60405180910390f35b34801561053757600080fd5b50610540610e95565b60405161054d91906132dc565b60405180910390f35b34801561056257600080fd5b5061057d600480360381019061057891906133dd565b610ea8565b60405161058a91906132dc565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b591906134be565b610efe565b005b3480156105c857600080fd5b506105e360048036038101906105de91906134be565b611007565b005b3480156105f157600080fd5b5061060c600480360381019061060791906134eb565b611156565b005b34801561061a57600080fd5b50610635600480360381019061063091906134eb565b61128d565b005b34801561064357600080fd5b5061065e600480360381019061065991906133dd565b6113c4565b60405161066b91906131d7565b60405180910390f35b34801561068057600080fd5b5061068961140c565b005b34801561069757600080fd5b506106a0611564565b6040516106ad91906134a3565b60405180910390f35b3480156106c257600080fd5b506106cb61158a565b005b3480156106d957600080fd5b506106e261168a565b6040516106ef91906134a3565b60405180910390f35b34801561070457600080fd5b5061070d6116b4565b60405161071a919061319c565b60405180910390f35b34801561072f57600080fd5b5061074a60048036038101906107459190613281565b611746565b60405161075791906132dc565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613281565b611831565b60405161079491906132dc565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf919061352b565b61184f565b005b3480156107d257600080fd5b506107ed60048036038101906107e891906133dd565b611947565b6040516107fa91906132dc565b60405180910390f35b34801561080f57600080fd5b5061082a600480360381019061082591906133dd565b611967565b005b34801561083857600080fd5b50610853600480360381019061084e9190613323565b611b74565b005b34801561086157600080fd5b5061087c60048036038101906108779190613558565b611d46565b60405161088991906131d7565b60405180910390f35b34801561089e57600080fd5b506108a7611dcd565b6040516108b491906131d7565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df91906133dd565b611dd3565b005b3480156108f257600080fd5b5061090d600480360381019061090891906133dd565b611f99565b005b60606003805461091e906135c7565b80601f016020809104026020016040519081016040528092919081815260200182805461094a906135c7565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b5050505050905090565b60006103e86014546109b1610bf3565b6109bb9190613627565b6109c591906136b0565b905090565b60006109de6109d7612226565b848461222e565b6001905092915050565b6109f0612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a769061372d565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b08906137bf565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051610bae91906132dc565b60405180910390a25050565b600860149054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c9f612226565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d5b5782811015610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90613851565b60405180910390fd5b610d5a85610d52612226565b85840361222e565b5b610d668585856123f7565b60019150509392505050565b60075481565b601260009054906101000a900460ff1681565b60006009905090565b6000610e36610da1612226565b848460016000610daf612226565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e319190613871565b61222e565b6001905092915050565b60006103e8601354610e50610bf3565b610e5a9190613627565b610e6491906136b0565b905090565b60065481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f06612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c9061372d565b60405180910390fd5b801515600860149054906101000a900460ff16151503610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19061393d565b60405180910390fd5b80600860146101000a81548160ff02191690831515021790555050565b61100f612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110959061372d565b60405180910390fd5b601260009054906101000a900460ff161515811515036110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea906139cf565b60405180910390fd5b80601260006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601260009054906101000a900460ff1660405161114b91906132dc565b60405180910390a150565b61115e612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e49061372d565b60405180910390fd5b600181101580156111ff575060018210155b61123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613a61565b60405180910390fd5b81601381905550806014819055507f2a88f79986e057b8152c19cea35cd214cf53364efbf95d5b22b37797c05be55f601354601454604051611281929190613a81565b60405180910390a15050565b611295612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b9061372d565b60405180910390fd5b601e82111580156113365750601e8111155b611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90613b1c565b60405180910390fd5b81600681905550806007819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a16006546007546040516113b8929190613a81565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611414612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a9061372d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611592612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116189061372d565b60405180910390fd5b6000600e5414611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90613b88565b60405180910390fd5b42600e819055506001600d60006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116c3906135c7565b80601f01602080910402602001604051908101604052809291908181526020018280546116ef906135c7565b801561173c5780601f106117115761010080835404028352916020019161173c565b820191906000526020600020905b81548152906001019060200180831161171f57829003601f168201915b5050505050905090565b60008060016000611755612226565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990613c1a565b60405180910390fd5b61182661181d612226565b8585840361222e565b600191505092915050565b600061184561183e612226565b84846123f7565b6001905092915050565b611857612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061372d565b60405180910390fd5b620186a06118f2610bf3565b6118fc91906136b0565b811161193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490613cac565b60405180910390fd5b80600c8190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b61196f612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f59061372d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8590613d3e565b60405180910390fd5b611a9781612ada565b15611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace90613dd0565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611b6991906134a3565b60405180910390a150565b611b7c612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c029061372d565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613e62565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d3a91906132dc565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b611ddb612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e619061372d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090613ef4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fa1612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120279061372d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361209e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209590613f60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211e573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612118573d6000803e3d6000fd5b50612223565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161215e91906134a3565b602060405180830381865afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f9190613f95565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016121dc929190613fc2565b6020604051808303816000875af11580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f9190614000565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361229d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122949061409f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390614131565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ea91906131d7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90614255565b60405180910390fd5b600d60009054906101000a900460ff16806125395750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061258d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c3906142c1565b60405180910390fd5b600081036125e5576125e083836000612afd565b612ad5565b601260009054906101000a900460ff16156127a05760001515601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156126aa575060001515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1561279f57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127535761270c610e40565b81111561274e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274590614353565b60405180910390fd5b61279e565b61275b6109a1565b81111561279d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279490614353565b60405180910390fd5b5b5b5b60006127ab306113c4565b90506000600c5482101590508080156127d15750600b60149054906101000a900460ff16155b80156128265750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612893576001600b60146101000a81548160ff021916908315150217905550600a600c546128559190613627565b82111561286e57600a600c5461286b9190613627565b91505b61287782612d7c565b6000600b60146101000a81548160ff0219169083151502179055505b6000600b60149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129495750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561295357600090505b600860149054906101000a900460ff1680156129bd5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612a175750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612a2157600090505b8015612ac6576000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603612a88576006549050612a8e565b60075490505b600060648287612a9e9190613627565b612aa891906136b0565b90508086612ab69190614373565b9550612ac3883083612afd565b50505b612ad1868686612afd565b5050505b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b63906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd290614255565b60405180910390fd5b612be683838361300e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6390614419565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cff9190613871565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d6391906131d7565b60405180910390a3612d76848484613013565b50505050565b60004790506000600267ffffffffffffffff811115612d9e57612d9d614439565b5b604051908082528060200260200182016040528015612dcc5781602001602082028036833780820191505090505b5090503081600081518110612de457612de3614468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaf91906144ac565b81600181518110612ec357612ec2614468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612f619594939291906145d2565b600060405180830381600087803b158015612f7b57600080fd5b505af1158015612f8f573d6000803e3d6000fd5b5050505060008247612fa19190614373565b9050612fcf600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613018565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998482604051613000929190613a81565b60405180910390a150505050565b505050565b505050565b8047101561305b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305290614678565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051613081906146c9565b60006040518083038185875af1925050503d80600081146130be576040519150601f19603f3d011682016040523d82523d6000602084013e6130c3565b606091505b5050905080613107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fe90614750565b60405180910390fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561314657808201518184015260208101905061312b565b60008484015250505050565b6000601f19601f8301169050919050565b600061316e8261310c565b6131788185613117565b9350613188818560208601613128565b61319181613152565b840191505092915050565b600060208201905081810360008301526131b68184613163565b905092915050565b6000819050919050565b6131d1816131be565b82525050565b60006020820190506131ec60008301846131c8565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613222826131f7565b9050919050565b61323281613217565b811461323d57600080fd5b50565b60008135905061324f81613229565b92915050565b61325e816131be565b811461326957600080fd5b50565b60008135905061327b81613255565b92915050565b60008060408385031215613298576132976131f2565b5b60006132a685828601613240565b92505060206132b78582860161326c565b9150509250929050565b60008115159050919050565b6132d6816132c1565b82525050565b60006020820190506132f160008301846132cd565b92915050565b613300816132c1565b811461330b57600080fd5b50565b60008135905061331d816132f7565b92915050565b6000806040838503121561333a576133396131f2565b5b600061334885828601613240565b92505060206133598582860161330e565b9150509250929050565b6000819050919050565b600061338861338361337e846131f7565b613363565b6131f7565b9050919050565b600061339a8261336d565b9050919050565b60006133ac8261338f565b9050919050565b6133bc816133a1565b82525050565b60006020820190506133d760008301846133b3565b92915050565b6000602082840312156133f3576133f26131f2565b5b600061340184828501613240565b91505092915050565b600080600060608486031215613423576134226131f2565b5b600061343186828701613240565b935050602061344286828701613240565b92505060406134538682870161326c565b9150509250925092565b600060ff82169050919050565b6134738161345d565b82525050565b600060208201905061348e600083018461346a565b92915050565b61349d81613217565b82525050565b60006020820190506134b86000830184613494565b92915050565b6000602082840312156134d4576134d36131f2565b5b60006134e28482850161330e565b91505092915050565b60008060408385031215613502576135016131f2565b5b60006135108582860161326c565b92505060206135218582860161326c565b9150509250929050565b600060208284031215613541576135406131f2565b5b600061354f8482850161326c565b91505092915050565b6000806040838503121561356f5761356e6131f2565b5b600061357d85828601613240565b925050602061358e85828601613240565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135df57607f821691505b6020821081036135f2576135f1613598565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613632826131be565b915061363d836131be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613676576136756135f8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136bb826131be565b91506136c6836131be565b9250826136d6576136d5613681565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613717602083613117565b9150613722826136e1565b602082019050919050565b600060208201905081810360008301526137468161370a565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b60006137a9602483613117565b91506137b48261374d565b604082019050919050565b600060208201905081810360008301526137d88161379c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061383b602883613117565b9150613846826137df565b604082019050919050565b6000602082019050818103600083015261386a8161382e565b9050919050565b600061387c826131be565b9150613887836131be565b925082820190508082111561389f5761389e6135f8565b5b92915050565b7f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560008201527f742066656520697320616c72656164792073657420746f20746861742076616c60208201527f7565000000000000000000000000000000000000000000000000000000000000604082015250565b6000613927604283613117565b9150613932826138a5565b606082019050919050565b600060208201905081810360008301526139568161391a565b9050919050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2074686174207374617465000000000000000000000000000000000000000000602082015250565b60006139b9602b83613117565b91506139c48261395d565b604082019050919050565b600060208201905081810360008301526139e8816139ac565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000613a4b603f83613117565b9150613a56826139ef565b604082019050919050565b60006020820190508181036000830152613a7a81613a3e565b9050919050565b6000604082019050613a9660008301856131c8565b613aa360208301846131c8565b9392505050565b7f4d617820627579206665652069732033302520616e64206d61782073656c6c2060008201527f6665652069732033302500000000000000000000000000000000000000000000602082015250565b6000613b06602a83613117565b9150613b1182613aaa565b604082019050919050565b60006020820190508181036000830152613b3581613af9565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000613b72601783613117565b9150613b7d82613b3c565b602082019050919050565b60006020820190508181036000830152613ba181613b65565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c04602583613117565b9150613c0f82613ba8565b604082019050919050565b60006020820190508181036000830152613c3381613bf7565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e30303125206f6620746f74616c20737570706c790000602082015250565b6000613c96603e83613117565b9150613ca182613c3a565b604082019050919050565b60006020820190508181036000830152613cc581613c89565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613d28602883613117565b9150613d3382613ccc565b604082019050919050565b60006020820190508181036000830152613d5781613d1b565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e60008201527f7472616374000000000000000000000000000000000000000000000000000000602082015250565b6000613dba602583613117565b9150613dc582613d5e565b604082019050919050565b60006020820190508181036000830152613de981613dad565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613e4c602a83613117565b9150613e5782613df0565b604082019050919050565b60006020820190508181036000830152613e7b81613e3f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ede602683613117565b9150613ee982613e82565b604082019050919050565b60006020820190508181036000830152613f0d81613ed1565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b6000613f4a602083613117565b9150613f5582613f14565b602082019050919050565b60006020820190508181036000830152613f7981613f3d565b9050919050565b600081519050613f8f81613255565b92915050565b600060208284031215613fab57613faa6131f2565b5b6000613fb984828501613f80565b91505092915050565b6000604082019050613fd76000830185613494565b613fe460208301846131c8565b9392505050565b600081519050613ffa816132f7565b92915050565b600060208284031215614016576140156131f2565b5b600061402484828501613feb565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614089602483613117565b91506140948261402d565b604082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061411b602283613117565b9150614126826140bf565b604082019050919050565b6000602082019050818103600083015261414a8161410e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141ad602583613117565b91506141b882614151565b604082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061423f602383613117565b915061424a826141e3565b604082019050919050565b6000602082019050818103600083015261426e81614232565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b60006142ab601a83613117565b91506142b682614275565b602082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73666572416d6f756e740000000000000000602082015250565b600061433d603883613117565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b600061437e826131be565b9150614389836131be565b92508282039050818111156143a1576143a06135f8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614403602683613117565b915061440e826143a7565b604082019050919050565b60006020820190508181036000830152614432816143f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144a681613229565b92915050565b6000602082840312156144c2576144c16131f2565b5b60006144d084828501614497565b91505092915050565b6000819050919050565b60006144fe6144f96144f4846144d9565b613363565b6131be565b9050919050565b61450e816144e3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61454981613217565b82525050565b600061455b8383614540565b60208301905092915050565b6000602082019050919050565b600061457f82614514565b614589818561451f565b935061459483614530565b8060005b838110156145c55781516145ac888261454f565b97506145b783614567565b925050600181019050614598565b5085935050505092915050565b600060a0820190506145e760008301886131c8565b6145f46020830187614505565b81810360408301526146068186614574565b90506146156060830185613494565b61462260808301846131c8565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614662601d83613117565b915061466d8261462c565b602082019050919050565b6000602082019050818103600083015261469181614655565b9050919050565b600081905092915050565b50565b60006146b3600083614698565b91506146be826146a3565b600082019050919050565b60006146d4826146a6565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061473a603a83613117565b9150614745826146de565b604082019050919050565b600060208201905081810360008301526147698161472d565b905091905056fea264697066735822122000a5ec57d1d8d872d43920fe9ecbcd0bf1d0f65d3169861eb52e6864cd08511d64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806356a6cabf11610123578063a457c2d7116100ab578063c02466681161006f578063c02466681461082c578063dd62ed3e14610855578063e2f4560514610892578063f2fde38b146108bd578063f9d0831a146108e657610230565b8063a457c2d714610723578063a9059cbb14610760578063afa4f3b21461079d578063b62496f5146107c6578063bb85c6d11461080357610230565b8063715018a6116100f2578063715018a61461067457806375f0a8741461068b5780638a8c523c146106b65780638da5cb5b146106cd57806395d89b41146106f857610230565b806356a6cabf146105bc5780635e8217e1146105e55780636db794371461060e57806370a082311461063757610230565b80632b14ca56116101b1578063470624021161017557806347062402146104d557806349bd5a5e146105005780634ada218b1461052b5780634fbee193146105565780635654d0b31461059357610230565b80632b14ca56146103ec5780632ba86bf214610417578063313ce56714610442578063395093511461046d5780633d161d0f146104aa57610230565b80631529fbbf116101f85780631529fbbf146102f15780631694505e1461031c57806318160ddd1461034757806318d9ceae1461037257806323b872dd146103af57610230565b806306fdde03146102355780630795895314610260578063095ea7b31461028b578063150c880c146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a61090f565b604051610257919061319c565b60405180910390f35b34801561026c57600080fd5b506102756109a1565b60405161028291906131d7565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190613281565b6109ca565b6040516102bf91906132dc565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190613323565b6109e8565b005b3480156102fd57600080fd5b50610306610bba565b60405161031391906132dc565b60405180910390f35b34801561032857600080fd5b50610331610bcd565b60405161033e91906133c2565b60405180910390f35b34801561035357600080fd5b5061035c610bf3565b60405161036991906131d7565b60405180910390f35b34801561037e57600080fd5b50610399600480360381019061039491906133dd565b610bfd565b6040516103a691906132dc565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d1919061340a565b610c53565b6040516103e391906132dc565b60405180910390f35b3480156103f857600080fd5b50610401610d72565b60405161040e91906131d7565b60405180910390f35b34801561042357600080fd5b5061042c610d78565b60405161043991906132dc565b60405180910390f35b34801561044e57600080fd5b50610457610d8b565b6040516104649190613479565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613281565b610d94565b6040516104a191906132dc565b60405180910390f35b3480156104b657600080fd5b506104bf610e40565b6040516104cc91906131d7565b60405180910390f35b3480156104e157600080fd5b506104ea610e69565b6040516104f791906131d7565b60405180910390f35b34801561050c57600080fd5b50610515610e6f565b60405161052291906134a3565b60405180910390f35b34801561053757600080fd5b50610540610e95565b60405161054d91906132dc565b60405180910390f35b34801561056257600080fd5b5061057d600480360381019061057891906133dd565b610ea8565b60405161058a91906132dc565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b591906134be565b610efe565b005b3480156105c857600080fd5b506105e360048036038101906105de91906134be565b611007565b005b3480156105f157600080fd5b5061060c600480360381019061060791906134eb565b611156565b005b34801561061a57600080fd5b50610635600480360381019061063091906134eb565b61128d565b005b34801561064357600080fd5b5061065e600480360381019061065991906133dd565b6113c4565b60405161066b91906131d7565b60405180910390f35b34801561068057600080fd5b5061068961140c565b005b34801561069757600080fd5b506106a0611564565b6040516106ad91906134a3565b60405180910390f35b3480156106c257600080fd5b506106cb61158a565b005b3480156106d957600080fd5b506106e261168a565b6040516106ef91906134a3565b60405180910390f35b34801561070457600080fd5b5061070d6116b4565b60405161071a919061319c565b60405180910390f35b34801561072f57600080fd5b5061074a60048036038101906107459190613281565b611746565b60405161075791906132dc565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613281565b611831565b60405161079491906132dc565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf919061352b565b61184f565b005b3480156107d257600080fd5b506107ed60048036038101906107e891906133dd565b611947565b6040516107fa91906132dc565b60405180910390f35b34801561080f57600080fd5b5061082a600480360381019061082591906133dd565b611967565b005b34801561083857600080fd5b50610853600480360381019061084e9190613323565b611b74565b005b34801561086157600080fd5b5061087c60048036038101906108779190613558565b611d46565b60405161088991906131d7565b60405180910390f35b34801561089e57600080fd5b506108a7611dcd565b6040516108b491906131d7565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df91906133dd565b611dd3565b005b3480156108f257600080fd5b5061090d600480360381019061090891906133dd565b611f99565b005b60606003805461091e906135c7565b80601f016020809104026020016040519081016040528092919081815260200182805461094a906135c7565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b5050505050905090565b60006103e86014546109b1610bf3565b6109bb9190613627565b6109c591906136b0565b905090565b60006109de6109d7612226565b848461222e565b6001905092915050565b6109f0612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a769061372d565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b08906137bf565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051610bae91906132dc565b60405180910390a25050565b600860149054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c9f612226565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d5b5782811015610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90613851565b60405180910390fd5b610d5a85610d52612226565b85840361222e565b5b610d668585856123f7565b60019150509392505050565b60075481565b601260009054906101000a900460ff1681565b60006009905090565b6000610e36610da1612226565b848460016000610daf612226565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e319190613871565b61222e565b6001905092915050565b60006103e8601354610e50610bf3565b610e5a9190613627565b610e6491906136b0565b905090565b60065481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f06612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c9061372d565b60405180910390fd5b801515600860149054906101000a900460ff16151503610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19061393d565b60405180910390fd5b80600860146101000a81548160ff02191690831515021790555050565b61100f612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110959061372d565b60405180910390fd5b601260009054906101000a900460ff161515811515036110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea906139cf565b60405180910390fd5b80601260006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601260009054906101000a900460ff1660405161114b91906132dc565b60405180910390a150565b61115e612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e49061372d565b60405180910390fd5b600181101580156111ff575060018210155b61123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613a61565b60405180910390fd5b81601381905550806014819055507f2a88f79986e057b8152c19cea35cd214cf53364efbf95d5b22b37797c05be55f601354601454604051611281929190613a81565b60405180910390a15050565b611295612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b9061372d565b60405180910390fd5b601e82111580156113365750601e8111155b611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90613b1c565b60405180910390fd5b81600681905550806007819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a16006546007546040516113b8929190613a81565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611414612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a9061372d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611592612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116189061372d565b60405180910390fd5b6000600e5414611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90613b88565b60405180910390fd5b42600e819055506001600d60006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546116c3906135c7565b80601f01602080910402602001604051908101604052809291908181526020018280546116ef906135c7565b801561173c5780601f106117115761010080835404028352916020019161173c565b820191906000526020600020905b81548152906001019060200180831161171f57829003601f168201915b5050505050905090565b60008060016000611755612226565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990613c1a565b60405180910390fd5b61182661181d612226565b8585840361222e565b600191505092915050565b600061184561183e612226565b84846123f7565b6001905092915050565b611857612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061372d565b60405180910390fd5b620186a06118f2610bf3565b6118fc91906136b0565b811161193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490613cac565b60405180910390fd5b80600c8190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b61196f612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f59061372d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8590613d3e565b60405180910390fd5b611a9781612ada565b15611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace90613dd0565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611b6991906134a3565b60405180910390a150565b611b7c612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c029061372d565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613e62565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d3a91906132dc565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b611ddb612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e619061372d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090613ef4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fa1612226565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120279061372d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361209e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209590613f60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211e573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612118573d6000803e3d6000fd5b50612223565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161215e91906134a3565b602060405180830381865afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f9190613f95565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016121dc929190613fc2565b6020604051808303816000875af11580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f9190614000565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361229d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122949061409f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390614131565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ea91906131d7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90614255565b60405180910390fd5b600d60009054906101000a900460ff16806125395750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061258d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c3906142c1565b60405180910390fd5b600081036125e5576125e083836000612afd565b612ad5565b601260009054906101000a900460ff16156127a05760001515601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156126aa575060001515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1561279f57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127535761270c610e40565b81111561274e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274590614353565b60405180910390fd5b61279e565b61275b6109a1565b81111561279d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279490614353565b60405180910390fd5b5b5b5b60006127ab306113c4565b90506000600c5482101590508080156127d15750600b60149054906101000a900460ff16155b80156128265750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612893576001600b60146101000a81548160ff021916908315150217905550600a600c546128559190613627565b82111561286e57600a600c5461286b9190613627565b91505b61287782612d7c565b6000600b60146101000a81548160ff0219169083151502179055505b6000600b60149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129495750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561295357600090505b600860149054906101000a900460ff1680156129bd5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612a175750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612a2157600090505b8015612ac6576000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603612a88576006549050612a8e565b60075490505b600060648287612a9e9190613627565b612aa891906136b0565b90508086612ab69190614373565b9550612ac3883083612afd565b50505b612ad1868686612afd565b5050505b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b63906141c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd290614255565b60405180910390fd5b612be683838361300e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6390614419565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cff9190613871565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d6391906131d7565b60405180910390a3612d76848484613013565b50505050565b60004790506000600267ffffffffffffffff811115612d9e57612d9d614439565b5b604051908082528060200260200182016040528015612dcc5781602001602082028036833780820191505090505b5090503081600081518110612de457612de3614468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaf91906144ac565b81600181518110612ec357612ec2614468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612f619594939291906145d2565b600060405180830381600087803b158015612f7b57600080fd5b505af1158015612f8f573d6000803e3d6000fd5b5050505060008247612fa19190614373565b9050612fcf600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613018565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998482604051613000929190613a81565b60405180910390a150505050565b505050565b505050565b8047101561305b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305290614678565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051613081906146c9565b60006040518083038185875af1925050503d80600081146130be576040519150601f19603f3d011682016040523d82523d6000602084013e6130c3565b606091505b5050905080613107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fe90614750565b60405180910390fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561314657808201518184015260208101905061312b565b60008484015250505050565b6000601f19601f8301169050919050565b600061316e8261310c565b6131788185613117565b9350613188818560208601613128565b61319181613152565b840191505092915050565b600060208201905081810360008301526131b68184613163565b905092915050565b6000819050919050565b6131d1816131be565b82525050565b60006020820190506131ec60008301846131c8565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613222826131f7565b9050919050565b61323281613217565b811461323d57600080fd5b50565b60008135905061324f81613229565b92915050565b61325e816131be565b811461326957600080fd5b50565b60008135905061327b81613255565b92915050565b60008060408385031215613298576132976131f2565b5b60006132a685828601613240565b92505060206132b78582860161326c565b9150509250929050565b60008115159050919050565b6132d6816132c1565b82525050565b60006020820190506132f160008301846132cd565b92915050565b613300816132c1565b811461330b57600080fd5b50565b60008135905061331d816132f7565b92915050565b6000806040838503121561333a576133396131f2565b5b600061334885828601613240565b92505060206133598582860161330e565b9150509250929050565b6000819050919050565b600061338861338361337e846131f7565b613363565b6131f7565b9050919050565b600061339a8261336d565b9050919050565b60006133ac8261338f565b9050919050565b6133bc816133a1565b82525050565b60006020820190506133d760008301846133b3565b92915050565b6000602082840312156133f3576133f26131f2565b5b600061340184828501613240565b91505092915050565b600080600060608486031215613423576134226131f2565b5b600061343186828701613240565b935050602061344286828701613240565b92505060406134538682870161326c565b9150509250925092565b600060ff82169050919050565b6134738161345d565b82525050565b600060208201905061348e600083018461346a565b92915050565b61349d81613217565b82525050565b60006020820190506134b86000830184613494565b92915050565b6000602082840312156134d4576134d36131f2565b5b60006134e28482850161330e565b91505092915050565b60008060408385031215613502576135016131f2565b5b60006135108582860161326c565b92505060206135218582860161326c565b9150509250929050565b600060208284031215613541576135406131f2565b5b600061354f8482850161326c565b91505092915050565b6000806040838503121561356f5761356e6131f2565b5b600061357d85828601613240565b925050602061358e85828601613240565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135df57607f821691505b6020821081036135f2576135f1613598565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613632826131be565b915061363d836131be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613676576136756135f8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136bb826131be565b91506136c6836131be565b9250826136d6576136d5613681565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613717602083613117565b9150613722826136e1565b602082019050919050565b600060208201905081810360008301526137468161370a565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b60006137a9602483613117565b91506137b48261374d565b604082019050919050565b600060208201905081810360008301526137d88161379c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061383b602883613117565b9150613846826137df565b604082019050919050565b6000602082019050818103600083015261386a8161382e565b9050919050565b600061387c826131be565b9150613887836131be565b925082820190508082111561389f5761389e6135f8565b5b92915050565b7f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560008201527f742066656520697320616c72656164792073657420746f20746861742076616c60208201527f7565000000000000000000000000000000000000000000000000000000000000604082015250565b6000613927604283613117565b9150613932826138a5565b606082019050919050565b600060208201905081810360008301526139568161391a565b9050919050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2074686174207374617465000000000000000000000000000000000000000000602082015250565b60006139b9602b83613117565b91506139c48261395d565b604082019050919050565b600060208201905081810360008301526139e8816139ac565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000613a4b603f83613117565b9150613a56826139ef565b604082019050919050565b60006020820190508181036000830152613a7a81613a3e565b9050919050565b6000604082019050613a9660008301856131c8565b613aa360208301846131c8565b9392505050565b7f4d617820627579206665652069732033302520616e64206d61782073656c6c2060008201527f6665652069732033302500000000000000000000000000000000000000000000602082015250565b6000613b06602a83613117565b9150613b1182613aaa565b604082019050919050565b60006020820190508181036000830152613b3581613af9565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000613b72601783613117565b9150613b7d82613b3c565b602082019050919050565b60006020820190508181036000830152613ba181613b65565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c04602583613117565b9150613c0f82613ba8565b604082019050919050565b60006020820190508181036000830152613c3381613bf7565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e30303125206f6620746f74616c20737570706c790000602082015250565b6000613c96603e83613117565b9150613ca182613c3a565b604082019050919050565b60006020820190508181036000830152613cc581613c89565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613d28602883613117565b9150613d3382613ccc565b604082019050919050565b60006020820190508181036000830152613d5781613d1b565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e60008201527f7472616374000000000000000000000000000000000000000000000000000000602082015250565b6000613dba602583613117565b9150613dc582613d5e565b604082019050919050565b60006020820190508181036000830152613de981613dad565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613e4c602a83613117565b9150613e5782613df0565b604082019050919050565b60006020820190508181036000830152613e7b81613e3f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ede602683613117565b9150613ee982613e82565b604082019050919050565b60006020820190508181036000830152613f0d81613ed1565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b6000613f4a602083613117565b9150613f5582613f14565b602082019050919050565b60006020820190508181036000830152613f7981613f3d565b9050919050565b600081519050613f8f81613255565b92915050565b600060208284031215613fab57613faa6131f2565b5b6000613fb984828501613f80565b91505092915050565b6000604082019050613fd76000830185613494565b613fe460208301846131c8565b9392505050565b600081519050613ffa816132f7565b92915050565b600060208284031215614016576140156131f2565b5b600061402484828501613feb565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614089602483613117565b91506140948261402d565b604082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061411b602283613117565b9150614126826140bf565b604082019050919050565b6000602082019050818103600083015261414a8161410e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141ad602583613117565b91506141b882614151565b604082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061423f602383613117565b915061424a826141e3565b604082019050919050565b6000602082019050818103600083015261426e81614232565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b60006142ab601a83613117565b91506142b682614275565b602082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73666572416d6f756e740000000000000000602082015250565b600061433d603883613117565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b600061437e826131be565b9150614389836131be565b92508282039050818111156143a1576143a06135f8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614403602683613117565b915061440e826143a7565b604082019050919050565b60006020820190508181036000830152614432816143f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144a681613229565b92915050565b6000602082840312156144c2576144c16131f2565b5b60006144d084828501614497565b91505092915050565b6000819050919050565b60006144fe6144f96144f4846144d9565b613363565b6131be565b9050919050565b61450e816144e3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61454981613217565b82525050565b600061455b8383614540565b60208301905092915050565b6000602082019050919050565b600061457f82614514565b614589818561451f565b935061459483614530565b8060005b838110156145c55781516145ac888261454f565b97506145b783614567565b925050600181019050614598565b5085935050505092915050565b600060a0820190506145e760008301886131c8565b6145f46020830187614505565b81810360408301526146068186614574565b90506146156060830185613494565b61462260808301846131c8565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614662601d83613117565b915061466d8261462c565b602082019050919050565b6000602082019050818103600083015261469181614655565b9050919050565b600081905092915050565b50565b60006146b3600083614698565b91506146be826146a3565b600082019050919050565b60006146d4826146a6565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061473a603a83613117565b9150614745826146de565b604082019050919050565b600060208201905081810360008301526147698161472d565b905091905056fea264697066735822122000a5ec57d1d8d872d43920fe9ecbcd0bf1d0f65d3169861eb52e6864cd08511d64736f6c63430008100033

Deployed Bytecode Sourcemap

15516:10270:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2845:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24809:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3758:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25457:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15710:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15770:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3165:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24516:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3935:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15590:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16272:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3065:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4516:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24669:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15558:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15818:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16007:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19629:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20049:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24206:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24951:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19762:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3281:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2032:148;;;;;;;;;;;;;:::i;:::-;;15626:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20710:185;;;;;;;;;;;;;:::i;:::-;;1818:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2953:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4739:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3416:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23961:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16139:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20329:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19329:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3599:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15965:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2188:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18118:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2845:100;2899:13;2932:5;2925:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2845:100;:::o;24809:134::-;24863:7;24931:4;24906:22;;24890:13;:11;:13::i;:::-;:38;;;;:::i;:::-;:45;;;;:::i;:::-;24883:52;;24809:134;:::o;3758:169::-;3841:4;3858:39;3867:12;:10;:12::i;:::-;3881:7;3890:6;3858:8;:39::i;:::-;3915:4;3908:11;;3758:169;;;;:::o;25457:326::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25607:7:::1;25569:45;;:25;:34;25595:7;25569:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;25561:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25703:7;25666:25;:34;25692:7;25666:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;25758:7;25726:49;;;25767:7;25726:49;;;;;;:::i;:::-;;;;;;;;25457:326:::0;;:::o;15710:51::-;;;;;;;;;;;;;:::o;15770:41::-;;;;;;;;;;;;;:::o;3165:108::-;3226:7;3253:12;;3246:19;;3165:108;:::o;24516:141::-;24591:4;24615:25;:34;24641:7;24615:34;;;;;;;;;;;;;;;;;;;;;;;;;24608:41;;24516:141;;;:::o;3935:573::-;4075:4;4092:24;4119:11;:19;4131:6;4119:19;;;;;;;;;;;;;;;:33;4139:12;:10;:12::i;:::-;4119:33;;;;;;;;;;;;;;;;4092:60;;4187:17;4167:16;:37;4163:265;;4249:6;4229:16;:26;;4221:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4344:57;4353:6;4361:12;:10;:12::i;:::-;4394:6;4375:16;:25;4344:8;:57::i;:::-;4163:265;4440:36;4450:6;4458:9;4469:6;4440:9;:36::i;:::-;4496:4;4489:11;;;3935:573;;;;;:::o;15590:27::-;;;;:::o;16272:48::-;;;;;;;;;;;;;:::o;3065:92::-;3123:5;3148:1;3141:8;;3065:92;:::o;4516:215::-;4604:4;4621:80;4630:12;:10;:12::i;:::-;4644:7;4690:10;4653:11;:25;4665:12;:10;:12::i;:::-;4653:25;;;;;;;;;;;;;;;:34;4679:7;4653:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4621:8;:80::i;:::-;4719:4;4712:11;;4516:215;;;;:::o;24669:132::-;24722:7;24789:4;24765:21;;24749:13;:11;:13::i;:::-;:37;;;;:::i;:::-;:44;;;;:::i;:::-;24742:51;;24669:132;:::o;15558:25::-;;;;:::o;15818:29::-;;;;;;;;;;;;;:::o;16007:30::-;;;;;;;;;;;;;:::o;19629:125::-;19694:4;19718:19;:28;19738:7;19718:28;;;;;;;;;;;;;;;;;;;;;;;;;19711:35;;19629:125;;;:::o;20049:272::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20184:6:::1;20148:42;;:32;;;;;;;;;;;:42;;::::0;20140:121:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20307:6;20272:32;;:41;;;;;;;;;;;;;;;;;;20049:272:::0;:::o;24206:302::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24305:26:::1;;;;;;;;;;;24295:36;;:6;:36;;::::0;24287:92:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24419:6;24390:26;;:35;;;;;;;;;;;;;;;;;;24441:59;24473:26;;;;;;;;;;;24441:59;;;;;;:::i;:::-;;;;;;;;24206:302:::0;:::o;24951:498::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25129:1:::1;25102:23;:28;;:59;;;;;25160:1;25134:22;:27;;25102:59;25094:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;25266:22;25241:21;:47;;;;25324:23;25299:22;:48;;;;25363:78;25395:21;;25418:22;;25363:78;;;;;;;:::i;:::-;;;;;;;;24951:498:::0;;:::o;19762:279::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19866:2:::1;19855:7;:13;;:31;;;;;19884:2;19872:8;:14;;19855:31;19847:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;19953:7;19944:6;:16;;;;19981:8;19971:7;:18;;;;20005:28;20017:6;;20025:7;;20005:28;;;;;;;:::i;:::-;;;;;;;;19762:279:::0;;:::o;3281:127::-;3355:7;3382:9;:18;3392:7;3382:18;;;;;;;;;;;;;;;;3375:25;;3281:127;;;:::o;2032:148::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2139:1:::1;2102:40;;2123:6;;;;;;;;;;;2102:40;;;;;;;;;;;;2170:1;2153:6;;:19;;;;;;;;;;;;;;;;;;2032:148::o:0;15626:75::-;;;;;;;;;;;;;:::o;20710:185::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20787:1:::1;20773:10;;:15;20765:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;20840:15;20827:10;:28;;;;20883:4;20866:14;;:21;;;;;;;;;;;;;;;;;;20710:185::o:0;1818:79::-;1856:7;1883:6;;;;;;;;;;;1876:13;;1818:79;:::o;2953:104::-;3009:13;3042:7;3035:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2953:104;:::o;4739:413::-;4832:4;4849:24;4876:11;:25;4888:12;:10;:12::i;:::-;4876:25;;;;;;;;;;;;;;;:34;4902:7;4876:34;;;;;;;;;;;;;;;;4849:61;;4949:15;4929:16;:35;;4921:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5042:67;5051:12;:10;:12::i;:::-;5065:7;5093:15;5074:16;:34;5042:8;:67::i;:::-;5140:4;5133:11;;;4739:413;;;;:::o;3416:175::-;3502:4;3519:42;3529:12;:10;:12::i;:::-;3543:9;3554:6;3519:9;:42::i;:::-;3579:4;3572:11;;3416:175;;;;:::o;23961:237::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24076:6:::1;24060:13;:11;:13::i;:::-;:22;;;;:::i;:::-;24048:9;:34;24040:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;24181:9;24160:18;:30;;;;23961:237:::0;:::o;16139:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;20329:373::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20444:15:::1;;;;;;;;;;;20424:35;;:16;:35;;::::0;20416:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20524:28;20535:16;20524:10;:28::i;:::-;20523:29;20515:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20623:16;20605:15;;:34;;;;;;;;;;;;;;;;;;20655:39;20678:15;;;;;;;;;;;20655:39;;;;;;:::i;:::-;;;;;;;;20329:373:::0;:::o;19329:292::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19456:8:::1;19424:40;;:19;:28;19444:7;19424:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;19416:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19553:8;19522:19;:28;19542:7;19522:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19595:7;19579:34;;;19604:8;19579:34;;;;;;:::i;:::-;;;;;;;;19329:292:::0;;:::o;3599:151::-;3688:7;3715:11;:18;3727:5;3715:18;;;;;;;;;;;;;;;:27;3734:7;3715:27;;;;;;;;;;;;;;;;3708:34;;3599:151;;;;:::o;15965:33::-;;;;:::o;2188:244::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2297:1:::1;2277:22;;:8;:22;;::::0;2269:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:8;2358:38;;2379:6;;;;;;;;;;;2358:38;;;;;;;;;;;;2416:8;2407:6;;:17;;;;;;;;;;;;;;;;;;2188:244:::0;:::o;18118:441::-;1955:12;:10;:12::i;:::-;1945:22;;:6;;;;;;;;;;;:22;;;1937:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18214:4:::1;18197:22;;:5;:22;;::::0;18189:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18288:3;18271:21;;:5;:21;;::::0;18267:126:::1;;18317:10;18309:28;;:51;18338:21;18309:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18375:7;;18267:126;18403:17;18430:5;18403:33;;18447:15;18465:10;:20;;;18494:4;18465:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18447:53;;18511:10;:19;;;18531:10;18543:7;18511:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18178:381;;2015:1;18118:441:::0;:::o;1141:98::-;1194:7;1221:10;1214:17;;1141:98;:::o;6907:380::-;7060:1;7043:19;;:5;:19;;;7035:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7141:1;7122:21;;:7;:21;;;7114:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7225:6;7195:11;:18;7207:5;7195:18;;;;;;;;;;;;;;;:27;7214:7;7195:27;;;;;;;;;;;;;;;:36;;;;7263:7;7247:32;;7256:5;7247:32;;;7272:6;7247:32;;;;;;:::i;:::-;;;;;;;;6907:380;;;:::o;20903:2368::-;21052:1;21036:18;;:4;:18;;;21028:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21129:1;21115:16;;:2;:16;;;21107:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21206:14;;;;;;;;;;;:56;;;;21237:19;:25;21257:4;21237:25;;;;;;;;;;;;;;;;;;;;;;;;;21206:56;:97;;;;21280:19;:23;21300:2;21280:23;;;;;;;;;;;;;;;;;;;;;;;;;21206:97;21184:173;;;;;;;;;;;;:::i;:::-;;;;;;;;;21383:1;21373:6;:11;21370:92;;21401:28;21417:4;21423:2;21427:1;21401:15;:28::i;:::-;21444:7;;21370:92;21478:26;;;;;;;;;;;21474:531;;;21560:5;21525:40;;:25;:31;21551:4;21525:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;:99;;;;;21619:5;21586:38;;:25;:29;21612:2;21586:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;21525:99;21521:473;;;21671:13;;;;;;;;;;;21663:21;;:4;:21;;;21659:320;;21727:22;:20;:22::i;:::-;21717:6;:32;;21709:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;21659:320;;;21875:23;:21;:23::i;:::-;21865:6;:33;;21857:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;21659:320;21521:473;21474:531;22011:28;22042:24;22060:4;22042:9;:24::i;:::-;22011:55;;22079:12;22118:18;;22094:20;:42;;22079:57;;22153:7;:33;;;;;22178:8;;;;;;;;;;;22177:9;22153:33;:79;;;;;22203:25;:29;22229:2;22203:29;;;;;;;;;;;;;;;;;;;;;;;;;22153:79;22149:400;;;22270:4;22259:8;;:15;;;;;;;;;;;;;;;;;;22350:2;22329:18;;:23;;;;:::i;:::-;22306:20;:46;22303:131;;;22416:2;22395:18;;:23;;;;:::i;:::-;22372:46;;22303:131;22462:42;22483:20;22462;:42::i;:::-;22532:5;22521:8;;:16;;;;;;;;;;;;;;;;;;22149:400;22561:12;22577:8;;;;;;;;;;;22576:9;22561:24;;22601:19;:25;22621:4;22601:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22630:19;:23;22650:2;22630:23;;;;;;;;;;;;;;;;;;;;;;;;;22601:52;22598:99;;;22680:5;22670:15;;22598:99;22712:32;;;;;;;;;;;:57;;;;;22756:13;;;;;;;;;;;22748:21;;:4;:21;;;;22712:57;:80;;;;;22779:13;;;;;;;;;;;22773:19;;:2;:19;;;;22712:80;22709:127;;;22819:5;22809:15;;22709:127;22851:7;22848:368;;;22875:18;22919:13;;;;;;;;;;;22911:21;;:4;:21;;;22908:141;;22966:6;;22953:19;;22908:141;;;23026:7;;23013:20;;22908:141;23060:12;23097:3;23084:10;23075:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;23060:40;;23141:4;23132:6;:13;;;;:::i;:::-;23123:22;;23162:42;23178:4;23192;23199;23162:15;:42::i;:::-;22860:356;;22848:368;23228:33;23244:4;23250:2;23254:6;23228:15;:33::i;:::-;21017:2254;;;20903:2368;;;;:::o;18567:115::-;18627:4;18673:1;18651:7;:19;;;:23;18644:30;;18567:115;;;:::o;5160:733::-;5318:1;5300:20;;:6;:20;;;5292:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5402:1;5381:23;;:9;:23;;;5373:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5457:47;5478:6;5486:9;5497:6;5457:20;:47::i;:::-;5517:21;5541:9;:17;5551:6;5541:17;;;;;;;;;;;;;;;;5517:41;;5594:6;5577:13;:23;;5569:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5715:6;5699:13;:22;5679:9;:17;5689:6;5679:17;;;;;;;;;;;;;;;:42;;;;5767:6;5743:9;:20;5753:9;5743:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5808:9;5791:35;;5800:6;5791:35;;;5819:6;5791:35;;;;;;:::i;:::-;;;;;;;;5839:46;5859:6;5867:9;5878:6;5839:19;:46::i;:::-;5281:612;5160:733;;;:::o;23279:674::-;23349:22;23374:21;23349:46;;23408:21;23446:1;23432:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23408:40;;23477:4;23459;23464:1;23459:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23503:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23493:4;23498:1;23493:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23538:15;;;;;;;;;;;:66;;;23619:11;23645:1;23689:4;23716;23736:15;23538:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23765:18;23810:14;23786:21;:38;;;;:::i;:::-;23765:59;;23837:45;23853:15;;;;;;;;;;;23871:10;23837:7;:45::i;:::-;23900;23921:11;23934:10;23900:45;;;;;;;:::i;:::-;;;;;;;;23338:615;;;23279:674;:::o;7295:125::-;;;;:::o;7428:124::-;;;;:::o;18690:315::-;18803:6;18778:21;:31;;18770:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18857:12;18875:9;:14;;18897:6;18875:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18856:52;;;18927:7;18919:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18759:246;18690:315;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:468::-;4124:6;4132;4181:2;4169:9;4160:7;4156:23;4152:32;4149:119;;;4187:79;;:::i;:::-;4149:119;4307:1;4332:53;4377:7;4368:6;4357:9;4353:22;4332:53;:::i;:::-;4322:63;;4278:117;4434:2;4460:50;4502:7;4493:6;4482:9;4478:22;4460:50;:::i;:::-;4450:60;;4405:115;4059:468;;;;;:::o;4533:60::-;4561:3;4582:5;4575:12;;4533:60;;;:::o;4599:142::-;4649:9;4682:53;4700:34;4709:24;4727:5;4709:24;:::i;:::-;4700:34;:::i;:::-;4682:53;:::i;:::-;4669:66;;4599:142;;;:::o;4747:126::-;4797:9;4830:37;4861:5;4830:37;:::i;:::-;4817:50;;4747:126;;;:::o;4879:153::-;4956:9;4989:37;5020:5;4989:37;:::i;:::-;4976:50;;4879:153;;;:::o;5038:185::-;5152:64;5210:5;5152:64;:::i;:::-;5147:3;5140:77;5038:185;;:::o;5229:276::-;5349:4;5387:2;5376:9;5372:18;5364:26;;5400:98;5495:1;5484:9;5480:17;5471:6;5400:98;:::i;:::-;5229:276;;;;:::o;5511:329::-;5570:6;5619:2;5607:9;5598:7;5594:23;5590:32;5587:119;;;5625:79;;:::i;:::-;5587:119;5745:1;5770:53;5815:7;5806:6;5795:9;5791:22;5770:53;:::i;:::-;5760:63;;5716:117;5511:329;;;;:::o;5846:619::-;5923:6;5931;5939;5988:2;5976:9;5967:7;5963:23;5959:32;5956:119;;;5994:79;;:::i;:::-;5956:119;6114:1;6139:53;6184:7;6175:6;6164:9;6160:22;6139:53;:::i;:::-;6129:63;;6085:117;6241:2;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6212:118;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;5846:619;;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:118::-;6988:24;7006:5;6988:24;:::i;:::-;6983:3;6976:37;6901:118;;:::o;7025:222::-;7118:4;7156:2;7145:9;7141:18;7133:26;;7169:71;7237:1;7226:9;7222:17;7213:6;7169:71;:::i;:::-;7025:222;;;;:::o;7253:323::-;7309:6;7358:2;7346:9;7337:7;7333:23;7329:32;7326:119;;;7364:79;;:::i;:::-;7326:119;7484:1;7509:50;7551:7;7542:6;7531:9;7527:22;7509:50;:::i;:::-;7499:60;;7455:114;7253:323;;;;:::o;7582:474::-;7650:6;7658;7707:2;7695:9;7686:7;7682:23;7678:32;7675:119;;;7713:79;;:::i;:::-;7675:119;7833:1;7858:53;7903:7;7894:6;7883:9;7879:22;7858:53;:::i;:::-;7848:63;;7804:117;7960:2;7986:53;8031:7;8022:6;8011:9;8007:22;7986:53;:::i;:::-;7976:63;;7931:118;7582:474;;;;;:::o;8062:329::-;8121:6;8170:2;8158:9;8149:7;8145:23;8141:32;8138:119;;;8176:79;;:::i;:::-;8138:119;8296:1;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8267:117;8062:329;;;;:::o;8397:474::-;8465:6;8473;8522:2;8510:9;8501:7;8497:23;8493:32;8490:119;;;8528:79;;:::i;:::-;8490:119;8648:1;8673:53;8718:7;8709:6;8698:9;8694:22;8673:53;:::i;:::-;8663:63;;8619:117;8775:2;8801:53;8846:7;8837:6;8826:9;8822:22;8801:53;:::i;:::-;8791:63;;8746:118;8397:474;;;;;:::o;8877:180::-;8925:77;8922:1;8915:88;9022:4;9019:1;9012:15;9046:4;9043:1;9036:15;9063:320;9107:6;9144:1;9138:4;9134:12;9124:22;;9191:1;9185:4;9181:12;9212:18;9202:81;;9268:4;9260:6;9256:17;9246:27;;9202:81;9330:2;9322:6;9319:14;9299:18;9296:38;9293:84;;9349:18;;:::i;:::-;9293:84;9114:269;9063:320;;;:::o;9389:180::-;9437:77;9434:1;9427:88;9534:4;9531:1;9524:15;9558:4;9555:1;9548:15;9575:348;9615:7;9638:20;9656:1;9638:20;:::i;:::-;9633:25;;9672:20;9690:1;9672:20;:::i;:::-;9667:25;;9860:1;9792:66;9788:74;9785:1;9782:81;9777:1;9770:9;9763:17;9759:105;9756:131;;;9867:18;;:::i;:::-;9756:131;9915:1;9912;9908:9;9897:20;;9575:348;;;;:::o;9929:180::-;9977:77;9974:1;9967:88;10074:4;10071:1;10064:15;10098:4;10095:1;10088:15;10115:185;10155:1;10172:20;10190:1;10172:20;:::i;:::-;10167:25;;10206:20;10224:1;10206:20;:::i;:::-;10201:25;;10245:1;10235:35;;10250:18;;:::i;:::-;10235:35;10292:1;10289;10285:9;10280:14;;10115:185;;;;:::o;10306:182::-;10446:34;10442:1;10434:6;10430:14;10423:58;10306:182;:::o;10494:366::-;10636:3;10657:67;10721:2;10716:3;10657:67;:::i;:::-;10650:74;;10733:93;10822:3;10733:93;:::i;:::-;10851:2;10846:3;10842:12;10835:19;;10494:366;;;:::o;10866:419::-;11032:4;11070:2;11059:9;11055:18;11047:26;;11119:9;11113:4;11109:20;11105:1;11094:9;11090:17;11083:47;11147:131;11273:4;11147:131;:::i;:::-;11139:139;;10866:419;;;:::o;11291:223::-;11431:34;11427:1;11419:6;11415:14;11408:58;11500:6;11495:2;11487:6;11483:15;11476:31;11291:223;:::o;11520:366::-;11662:3;11683:67;11747:2;11742:3;11683:67;:::i;:::-;11676:74;;11759:93;11848:3;11759:93;:::i;:::-;11877:2;11872:3;11868:12;11861:19;;11520:366;;;:::o;11892:419::-;12058:4;12096:2;12085:9;12081:18;12073:26;;12145:9;12139:4;12135:20;12131:1;12120:9;12116:17;12109:47;12173:131;12299:4;12173:131;:::i;:::-;12165:139;;11892:419;;;:::o;12317:227::-;12457:34;12453:1;12445:6;12441:14;12434:58;12526:10;12521:2;12513:6;12509:15;12502:35;12317:227;:::o;12550:366::-;12692:3;12713:67;12777:2;12772:3;12713:67;:::i;:::-;12706:74;;12789:93;12878:3;12789:93;:::i;:::-;12907:2;12902:3;12898:12;12891:19;;12550:366;;;:::o;12922:419::-;13088:4;13126:2;13115:9;13111:18;13103:26;;13175:9;13169:4;13165:20;13161:1;13150:9;13146:17;13139:47;13203:131;13329:4;13203:131;:::i;:::-;13195:139;;12922:419;;;:::o;13347:191::-;13387:3;13406:20;13424:1;13406:20;:::i;:::-;13401:25;;13440:20;13458:1;13440:20;:::i;:::-;13435:25;;13483:1;13480;13476:9;13469:16;;13504:3;13501:1;13498:10;13495:36;;;13511:18;;:::i;:::-;13495:36;13347:191;;;;:::o;13544:290::-;13684:34;13680:1;13672:6;13668:14;13661:58;13753:34;13748:2;13740:6;13736:15;13729:59;13822:4;13817:2;13809:6;13805:15;13798:29;13544:290;:::o;13840:366::-;13982:3;14003:67;14067:2;14062:3;14003:67;:::i;:::-;13996:74;;14079:93;14168:3;14079:93;:::i;:::-;14197:2;14192:3;14188:12;14181:19;;13840:366;;;:::o;14212:419::-;14378:4;14416:2;14405:9;14401:18;14393:26;;14465:9;14459:4;14455:20;14451:1;14440:9;14436:17;14429:47;14493:131;14619:4;14493:131;:::i;:::-;14485:139;;14212:419;;;:::o;14637:230::-;14777:34;14773:1;14765:6;14761:14;14754:58;14846:13;14841:2;14833:6;14829:15;14822:38;14637:230;:::o;14873:366::-;15015:3;15036:67;15100:2;15095:3;15036:67;:::i;:::-;15029:74;;15112:93;15201:3;15112:93;:::i;:::-;15230:2;15225:3;15221:12;15214:19;;14873:366;;;:::o;15245:419::-;15411:4;15449:2;15438:9;15434:18;15426:26;;15498:9;15492:4;15488:20;15484:1;15473:9;15469:17;15462:47;15526:131;15652:4;15526:131;:::i;:::-;15518:139;;15245:419;;;:::o;15670:250::-;15810:34;15806:1;15798:6;15794:14;15787:58;15879:33;15874:2;15866:6;15862:15;15855:58;15670:250;:::o;15926:366::-;16068:3;16089:67;16153:2;16148:3;16089:67;:::i;:::-;16082:74;;16165:93;16254:3;16165:93;:::i;:::-;16283:2;16278:3;16274:12;16267:19;;15926:366;;;:::o;16298:419::-;16464:4;16502:2;16491:9;16487:18;16479:26;;16551:9;16545:4;16541:20;16537:1;16526:9;16522:17;16515:47;16579:131;16705:4;16579:131;:::i;:::-;16571:139;;16298:419;;;:::o;16723:332::-;16844:4;16882:2;16871:9;16867:18;16859:26;;16895:71;16963:1;16952:9;16948:17;16939:6;16895:71;:::i;:::-;16976:72;17044:2;17033:9;17029:18;17020:6;16976:72;:::i;:::-;16723:332;;;;;:::o;17061:229::-;17201:34;17197:1;17189:6;17185:14;17178:58;17270:12;17265:2;17257:6;17253:15;17246:37;17061:229;:::o;17296:366::-;17438:3;17459:67;17523:2;17518:3;17459:67;:::i;:::-;17452:74;;17535:93;17624:3;17535:93;:::i;:::-;17653:2;17648:3;17644:12;17637:19;;17296:366;;;:::o;17668:419::-;17834:4;17872:2;17861:9;17857:18;17849:26;;17921:9;17915:4;17911:20;17907:1;17896:9;17892:17;17885:47;17949:131;18075:4;17949:131;:::i;:::-;17941:139;;17668:419;;;:::o;18093:173::-;18233:25;18229:1;18221:6;18217:14;18210:49;18093:173;:::o;18272:366::-;18414:3;18435:67;18499:2;18494:3;18435:67;:::i;:::-;18428:74;;18511:93;18600:3;18511:93;:::i;:::-;18629:2;18624:3;18620:12;18613:19;;18272:366;;;:::o;18644:419::-;18810:4;18848:2;18837:9;18833:18;18825:26;;18897:9;18891:4;18887:20;18883:1;18872:9;18868:17;18861:47;18925:131;19051:4;18925:131;:::i;:::-;18917:139;;18644:419;;;:::o;19069:224::-;19209:34;19205:1;19197:6;19193:14;19186:58;19278:7;19273:2;19265:6;19261:15;19254:32;19069:224;:::o;19299:366::-;19441:3;19462:67;19526:2;19521:3;19462:67;:::i;:::-;19455:74;;19538:93;19627:3;19538:93;:::i;:::-;19656:2;19651:3;19647:12;19640:19;;19299:366;;;:::o;19671:419::-;19837:4;19875:2;19864:9;19860:18;19852:26;;19924:9;19918:4;19914:20;19910:1;19899:9;19895:17;19888:47;19952:131;20078:4;19952:131;:::i;:::-;19944:139;;19671:419;;;:::o;20096:249::-;20236:34;20232:1;20224:6;20220:14;20213:58;20305:32;20300:2;20292:6;20288:15;20281:57;20096:249;:::o;20351:366::-;20493:3;20514:67;20578:2;20573:3;20514:67;:::i;:::-;20507:74;;20590:93;20679:3;20590:93;:::i;:::-;20708:2;20703:3;20699:12;20692:19;;20351:366;;;:::o;20723:419::-;20889:4;20927:2;20916:9;20912:18;20904:26;;20976:9;20970:4;20966:20;20962:1;20951:9;20947:17;20940:47;21004:131;21130:4;21004:131;:::i;:::-;20996:139;;20723:419;;;:::o;21148:227::-;21288:34;21284:1;21276:6;21272:14;21265:58;21357:10;21352:2;21344:6;21340:15;21333:35;21148:227;:::o;21381:366::-;21523:3;21544:67;21608:2;21603:3;21544:67;:::i;:::-;21537:74;;21620:93;21709:3;21620:93;:::i;:::-;21738:2;21733:3;21729:12;21722:19;;21381:366;;;:::o;21753:419::-;21919:4;21957:2;21946:9;21942:18;21934:26;;22006:9;22000:4;21996:20;21992:1;21981:9;21977:17;21970:47;22034:131;22160:4;22034:131;:::i;:::-;22026:139;;21753:419;;;:::o;22178:224::-;22318:34;22314:1;22306:6;22302:14;22295:58;22387:7;22382:2;22374:6;22370:15;22363:32;22178:224;:::o;22408:366::-;22550:3;22571:67;22635:2;22630:3;22571:67;:::i;:::-;22564:74;;22647:93;22736:3;22647:93;:::i;:::-;22765:2;22760:3;22756:12;22749:19;;22408:366;;;:::o;22780:419::-;22946:4;22984:2;22973:9;22969:18;22961:26;;23033:9;23027:4;23023:20;23019:1;23008:9;23004:17;22997:47;23061:131;23187:4;23061:131;:::i;:::-;23053:139;;22780:419;;;:::o;23205:229::-;23345:34;23341:1;23333:6;23329:14;23322:58;23414:12;23409:2;23401:6;23397:15;23390:37;23205:229;:::o;23440:366::-;23582:3;23603:67;23667:2;23662:3;23603:67;:::i;:::-;23596:74;;23679:93;23768:3;23679:93;:::i;:::-;23797:2;23792:3;23788:12;23781:19;;23440:366;;;:::o;23812:419::-;23978:4;24016:2;24005:9;24001:18;23993:26;;24065:9;24059:4;24055:20;24051:1;24040:9;24036:17;24029:47;24093:131;24219:4;24093:131;:::i;:::-;24085:139;;23812:419;;;:::o;24237:225::-;24377:34;24373:1;24365:6;24361:14;24354:58;24446:8;24441:2;24433:6;24429:15;24422:33;24237:225;:::o;24468:366::-;24610:3;24631:67;24695:2;24690:3;24631:67;:::i;:::-;24624:74;;24707:93;24796:3;24707:93;:::i;:::-;24825:2;24820:3;24816:12;24809:19;;24468:366;;;:::o;24840:419::-;25006:4;25044:2;25033:9;25029:18;25021:26;;25093:9;25087:4;25083:20;25079:1;25068:9;25064:17;25057:47;25121:131;25247:4;25121:131;:::i;:::-;25113:139;;24840:419;;;:::o;25265:182::-;25405:34;25401:1;25393:6;25389:14;25382:58;25265:182;:::o;25453:366::-;25595:3;25616:67;25680:2;25675:3;25616:67;:::i;:::-;25609:74;;25692:93;25781:3;25692:93;:::i;:::-;25810:2;25805:3;25801:12;25794:19;;25453:366;;;:::o;25825:419::-;25991:4;26029:2;26018:9;26014:18;26006:26;;26078:9;26072:4;26068:20;26064:1;26053:9;26049:17;26042:47;26106:131;26232:4;26106:131;:::i;:::-;26098:139;;25825:419;;;:::o;26250:143::-;26307:5;26338:6;26332:13;26323:22;;26354:33;26381:5;26354:33;:::i;:::-;26250:143;;;;:::o;26399:351::-;26469:6;26518:2;26506:9;26497:7;26493:23;26489:32;26486:119;;;26524:79;;:::i;:::-;26486:119;26644:1;26669:64;26725:7;26716:6;26705:9;26701:22;26669:64;:::i;:::-;26659:74;;26615:128;26399:351;;;;:::o;26756:332::-;26877:4;26915:2;26904:9;26900:18;26892:26;;26928:71;26996:1;26985:9;26981:17;26972:6;26928:71;:::i;:::-;27009:72;27077:2;27066:9;27062:18;27053:6;27009:72;:::i;:::-;26756:332;;;;;:::o;27094:137::-;27148:5;27179:6;27173:13;27164:22;;27195:30;27219:5;27195:30;:::i;:::-;27094:137;;;;:::o;27237:345::-;27304:6;27353:2;27341:9;27332:7;27328:23;27324:32;27321:119;;;27359:79;;:::i;:::-;27321:119;27479:1;27504:61;27557:7;27548:6;27537:9;27533:22;27504:61;:::i;:::-;27494:71;;27450:125;27237:345;;;;:::o;27588:223::-;27728:34;27724:1;27716:6;27712:14;27705:58;27797:6;27792:2;27784:6;27780:15;27773:31;27588:223;:::o;27817:366::-;27959:3;27980:67;28044:2;28039:3;27980:67;:::i;:::-;27973:74;;28056:93;28145:3;28056:93;:::i;:::-;28174:2;28169:3;28165:12;28158:19;;27817:366;;;:::o;28189:419::-;28355:4;28393:2;28382:9;28378:18;28370:26;;28442:9;28436:4;28432:20;28428:1;28417:9;28413:17;28406:47;28470:131;28596:4;28470:131;:::i;:::-;28462:139;;28189:419;;;:::o;28614:221::-;28754:34;28750:1;28742:6;28738:14;28731:58;28823:4;28818:2;28810:6;28806:15;28799:29;28614:221;:::o;28841:366::-;28983:3;29004:67;29068:2;29063:3;29004:67;:::i;:::-;28997:74;;29080:93;29169:3;29080:93;:::i;:::-;29198:2;29193:3;29189:12;29182:19;;28841:366;;;:::o;29213:419::-;29379:4;29417:2;29406:9;29402:18;29394:26;;29466:9;29460:4;29456:20;29452:1;29441:9;29437:17;29430:47;29494:131;29620:4;29494:131;:::i;:::-;29486:139;;29213:419;;;:::o;29638:224::-;29778:34;29774:1;29766:6;29762:14;29755:58;29847:7;29842:2;29834:6;29830:15;29823:32;29638:224;:::o;29868:366::-;30010:3;30031:67;30095:2;30090:3;30031:67;:::i;:::-;30024:74;;30107:93;30196:3;30107:93;:::i;:::-;30225:2;30220:3;30216:12;30209:19;;29868:366;;;:::o;30240:419::-;30406:4;30444:2;30433:9;30429:18;30421:26;;30493:9;30487:4;30483:20;30479:1;30468:9;30464:17;30457:47;30521:131;30647:4;30521:131;:::i;:::-;30513:139;;30240:419;;;:::o;30665:222::-;30805:34;30801:1;30793:6;30789:14;30782:58;30874:5;30869:2;30861:6;30857:15;30850:30;30665:222;:::o;30893:366::-;31035:3;31056:67;31120:2;31115:3;31056:67;:::i;:::-;31049:74;;31132:93;31221:3;31132:93;:::i;:::-;31250:2;31245:3;31241:12;31234:19;;30893:366;;;:::o;31265:419::-;31431:4;31469:2;31458:9;31454:18;31446:26;;31518:9;31512:4;31508:20;31504:1;31493:9;31489:17;31482:47;31546:131;31672:4;31546:131;:::i;:::-;31538:139;;31265:419;;;:::o;31690:176::-;31830:28;31826:1;31818:6;31814:14;31807:52;31690:176;:::o;31872:366::-;32014:3;32035:67;32099:2;32094:3;32035:67;:::i;:::-;32028:74;;32111:93;32200:3;32111:93;:::i;:::-;32229:2;32224:3;32220:12;32213:19;;31872:366;;;:::o;32244:419::-;32410:4;32448:2;32437:9;32433:18;32425:26;;32497:9;32491:4;32487:20;32483:1;32472:9;32468:17;32461:47;32525:131;32651:4;32525:131;:::i;:::-;32517:139;;32244:419;;;:::o;32669:243::-;32809:34;32805:1;32797:6;32793:14;32786:58;32878:26;32873:2;32865:6;32861:15;32854:51;32669:243;:::o;32918:366::-;33060:3;33081:67;33145:2;33140:3;33081:67;:::i;:::-;33074:74;;33157:93;33246:3;33157:93;:::i;:::-;33275:2;33270:3;33266:12;33259:19;;32918:366;;;:::o;33290:419::-;33456:4;33494:2;33483:9;33479:18;33471:26;;33543:9;33537:4;33533:20;33529:1;33518:9;33514:17;33507:47;33571:131;33697:4;33571:131;:::i;:::-;33563:139;;33290:419;;;:::o;33715:194::-;33755:4;33775:20;33793:1;33775:20;:::i;:::-;33770:25;;33809:20;33827:1;33809:20;:::i;:::-;33804:25;;33853:1;33850;33846:9;33838:17;;33877:1;33871:4;33868:11;33865:37;;;33882:18;;:::i;:::-;33865:37;33715:194;;;;:::o;33915:225::-;34055:34;34051:1;34043:6;34039:14;34032:58;34124:8;34119:2;34111:6;34107:15;34100:33;33915:225;:::o;34146:366::-;34288:3;34309:67;34373:2;34368:3;34309:67;:::i;:::-;34302:74;;34385:93;34474:3;34385:93;:::i;:::-;34503:2;34498:3;34494:12;34487:19;;34146:366;;;:::o;34518:419::-;34684:4;34722:2;34711:9;34707:18;34699:26;;34771:9;34765:4;34761:20;34757:1;34746:9;34742:17;34735:47;34799:131;34925:4;34799:131;:::i;:::-;34791:139;;34518:419;;;:::o;34943:180::-;34991:77;34988:1;34981:88;35088:4;35085:1;35078:15;35112:4;35109:1;35102:15;35129:180;35177:77;35174:1;35167:88;35274:4;35271:1;35264:15;35298:4;35295:1;35288:15;35315:143;35372:5;35403:6;35397:13;35388:22;;35419:33;35446:5;35419:33;:::i;:::-;35315:143;;;;:::o;35464:351::-;35534:6;35583:2;35571:9;35562:7;35558:23;35554:32;35551:119;;;35589:79;;:::i;:::-;35551:119;35709:1;35734:64;35790:7;35781:6;35770:9;35766:22;35734:64;:::i;:::-;35724:74;;35680:128;35464:351;;;;:::o;35821:85::-;35866:7;35895:5;35884:16;;35821:85;;;:::o;35912:158::-;35970:9;36003:61;36021:42;36030:32;36056:5;36030:32;:::i;:::-;36021:42;:::i;:::-;36003:61;:::i;:::-;35990:74;;35912:158;;;:::o;36076:147::-;36171:45;36210:5;36171:45;:::i;:::-;36166:3;36159:58;36076:147;;:::o;36229:114::-;36296:6;36330:5;36324:12;36314:22;;36229:114;;;:::o;36349:184::-;36448:11;36482:6;36477:3;36470:19;36522:4;36517:3;36513:14;36498:29;;36349:184;;;;:::o;36539:132::-;36606:4;36629:3;36621:11;;36659:4;36654:3;36650:14;36642:22;;36539:132;;;:::o;36677:108::-;36754:24;36772:5;36754:24;:::i;:::-;36749:3;36742:37;36677:108;;:::o;36791:179::-;36860:10;36881:46;36923:3;36915:6;36881:46;:::i;:::-;36959:4;36954:3;36950:14;36936:28;;36791:179;;;;:::o;36976:113::-;37046:4;37078;37073:3;37069:14;37061:22;;36976:113;;;:::o;37125:732::-;37244:3;37273:54;37321:5;37273:54;:::i;:::-;37343:86;37422:6;37417:3;37343:86;:::i;:::-;37336:93;;37453:56;37503:5;37453:56;:::i;:::-;37532:7;37563:1;37548:284;37573:6;37570:1;37567:13;37548:284;;;37649:6;37643:13;37676:63;37735:3;37720:13;37676:63;:::i;:::-;37669:70;;37762:60;37815:6;37762:60;:::i;:::-;37752:70;;37608:224;37595:1;37592;37588:9;37583:14;;37548:284;;;37552:14;37848:3;37841:10;;37249:608;;;37125:732;;;;:::o;37863:831::-;38126:4;38164:3;38153:9;38149:19;38141:27;;38178:71;38246:1;38235:9;38231:17;38222:6;38178:71;:::i;:::-;38259:80;38335:2;38324:9;38320:18;38311:6;38259:80;:::i;:::-;38386:9;38380:4;38376:20;38371:2;38360:9;38356:18;38349:48;38414:108;38517:4;38508:6;38414:108;:::i;:::-;38406:116;;38532:72;38600:2;38589:9;38585:18;38576:6;38532:72;:::i;:::-;38614:73;38682:3;38671:9;38667:19;38658:6;38614:73;:::i;:::-;37863:831;;;;;;;;:::o;38700:179::-;38840:31;38836:1;38828:6;38824:14;38817:55;38700:179;:::o;38885:366::-;39027:3;39048:67;39112:2;39107:3;39048:67;:::i;:::-;39041:74;;39124:93;39213:3;39124:93;:::i;:::-;39242:2;39237:3;39233:12;39226:19;;38885:366;;;:::o;39257:419::-;39423:4;39461:2;39450:9;39446:18;39438:26;;39510:9;39504:4;39500:20;39496:1;39485:9;39481:17;39474:47;39538:131;39664:4;39538:131;:::i;:::-;39530:139;;39257:419;;;:::o;39682:147::-;39783:11;39820:3;39805:18;;39682:147;;;;:::o;39835:114::-;;:::o;39955:398::-;40114:3;40135:83;40216:1;40211:3;40135:83;:::i;:::-;40128:90;;40227:93;40316:3;40227:93;:::i;:::-;40345:1;40340:3;40336:11;40329:18;;39955:398;;;:::o;40359:379::-;40543:3;40565:147;40708:3;40565:147;:::i;:::-;40558:154;;40729:3;40722:10;;40359:379;;;:::o;40744:245::-;40884:34;40880:1;40872:6;40868:14;40861:58;40953:28;40948:2;40940:6;40936:15;40929:53;40744:245;:::o;40995:366::-;41137:3;41158:67;41222:2;41217:3;41158:67;:::i;:::-;41151:74;;41234:93;41323:3;41234:93;:::i;:::-;41352:2;41347:3;41343:12;41336:19;;40995:366;;;:::o;41367:419::-;41533:4;41571:2;41560:9;41556:18;41548:26;;41620:9;41614:4;41610:20;41606:1;41595:9;41591:17;41584:47;41648:131;41774:4;41648:131;:::i;:::-;41640:139;;41367:419;;;:::o

Swarm Source

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