ETH Price: $3,242.78 (-2.78%)
 

Overview

Max Total Supply

3,000,000,000,000 PYTHON

Holders

157

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*已经跌无可跌了.eth
Balance
3,614,745.833734691 PYTHON

Value
$0.00
0x4b7561eeb9a87e60efd169471e0a9467dd739ffd
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:
PYTHON

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 * SPDX-License-Identifier: UNLICENSED 
 *
*/

pragma solidity ^0.8.20;

interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

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

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

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

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

}

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

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

contract PYTHON is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Floki Predator";
    string private constant _symbol = "PYTHON";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 3e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private minTokensToSwap = 15e8 * 10**9;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxWallet;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 0;
    uint256 private _maxWalletSize = 27e9 * 10**9;
    uint256 private _buyFee = 0;
    uint256 private _sellFee = 0;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _developmentWallet;
    address payable private _marketingWallet;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _swapAll = true;
    bool private _noFees = false;
    bool private inSwap = false;
    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool dev, bool marketing);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
        constructor () {

        _developmentWallet = payable(0x418e5eA963145AAeAc361575B0C2CB04Dab75796);
        _marketingWallet = payable(0xD207A33B94381109E9f53a792D7985fFd02fe7CC);
        
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentWallet] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromMaxWallet[owner()] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[_developmentWallet] = true;
        _isExcludedFromMaxWallet[_marketingWallet] = true;

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

    function name() public pure returns (string memory) {
        return _name;
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner()) {

            if(_maxWalletSize != 0 && to != uniswapV2Pair && !_isExcludedFromMaxWallet[to]) {
                require(balanceOf(address(to)) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                _teamFee = _buyFee;
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            if(!inSwap && from != uniswapV2Pair && tradingOpen) {

                _teamFee = _sellFee;

                if (automatedMarketMakerPairs[to]) {
                    if(contractTokenBalance > minTokensToSwap) {
                        if(!_swapAll) {
                            contractTokenBalance = minTokensToSwap;
                        }
                        swapBack(contractTokenBalance);
                    }
                }
            }
        }
        bool takeFee = true;

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

        if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack(uint256 contractTokenBalance) private {
        
        swapTokensForEth(contractTokenBalance);

        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        (bool development, ) = _developmentWallet.call{value: amount.div(2)}("");
        (bool marketing, ) = _marketingWallet.call{value: amount.div(2)}("");

        emit Response(development, marketing);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _transferStandard(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

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

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

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

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

    receive() external payable {}
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        _buyFee = 7;
        _sellFee = 26;
		_taxFee = 2;
        tradingOpen = true;
        automatedMarketMakerPairs[uniswapV2Pair] = true;
    }

    function setDevelopmentWallet (address payable development) external onlyOwner() {
        _isExcludedFromFee[_developmentWallet] = false;
        _developmentWallet = development;
        _isExcludedFromFee[development] = true;
    }
    
    function setMarketingWallet (address payable marketing) external onlyOwner {
        _isExcludedFromFee[_marketingWallet] = false;
        _marketingWallet = marketing;
        _isExcludedFromFee[marketing] = true;
    }

    function excludeFromFee(address[] calldata ads, bool onoff) public onlyOwner {
        for (uint i = 0; i < ads.length; i++) {
            _isExcludedFromFee[ads[i]] = onoff;
        }
    }

    function isExcludedFromFee(address ad) public view returns (bool) {
        return _isExcludedFromFee[ad];
    }

    function excludeFromMaxWallet(address[] calldata ads, bool onoff) public onlyOwner {
        for (uint i = 0; i < ads.length; i++) {
            _isExcludedFromMaxWallet[ads[i]] = onoff;
        }
    }
    
    function isExcludedMaxWallet(address ad) public view returns (bool) {
        return _isExcludedFromMaxWallet[ad];
    }

    function setFees(uint256 buy, uint256 sell) external onlyOwner {
        _buyFee = buy;
        _sellFee = sell;
    }

    function setTaxFee(uint256 tax) external onlyOwner {
        _taxFee = tax;
    }
    
    function setMinTokensToSwap(uint256 numToken) external onlyOwner {
        minTokensToSwap = numToken * 10**9;
    }

    function setMaxWallet(uint256 amt) external onlyOwner {
        _maxWalletSize = amt * 10**9;
    }

    function setSwapAll(bool onoff) external onlyOwner {
        _swapAll = onoff;
    }

    function setNoFees(bool onoff) external onlyOwner {
        _noFees = onoff;
    }

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

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

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

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }

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

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"dev","type":"bool"},{"indexed":false,"internalType":"bool","name":"marketing","type":"bool"}],"name":"Response","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":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"development","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numToken","type":"uint256"}],"name":"setMinTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setNoFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268a2a15d09519be000005f196200001c9190620006b2565b5f196200002a919062000716565b6002556714d1120d7b1600006004555f600a555f600b55680176b344f2a78c0000600c555f600d555f600e55600a54600f55600b546010555f6014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f601460176101000a81548160ff021916908315150217905550348015620000d6575f80fd5b505f620000e86200064e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073418e5ea963145aaeac361575b0c2cb04dab7579660115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d207a33b94381109e9f53a792d7985ffd02fe7cc60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460055f620002426200064e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f620002946200065560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f620004396200065560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005d96200064e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68a2a15d09519be0000060405162000640919062000761565b60405180910390a36200077c565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006be826200067c565b9150620006cb836200067c565b925082620006de57620006dd62000685565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000722826200067c565b91506200072f836200067c565b92508282039050818111156200074a5762000749620006e9565b5b92915050565b6200075b816200067c565b82525050565b5f602082019050620007765f83018462000750565b92915050565b61422a806200078a5f395ff3fe6080604052600436106101c5575f3560e01c8063715018a6116100f6578063c4081a4c11610094578063db92dbb611610063578063db92dbb6146105e0578063dd62ed3e1461060a578063de30aad114610646578063e1ab04c91461066e576101cc565b8063c4081a4c14610552578063c9567bf91461057a578063caa8934514610590578063db8aeab1146105b8576101cc565b806395d89b41116100d057806395d89b41146104ae5780639a7a23d6146104d8578063a9059cbb14610500578063c3c8cd801461053c576101cc565b8063715018a61461044657806372ac24861461045c5780638da5cb5b14610484576101cc565b806328875c16116101635780635d0044ca1161013d5780635d0044ca146103a45780635d098b38146103cc5780636fc3eaec146103f457806370a082311461040a576101cc565b806328875c1614610316578063313ce5671461033e5780635342acb414610368576101cc565b8063110430bb1161019f578063110430bb1461025e57806318160ddd1461028657806323b872dd146102b057806327f3a72a146102ec576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630b78f9c014610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106aa565b6040516101f191906131d8565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b919061328d565b6106e7565b60405161022d91906132e5565b60405180910390f35b348015610241575f80fd5b5061025c600480360381019061025791906132fe565b610704565b005b348015610269575f80fd5b50610284600480360381019061027f919061333c565b6107aa565b005b348015610291575f80fd5b5061029a610857565b6040516102a79190613376565b60405180910390f35b3480156102bb575f80fd5b506102d660048036038101906102d1919061338f565b610867565b6040516102e391906132e5565b60405180910390f35b3480156102f7575f80fd5b5061030061093b565b60405161030d9190613376565b60405180910390f35b348015610321575f80fd5b5061033c6004803603810190610337919061346a565b61094a565b005b348015610349575f80fd5b50610352610a79565b60405161035f91906134e2565b60405180910390f35b348015610373575f80fd5b5061038e600480360381019061038991906134fb565b610a81565b60405161039b91906132e5565b60405180910390f35b3480156103af575f80fd5b506103ca60048036038101906103c5919061333c565b610ad3565b005b3480156103d7575f80fd5b506103f260048036038101906103ed9190613561565b610b80565b005b3480156103ff575f80fd5b50610408610d21565b005b348015610415575f80fd5b50610430600480360381019061042b91906134fb565b610dc5565b60405161043d9190613376565b60405180910390f35b348015610451575f80fd5b5061045a610e13565b005b348015610467575f80fd5b50610482600480360381019061047d9190613561565b610f61565b005b34801561048f575f80fd5b50610498611102565b6040516104a5919061359b565b60405180910390f35b3480156104b9575f80fd5b506104c2611129565b6040516104cf91906131d8565b60405180910390f35b3480156104e3575f80fd5b506104fe60048036038101906104f991906135b4565b611166565b005b34801561050b575f80fd5b506105266004803603810190610521919061328d565b611297565b60405161053391906132e5565b60405180910390f35b348015610547575f80fd5b506105506112b4565b005b34801561055d575f80fd5b506105786004803603810190610573919061333c565b611360565b005b348015610585575f80fd5b5061058e6113fe565b005b34801561059b575f80fd5b506105b660048036038101906105b191906135f2565b611940565b005b3480156105c3575f80fd5b506105de60048036038101906105d9919061346a565b6119f1565b005b3480156105eb575f80fd5b506105f4611b20565b6040516106019190613376565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b919061361d565b611b50565b60405161063d9190613376565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906135f2565b611bd2565b005b348015610679575f80fd5b50610694600480360381019061068f91906134fb565b611c83565b6040516106a191906132e5565b60405180910390f35b60606040518060400160405280600e81526020017f466c6f6b69205072656461746f72000000000000000000000000000000000000815250905090565b5f6106fa6106f3611cd5565b8484611cdc565b6001905092915050565b61070c611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f906136a5565b60405180910390fd5b81600d8190555080600e819055505050565b6107b2611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610835906136a5565b60405180910390fd5b633b9aca008161084e91906136f0565b60048190555050565b5f68a2a15d09519be00000905090565b5f610873848484611e9f565b6109308461087f611cd5565b61092b856040518060600160405280602881526020016141cd6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108e2611cd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125349092919063ffffffff16565b611cdc565b600190509392505050565b5f61094530610dc5565b905090565b610952611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d5906136a5565b60405180910390fd5b5f5b83839050811015610a73578160085f868685818110610a0257610a01613731565b5b9050602002016020810190610a1791906134fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506109e0565b50505050565b5f6009905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610adb611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e906136a5565b60405180910390fd5b633b9aca0081610b7791906136f0565b600c8190555050565b610b88611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906136a5565b60405180910390fd5b5f60085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610d29611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac906136a5565b60405180910390fd5b5f479050610dc281612596565b50565b5f610e0c60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270c565b9050919050565b610e1b611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e906136a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f69611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec906136a5565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f505954484f4e0000000000000000000000000000000000000000000000000000815250905090565b61116e611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1906136a5565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611280906137ce565b60405180910390fd5b6112938282612778565b5050565b5f6112aa6112a3611cd5565b8484611e9f565b6001905092915050565b6112bc611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f906136a5565b60405180910390fd5b5f61135230610dc5565b905061135d816127d0565b50565b611368611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb906136a5565b60405180910390fd5b80600a8190555050565b611406611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611489906136a5565b60405180910390fd5b60148054906101000a900460ff16156114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790613836565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061156d3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668a2a15d09519be00000611cdc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115da9190613868565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561163f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116639190613868565b6040518363ffffffff1660e01b8152600401611680929190613893565b6020604051808303815f875af115801561169c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c09190613868565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061174730610dc5565b5f80611751611102565b426040518863ffffffff1660e01b8152600401611773969594939291906138fc565b60606040518083038185885af115801561178f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117b4919061396f565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118549291906139bf565b6020604051808303815f875af1158015611870573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189491906139fa565b506007600d81905550601a600e819055506002600a8190555060016014806101000a81548160ff021916908315150217905550600160155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611948611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906136a5565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6119f9611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c906136a5565b60405180910390fd5b5f5b83839050811015611b1a578160095f868685818110611aa957611aa8613731565b5b9050602002016020810190611abe91906134fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611a87565b50505050565b5f611b4b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dc5565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bda611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d906136a5565b60405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4190613a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613b23565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e929190613376565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0490613bb1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7290613c3f565b60405180910390fd5b5f8111611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490613ccd565b60405180910390fd5b611fc5611102565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120335750612003611102565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123bb575f600c5414158015612097575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120ea575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561214857600c54816120fc84610dc5565b6121069190613ceb565b1115612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e90613d8e565b60405180910390fd5b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121f1575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612244575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a05760148054906101000a900460ff16612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90613df6565b60405180910390fd5b600d54600b819055505b5f6122aa30610dc5565b9050601460179054906101000a900460ff16158015612316575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561232c575060148054906101000a900460ff165b156123b957600e54600b8190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123b8576004548111156123b757601460159054906101000a900460ff166123ad5760045490505b6123b681612a3b565b5b5b5b505b5f60019050601460169054906101000a900460ff1680612421575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612472575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561247b575f90505b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612519575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612522575f90505b61252e84848484612a5e565b50505050565b5f83831115829061257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257291906131d8565b60405180910390fd5b505f83856125899190613e14565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125e3600284612a8b90919063ffffffff16565b6040516125ef90613e74565b5f6040518083038185875af1925050503d805f8114612629576040519150601f19603f3d011682016040523d82523d5f602084013e61262e565b606091505b505090505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661267f600285612a8b90919063ffffffff16565b60405161268b90613e74565b5f6040518083038185875af1925050503d805f81146126c5576040519150601f19603f3d011682016040523d82523d5f602084013e6126ca565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b982826040516126ff929190613e88565b60405180910390a1505050565b5f600254821115612752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274990613f1f565b60405180910390fd5b5f61275b612ad4565b90506127708184612a8b90919063ffffffff16565b915050919050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601460176101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561280757612806613f3d565b5b6040519080825280602002602001820160405280156128355781602001602082028036833780820191505090505b50905030815f8151811061284c5761284b613731565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129149190613868565b8160018151811061292857612927613731565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061298e3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cdc565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129f0959493929190614021565b5f604051808303815f87803b158015612a07575f80fd5b505af1158015612a19573d5f803e3d5ffd5b50505050505f601460176101000a81548160ff02191690831515021790555050565b612a44816127d0565b5f4790505f811115612a5a57612a5947612596565b5b5050565b80612a6c57612a6b612afd565b5b612a77848484612b36565b80612a8557612a84612cf6565b5b50505050565b5f612acc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d0a565b905092915050565b5f805f612adf612d6b565b91509150612af68183612a8b90919063ffffffff16565b9250505090565b5f600a54148015612b0f57505f600b54145b612b3457600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f80612b4587612dca565b955095509550955095509550612ba18660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2a90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c328560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e7390919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c7c81612ed0565b612c868483612f87565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ce39190613376565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f8083118290612d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4791906131d8565b60405180910390fd5b505f8385612d5e91906140a6565b9050809150509392505050565b5f805f60025490505f68a2a15d09519be000009050612d9e68a2a15d09519be00000600254612a8b90919063ffffffff16565b821015612dbd5760025468a2a15d09519be00000935093505050612dc6565b81819350935050505b9091565b5f805f805f805f805f612de28a600a54600b54612fc1565b9250925092505f612df1612ad4565b90505f805f612e028e878787613053565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612e6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612534565b905092915050565b5f808284612e819190613ceb565b905083811015612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614120565b60405180910390fd5b8091505092915050565b5f612ed9612ad4565b90505f612eef82846130d790919063ffffffff16565b9050612f418160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e7390919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612f9c82600254612e2a90919063ffffffff16565b600281905550612fb781600354612e7390919063ffffffff16565b6003819055505050565b5f805f80612feb6064612fdd888a6130d790919063ffffffff16565b612a8b90919063ffffffff16565b90505f6130146064613006888b6130d790919063ffffffff16565b612a8b90919063ffffffff16565b90505f61303c8261302e858c612e2a90919063ffffffff16565b612e2a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061306a85896130d790919063ffffffff16565b90505f61308086896130d790919063ffffffff16565b90505f61309687896130d790919063ffffffff16565b90505f6130be826130b08587612e2a90919063ffffffff16565b612e2a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036130e7575f9050613148565b5f82846130f491906136f0565b905082848261310391906140a6565b14613143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313a906141ae565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561318557808201518184015260208101905061316a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6131aa8261314e565b6131b48185613158565b93506131c4818560208601613168565b6131cd81613190565b840191505092915050565b5f6020820190508181035f8301526131f081846131a0565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61322982613200565b9050919050565b6132398161321f565b8114613243575f80fd5b50565b5f8135905061325481613230565b92915050565b5f819050919050565b61326c8161325a565b8114613276575f80fd5b50565b5f8135905061328781613263565b92915050565b5f80604083850312156132a3576132a26131f8565b5b5f6132b085828601613246565b92505060206132c185828601613279565b9150509250929050565b5f8115159050919050565b6132df816132cb565b82525050565b5f6020820190506132f85f8301846132d6565b92915050565b5f8060408385031215613314576133136131f8565b5b5f61332185828601613279565b925050602061333285828601613279565b9150509250929050565b5f60208284031215613351576133506131f8565b5b5f61335e84828501613279565b91505092915050565b6133708161325a565b82525050565b5f6020820190506133895f830184613367565b92915050565b5f805f606084860312156133a6576133a56131f8565b5b5f6133b386828701613246565b93505060206133c486828701613246565b92505060406133d586828701613279565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613400576133ff6133df565b5b8235905067ffffffffffffffff81111561341d5761341c6133e3565b5b602083019150836020820283011115613439576134386133e7565b5b9250929050565b613449816132cb565b8114613453575f80fd5b50565b5f8135905061346481613440565b92915050565b5f805f60408486031215613481576134806131f8565b5b5f84013567ffffffffffffffff81111561349e5761349d6131fc565b5b6134aa868287016133eb565b935093505060206134bd86828701613456565b9150509250925092565b5f60ff82169050919050565b6134dc816134c7565b82525050565b5f6020820190506134f55f8301846134d3565b92915050565b5f602082840312156135105761350f6131f8565b5b5f61351d84828501613246565b91505092915050565b5f61353082613200565b9050919050565b61354081613526565b811461354a575f80fd5b50565b5f8135905061355b81613537565b92915050565b5f60208284031215613576576135756131f8565b5b5f6135838482850161354d565b91505092915050565b6135958161321f565b82525050565b5f6020820190506135ae5f83018461358c565b92915050565b5f80604083850312156135ca576135c96131f8565b5b5f6135d785828601613246565b92505060206135e885828601613456565b9150509250929050565b5f60208284031215613607576136066131f8565b5b5f61361484828501613456565b91505092915050565b5f8060408385031215613633576136326131f8565b5b5f61364085828601613246565b925050602061365185828601613246565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61368f602083613158565b915061369a8261365b565b602082019050919050565b5f6020820190508181035f8301526136bc81613683565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136fa8261325a565b91506137058361325a565b92508282026137138161325a565b9150828204841483151761372a576137296136c3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6137b8603983613158565b91506137c38261375e565b604082019050919050565b5f6020820190508181035f8301526137e5816137ac565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613820601783613158565b915061382b826137ec565b602082019050919050565b5f6020820190508181035f83015261384d81613814565b9050919050565b5f8151905061386281613230565b92915050565b5f6020828403121561387d5761387c6131f8565b5b5f61388a84828501613854565b91505092915050565b5f6040820190506138a65f83018561358c565b6138b3602083018461358c565b9392505050565b5f819050919050565b5f819050919050565b5f6138e66138e16138dc846138ba565b6138c3565b61325a565b9050919050565b6138f6816138cc565b82525050565b5f60c08201905061390f5f83018961358c565b61391c6020830188613367565b61392960408301876138ed565b61393660608301866138ed565b613943608083018561358c565b61395060a0830184613367565b979650505050505050565b5f8151905061396981613263565b92915050565b5f805f60608486031215613986576139856131f8565b5b5f6139938682870161395b565b93505060206139a48682870161395b565b92505060406139b58682870161395b565b9150509250925092565b5f6040820190506139d25f83018561358c565b6139df6020830184613367565b9392505050565b5f815190506139f481613440565b92915050565b5f60208284031215613a0f57613a0e6131f8565b5b5f613a1c848285016139e6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a7f602483613158565b9150613a8a82613a25565b604082019050919050565b5f6020820190508181035f830152613aac81613a73565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b0d602283613158565b9150613b1882613ab3565b604082019050919050565b5f6020820190508181035f830152613b3a81613b01565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b9b602583613158565b9150613ba682613b41565b604082019050919050565b5f6020820190508181035f830152613bc881613b8f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c29602383613158565b9150613c3482613bcf565b604082019050919050565b5f6020820190508181035f830152613c5681613c1d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613cb7602983613158565b9150613cc282613c5d565b604082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b5f613cf58261325a565b9150613d008361325a565b9250828201905080821115613d1857613d176136c3565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613d78602383613158565b9150613d8382613d1e565b604082019050919050565b5f6020820190508181035f830152613da581613d6c565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613de0601883613158565b9150613deb82613dac565b602082019050919050565b5f6020820190508181035f830152613e0d81613dd4565b9050919050565b5f613e1e8261325a565b9150613e298361325a565b9250828203905081811115613e4157613e406136c3565b5b92915050565b5f81905092915050565b50565b5f613e5f5f83613e47565b9150613e6a82613e51565b5f82019050919050565b5f613e7e82613e54565b9150819050919050565b5f604082019050613e9b5f8301856132d6565b613ea860208301846132d6565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f09602a83613158565b9150613f1482613eaf565b604082019050919050565b5f6020820190508181035f830152613f3681613efd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f9c8161321f565b82525050565b5f613fad8383613f93565b60208301905092915050565b5f602082019050919050565b5f613fcf82613f6a565b613fd98185613f74565b9350613fe483613f84565b805f5b83811015614014578151613ffb8882613fa2565b975061400683613fb9565b925050600181019050613fe7565b5085935050505092915050565b5f60a0820190506140345f830188613367565b61404160208301876138ed565b81810360408301526140538186613fc5565b9050614062606083018561358c565b61406f6080830184613367565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140b08261325a565b91506140bb8361325a565b9250826140cb576140ca614079565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61410a601b83613158565b9150614115826140d6565b602082019050919050565b5f6020820190508181035f830152614137816140fe565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614198602183613158565b91506141a38261413e565b604082019050919050565b5f6020820190508181035f8301526141c58161418c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220491b0b5950372e60094d6d85ee678fb2f59815a4b78e1eef7dec8d5ced495da964736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c8063715018a6116100f6578063c4081a4c11610094578063db92dbb611610063578063db92dbb6146105e0578063dd62ed3e1461060a578063de30aad114610646578063e1ab04c91461066e576101cc565b8063c4081a4c14610552578063c9567bf91461057a578063caa8934514610590578063db8aeab1146105b8576101cc565b806395d89b41116100d057806395d89b41146104ae5780639a7a23d6146104d8578063a9059cbb14610500578063c3c8cd801461053c576101cc565b8063715018a61461044657806372ac24861461045c5780638da5cb5b14610484576101cc565b806328875c16116101635780635d0044ca1161013d5780635d0044ca146103a45780635d098b38146103cc5780636fc3eaec146103f457806370a082311461040a576101cc565b806328875c1614610316578063313ce5671461033e5780635342acb414610368576101cc565b8063110430bb1161019f578063110430bb1461025e57806318160ddd1461028657806323b872dd146102b057806327f3a72a146102ec576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630b78f9c014610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106aa565b6040516101f191906131d8565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b919061328d565b6106e7565b60405161022d91906132e5565b60405180910390f35b348015610241575f80fd5b5061025c600480360381019061025791906132fe565b610704565b005b348015610269575f80fd5b50610284600480360381019061027f919061333c565b6107aa565b005b348015610291575f80fd5b5061029a610857565b6040516102a79190613376565b60405180910390f35b3480156102bb575f80fd5b506102d660048036038101906102d1919061338f565b610867565b6040516102e391906132e5565b60405180910390f35b3480156102f7575f80fd5b5061030061093b565b60405161030d9190613376565b60405180910390f35b348015610321575f80fd5b5061033c6004803603810190610337919061346a565b61094a565b005b348015610349575f80fd5b50610352610a79565b60405161035f91906134e2565b60405180910390f35b348015610373575f80fd5b5061038e600480360381019061038991906134fb565b610a81565b60405161039b91906132e5565b60405180910390f35b3480156103af575f80fd5b506103ca60048036038101906103c5919061333c565b610ad3565b005b3480156103d7575f80fd5b506103f260048036038101906103ed9190613561565b610b80565b005b3480156103ff575f80fd5b50610408610d21565b005b348015610415575f80fd5b50610430600480360381019061042b91906134fb565b610dc5565b60405161043d9190613376565b60405180910390f35b348015610451575f80fd5b5061045a610e13565b005b348015610467575f80fd5b50610482600480360381019061047d9190613561565b610f61565b005b34801561048f575f80fd5b50610498611102565b6040516104a5919061359b565b60405180910390f35b3480156104b9575f80fd5b506104c2611129565b6040516104cf91906131d8565b60405180910390f35b3480156104e3575f80fd5b506104fe60048036038101906104f991906135b4565b611166565b005b34801561050b575f80fd5b506105266004803603810190610521919061328d565b611297565b60405161053391906132e5565b60405180910390f35b348015610547575f80fd5b506105506112b4565b005b34801561055d575f80fd5b506105786004803603810190610573919061333c565b611360565b005b348015610585575f80fd5b5061058e6113fe565b005b34801561059b575f80fd5b506105b660048036038101906105b191906135f2565b611940565b005b3480156105c3575f80fd5b506105de60048036038101906105d9919061346a565b6119f1565b005b3480156105eb575f80fd5b506105f4611b20565b6040516106019190613376565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b919061361d565b611b50565b60405161063d9190613376565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906135f2565b611bd2565b005b348015610679575f80fd5b50610694600480360381019061068f91906134fb565b611c83565b6040516106a191906132e5565b60405180910390f35b60606040518060400160405280600e81526020017f466c6f6b69205072656461746f72000000000000000000000000000000000000815250905090565b5f6106fa6106f3611cd5565b8484611cdc565b6001905092915050565b61070c611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f906136a5565b60405180910390fd5b81600d8190555080600e819055505050565b6107b2611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610835906136a5565b60405180910390fd5b633b9aca008161084e91906136f0565b60048190555050565b5f68a2a15d09519be00000905090565b5f610873848484611e9f565b6109308461087f611cd5565b61092b856040518060600160405280602881526020016141cd6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108e2611cd5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125349092919063ffffffff16565b611cdc565b600190509392505050565b5f61094530610dc5565b905090565b610952611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d5906136a5565b60405180910390fd5b5f5b83839050811015610a73578160085f868685818110610a0257610a01613731565b5b9050602002016020810190610a1791906134fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506109e0565b50505050565b5f6009905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610adb611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e906136a5565b60405180910390fd5b633b9aca0081610b7791906136f0565b600c8190555050565b610b88611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906136a5565b60405180910390fd5b5f60085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610d29611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac906136a5565b60405180910390fd5b5f479050610dc281612596565b50565b5f610e0c60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270c565b9050919050565b610e1b611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e906136a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f69611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec906136a5565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f505954484f4e0000000000000000000000000000000000000000000000000000815250905090565b61116e611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1906136a5565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611280906137ce565b60405180910390fd5b6112938282612778565b5050565b5f6112aa6112a3611cd5565b8484611e9f565b6001905092915050565b6112bc611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f906136a5565b60405180910390fd5b5f61135230610dc5565b905061135d816127d0565b50565b611368611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb906136a5565b60405180910390fd5b80600a8190555050565b611406611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611489906136a5565b60405180910390fd5b60148054906101000a900460ff16156114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790613836565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061156d3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668a2a15d09519be00000611cdc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115da9190613868565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561163f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116639190613868565b6040518363ffffffff1660e01b8152600401611680929190613893565b6020604051808303815f875af115801561169c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c09190613868565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061174730610dc5565b5f80611751611102565b426040518863ffffffff1660e01b8152600401611773969594939291906138fc565b60606040518083038185885af115801561178f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117b4919061396f565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118549291906139bf565b6020604051808303815f875af1158015611870573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189491906139fa565b506007600d81905550601a600e819055506002600a8190555060016014806101000a81548160ff021916908315150217905550600160155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611948611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906136a5565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6119f9611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c906136a5565b60405180910390fd5b5f5b83839050811015611b1a578160095f868685818110611aa957611aa8613731565b5b9050602002016020810190611abe91906134fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611a87565b50505050565b5f611b4b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dc5565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bda611cd5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d906136a5565b60405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4190613a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613b23565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e929190613376565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0490613bb1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7290613c3f565b60405180910390fd5b5f8111611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490613ccd565b60405180910390fd5b611fc5611102565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120335750612003611102565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123bb575f600c5414158015612097575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120ea575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561214857600c54816120fc84610dc5565b6121069190613ceb565b1115612147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213e90613d8e565b60405180910390fd5b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121f1575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612244575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a05760148054906101000a900460ff16612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90613df6565b60405180910390fd5b600d54600b819055505b5f6122aa30610dc5565b9050601460179054906101000a900460ff16158015612316575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561232c575060148054906101000a900460ff165b156123b957600e54600b8190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123b8576004548111156123b757601460159054906101000a900460ff166123ad5760045490505b6123b681612a3b565b5b5b5b505b5f60019050601460169054906101000a900460ff1680612421575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612472575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561247b575f90505b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612519575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612522575f90505b61252e84848484612a5e565b50505050565b5f83831115829061257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257291906131d8565b60405180910390fd5b505f83856125899190613e14565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125e3600284612a8b90919063ffffffff16565b6040516125ef90613e74565b5f6040518083038185875af1925050503d805f8114612629576040519150601f19603f3d011682016040523d82523d5f602084013e61262e565b606091505b505090505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661267f600285612a8b90919063ffffffff16565b60405161268b90613e74565b5f6040518083038185875af1925050503d805f81146126c5576040519150601f19603f3d011682016040523d82523d5f602084013e6126ca565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b982826040516126ff929190613e88565b60405180910390a1505050565b5f600254821115612752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274990613f1f565b60405180910390fd5b5f61275b612ad4565b90506127708184612a8b90919063ffffffff16565b915050919050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601460176101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561280757612806613f3d565b5b6040519080825280602002602001820160405280156128355781602001602082028036833780820191505090505b50905030815f8151811061284c5761284b613731565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129149190613868565b8160018151811061292857612927613731565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061298e3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cdc565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129f0959493929190614021565b5f604051808303815f87803b158015612a07575f80fd5b505af1158015612a19573d5f803e3d5ffd5b50505050505f601460176101000a81548160ff02191690831515021790555050565b612a44816127d0565b5f4790505f811115612a5a57612a5947612596565b5b5050565b80612a6c57612a6b612afd565b5b612a77848484612b36565b80612a8557612a84612cf6565b5b50505050565b5f612acc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d0a565b905092915050565b5f805f612adf612d6b565b91509150612af68183612a8b90919063ffffffff16565b9250505090565b5f600a54148015612b0f57505f600b54145b612b3457600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f80612b4587612dca565b955095509550955095509550612ba18660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2a90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c328560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e7390919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c7c81612ed0565b612c868483612f87565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ce39190613376565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f8083118290612d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4791906131d8565b60405180910390fd5b505f8385612d5e91906140a6565b9050809150509392505050565b5f805f60025490505f68a2a15d09519be000009050612d9e68a2a15d09519be00000600254612a8b90919063ffffffff16565b821015612dbd5760025468a2a15d09519be00000935093505050612dc6565b81819350935050505b9091565b5f805f805f805f805f612de28a600a54600b54612fc1565b9250925092505f612df1612ad4565b90505f805f612e028e878787613053565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612e6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612534565b905092915050565b5f808284612e819190613ceb565b905083811015612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614120565b60405180910390fd5b8091505092915050565b5f612ed9612ad4565b90505f612eef82846130d790919063ffffffff16565b9050612f418160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e7390919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612f9c82600254612e2a90919063ffffffff16565b600281905550612fb781600354612e7390919063ffffffff16565b6003819055505050565b5f805f80612feb6064612fdd888a6130d790919063ffffffff16565b612a8b90919063ffffffff16565b90505f6130146064613006888b6130d790919063ffffffff16565b612a8b90919063ffffffff16565b90505f61303c8261302e858c612e2a90919063ffffffff16565b612e2a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061306a85896130d790919063ffffffff16565b90505f61308086896130d790919063ffffffff16565b90505f61309687896130d790919063ffffffff16565b90505f6130be826130b08587612e2a90919063ffffffff16565b612e2a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036130e7575f9050613148565b5f82846130f491906136f0565b905082848261310391906140a6565b14613143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313a906141ae565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561318557808201518184015260208101905061316a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6131aa8261314e565b6131b48185613158565b93506131c4818560208601613168565b6131cd81613190565b840191505092915050565b5f6020820190508181035f8301526131f081846131a0565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61322982613200565b9050919050565b6132398161321f565b8114613243575f80fd5b50565b5f8135905061325481613230565b92915050565b5f819050919050565b61326c8161325a565b8114613276575f80fd5b50565b5f8135905061328781613263565b92915050565b5f80604083850312156132a3576132a26131f8565b5b5f6132b085828601613246565b92505060206132c185828601613279565b9150509250929050565b5f8115159050919050565b6132df816132cb565b82525050565b5f6020820190506132f85f8301846132d6565b92915050565b5f8060408385031215613314576133136131f8565b5b5f61332185828601613279565b925050602061333285828601613279565b9150509250929050565b5f60208284031215613351576133506131f8565b5b5f61335e84828501613279565b91505092915050565b6133708161325a565b82525050565b5f6020820190506133895f830184613367565b92915050565b5f805f606084860312156133a6576133a56131f8565b5b5f6133b386828701613246565b93505060206133c486828701613246565b92505060406133d586828701613279565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613400576133ff6133df565b5b8235905067ffffffffffffffff81111561341d5761341c6133e3565b5b602083019150836020820283011115613439576134386133e7565b5b9250929050565b613449816132cb565b8114613453575f80fd5b50565b5f8135905061346481613440565b92915050565b5f805f60408486031215613481576134806131f8565b5b5f84013567ffffffffffffffff81111561349e5761349d6131fc565b5b6134aa868287016133eb565b935093505060206134bd86828701613456565b9150509250925092565b5f60ff82169050919050565b6134dc816134c7565b82525050565b5f6020820190506134f55f8301846134d3565b92915050565b5f602082840312156135105761350f6131f8565b5b5f61351d84828501613246565b91505092915050565b5f61353082613200565b9050919050565b61354081613526565b811461354a575f80fd5b50565b5f8135905061355b81613537565b92915050565b5f60208284031215613576576135756131f8565b5b5f6135838482850161354d565b91505092915050565b6135958161321f565b82525050565b5f6020820190506135ae5f83018461358c565b92915050565b5f80604083850312156135ca576135c96131f8565b5b5f6135d785828601613246565b92505060206135e885828601613456565b9150509250929050565b5f60208284031215613607576136066131f8565b5b5f61361484828501613456565b91505092915050565b5f8060408385031215613633576136326131f8565b5b5f61364085828601613246565b925050602061365185828601613246565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61368f602083613158565b915061369a8261365b565b602082019050919050565b5f6020820190508181035f8301526136bc81613683565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136fa8261325a565b91506137058361325a565b92508282026137138161325a565b9150828204841483151761372a576137296136c3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6137b8603983613158565b91506137c38261375e565b604082019050919050565b5f6020820190508181035f8301526137e5816137ac565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613820601783613158565b915061382b826137ec565b602082019050919050565b5f6020820190508181035f83015261384d81613814565b9050919050565b5f8151905061386281613230565b92915050565b5f6020828403121561387d5761387c6131f8565b5b5f61388a84828501613854565b91505092915050565b5f6040820190506138a65f83018561358c565b6138b3602083018461358c565b9392505050565b5f819050919050565b5f819050919050565b5f6138e66138e16138dc846138ba565b6138c3565b61325a565b9050919050565b6138f6816138cc565b82525050565b5f60c08201905061390f5f83018961358c565b61391c6020830188613367565b61392960408301876138ed565b61393660608301866138ed565b613943608083018561358c565b61395060a0830184613367565b979650505050505050565b5f8151905061396981613263565b92915050565b5f805f60608486031215613986576139856131f8565b5b5f6139938682870161395b565b93505060206139a48682870161395b565b92505060406139b58682870161395b565b9150509250925092565b5f6040820190506139d25f83018561358c565b6139df6020830184613367565b9392505050565b5f815190506139f481613440565b92915050565b5f60208284031215613a0f57613a0e6131f8565b5b5f613a1c848285016139e6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a7f602483613158565b9150613a8a82613a25565b604082019050919050565b5f6020820190508181035f830152613aac81613a73565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b0d602283613158565b9150613b1882613ab3565b604082019050919050565b5f6020820190508181035f830152613b3a81613b01565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b9b602583613158565b9150613ba682613b41565b604082019050919050565b5f6020820190508181035f830152613bc881613b8f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c29602383613158565b9150613c3482613bcf565b604082019050919050565b5f6020820190508181035f830152613c5681613c1d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613cb7602983613158565b9150613cc282613c5d565b604082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b5f613cf58261325a565b9150613d008361325a565b9250828201905080821115613d1857613d176136c3565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613d78602383613158565b9150613d8382613d1e565b604082019050919050565b5f6020820190508181035f830152613da581613d6c565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613de0601883613158565b9150613deb82613dac565b602082019050919050565b5f6020820190508181035f830152613e0d81613dd4565b9050919050565b5f613e1e8261325a565b9150613e298361325a565b9250828203905081811115613e4157613e406136c3565b5b92915050565b5f81905092915050565b50565b5f613e5f5f83613e47565b9150613e6a82613e51565b5f82019050919050565b5f613e7e82613e54565b9150819050919050565b5f604082019050613e9b5f8301856132d6565b613ea860208301846132d6565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f09602a83613158565b9150613f1482613eaf565b604082019050919050565b5f6020820190508181035f830152613f3681613efd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f9c8161321f565b82525050565b5f613fad8383613f93565b60208301905092915050565b5f602082019050919050565b5f613fcf82613f6a565b613fd98185613f74565b9350613fe483613f84565b805f5b83811015614014578151613ffb8882613fa2565b975061400683613fb9565b925050600181019050613fe7565b5085935050505092915050565b5f60a0820190506140345f830188613367565b61404160208301876138ed565b81810360408301526140538186613fc5565b9050614062606083018561358c565b61406f6080830184613367565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140b08261325a565b91506140bb8361325a565b9250826140cb576140ca614079565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61410a601b83613158565b9150614115826140d6565b602082019050919050565b5f6020820190508181035f830152614137816140fe565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614198602183613158565b91506141a38261413e565b604082019050919050565b5f6020820190508181035f8301526141c58161418c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220491b0b5950372e60094d6d85ee678fb2f59815a4b78e1eef7dec8d5ced495da964736f6c63430008160033

Deployed Bytecode Sourcemap

9001:14336:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11355:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21438:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19562:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19786:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22896:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22127:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20534:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18890:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22805:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19092:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19912:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18658:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20373:153;;;;;;;;;;;;;:::i;:::-;;21141:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8082:148;;;;;;;;;;;;;:::i;:::-;;18408:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7868:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22710:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20751:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21952:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20207:154;;;;;;;;;;;;;:::i;:::-;;19691:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17571:829;;;;;;;;;;;;;:::i;:::-;;20115:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19214:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20642:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21287:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20021:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19432:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11355:83;11392:13;11425:5;;;;;;;;;;;;;;;;;11418:12;;11355:83;:::o;21438:161::-;21513:4;21530:39;21539:12;:10;:12::i;:::-;21553:7;21562:6;21530:8;:39::i;:::-;21587:4;21580:11;;21438:161;;;;:::o;19562:121::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19646:3:::1;19636:7;:13;;;;19671:4;19660:8;:15;;;;19562:121:::0;;:::o;19786:118::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19891:5:::1;19880:8;:16;;;;:::i;:::-;19862:15;:34;;;;19786:118:::0;:::o;22896:95::-;22949:7;9318:12;22969:14;;22896:95;:::o;22127:313::-;22225:4;22242:36;22252:6;22260:9;22271:6;22242:9;:36::i;:::-;22289:121;22298:6;22306:12;:10;:12::i;:::-;22320:89;22358:6;22320:89;;;;;;;;;;;;;;;;;:11;:19;22332:6;22320:19;;;;;;;;;;;;;;;:33;22340:12;:10;:12::i;:::-;22320:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22289:8;:121::i;:::-;22428:4;22421:11;;22127:313;;;;;:::o;20534:100::-;20578:4;20602:24;20620:4;20602:9;:24::i;:::-;20595:31;;20534:100;:::o;18890:194::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18983:6:::1;18978:99;18999:3;;:10;;18995:1;:14;18978:99;;;19060:5;19031:18;:26;19050:3;;19054:1;19050:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19031:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19011:3;;;;;;;18978:99;;;;18890:194:::0;;;:::o;22805:83::-;22846:5;9226:1;22864:16;;22805:83;:::o;19092:114::-;19152:4;19176:18;:22;19195:2;19176:22;;;;;;;;;;;;;;;;;;;;;;;;;19169:29;;19092:114;;;:::o;19912:101::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20000:5:::1;19994:3;:11;;;;:::i;:::-;19977:14;:28;;;;19912:101:::0;:::o;18658:224::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18783:5:::1;18744:18;:36;18763:16;;;;;;;;;;;18744:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;18818:9;18799:16;;:28;;;;;;;;;;;;;;;;;;18870:4;18838:18;:29;18857:9;18838:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18658:224:::0;:::o;20373:153::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20425:26:::1;20454:21;20425:50;;20486:32;20499:18;20486:12;:32::i;:::-;20414:112;20373:153::o:0;21141:138::-;21207:7;21234:37;21254:7;:16;21262:7;21254:16;;;;;;;;;;;;;;;;21234:19;:37::i;:::-;21227:44;;21141:138;;;:::o;8082:148::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8189:1:::1;8152:40;;8173:6;::::0;::::1;;;;;;;;8152:40;;;;;;;;;;;;8220:1;8203:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8082:148::o:0;18408:238::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18541:5:::1;18500:18;:38;18519:18;;;;;;;;;;;18500:38;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18578:11;18557:18;;:32;;;;;;;;;;;;;;;;;;18634:4;18600:18;:31;18619:11;18600:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;18408:238:::0;:::o;7868:79::-;7906:7;7933:6;;;;;;;;;;;7926:13;;7868:79;:::o;22710:87::-;22749:13;22782:7;;;;;;;;;;;;;;;;;22775:14;;22710:87;:::o;20751:244::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20860:13:::1;;;;;;;;;;;20852:21;;:4;:21;;::::0;20844:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20946:41;20975:4;20981:5;20946:28;:41::i;:::-;20751:244:::0;;:::o;21952:167::-;22030:4;22047:42;22057:12;:10;:12::i;:::-;22071:9;22082:6;22047:9;:42::i;:::-;22107:4;22100:11;;21952:167;;;;:::o;20207:154::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20259:23:::1;20285:24;20303:4;20285:9;:24::i;:::-;20259:50;;20320:33;20337:15;20320:16;:33::i;:::-;20248:113;20207:154::o:0;19691:83::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19763:3:::1;19753:7;:13;;;;19691:83:::0;:::o;17571:829::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17635:11:::1;::::0;::::1;;;;;;;;17634:12;17626:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17684:35;17741:42;17684:100;;17813:16;17795:15;;:34;;;;;;;;;;;;;;;;;;17840:58;17857:4;17872:15;;;;;;;;;;;9318:12;17840:8;:58::i;:::-;17943:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17925:56;;;17990:4;17997:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17925:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17909:13;;:112;;;;;;;;;;;;;;;;;;18032:15;;;;;;;;;;;:31;;;18071:21;18102:4;18108:24;18126:4;18108:9;:24::i;:::-;18133:1;18135::::0;18137:7:::1;:5;:7::i;:::-;18145:15;18032:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18179:13;;;;;;;;;;;18172:29;;;18210:15;;;;;;;;;;;18228:14;18172:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18264:1;18254:7;:11;;;;18287:2;18276:8;:13;;;;18304:1;18294:7;:11;;;;18330:4;18316:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;18388:4;18345:25;:40;18371:13;;;;;;;;;;;18345:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;17615:785;17571:829::o:0;20115:84::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20186:5:::1;20176:7;;:15;;;;;;;;;;;;;;;;;;20115:84:::0;:::o;19214:206::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19313:6:::1;19308:105;19329:3;;:10;;19325:1;:14;19308:105;;;19396:5;19361:24;:32;19386:3;;19390:1;19386:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19361:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19341:3;;;;;;;19308:105;;;;19214:206:::0;;;:::o;20642:101::-;20687:4;20711:24;20721:13;;;;;;;;;;;20711:9;:24::i;:::-;20704:31;;20642:101;:::o;21287:143::-;21368:7;21395:11;:18;21407:5;21395:18;;;;;;;;;;;;;;;:27;21414:7;21395:27;;;;;;;;;;;;;;;;21388:34;;21287:143;;;;:::o;20021:86::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20094:5:::1;20083:8;;:16;;;;;;;;;;;;;;;;;;20021:86:::0;:::o;19432:122::-;19494:4;19518:24;:28;19543:2;19518:28;;;;;;;;;;;;;;;;;;;;;;;;;19511:35;;19432:122;;;:::o;7408:98::-;7461:7;7488:10;7481:17;;7408:98;:::o;22999:335::-;23109:1;23092:19;;:5;:19;;;23084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23190:1;23171:21;;:7;:21;;;23163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23272:6;23242:11;:18;23254:5;23242:18;;;;;;;;;;;;;;;:27;23261:7;23242:27;;;;;;;;;;;;;;;:36;;;;23310:7;23294:32;;23303:5;23294:32;;;23319:6;23294:32;;;;;;:::i;:::-;;;;;;;;22999:335;;;:::o;11450:1716::-;11554:1;11538:18;;:4;:18;;;11530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11631:1;11617:16;;:2;:16;;;11609:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11701:1;11692:6;:10;11684:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11772:7;:5;:7::i;:::-;11764:15;;:4;:15;;;;:32;;;;;11789:7;:5;:7::i;:::-;11783:13;;:2;:13;;;;11764:32;11761:1064;;;11836:1;11818:14;;:19;;:42;;;;;11847:13;;;;;;;;;;;11841:19;;:2;:19;;;;11818:42;:75;;;;;11865:24;:28;11890:2;11865:28;;;;;;;;;;;;;;;;;;;;;;;;;11864:29;11818:75;11815:212;;;11957:14;;11947:6;11922:22;11940:2;11922:9;:22::i;:::-;:31;;;;:::i;:::-;:49;;11914:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11815:212;12066:13;;;;;;;;;;;12058:21;;:4;:21;;;:55;;;;;12097:15;;;;;;;;;;;12083:30;;:2;:30;;;;12058:55;:82;;;;;12118:18;:22;12137:2;12118:22;;;;;;;;;;;;;;;;;;;;;;;;;12117:23;12058:82;12055:207;;;12169:11;;;;;;;;;;12161:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12239:7;;12228:8;:18;;;;12055:207;12276:28;12307:24;12325:4;12307:9;:24::i;:::-;12276:55;;12352:6;;;;;;;;;;;12351:7;:32;;;;;12370:13;;;;;;;;;;;12362:21;;:4;:21;;;;12351:32;:47;;;;;12387:11;;;;;;;;;;12351:47;12348:466;;;12432:8;;12421;:19;;;;12465:25;:29;12491:2;12465:29;;;;;;;;;;;;;;;;;;;;;;;;;12461:338;;;12545:15;;12522:20;:38;12519:261;;;12593:8;;;;;;;;;;;12589:111;;12657:15;;12634:38;;12589:111;12726:30;12735:20;12726:8;:30::i;:::-;12519:261;12461:338;12348:466;11798:1027;11761:1064;12835:12;12850:4;12835:19;;12870:7;;;;;;;;;;;:35;;;;12881:18;:24;12900:4;12881:24;;;;;;;;;;;;;;;;;;;;;;;;;12870:35;:61;;;;12909:18;:22;12928:2;12909:22;;;;;;;;;;;;;;;;;;;;;;;;;12870:61;12867:108;;;12958:5;12948:15;;12867:108;12991:25;:31;13017:4;12991:31;;;;;;;;;;;;;;;;;;;;;;;;;12990:32;:66;;;;;13027:25;:29;13053:2;13027:29;;;;;;;;;;;;;;;;;;;;;;;;;13026:30;12990:66;12987:113;;;13083:5;13073:15;;12987:113;13120:38;13135:4;13140:2;13143:6;13150:7;13120:14;:38::i;:::-;11519:1647;11450:1716;;;:::o;3818:192::-;3904:7;3937:1;3932;:6;;3940:12;3924:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3964:9;3980:1;3976;:5;;;;:::i;:::-;3964:17;;4001:1;3994:8;;;3818:192;;;;;:::o;14420:266::-;14478:16;14500:18;;;;;;;;;;;:23;;14531:13;14542:1;14531:6;:10;;:13;;;;:::i;:::-;14500:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14477:72;;;14561:14;14581:16;;;;;;;;;;;:21;;14610:13;14621:1;14610:6;:10;;:13;;;;:::i;:::-;14581:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14560:68;;;14646:32;14655:11;14668:9;14646:32;;;;;;;:::i;:::-;;;;;;;;14466:220;;14420:266;:::o;22448:254::-;22515:7;22554;;22543;:18;;22535:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22619:19;22642:10;:8;:10::i;:::-;22619:33;;22670:24;22682:11;22670:7;:11;;:24;;;;:::i;:::-;22663:31;;;22448:254;;;:::o;21003:130::-;21120:5;21086:25;:31;21112:4;21086:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21003:130;;:::o;13921:483::-;10550:4;10541:6;;:13;;;;;;;;;;;;;;;;;;13999:21:::1;14037:1;14023:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13999:40;;14068:4;14050;14055:1;14050:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14094:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14084:4;14089:1;14084:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14127:62;14144:4;14159:15;;;;;;;;;;;14177:11;14127:8;:62::i;:::-;14200:15;;;;;;;;;;;:66;;;14281:11;14307:1;14323:4;14350;14370:15;14200:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13988:416;10586:5:::0;10577:6;;:14;;;;;;;;;;;;;;;;;;13921:483;:::o;13628:285::-;13705:38;13722:20;13705:16;:38::i;:::-;13756:26;13785:21;13756:50;;13841:1;13820:18;:22;13817:89;;;13859:35;13872:21;13859:12;:35::i;:::-;13817:89;13684:229;13628:285;:::o;14698:263::-;14810:7;14806:40;;14832:14;:12;:14::i;:::-;14806:40;14857:44;14875:6;14883:9;14894:6;14857:17;:44::i;:::-;14916:7;14912:41;;14938:15;:13;:15::i;:::-;14912:41;14698:263;;;;:::o;5216:132::-;5274:7;5301:39;5305:1;5308;5301:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5294:46;;5216:132;;;;:::o;16302:163::-;16343:7;16364:15;16381;16400:19;:17;:19::i;:::-;16363:56;;;;16437:20;16449:7;16437;:11;;:20;;;;:::i;:::-;16430:27;;;;16302:163;:::o;21607:210::-;21664:1;21653:7;;:12;:29;;;;;21681:1;21669:8;;:13;21653:29;21684:7;21650:41;21719:7;;21701:15;:25;;;;21756:8;;21737:16;:27;;;;21785:1;21775:7;:11;;;;21808:1;21797:8;:12;;;;21607:210;:::o;14969:490::-;15068:15;15085:23;15110:12;15124:23;15149:12;15163:13;15180:19;15191:7;15180:10;:19::i;:::-;15067:132;;;;;;;;;;;;15228:28;15248:7;15228;:15;15236:6;15228:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15210:7;:15;15218:6;15210:15;;;;;;;;;;;;;;;:46;;;;15288:39;15311:15;15288:7;:18;15296:9;15288:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15267:7;:18;15275:9;15267:18;;;;;;;;;;;;;;;:60;;;;15341:16;15351:5;15341:9;:16::i;:::-;15368:23;15380:4;15386;15368:11;:23::i;:::-;15424:9;15407:44;;15416:6;15407:44;;;15435:15;15407:44;;;;;;:::i;:::-;;;;;;;;15056:403;;;;;;14969:490;;;:::o;21829:115::-;21883:15;;21873:7;:25;;;;21920:16;;21909:8;:27;;;;21829:115::o;5844:278::-;5930:7;5962:1;5958;:5;5965:12;5950:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5989:9;6005:1;6001;:5;;;;:::i;:::-;5989:17;;6113:1;6106:8;;;5844:278;;;;;:::o;16473:255::-;16523:7;16532;16552:15;16570:7;;16552:25;;16588:15;9318:12;16588:25;;16637:20;9318:12;16637:7;;:11;;:20;;;;:::i;:::-;16627:7;:30;16624:60;;;16667:7;;9318:12;16659:25;;;;;;;;16624:60;16703:7;16712;16695:25;;;;;;16473:255;;;:::o;15467:468::-;15526:7;15535;15544;15553;15562;15571;15592:23;15617:12;15631:13;15648:39;15660:7;15669;;15678:8;;15648:11;:39::i;:::-;15591:96;;;;;;15698:19;15721:10;:8;:10::i;:::-;15698:33;;15743:15;15760:23;15785:12;15801:46;15813:7;15822:4;15828:5;15835:11;15801;:46::i;:::-;15742:105;;;;;;15866:7;15875:15;15892:4;15898:15;15915:4;15921:5;15858:69;;;;;;;;;;;;;;;;;;;15467:468;;;;;;;:::o;3379:136::-;3437:7;3464:43;3468:1;3471;3464:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3457:50;;3379:136;;;;:::o;2915:181::-;2973:7;2993:9;3009:1;3005;:5;;;;:::i;:::-;2993:17;;3034:1;3029;:6;;3021:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3087:1;3080:8;;;2915:181;;;;:::o;17153:214::-;17206:19;17229:10;:8;:10::i;:::-;17206:33;;17250:13;17266:22;17276:11;17266:5;:9;;:22;;;;:::i;:::-;17250:38;;17326:33;17353:5;17326:7;:22;17342:4;17326:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17301:7;:22;17317:4;17301:22;;;;;;;;;;;;;;;:58;;;;17195:172;;17153:214;:::o;17375:147::-;17453:17;17465:4;17453:7;;:11;;:17;;;;:::i;:::-;17443:7;:27;;;;17494:20;17509:4;17494:10;;:14;;:20;;;;:::i;:::-;17481:10;:33;;;;17375:147;;:::o;15943:351::-;16036:7;16045;16054;16074:12;16089:28;16113:3;16089:19;16101:6;16089:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16074:43;;16128:13;16144:29;16169:3;16144:20;16156:7;16144;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16128:45;;16184:23;16210:28;16232:5;16210:17;16222:4;16210:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16184:54;;16257:15;16274:4;16280:5;16249:37;;;;;;;;;15943:351;;;;;;;:::o;16736:409::-;16846:7;16855;16864;16884:15;16902:24;16914:11;16902:7;:11;;:24;;;;:::i;:::-;16884:42;;16937:12;16952:21;16961:11;16952:4;:8;;:21;;;;:::i;:::-;16937:36;;16984:13;17000:22;17010:11;17000:5;:9;;:22;;;;:::i;:::-;16984:38;;17033:23;17059:28;17081:5;17059:17;17071:4;17059:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17033:54;;17106:7;17115:15;17132:4;17098:39;;;;;;;;;;16736:409;;;;;;;;:::o;4269:471::-;4327:7;4577:1;4572;:6;4568:47;;4602:1;4595:8;;;;4568:47;4627:9;4643:1;4639;:5;;;;:::i;:::-;4627:17;;4672:1;4667;4663;:5;;;;:::i;:::-;:10;4655:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4731:1;4724:8;;;4269:471;;;;;:::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;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:118::-;4348:24;4366:5;4348:24;:::i;:::-;4343:3;4336:37;4261:118;;:::o;4385:222::-;4478:4;4516:2;4505:9;4501:18;4493:26;;4529:71;4597:1;4586:9;4582:17;4573:6;4529:71;:::i;:::-;4385:222;;;;:::o;4613:619::-;4690:6;4698;4706;4755:2;4743:9;4734:7;4730:23;4726:32;4723:119;;;4761:79;;:::i;:::-;4723:119;4881:1;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4852:117;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;5136:2;5162:53;5207:7;5198:6;5187:9;5183:22;5162:53;:::i;:::-;5152:63;;5107:118;4613:619;;;;;:::o;5238:117::-;5347:1;5344;5337:12;5361:117;5470:1;5467;5460:12;5484:117;5593:1;5590;5583:12;5624:568;5697:8;5707:6;5757:3;5750:4;5742:6;5738:17;5734:27;5724:122;;5765:79;;:::i;:::-;5724:122;5878:6;5865:20;5855:30;;5908:18;5900:6;5897:30;5894:117;;;5930:79;;:::i;:::-;5894:117;6044:4;6036:6;6032:17;6020:29;;6098:3;6090:4;6082:6;6078:17;6068:8;6064:32;6061:41;6058:128;;;6105:79;;:::i;:::-;6058:128;5624:568;;;;;:::o;6198:116::-;6268:21;6283:5;6268:21;:::i;:::-;6261:5;6258:32;6248:60;;6304:1;6301;6294:12;6248:60;6198:116;:::o;6320:133::-;6363:5;6401:6;6388:20;6379:29;;6417:30;6441:5;6417:30;:::i;:::-;6320:133;;;;:::o;6459:698::-;6551:6;6559;6567;6616:2;6604:9;6595:7;6591:23;6587:32;6584:119;;;6622:79;;:::i;:::-;6584:119;6770:1;6759:9;6755:17;6742:31;6800:18;6792:6;6789:30;6786:117;;;6822:79;;:::i;:::-;6786:117;6935:80;7007:7;6998:6;6987:9;6983:22;6935:80;:::i;:::-;6917:98;;;;6713:312;7064:2;7090:50;7132:7;7123:6;7112:9;7108:22;7090:50;:::i;:::-;7080:60;;7035:115;6459:698;;;;;:::o;7163:86::-;7198:7;7238:4;7231:5;7227:16;7216:27;;7163:86;;;:::o;7255:112::-;7338:22;7354:5;7338:22;:::i;:::-;7333:3;7326:35;7255:112;;:::o;7373:214::-;7462:4;7500:2;7489:9;7485:18;7477:26;;7513:67;7577:1;7566:9;7562:17;7553:6;7513:67;:::i;:::-;7373:214;;;;:::o;7593:329::-;7652:6;7701:2;7689:9;7680:7;7676:23;7672:32;7669:119;;;7707:79;;:::i;:::-;7669:119;7827:1;7852:53;7897:7;7888:6;7877:9;7873:22;7852:53;:::i;:::-;7842:63;;7798:117;7593:329;;;;:::o;7928:104::-;7973:7;8002:24;8020:5;8002:24;:::i;:::-;7991:35;;7928:104;;;:::o;8038:138::-;8119:32;8145:5;8119:32;:::i;:::-;8112:5;8109:43;8099:71;;8166:1;8163;8156:12;8099:71;8038:138;:::o;8182:155::-;8236:5;8274:6;8261:20;8252:29;;8290:41;8325:5;8290:41;:::i;:::-;8182:155;;;;:::o;8343:345::-;8410:6;8459:2;8447:9;8438:7;8434:23;8430:32;8427:119;;;8465:79;;:::i;:::-;8427:119;8585:1;8610:61;8663:7;8654:6;8643:9;8639:22;8610:61;:::i;:::-;8600:71;;8556:125;8343:345;;;;:::o;8694:118::-;8781:24;8799:5;8781:24;:::i;:::-;8776:3;8769:37;8694:118;;:::o;8818:222::-;8911:4;8949:2;8938:9;8934:18;8926:26;;8962:71;9030:1;9019:9;9015:17;9006:6;8962:71;:::i;:::-;8818:222;;;;:::o;9046:468::-;9111:6;9119;9168:2;9156:9;9147:7;9143:23;9139:32;9136:119;;;9174:79;;:::i;:::-;9136:119;9294:1;9319:53;9364:7;9355:6;9344:9;9340:22;9319:53;:::i;:::-;9309:63;;9265:117;9421:2;9447:50;9489:7;9480:6;9469:9;9465:22;9447:50;:::i;:::-;9437:60;;9392:115;9046:468;;;;;:::o;9520:323::-;9576:6;9625:2;9613:9;9604:7;9600:23;9596:32;9593:119;;;9631:79;;:::i;:::-;9593:119;9751:1;9776:50;9818:7;9809:6;9798:9;9794:22;9776:50;:::i;:::-;9766:60;;9722:114;9520:323;;;;:::o;9849:474::-;9917:6;9925;9974:2;9962:9;9953:7;9949:23;9945:32;9942:119;;;9980:79;;:::i;:::-;9942:119;10100:1;10125:53;10170:7;10161:6;10150:9;10146:22;10125:53;:::i;:::-;10115:63;;10071:117;10227:2;10253:53;10298:7;10289:6;10278:9;10274:22;10253:53;:::i;:::-;10243:63;;10198:118;9849:474;;;;;:::o;10329:182::-;10469:34;10465:1;10457:6;10453:14;10446:58;10329:182;:::o;10517:366::-;10659:3;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10756:93;10845:3;10756:93;:::i;:::-;10874:2;10869:3;10865:12;10858:19;;10517:366;;;:::o;10889:419::-;11055:4;11093:2;11082:9;11078:18;11070:26;;11142:9;11136:4;11132:20;11128:1;11117:9;11113:17;11106:47;11170:131;11296:4;11170:131;:::i;:::-;11162:139;;10889:419;;;:::o;11314:180::-;11362:77;11359:1;11352:88;11459:4;11456:1;11449:15;11483:4;11480:1;11473:15;11500:410;11540:7;11563:20;11581:1;11563:20;:::i;:::-;11558:25;;11597:20;11615:1;11597:20;:::i;:::-;11592:25;;11652:1;11649;11645:9;11674:30;11692:11;11674:30;:::i;:::-;11663:41;;11853:1;11844:7;11840:15;11837:1;11834:22;11814:1;11807:9;11787:83;11764:139;;11883:18;;:::i;:::-;11764:139;11548:362;11500:410;;;;:::o;11916:180::-;11964:77;11961:1;11954:88;12061:4;12058:1;12051:15;12085:4;12082:1;12075:15;12102:244;12242:34;12238:1;12230:6;12226:14;12219:58;12311:27;12306:2;12298:6;12294:15;12287:52;12102:244;:::o;12352:366::-;12494:3;12515:67;12579:2;12574:3;12515:67;:::i;:::-;12508:74;;12591:93;12680:3;12591:93;:::i;:::-;12709:2;12704:3;12700:12;12693:19;;12352:366;;;:::o;12724:419::-;12890:4;12928:2;12917:9;12913:18;12905:26;;12977:9;12971:4;12967:20;12963:1;12952:9;12948:17;12941:47;13005:131;13131:4;13005:131;:::i;:::-;12997:139;;12724:419;;;:::o;13149:173::-;13289:25;13285:1;13277:6;13273:14;13266:49;13149:173;:::o;13328:366::-;13470:3;13491:67;13555:2;13550:3;13491:67;:::i;:::-;13484:74;;13567:93;13656:3;13567:93;:::i;:::-;13685:2;13680:3;13676:12;13669:19;;13328:366;;;:::o;13700:419::-;13866:4;13904:2;13893:9;13889:18;13881:26;;13953:9;13947:4;13943:20;13939:1;13928:9;13924:17;13917:47;13981:131;14107:4;13981:131;:::i;:::-;13973:139;;13700:419;;;:::o;14125:143::-;14182:5;14213:6;14207:13;14198:22;;14229:33;14256:5;14229:33;:::i;:::-;14125:143;;;;:::o;14274:351::-;14344:6;14393:2;14381:9;14372:7;14368:23;14364:32;14361:119;;;14399:79;;:::i;:::-;14361:119;14519:1;14544:64;14600:7;14591:6;14580:9;14576:22;14544:64;:::i;:::-;14534:74;;14490:128;14274:351;;;;:::o;14631:332::-;14752:4;14790:2;14779:9;14775:18;14767:26;;14803:71;14871:1;14860:9;14856:17;14847:6;14803:71;:::i;:::-;14884:72;14952:2;14941:9;14937:18;14928:6;14884:72;:::i;:::-;14631:332;;;;;:::o;14969:85::-;15014:7;15043:5;15032:16;;14969:85;;;:::o;15060:60::-;15088:3;15109:5;15102:12;;15060:60;;;:::o;15126:158::-;15184:9;15217:61;15235:42;15244:32;15270:5;15244:32;:::i;:::-;15235:42;:::i;:::-;15217:61;:::i;:::-;15204:74;;15126:158;;;:::o;15290:147::-;15385:45;15424:5;15385:45;:::i;:::-;15380:3;15373:58;15290:147;;:::o;15443:807::-;15692:4;15730:3;15719:9;15715:19;15707:27;;15744:71;15812:1;15801:9;15797:17;15788:6;15744:71;:::i;:::-;15825:72;15893:2;15882:9;15878:18;15869:6;15825:72;:::i;:::-;15907:80;15983:2;15972:9;15968:18;15959:6;15907:80;:::i;:::-;15997;16073:2;16062:9;16058:18;16049:6;15997:80;:::i;:::-;16087:73;16155:3;16144:9;16140:19;16131:6;16087:73;:::i;:::-;16170;16238:3;16227:9;16223:19;16214:6;16170:73;:::i;:::-;15443:807;;;;;;;;;:::o;16256:143::-;16313:5;16344:6;16338:13;16329:22;;16360:33;16387:5;16360:33;:::i;:::-;16256:143;;;;:::o;16405:663::-;16493:6;16501;16509;16558:2;16546:9;16537:7;16533:23;16529:32;16526:119;;;16564:79;;:::i;:::-;16526:119;16684:1;16709:64;16765:7;16756:6;16745:9;16741:22;16709:64;:::i;:::-;16699:74;;16655:128;16822:2;16848:64;16904:7;16895:6;16884:9;16880:22;16848:64;:::i;:::-;16838:74;;16793:129;16961:2;16987:64;17043:7;17034:6;17023:9;17019:22;16987:64;:::i;:::-;16977:74;;16932:129;16405:663;;;;;:::o;17074:332::-;17195:4;17233:2;17222:9;17218:18;17210:26;;17246:71;17314:1;17303:9;17299:17;17290:6;17246:71;:::i;:::-;17327:72;17395:2;17384:9;17380:18;17371:6;17327:72;:::i;:::-;17074:332;;;;;:::o;17412:137::-;17466:5;17497:6;17491:13;17482:22;;17513:30;17537:5;17513:30;:::i;:::-;17412:137;;;;:::o;17555:345::-;17622:6;17671:2;17659:9;17650:7;17646:23;17642:32;17639:119;;;17677:79;;:::i;:::-;17639:119;17797:1;17822:61;17875:7;17866:6;17855:9;17851:22;17822:61;:::i;:::-;17812:71;;17768:125;17555:345;;;;:::o;17906:223::-;18046:34;18042:1;18034:6;18030:14;18023:58;18115:6;18110:2;18102:6;18098:15;18091:31;17906:223;:::o;18135:366::-;18277:3;18298:67;18362:2;18357:3;18298:67;:::i;:::-;18291:74;;18374:93;18463:3;18374:93;:::i;:::-;18492:2;18487:3;18483:12;18476:19;;18135:366;;;:::o;18507:419::-;18673:4;18711:2;18700:9;18696:18;18688:26;;18760:9;18754:4;18750:20;18746:1;18735:9;18731:17;18724:47;18788:131;18914:4;18788:131;:::i;:::-;18780:139;;18507:419;;;:::o;18932:221::-;19072:34;19068:1;19060:6;19056:14;19049:58;19141:4;19136:2;19128:6;19124:15;19117:29;18932:221;:::o;19159:366::-;19301:3;19322:67;19386:2;19381:3;19322:67;:::i;:::-;19315:74;;19398:93;19487:3;19398:93;:::i;:::-;19516:2;19511:3;19507:12;19500:19;;19159:366;;;:::o;19531:419::-;19697:4;19735:2;19724:9;19720:18;19712:26;;19784:9;19778:4;19774:20;19770:1;19759:9;19755:17;19748:47;19812:131;19938:4;19812:131;:::i;:::-;19804:139;;19531:419;;;:::o;19956:224::-;20096:34;20092:1;20084:6;20080:14;20073:58;20165:7;20160:2;20152:6;20148:15;20141:32;19956:224;:::o;20186:366::-;20328:3;20349:67;20413:2;20408:3;20349:67;:::i;:::-;20342:74;;20425:93;20514:3;20425:93;:::i;:::-;20543:2;20538:3;20534:12;20527:19;;20186:366;;;:::o;20558:419::-;20724:4;20762:2;20751:9;20747:18;20739:26;;20811:9;20805:4;20801:20;20797:1;20786:9;20782:17;20775:47;20839:131;20965:4;20839:131;:::i;:::-;20831:139;;20558:419;;;:::o;20983:222::-;21123:34;21119:1;21111:6;21107:14;21100:58;21192:5;21187:2;21179:6;21175:15;21168:30;20983:222;:::o;21211:366::-;21353:3;21374:67;21438:2;21433:3;21374:67;:::i;:::-;21367:74;;21450:93;21539:3;21450:93;:::i;:::-;21568:2;21563:3;21559:12;21552:19;;21211:366;;;:::o;21583:419::-;21749:4;21787:2;21776:9;21772:18;21764:26;;21836:9;21830:4;21826:20;21822:1;21811:9;21807:17;21800:47;21864:131;21990:4;21864:131;:::i;:::-;21856:139;;21583:419;;;:::o;22008:228::-;22148:34;22144:1;22136:6;22132:14;22125:58;22217:11;22212:2;22204:6;22200:15;22193:36;22008:228;:::o;22242:366::-;22384:3;22405:67;22469:2;22464:3;22405:67;:::i;:::-;22398:74;;22481:93;22570:3;22481:93;:::i;:::-;22599:2;22594:3;22590:12;22583:19;;22242:366;;;:::o;22614:419::-;22780:4;22818:2;22807:9;22803:18;22795:26;;22867:9;22861:4;22857:20;22853:1;22842:9;22838:17;22831:47;22895:131;23021:4;22895:131;:::i;:::-;22887:139;;22614:419;;;:::o;23039:191::-;23079:3;23098:20;23116:1;23098:20;:::i;:::-;23093:25;;23132:20;23150:1;23132:20;:::i;:::-;23127:25;;23175:1;23172;23168:9;23161:16;;23196:3;23193:1;23190:10;23187:36;;;23203:18;;:::i;:::-;23187:36;23039:191;;;;:::o;23236:222::-;23376:34;23372:1;23364:6;23360:14;23353:58;23445:5;23440:2;23432:6;23428:15;23421:30;23236:222;:::o;23464:366::-;23606:3;23627:67;23691:2;23686:3;23627:67;:::i;:::-;23620:74;;23703:93;23792:3;23703:93;:::i;:::-;23821:2;23816:3;23812:12;23805:19;;23464:366;;;:::o;23836:419::-;24002:4;24040:2;24029:9;24025:18;24017:26;;24089:9;24083:4;24079:20;24075:1;24064:9;24060:17;24053:47;24117:131;24243:4;24117:131;:::i;:::-;24109:139;;23836:419;;;:::o;24261:174::-;24401:26;24397:1;24389:6;24385:14;24378:50;24261:174;:::o;24441:366::-;24583:3;24604:67;24668:2;24663:3;24604:67;:::i;:::-;24597:74;;24680:93;24769:3;24680:93;:::i;:::-;24798:2;24793:3;24789:12;24782:19;;24441:366;;;:::o;24813:419::-;24979:4;25017:2;25006:9;25002:18;24994:26;;25066:9;25060:4;25056:20;25052:1;25041:9;25037:17;25030:47;25094:131;25220:4;25094:131;:::i;:::-;25086:139;;24813:419;;;:::o;25238:194::-;25278:4;25298:20;25316:1;25298:20;:::i;:::-;25293:25;;25332:20;25350:1;25332:20;:::i;:::-;25327:25;;25376:1;25373;25369:9;25361:17;;25400:1;25394:4;25391:11;25388:37;;;25405:18;;:::i;:::-;25388:37;25238:194;;;;:::o;25438:147::-;25539:11;25576:3;25561:18;;25438:147;;;;:::o;25591:114::-;;:::o;25711:398::-;25870:3;25891:83;25972:1;25967:3;25891:83;:::i;:::-;25884:90;;25983:93;26072:3;25983:93;:::i;:::-;26101:1;26096:3;26092:11;26085:18;;25711:398;;;:::o;26115:379::-;26299:3;26321:147;26464:3;26321:147;:::i;:::-;26314:154;;26485:3;26478:10;;26115:379;;;:::o;26500:308::-;26609:4;26647:2;26636:9;26632:18;26624:26;;26660:65;26722:1;26711:9;26707:17;26698:6;26660:65;:::i;:::-;26735:66;26797:2;26786:9;26782:18;26773:6;26735:66;:::i;:::-;26500:308;;;;;:::o;26814:229::-;26954:34;26950:1;26942:6;26938:14;26931:58;27023:12;27018:2;27010:6;27006:15;26999:37;26814:229;:::o;27049:366::-;27191:3;27212:67;27276:2;27271:3;27212:67;:::i;:::-;27205:74;;27288:93;27377:3;27288:93;:::i;:::-;27406:2;27401:3;27397:12;27390:19;;27049:366;;;:::o;27421:419::-;27587:4;27625:2;27614:9;27610:18;27602:26;;27674:9;27668:4;27664:20;27660:1;27649:9;27645:17;27638:47;27702:131;27828:4;27702:131;:::i;:::-;27694:139;;27421:419;;;:::o;27846:180::-;27894:77;27891:1;27884:88;27991:4;27988:1;27981:15;28015:4;28012:1;28005:15;28032:114;28099:6;28133:5;28127:12;28117:22;;28032:114;;;:::o;28152:184::-;28251:11;28285:6;28280:3;28273:19;28325:4;28320:3;28316:14;28301:29;;28152:184;;;;:::o;28342:132::-;28409:4;28432:3;28424:11;;28462:4;28457:3;28453:14;28445:22;;28342:132;;;:::o;28480:108::-;28557:24;28575:5;28557:24;:::i;:::-;28552:3;28545:37;28480:108;;:::o;28594:179::-;28663:10;28684:46;28726:3;28718:6;28684:46;:::i;:::-;28762:4;28757:3;28753:14;28739:28;;28594:179;;;;:::o;28779:113::-;28849:4;28881;28876:3;28872:14;28864:22;;28779:113;;;:::o;28928:732::-;29047:3;29076:54;29124:5;29076:54;:::i;:::-;29146:86;29225:6;29220:3;29146:86;:::i;:::-;29139:93;;29256:56;29306:5;29256:56;:::i;:::-;29335:7;29366:1;29351:284;29376:6;29373:1;29370:13;29351:284;;;29452:6;29446:13;29479:63;29538:3;29523:13;29479:63;:::i;:::-;29472:70;;29565:60;29618:6;29565:60;:::i;:::-;29555:70;;29411:224;29398:1;29395;29391:9;29386:14;;29351:284;;;29355:14;29651:3;29644:10;;29052:608;;;28928:732;;;;:::o;29666:831::-;29929:4;29967:3;29956:9;29952:19;29944:27;;29981:71;30049:1;30038:9;30034:17;30025:6;29981:71;:::i;:::-;30062:80;30138:2;30127:9;30123:18;30114:6;30062:80;:::i;:::-;30189:9;30183:4;30179:20;30174:2;30163:9;30159:18;30152:48;30217:108;30320:4;30311:6;30217:108;:::i;:::-;30209:116;;30335:72;30403:2;30392:9;30388:18;30379:6;30335:72;:::i;:::-;30417:73;30485:3;30474:9;30470:19;30461:6;30417:73;:::i;:::-;29666:831;;;;;;;;:::o;30503:180::-;30551:77;30548:1;30541:88;30648:4;30645:1;30638:15;30672:4;30669:1;30662:15;30689:185;30729:1;30746:20;30764:1;30746:20;:::i;:::-;30741:25;;30780:20;30798:1;30780:20;:::i;:::-;30775:25;;30819:1;30809:35;;30824:18;;:::i;:::-;30809:35;30866:1;30863;30859:9;30854:14;;30689:185;;;;:::o;30880:177::-;31020:29;31016:1;31008:6;31004:14;30997:53;30880:177;:::o;31063:366::-;31205:3;31226:67;31290:2;31285:3;31226:67;:::i;:::-;31219:74;;31302:93;31391:3;31302:93;:::i;:::-;31420:2;31415:3;31411:12;31404:19;;31063:366;;;:::o;31435:419::-;31601:4;31639:2;31628:9;31624:18;31616:26;;31688:9;31682:4;31678:20;31674:1;31663:9;31659:17;31652:47;31716:131;31842:4;31716:131;:::i;:::-;31708:139;;31435:419;;;:::o;31860:220::-;32000:34;31996:1;31988:6;31984:14;31977:58;32069:3;32064:2;32056:6;32052:15;32045:28;31860:220;:::o;32086:366::-;32228:3;32249:67;32313:2;32308:3;32249:67;:::i;:::-;32242:74;;32325:93;32414:3;32325:93;:::i;:::-;32443:2;32438:3;32434:12;32427:19;;32086:366;;;:::o;32458:419::-;32624:4;32662:2;32651:9;32647:18;32639:26;;32711:9;32705:4;32701:20;32697:1;32686:9;32682:17;32675:47;32739:131;32865:4;32739:131;:::i;:::-;32731:139;;32458:419;;;:::o

Swarm Source

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