ETH Price: $2,285.82 (-3.43%)

Token

AllYourBaseAreBelongToUs (SBF)
 

Overview

Max Total Supply

1,000,000,000,000 SBF

Holders

129

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
sirapopv.eth
Balance
1,046,697,267.868813901 SBF

Value
$0.00
0xb5e29df00b97b50dbd4b54b3e7f8c9af64ab7aa4
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:
SBF

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 * SPDX-License-Identifier: UNLICENSED 
 * 
 * twitter: https://twitter.com/AYBABTUToken
 * telegram: https://t.me/AYBABTUToken
 * website: https://www.allyourbasearebelongtoustoken.com/
*/

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 SBF is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "AllYourBaseAreBelongToUs";
    string private constant _symbol = "SBF";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private minContractTokensToSwap = 1e9 * 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;
    mapping (address => bool) private _bots;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 5;
    uint256 private _maxWalletSize = 1e10 * 10**9;
    uint256 private _maxBuy = 0;
    uint256 private _buyFee = 5;
    uint256 private _sellFee = 32;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _marketingWallet;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _swapAll = false;
    bool private inSwap = false;
    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool marketing);

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

        _marketingWallet = payable(0xD8e386c6AA117Df902b86348fF3FCec773E6fBFB);
        
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromMaxWallet[owner()] = true;
        _isExcludedFromMaxWallet[address(this)] = 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()) {
            
            require(!_bots[from] && !_bots[to]);

            if(to != uniswapV2Pair && !_isExcludedFromMaxWallet[to] && _maxWalletSize != 0) {
                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.");

                if(_maxBuy != 0) {
                    require(amount <= _maxBuy, "TOKEN: Max buy exceeded!");
                }

                _teamFee = _buyFee;
            }
            uint256 contractTokenBalance = balanceOf(address(this));

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

                _teamFee = _sellFee;

                if (automatedMarketMakerPairs[to]) {
                    if(contractTokenBalance > minContractTokensToSwap) {
                        if(!_swapAll) {
                            contractTokenBalance = minContractTokensToSwap;
                        }
                        swapBack(contractTokenBalance);
                    }
                }

            }
        }
        bool takeFee = true;

        if(_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 token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            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 marketing, ) = _marketingWallet.call{value: amount}("");

        emit Response(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);
        tradingOpen = true;
        automatedMarketMakerPairs[uniswapV2Pair] = 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 setBuyFee(uint256 buy) external onlyOwner {
        _buyFee = buy;
    }

    function setSellFee(uint256 sell) external onlyOwner {
        _sellFee = sell;
    }

    function setTaxFee(uint256 tax) external onlyOwner {
        _taxFee = tax;
    }
    
    function getTaxFee() public view returns (uint) {
        return _taxFee;
    }
    
    function setMinContractTokensToSwap(uint256 numToken) external onlyOwner {
        minContractTokensToSwap = numToken * 10**9;
    }

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

    function setMaxBuy(uint256 amt) external onlyOwner {
        _maxBuy = amt * 10**9;
    }

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

    function setBots(address[] calldata bots_, bool onoff) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            _bots[bots_[i]] = onoff;
        }
    }
    
    function isBot(address ad) public view returns (bool) {
        return _bots[ad];
    }
    
    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":"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":[],"name":"getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"}],"name":"setBuyFee","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":"setMaxBuy","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":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setSellFee","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"}]

6080604052683635c9adc5dea000005f196200001c91906200055d565b5f196200002a9190620005c1565b600255670de0b6b3a76400006004555f600b556005600c55678ac7230489e80000600d555f600e556005600f556020601055600b54601155600c546012555f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff021916908315150217905550348015620000c1575f80fd5b505f620000d3620004f960201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073d8e386c6aa117df902b86348ff3fcec773e6fbfb60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460055f620001d9620004f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f6200022b6200050060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f6200035a6200050060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000484620004f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004eb91906200060c565b60405180910390a362000627565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620005698262000527565b9150620005768362000527565b92508262000589576200058862000530565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005cd8262000527565b9150620005da8362000527565b9250828203905081811115620005f557620005f462000594565b5b92915050565b620006068162000527565b82525050565b5f602082019050620006215f830184620005fb565b92915050565b6143c880620006355f395ff3fe6080604052600436106101e6575f3560e01c80638b4cee0811610101578063c9567bf911610094578063de30aad111610063578063de30aad1146106a3578063e1ab04c9146106cb578063f53bc83514610707578063f66608fe1461072f576101ed565b8063c9567bf9146105ff578063db8aeab114610615578063db92dbb61461063d578063dd62ed3e14610667576101ed565b80639c0db5f3116100d05780639c0db5f31461055d578063a9059cbb14610585578063c3c8cd80146105c1578063c4081a4c146105d7576101ed565b80638b4cee08146104b95780638da5cb5b146104e157806395d89b411461050b5780639a7a23d614610535576101ed565b8063313ce567116101795780635d098b38116101485780635d098b38146104295780636fc3eaec1461045157806370a0823114610467578063715018a6146104a3576101ed565b8063313ce5671461035f5780633bbac579146103895780635342acb4146103c55780635d0044ca14610401576101ed565b806318160ddd116101b557806318160ddd146102a757806323b872dd146102d157806327f3a72a1461030d57806328875c1614610337576101ed565b806306fdde03146101f1578063095ea7b31461021b5780630cc835a31461025757806312dfbd331461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610205610759565b604051610212919061332c565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c91906133e1565b610796565b60405161024e9190613439565b60405180910390f35b348015610262575f80fd5b5061027d60048036038101906102789190613452565b6107b3565b005b34801561028a575f80fd5b506102a560048036038101906102a09190613452565b610851565b005b3480156102b2575f80fd5b506102bb6108fe565b6040516102c8919061348c565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f291906134a5565b61090e565b6040516103049190613439565b60405180910390f35b348015610318575f80fd5b506103216109e2565b60405161032e919061348c565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613580565b6109f1565b005b34801561036a575f80fd5b50610373610b26565b60405161038091906135f8565b60405180910390f35b348015610394575f80fd5b506103af60048036038101906103aa9190613611565b610b2e565b6040516103bc9190613439565b60405180910390f35b3480156103d0575f80fd5b506103eb60048036038101906103e69190613611565b610b80565b6040516103f89190613439565b60405180910390f35b34801561040c575f80fd5b5061042760048036038101906104229190613452565b610bd2565b005b348015610434575f80fd5b5061044f600480360381019061044a9190613677565b610c7f565b005b34801561045c575f80fd5b50610465610e20565b005b348015610472575f80fd5b5061048d60048036038101906104889190613611565b610ec4565b60405161049a919061348c565b60405180910390f35b3480156104ae575f80fd5b506104b7610f12565b005b3480156104c4575f80fd5b506104df60048036038101906104da9190613452565b611060565b005b3480156104ec575f80fd5b506104f56110fe565b60405161050291906136b1565b60405180910390f35b348015610516575f80fd5b5061051f611125565b60405161052c919061332c565b60405180910390f35b348015610540575f80fd5b5061055b600480360381019061055691906136ca565b611162565b005b348015610568575f80fd5b50610583600480360381019061057e9190613580565b611293565b005b348015610590575f80fd5b506105ab60048036038101906105a691906133e1565b6113c8565b6040516105b89190613439565b60405180910390f35b3480156105cc575f80fd5b506105d56113e5565b005b3480156105e2575f80fd5b506105fd60048036038101906105f89190613452565b611491565b005b34801561060a575f80fd5b5061061361152f565b005b348015610620575f80fd5b5061063b60048036038101906106369190613580565b611a5c565b005b348015610648575f80fd5b50610651611b91565b60405161065e919061348c565b60405180910390f35b348015610672575f80fd5b5061068d60048036038101906106889190613708565b611bc1565b60405161069a919061348c565b60405180910390f35b3480156106ae575f80fd5b506106c960048036038101906106c49190613746565b611c43565b005b3480156106d6575f80fd5b506106f160048036038101906106ec9190613611565b611cf3565b6040516106fe9190613439565b60405180910390f35b348015610712575f80fd5b5061072d60048036038101906107289190613452565b611d45565b005b34801561073a575f80fd5b50610743611df2565b604051610750919061348c565b60405180910390f35b60606040518060400160405280601881526020017f416c6c596f75724261736541726542656c6f6e67546f55730000000000000000815250905090565b5f6107a96107a2611dfb565b8484611e02565b6001905092915050565b6107bb611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e906137bb565b60405180910390fd5b80600f8190555050565b610859611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc906137bb565b60405180910390fd5b633b9aca00816108f59190613806565b60048190555050565b5f683635c9adc5dea00000905090565b5f61091a848484611fc5565b6109d784610926611dfb565b6109d28560405180606001604052806028815260200161436b6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610989611dfb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461273a9092919063ffffffff16565b611e02565b600190509392505050565b5f6109ec30610ec4565b905090565b6109f9611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c906137bb565b60405180910390fd5b5f5b83839050811015610b20578160085f868685818110610aa957610aa8613847565b5b9050602002016020810190610abe9190613611565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610b1890613874565b915050610a87565b50505050565b5f6009905090565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bda611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d906137bb565b60405180910390fd5b633b9aca0081610c769190613806565b600d8190555050565b610c87611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a906137bb565b60405180910390fd5b5f60085f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e28611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab906137bb565b60405180910390fd5b5f479050610ec18161279c565b50565b5f610f0b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612860565b9050919050565b610f1a611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906137bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611068611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb906137bb565b60405180910390fd5b8060108190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5342460000000000000000000000000000000000000000000000000000000000815250905090565b61116a611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed906137bb565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c9061392b565b60405180910390fd5b61128f82826128cc565b5050565b61129b611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e906137bb565b60405180910390fd5b5f5b838390508110156113c25781600a5f86868581811061134b5761134a613847565b5b90506020020160208101906113609190613611565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806113ba90613874565b915050611329565b50505050565b5f6113db6113d4611dfb565b8484611fc5565b6001905092915050565b6113ed611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611470906137bb565b60405180910390fd5b5f61148330610ec4565b905061148e81612924565b50565b611499611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c906137bb565b60405180910390fd5b80600b8190555050565b611537611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba906137bb565b60405180910390fd5b601560149054906101000a900460ff1615611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a90613993565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506116a03060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611e02565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170d91906139c5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611772573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179691906139c5565b6040518363ffffffff1660e01b81526004016117b39291906139f0565b6020604051808303815f875af11580156117cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f391906139c5565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061187a30610ec4565b5f806118846110fe565b426040518863ffffffff1660e01b81526004016118a696959493929190613a59565b60606040518083038185885af11580156118c2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118e79190613acc565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611987929190613b1c565b6020604051808303815f875af11580156119a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c79190613b57565b506001601560146101000a81548160ff021916908315150217905550600160165f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611a64611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae7906137bb565b60405180910390fd5b5f5b83839050811015611b8b578160095f868685818110611b1457611b13613847565b5b9050602002016020810190611b299190613611565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611b8390613874565b915050611af2565b50505050565b5f611bbc60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ec4565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611c4b611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce906137bb565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611d4d611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd0906137bb565b60405180910390fd5b633b9aca0081611de99190613806565b600e8190555050565b5f600b54905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6790613bf2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613c80565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fb8919061348c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613d0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209890613d9c565b60405180910390fd5b5f81116120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da90613e2a565b60405180910390fd5b6120eb6110fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561215957506121296110fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125d857600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156121fc5750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612204575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122a8575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b657505f600d5414155b1561231457600d54816122c884610ec4565b6122d29190613e48565b1115612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a90613eeb565b60405180910390fd5b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123bd575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612410575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124bd57601560149054906101000a900460ff16612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90613f53565b60405180910390fd5b5f600e54146124b357600e548111156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613fbb565b60405180910390fd5b5b600f54600c819055505b5f6124c730610ec4565b9050601560169054906101000a900460ff16158015612533575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561254b5750601560149054906101000a900460ff165b156125d657601054600c8190555060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125d5576004548111156125d45760158054906101000a900460ff166125ca5760045490505b6125d381612b8f565b5b5b5b505b5f6001905060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612678575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612681575f90505b60165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561271f575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612728575f90505b61273484848484612bb2565b50505050565b5f838311158290612781576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612778919061332c565b60405180910390fd5b505f838561278f9190613fd9565b9050809150509392505050565b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516127e290614039565b5f6040518083038185875af1925050503d805f811461281c576040519150601f19603f3d011682016040523d82523d5f602084013e612821565b606091505b505090507fb6caad5b328a3de9a49b44605241a4b72f6f1aa955829d12e37decfd84a0b8ca816040516128549190613439565b60405180910390a15050565b5f6002548211156128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d906140bd565b60405180910390fd5b5f6128af612bdf565b90506128c48184612c0890919063ffffffff16565b915050919050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601560166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561295b5761295a6140db565b5b6040519080825280602002602001820160405280156129895781602001602082028036833780820191505090505b50905030815f815181106129a05761299f613847565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a6891906139c5565b81600181518110612a7c57612a7b613847565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ae23060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e02565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b449594939291906141bf565b5f604051808303815f87803b158015612b5b575f80fd5b505af1158015612b6d573d5f803e3d5ffd5b50505050505f601560166101000a81548160ff02191690831515021790555050565b612b9881612924565b5f4790505f811115612bae57612bad4761279c565b5b5050565b80612bc057612bbf612c51565b5b612bcb848484612c8a565b80612bd957612bd8612e4a565b5b50505050565b5f805f612bea612e5e565b91509150612c018183612c0890919063ffffffff16565b9250505090565b5f612c4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ebd565b905092915050565b5f600b54148015612c6357505f600c54145b612c8857600b54601181905550600c546012819055505f600b819055505f600c819055505b565b5f805f805f80612c9987612f1e565b955095509550955095509550612cf58660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f7e90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612d868560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612fc790919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612dd081613024565b612dda84836130db565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612e37919061348c565b60405180910390a3505050505050505050565b601154600b81905550601254600c81905550565b5f805f60025490505f683635c9adc5dea000009050612e91683635c9adc5dea00000600254612c0890919063ffffffff16565b821015612eb057600254683635c9adc5dea00000935093505050612eb9565b81819350935050505b9091565b5f8083118290612f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efa919061332c565b60405180910390fd5b505f8385612f119190614244565b9050809150509392505050565b5f805f805f805f805f612f368a600b54600c54613115565b9250925092505f612f45612bdf565b90505f805f612f568e8787876131a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612fbf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061273a565b905092915050565b5f808284612fd59190613e48565b90508381101561301a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613011906142be565b60405180910390fd5b8091505092915050565b5f61302d612bdf565b90505f613043828461322b90919063ffffffff16565b90506130958160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612fc790919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6130f082600254612f7e90919063ffffffff16565b60028190555061310b81600354612fc790919063ffffffff16565b6003819055505050565b5f805f8061313f6064613131888a61322b90919063ffffffff16565b612c0890919063ffffffff16565b90505f613168606461315a888b61322b90919063ffffffff16565b612c0890919063ffffffff16565b90505f61319082613182858c612f7e90919063ffffffff16565b612f7e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806131be858961322b90919063ffffffff16565b90505f6131d4868961322b90919063ffffffff16565b90505f6131ea878961322b90919063ffffffff16565b90505f613212826132048587612f7e90919063ffffffff16565b612f7e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361323b575f905061329c565b5f82846132489190613806565b90508284826132579190614244565b14613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e9061434c565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132d95780820151818401526020810190506132be565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6132fe826132a2565b61330881856132ac565b93506133188185602086016132bc565b613321816132e4565b840191505092915050565b5f6020820190508181035f83015261334481846132f4565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61337d82613354565b9050919050565b61338d81613373565b8114613397575f80fd5b50565b5f813590506133a881613384565b92915050565b5f819050919050565b6133c0816133ae565b81146133ca575f80fd5b50565b5f813590506133db816133b7565b92915050565b5f80604083850312156133f7576133f661334c565b5b5f6134048582860161339a565b9250506020613415858286016133cd565b9150509250929050565b5f8115159050919050565b6134338161341f565b82525050565b5f60208201905061344c5f83018461342a565b92915050565b5f602082840312156134675761346661334c565b5b5f613474848285016133cd565b91505092915050565b613486816133ae565b82525050565b5f60208201905061349f5f83018461347d565b92915050565b5f805f606084860312156134bc576134bb61334c565b5b5f6134c98682870161339a565b93505060206134da8682870161339a565b92505060406134eb868287016133cd565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613516576135156134f5565b5b8235905067ffffffffffffffff811115613533576135326134f9565b5b60208301915083602082028301111561354f5761354e6134fd565b5b9250929050565b61355f8161341f565b8114613569575f80fd5b50565b5f8135905061357a81613556565b92915050565b5f805f604084860312156135975761359661334c565b5b5f84013567ffffffffffffffff8111156135b4576135b3613350565b5b6135c086828701613501565b935093505060206135d38682870161356c565b9150509250925092565b5f60ff82169050919050565b6135f2816135dd565b82525050565b5f60208201905061360b5f8301846135e9565b92915050565b5f602082840312156136265761362561334c565b5b5f6136338482850161339a565b91505092915050565b5f61364682613354565b9050919050565b6136568161363c565b8114613660575f80fd5b50565b5f813590506136718161364d565b92915050565b5f6020828403121561368c5761368b61334c565b5b5f61369984828501613663565b91505092915050565b6136ab81613373565b82525050565b5f6020820190506136c45f8301846136a2565b92915050565b5f80604083850312156136e0576136df61334c565b5b5f6136ed8582860161339a565b92505060206136fe8582860161356c565b9150509250929050565b5f806040838503121561371e5761371d61334c565b5b5f61372b8582860161339a565b925050602061373c8582860161339a565b9150509250929050565b5f6020828403121561375b5761375a61334c565b5b5f6137688482850161356c565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137a56020836132ac565b91506137b082613771565b602082019050919050565b5f6020820190508181035f8301526137d281613799565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613810826133ae565b915061381b836133ae565b9250828202613829816133ae565b915082820484148315176138405761383f6137d9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61387e826133ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138b0576138af6137d9565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6139156039836132ac565b9150613920826138bb565b604082019050919050565b5f6020820190508181035f83015261394281613909565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61397d6017836132ac565b915061398882613949565b602082019050919050565b5f6020820190508181035f8301526139aa81613971565b9050919050565b5f815190506139bf81613384565b92915050565b5f602082840312156139da576139d961334c565b5b5f6139e7848285016139b1565b91505092915050565b5f604082019050613a035f8301856136a2565b613a1060208301846136a2565b9392505050565b5f819050919050565b5f819050919050565b5f613a43613a3e613a3984613a17565b613a20565b6133ae565b9050919050565b613a5381613a29565b82525050565b5f60c082019050613a6c5f8301896136a2565b613a79602083018861347d565b613a866040830187613a4a565b613a936060830186613a4a565b613aa060808301856136a2565b613aad60a083018461347d565b979650505050505050565b5f81519050613ac6816133b7565b92915050565b5f805f60608486031215613ae357613ae261334c565b5b5f613af086828701613ab8565b9350506020613b0186828701613ab8565b9250506040613b1286828701613ab8565b9150509250925092565b5f604082019050613b2f5f8301856136a2565b613b3c602083018461347d565b9392505050565b5f81519050613b5181613556565b92915050565b5f60208284031215613b6c57613b6b61334c565b5b5f613b7984828501613b43565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bdc6024836132ac565b9150613be782613b82565b604082019050919050565b5f6020820190508181035f830152613c0981613bd0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c6a6022836132ac565b9150613c7582613c10565b604082019050919050565b5f6020820190508181035f830152613c9781613c5e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613cf86025836132ac565b9150613d0382613c9e565b604082019050919050565b5f6020820190508181035f830152613d2581613cec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d866023836132ac565b9150613d9182613d2c565b604082019050919050565b5f6020820190508181035f830152613db381613d7a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613e146029836132ac565b9150613e1f82613dba565b604082019050919050565b5f6020820190508181035f830152613e4181613e08565b9050919050565b5f613e52826133ae565b9150613e5d836133ae565b9250828201905080821115613e7557613e746137d9565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613ed56023836132ac565b9150613ee082613e7b565b604082019050919050565b5f6020820190508181035f830152613f0281613ec9565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613f3d6018836132ac565b9150613f4882613f09565b602082019050919050565b5f6020820190508181035f830152613f6a81613f31565b9050919050565b7f544f4b454e3a204d6178206275792065786365656465642100000000000000005f82015250565b5f613fa56018836132ac565b9150613fb082613f71565b602082019050919050565b5f6020820190508181035f830152613fd281613f99565b9050919050565b5f613fe3826133ae565b9150613fee836133ae565b9250828203905081811115614006576140056137d9565b5b92915050565b5f81905092915050565b50565b5f6140245f8361400c565b915061402f82614016565b5f82019050919050565b5f61404382614019565b9150819050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6140a7602a836132ac565b91506140b28261404d565b604082019050919050565b5f6020820190508181035f8301526140d48161409b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61413a81613373565b82525050565b5f61414b8383614131565b60208301905092915050565b5f602082019050919050565b5f61416d82614108565b6141778185614112565b935061418283614122565b805f5b838110156141b25781516141998882614140565b97506141a483614157565b925050600181019050614185565b5085935050505092915050565b5f60a0820190506141d25f83018861347d565b6141df6020830187613a4a565b81810360408301526141f18186614163565b905061420060608301856136a2565b61420d608083018461347d565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61424e826133ae565b9150614259836133ae565b92508261426957614268614217565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6142a8601b836132ac565b91506142b382614274565b602082019050919050565b5f6020820190508181035f8301526142d58161429c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6143366021836132ac565b9150614341826142dc565b604082019050919050565b5f6020820190508181035f8301526143638161432a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203c1d44ebf21191817fc777803fde656a9e53ec8900f5ea278fd83afca414e62664736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c80638b4cee0811610101578063c9567bf911610094578063de30aad111610063578063de30aad1146106a3578063e1ab04c9146106cb578063f53bc83514610707578063f66608fe1461072f576101ed565b8063c9567bf9146105ff578063db8aeab114610615578063db92dbb61461063d578063dd62ed3e14610667576101ed565b80639c0db5f3116100d05780639c0db5f31461055d578063a9059cbb14610585578063c3c8cd80146105c1578063c4081a4c146105d7576101ed565b80638b4cee08146104b95780638da5cb5b146104e157806395d89b411461050b5780639a7a23d614610535576101ed565b8063313ce567116101795780635d098b38116101485780635d098b38146104295780636fc3eaec1461045157806370a0823114610467578063715018a6146104a3576101ed565b8063313ce5671461035f5780633bbac579146103895780635342acb4146103c55780635d0044ca14610401576101ed565b806318160ddd116101b557806318160ddd146102a757806323b872dd146102d157806327f3a72a1461030d57806328875c1614610337576101ed565b806306fdde03146101f1578063095ea7b31461021b5780630cc835a31461025757806312dfbd331461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610205610759565b604051610212919061332c565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c91906133e1565b610796565b60405161024e9190613439565b60405180910390f35b348015610262575f80fd5b5061027d60048036038101906102789190613452565b6107b3565b005b34801561028a575f80fd5b506102a560048036038101906102a09190613452565b610851565b005b3480156102b2575f80fd5b506102bb6108fe565b6040516102c8919061348c565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f291906134a5565b61090e565b6040516103049190613439565b60405180910390f35b348015610318575f80fd5b506103216109e2565b60405161032e919061348c565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613580565b6109f1565b005b34801561036a575f80fd5b50610373610b26565b60405161038091906135f8565b60405180910390f35b348015610394575f80fd5b506103af60048036038101906103aa9190613611565b610b2e565b6040516103bc9190613439565b60405180910390f35b3480156103d0575f80fd5b506103eb60048036038101906103e69190613611565b610b80565b6040516103f89190613439565b60405180910390f35b34801561040c575f80fd5b5061042760048036038101906104229190613452565b610bd2565b005b348015610434575f80fd5b5061044f600480360381019061044a9190613677565b610c7f565b005b34801561045c575f80fd5b50610465610e20565b005b348015610472575f80fd5b5061048d60048036038101906104889190613611565b610ec4565b60405161049a919061348c565b60405180910390f35b3480156104ae575f80fd5b506104b7610f12565b005b3480156104c4575f80fd5b506104df60048036038101906104da9190613452565b611060565b005b3480156104ec575f80fd5b506104f56110fe565b60405161050291906136b1565b60405180910390f35b348015610516575f80fd5b5061051f611125565b60405161052c919061332c565b60405180910390f35b348015610540575f80fd5b5061055b600480360381019061055691906136ca565b611162565b005b348015610568575f80fd5b50610583600480360381019061057e9190613580565b611293565b005b348015610590575f80fd5b506105ab60048036038101906105a691906133e1565b6113c8565b6040516105b89190613439565b60405180910390f35b3480156105cc575f80fd5b506105d56113e5565b005b3480156105e2575f80fd5b506105fd60048036038101906105f89190613452565b611491565b005b34801561060a575f80fd5b5061061361152f565b005b348015610620575f80fd5b5061063b60048036038101906106369190613580565b611a5c565b005b348015610648575f80fd5b50610651611b91565b60405161065e919061348c565b60405180910390f35b348015610672575f80fd5b5061068d60048036038101906106889190613708565b611bc1565b60405161069a919061348c565b60405180910390f35b3480156106ae575f80fd5b506106c960048036038101906106c49190613746565b611c43565b005b3480156106d6575f80fd5b506106f160048036038101906106ec9190613611565b611cf3565b6040516106fe9190613439565b60405180910390f35b348015610712575f80fd5b5061072d60048036038101906107289190613452565b611d45565b005b34801561073a575f80fd5b50610743611df2565b604051610750919061348c565b60405180910390f35b60606040518060400160405280601881526020017f416c6c596f75724261736541726542656c6f6e67546f55730000000000000000815250905090565b5f6107a96107a2611dfb565b8484611e02565b6001905092915050565b6107bb611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e906137bb565b60405180910390fd5b80600f8190555050565b610859611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc906137bb565b60405180910390fd5b633b9aca00816108f59190613806565b60048190555050565b5f683635c9adc5dea00000905090565b5f61091a848484611fc5565b6109d784610926611dfb565b6109d28560405180606001604052806028815260200161436b6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610989611dfb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461273a9092919063ffffffff16565b611e02565b600190509392505050565b5f6109ec30610ec4565b905090565b6109f9611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c906137bb565b60405180910390fd5b5f5b83839050811015610b20578160085f868685818110610aa957610aa8613847565b5b9050602002016020810190610abe9190613611565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610b1890613874565b915050610a87565b50505050565b5f6009905090565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bda611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d906137bb565b60405180910390fd5b633b9aca0081610c769190613806565b600d8190555050565b610c87611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a906137bb565b60405180910390fd5b5f60085f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e28611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab906137bb565b60405180910390fd5b5f479050610ec18161279c565b50565b5f610f0b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612860565b9050919050565b610f1a611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906137bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611068611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb906137bb565b60405180910390fd5b8060108190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5342460000000000000000000000000000000000000000000000000000000000815250905090565b61116a611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed906137bb565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c9061392b565b60405180910390fd5b61128f82826128cc565b5050565b61129b611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e906137bb565b60405180910390fd5b5f5b838390508110156113c25781600a5f86868581811061134b5761134a613847565b5b90506020020160208101906113609190613611565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806113ba90613874565b915050611329565b50505050565b5f6113db6113d4611dfb565b8484611fc5565b6001905092915050565b6113ed611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611470906137bb565b60405180910390fd5b5f61148330610ec4565b905061148e81612924565b50565b611499611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c906137bb565b60405180910390fd5b80600b8190555050565b611537611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba906137bb565b60405180910390fd5b601560149054906101000a900460ff1615611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a90613993565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506116a03060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611e02565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170d91906139c5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611772573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179691906139c5565b6040518363ffffffff1660e01b81526004016117b39291906139f0565b6020604051808303815f875af11580156117cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f391906139c5565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061187a30610ec4565b5f806118846110fe565b426040518863ffffffff1660e01b81526004016118a696959493929190613a59565b60606040518083038185885af11580156118c2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118e79190613acc565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611987929190613b1c565b6020604051808303815f875af11580156119a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c79190613b57565b506001601560146101000a81548160ff021916908315150217905550600160165f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611a64611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae7906137bb565b60405180910390fd5b5f5b83839050811015611b8b578160095f868685818110611b1457611b13613847565b5b9050602002016020810190611b299190613611565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611b8390613874565b915050611af2565b50505050565b5f611bbc60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ec4565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611c4b611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce906137bb565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611d4d611dfb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd0906137bb565b60405180910390fd5b633b9aca0081611de99190613806565b600e8190555050565b5f600b54905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6790613bf2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613c80565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fb8919061348c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613d0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209890613d9c565b60405180910390fd5b5f81116120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da90613e2a565b60405180910390fd5b6120eb6110fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561215957506121296110fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125d857600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156121fc5750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612204575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122a8575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b657505f600d5414155b1561231457600d54816122c884610ec4565b6122d29190613e48565b1115612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a90613eeb565b60405180910390fd5b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123bd575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612410575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124bd57601560149054906101000a900460ff16612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90613f53565b60405180910390fd5b5f600e54146124b357600e548111156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613fbb565b60405180910390fd5b5b600f54600c819055505b5f6124c730610ec4565b9050601560169054906101000a900460ff16158015612533575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561254b5750601560149054906101000a900460ff165b156125d657601054600c8190555060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125d5576004548111156125d45760158054906101000a900460ff166125ca5760045490505b6125d381612b8f565b5b5b5b505b5f6001905060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612678575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612681575f90505b60165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561271f575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612728575f90505b61273484848484612bb2565b50505050565b5f838311158290612781576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612778919061332c565b60405180910390fd5b505f838561278f9190613fd9565b9050809150509392505050565b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516127e290614039565b5f6040518083038185875af1925050503d805f811461281c576040519150601f19603f3d011682016040523d82523d5f602084013e612821565b606091505b505090507fb6caad5b328a3de9a49b44605241a4b72f6f1aa955829d12e37decfd84a0b8ca816040516128549190613439565b60405180910390a15050565b5f6002548211156128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d906140bd565b60405180910390fd5b5f6128af612bdf565b90506128c48184612c0890919063ffffffff16565b915050919050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601560166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561295b5761295a6140db565b5b6040519080825280602002602001820160405280156129895781602001602082028036833780820191505090505b50905030815f815181106129a05761299f613847565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a6891906139c5565b81600181518110612a7c57612a7b613847565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ae23060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e02565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b449594939291906141bf565b5f604051808303815f87803b158015612b5b575f80fd5b505af1158015612b6d573d5f803e3d5ffd5b50505050505f601560166101000a81548160ff02191690831515021790555050565b612b9881612924565b5f4790505f811115612bae57612bad4761279c565b5b5050565b80612bc057612bbf612c51565b5b612bcb848484612c8a565b80612bd957612bd8612e4a565b5b50505050565b5f805f612bea612e5e565b91509150612c018183612c0890919063ffffffff16565b9250505090565b5f612c4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ebd565b905092915050565b5f600b54148015612c6357505f600c54145b612c8857600b54601181905550600c546012819055505f600b819055505f600c819055505b565b5f805f805f80612c9987612f1e565b955095509550955095509550612cf58660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f7e90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612d868560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612fc790919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612dd081613024565b612dda84836130db565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612e37919061348c565b60405180910390a3505050505050505050565b601154600b81905550601254600c81905550565b5f805f60025490505f683635c9adc5dea000009050612e91683635c9adc5dea00000600254612c0890919063ffffffff16565b821015612eb057600254683635c9adc5dea00000935093505050612eb9565b81819350935050505b9091565b5f8083118290612f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efa919061332c565b60405180910390fd5b505f8385612f119190614244565b9050809150509392505050565b5f805f805f805f805f612f368a600b54600c54613115565b9250925092505f612f45612bdf565b90505f805f612f568e8787876131a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612fbf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061273a565b905092915050565b5f808284612fd59190613e48565b90508381101561301a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613011906142be565b60405180910390fd5b8091505092915050565b5f61302d612bdf565b90505f613043828461322b90919063ffffffff16565b90506130958160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612fc790919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6130f082600254612f7e90919063ffffffff16565b60028190555061310b81600354612fc790919063ffffffff16565b6003819055505050565b5f805f8061313f6064613131888a61322b90919063ffffffff16565b612c0890919063ffffffff16565b90505f613168606461315a888b61322b90919063ffffffff16565b612c0890919063ffffffff16565b90505f61319082613182858c612f7e90919063ffffffff16565b612f7e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806131be858961322b90919063ffffffff16565b90505f6131d4868961322b90919063ffffffff16565b90505f6131ea878961322b90919063ffffffff16565b90505f613212826132048587612f7e90919063ffffffff16565b612f7e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361323b575f905061329c565b5f82846132489190613806565b90508284826132579190614244565b14613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e9061434c565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132d95780820151818401526020810190506132be565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6132fe826132a2565b61330881856132ac565b93506133188185602086016132bc565b613321816132e4565b840191505092915050565b5f6020820190508181035f83015261334481846132f4565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61337d82613354565b9050919050565b61338d81613373565b8114613397575f80fd5b50565b5f813590506133a881613384565b92915050565b5f819050919050565b6133c0816133ae565b81146133ca575f80fd5b50565b5f813590506133db816133b7565b92915050565b5f80604083850312156133f7576133f661334c565b5b5f6134048582860161339a565b9250506020613415858286016133cd565b9150509250929050565b5f8115159050919050565b6134338161341f565b82525050565b5f60208201905061344c5f83018461342a565b92915050565b5f602082840312156134675761346661334c565b5b5f613474848285016133cd565b91505092915050565b613486816133ae565b82525050565b5f60208201905061349f5f83018461347d565b92915050565b5f805f606084860312156134bc576134bb61334c565b5b5f6134c98682870161339a565b93505060206134da8682870161339a565b92505060406134eb868287016133cd565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613516576135156134f5565b5b8235905067ffffffffffffffff811115613533576135326134f9565b5b60208301915083602082028301111561354f5761354e6134fd565b5b9250929050565b61355f8161341f565b8114613569575f80fd5b50565b5f8135905061357a81613556565b92915050565b5f805f604084860312156135975761359661334c565b5b5f84013567ffffffffffffffff8111156135b4576135b3613350565b5b6135c086828701613501565b935093505060206135d38682870161356c565b9150509250925092565b5f60ff82169050919050565b6135f2816135dd565b82525050565b5f60208201905061360b5f8301846135e9565b92915050565b5f602082840312156136265761362561334c565b5b5f6136338482850161339a565b91505092915050565b5f61364682613354565b9050919050565b6136568161363c565b8114613660575f80fd5b50565b5f813590506136718161364d565b92915050565b5f6020828403121561368c5761368b61334c565b5b5f61369984828501613663565b91505092915050565b6136ab81613373565b82525050565b5f6020820190506136c45f8301846136a2565b92915050565b5f80604083850312156136e0576136df61334c565b5b5f6136ed8582860161339a565b92505060206136fe8582860161356c565b9150509250929050565b5f806040838503121561371e5761371d61334c565b5b5f61372b8582860161339a565b925050602061373c8582860161339a565b9150509250929050565b5f6020828403121561375b5761375a61334c565b5b5f6137688482850161356c565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137a56020836132ac565b91506137b082613771565b602082019050919050565b5f6020820190508181035f8301526137d281613799565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613810826133ae565b915061381b836133ae565b9250828202613829816133ae565b915082820484148315176138405761383f6137d9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61387e826133ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138b0576138af6137d9565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6139156039836132ac565b9150613920826138bb565b604082019050919050565b5f6020820190508181035f83015261394281613909565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61397d6017836132ac565b915061398882613949565b602082019050919050565b5f6020820190508181035f8301526139aa81613971565b9050919050565b5f815190506139bf81613384565b92915050565b5f602082840312156139da576139d961334c565b5b5f6139e7848285016139b1565b91505092915050565b5f604082019050613a035f8301856136a2565b613a1060208301846136a2565b9392505050565b5f819050919050565b5f819050919050565b5f613a43613a3e613a3984613a17565b613a20565b6133ae565b9050919050565b613a5381613a29565b82525050565b5f60c082019050613a6c5f8301896136a2565b613a79602083018861347d565b613a866040830187613a4a565b613a936060830186613a4a565b613aa060808301856136a2565b613aad60a083018461347d565b979650505050505050565b5f81519050613ac6816133b7565b92915050565b5f805f60608486031215613ae357613ae261334c565b5b5f613af086828701613ab8565b9350506020613b0186828701613ab8565b9250506040613b1286828701613ab8565b9150509250925092565b5f604082019050613b2f5f8301856136a2565b613b3c602083018461347d565b9392505050565b5f81519050613b5181613556565b92915050565b5f60208284031215613b6c57613b6b61334c565b5b5f613b7984828501613b43565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613bdc6024836132ac565b9150613be782613b82565b604082019050919050565b5f6020820190508181035f830152613c0981613bd0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c6a6022836132ac565b9150613c7582613c10565b604082019050919050565b5f6020820190508181035f830152613c9781613c5e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613cf86025836132ac565b9150613d0382613c9e565b604082019050919050565b5f6020820190508181035f830152613d2581613cec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d866023836132ac565b9150613d9182613d2c565b604082019050919050565b5f6020820190508181035f830152613db381613d7a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613e146029836132ac565b9150613e1f82613dba565b604082019050919050565b5f6020820190508181035f830152613e4181613e08565b9050919050565b5f613e52826133ae565b9150613e5d836133ae565b9250828201905080821115613e7557613e746137d9565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613ed56023836132ac565b9150613ee082613e7b565b604082019050919050565b5f6020820190508181035f830152613f0281613ec9565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613f3d6018836132ac565b9150613f4882613f09565b602082019050919050565b5f6020820190508181035f830152613f6a81613f31565b9050919050565b7f544f4b454e3a204d6178206275792065786365656465642100000000000000005f82015250565b5f613fa56018836132ac565b9150613fb082613f71565b602082019050919050565b5f6020820190508181035f830152613fd281613f99565b9050919050565b5f613fe3826133ae565b9150613fee836133ae565b9250828203905081811115614006576140056137d9565b5b92915050565b5f81905092915050565b50565b5f6140245f8361400c565b915061402f82614016565b5f82019050919050565b5f61404382614019565b9150819050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6140a7602a836132ac565b91506140b28261404d565b604082019050919050565b5f6020820190508181035f8301526140d48161409b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61413a81613373565b82525050565b5f61414b8383614131565b60208301905092915050565b5f602082019050919050565b5f61416d82614108565b6141778185614112565b935061418283614122565b805f5b838110156141b25781516141998882614140565b97506141a483614157565b925050600181019050614185565b5085935050505092915050565b5f60a0820190506141d25f83018861347d565b6141df6020830187613a4a565b81810360408301526141f18186614163565b905061420060608301856136a2565b61420d608083018461347d565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61424e826133ae565b9150614259836133ae565b92508261426957614268614217565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6142a8601b836132ac565b91506142b382614274565b602082019050919050565b5f6020820190508181035f8301526142d58161429c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6143366021836132ac565b9150614341826142dc565b604082019050919050565b5f6020820190508181035f8301526143638161432a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203c1d44ebf21191817fc777803fde656a9e53ec8900f5ea278fd83afca414e62664736f6c63430008140033

Deployed Bytecode Sourcemap

9148:14463:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11300:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21712:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19370:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19744:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23170:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22401:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20808:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18698:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23079:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20380:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18900:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19886:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18466:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20647:153;;;;;;;;;;;;;:::i;:::-;;21415:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8229:148;;;;;;;;;;;;;:::i;:::-;;19461:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8015:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22984:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21025:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20188:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22226:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20481:154;;;;;;;;;;;;;:::i;:::-;;19556:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17687:767;;;;;;;;;;;;;:::i;:::-;;19022:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20916:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21561:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20094:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19240:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19995:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19651:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11300:83;11337:13;11370:5;;;;;;;;;;;;;;;;;11363:12;;11300:83;:::o;21712:161::-;21787:4;21804:39;21813:12;:10;:12::i;:::-;21827:7;21836:6;21804:8;:39::i;:::-;21861:4;21854:11;;21712:161;;;;:::o;19370:83::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19442:3:::1;19432:7;:13;;;;19370:83:::0;:::o;19744:134::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19865:5:::1;19854:8;:16;;;;:::i;:::-;19828:23;:42;;;;19744:134:::0;:::o;23170:95::-;23223:7;9469:12;23243:14;;23170:95;:::o;22401:313::-;22499:4;22516:36;22526:6;22534:9;22545:6;22516:9;:36::i;:::-;22563:121;22572:6;22580:12;:10;:12::i;:::-;22594:89;22632:6;22594:89;;;;;;;;;;;;;;;;;:11;:19;22606:6;22594:19;;;;;;;;;;;;;;;:33;22614:12;:10;:12::i;:::-;22594:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22563:8;:121::i;:::-;22702:4;22695:11;;22401:313;;;;;:::o;20808:100::-;20852:4;20876:24;20894:4;20876:9;:24::i;:::-;20869:31;;20808:100;:::o;18698:194::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18791:6:::1;18786:99;18807:3;;:10;;18803:1;:14;18786:99;;;18868:5;18839:18;:26;18858:3;;18862:1;18858:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18839:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18819:3;;;;;:::i;:::-;;;;18786:99;;;;18698:194:::0;;;:::o;23079:83::-;23120:5;9377:1;23138:16;;23079:83;:::o;20380:89::-;20428:4;20452:5;:9;20458:2;20452:9;;;;;;;;;;;;;;;;;;;;;;;;;20445:16;;20380:89;;;:::o;18900:114::-;18960:4;18984:18;:22;19003:2;18984:22;;;;;;;;;;;;;;;;;;;;;;;;;18977:29;;18900:114;;;:::o;19886:101::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19974:5:::1;19968:3;:11;;;;:::i;:::-;19951:14;:28;;;;19886:101:::0;:::o;18466:224::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18591:5:::1;18552:18;:36;18571:16;;;;;;;;;;;18552:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;18626:9;18607:16;;:28;;;;;;;;;;;;;;;;;;18678:4;18646:18;:29;18665:9;18646:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18466:224:::0;:::o;20647:153::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20699:26:::1;20728:21;20699:50;;20760:32;20773:18;20760:12;:32::i;:::-;20688:112;20647:153::o:0;21415:138::-;21481:7;21508:37;21528:7;:16;21536:7;21528:16;;;;;;;;;;;;;;;;21508:19;:37::i;:::-;21501:44;;21415:138;;;:::o;8229:148::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8336:1:::1;8299:40;;8320:6;::::0;::::1;;;;;;;;8299:40;;;;;;;;;;;;8367:1;8350:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8229:148::o:0;19461:87::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19536:4:::1;19525:8;:15;;;;19461:87:::0;:::o;8015:79::-;8053:7;8080:6;;;;;;;;;;;8073:13;;8015:79;:::o;22984:87::-;23023:13;23056:7;;;;;;;;;;;;;;;;;23049:14;;22984:87;:::o;21025:244::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21134:13:::1;;;;;;;;;;;21126:21;;:4;:21;;::::0;21118:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21220:41;21249:4;21255:5;21220:28;:41::i;:::-;21025:244:::0;;:::o;20188:180::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20276:6:::1;20271:90;20292:5;;:12;;20288:1;:16;20271:90;;;20344:5;20326;:15;20332:5;;20338:1;20332:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20326:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;20306:3;;;;;:::i;:::-;;;;20271:90;;;;20188:180:::0;;;:::o;22226:167::-;22304:4;22321:42;22331:12;:10;:12::i;:::-;22345:9;22356:6;22321:9;:42::i;:::-;22381:4;22374:11;;22226:167;;;;:::o;20481:154::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20533:23:::1;20559:24;20577:4;20559:9;:24::i;:::-;20533:50;;20594:33;20611:15;20594:16;:33::i;:::-;20522:113;20481:154::o:0;19556:83::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19628:3:::1;19618:7;:13;;;;19556:83:::0;:::o;17687:767::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17751:11:::1;;;;;;;;;;;17750:12;17742:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17800:35;17857:42;17800:100;;17929:16;17911:15;;:34;;;;;;;;;;;;;;;;;;17956:58;17973:4;17988:15;;;;;;;;;;;9469:12;17956:8;:58::i;:::-;18059:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18041:56;;;18106:4;18113:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18041:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18025:13;;:112;;;;;;;;;;;;;;;;;;18148:15;;;;;;;;;;;:31;;;18187:21;18218:4;18224:24;18242:4;18224:9;:24::i;:::-;18249:1;18251::::0;18253:7:::1;:5;:7::i;:::-;18261:15;18148:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18295:13;;;;;;;;;;;18288:29;;;18326:15;;;;;;;;;;;18344:14;18288:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18384:4;18370:11;;:18;;;;;;;;;;;;;;;;;;18442:4;18399:25;:40;18425:13;;;;;;;;;;;18399:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;17731:723;17687:767::o:0;19022:206::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19121:6:::1;19116:105;19137:3;;:10;;19133:1;:14;19116:105;;;19204:5;19169:24;:32;19194:3;;19198:1;19194:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19169:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19149:3;;;;;:::i;:::-;;;;19116:105;;;;19022:206:::0;;;:::o;20916:101::-;20961:4;20985:24;20995:13;;;;;;;;;;;20985:9;:24::i;:::-;20978:31;;20916:101;:::o;21561:143::-;21642:7;21669:11;:18;21681:5;21669:18;;;;;;;;;;;;;;;:27;21688:7;21669:27;;;;;;;;;;;;;;;;21662:34;;21561:143;;;;:::o;20094:86::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20167:5:::1;20156:8;::::0;:16:::1;;;;;;;;;;;;;;;;;;20094:86:::0;:::o;19240:122::-;19302:4;19326:24;:28;19351:2;19326:28;;;;;;;;;;;;;;;;;;;;;;;;;19319:35;;19240:122;;;:::o;19995:91::-;8152:12;:10;:12::i;:::-;8142:22;;:6;;;;;;;;;;:22;;;8134:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20073:5:::1;20067:3;:11;;;;:::i;:::-;20057:7;:21;;;;19995:91:::0;:::o;19651:81::-;19693:4;19717:7;;19710:14;;19651:81;:::o;7555:98::-;7608:7;7635:10;7628:17;;7555:98;:::o;23273:335::-;23383:1;23366:19;;:5;:19;;;23358:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23464:1;23445:21;;:7;:21;;;23437:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23546:6;23516:11;:18;23528:5;23516:18;;;;;;;;;;;;;;;:27;23535:7;23516:27;;;;;;;;;;;;;;;:36;;;;23584:7;23568:32;;23577:5;23568:32;;;23593:6;23568:32;;;;;;:::i;:::-;;;;;;;;23273:335;;;:::o;11395:1923::-;11499:1;11483:18;;:4;:18;;;11475:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11576:1;11562:16;;:2;:16;;;11554:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11646:1;11637:6;:10;11629:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11717:7;:5;:7::i;:::-;11709:15;;:4;:15;;;;:32;;;;;11734:7;:5;:7::i;:::-;11728:13;;:2;:13;;;;11709:32;11706:1282;;;11781:5;:11;11787:4;11781:11;;;;;;;;;;;;;;;;;;;;;;;;;11780:12;:26;;;;;11797:5;:9;11803:2;11797:9;;;;;;;;;;;;;;;;;;;;;;;;;11796:10;11780:26;11772:35;;;;;;11833:13;;;;;;;;;;;11827:19;;:2;:19;;;;:52;;;;;11851:24;:28;11876:2;11851:28;;;;;;;;;;;;;;;;;;;;;;;;;11850:29;11827:52;:75;;;;;11901:1;11883:14;;:19;;11827:75;11824:212;;;11966:14;;11956:6;11931:22;11949:2;11931:9;:22::i;:::-;:31;;;;:::i;:::-;:49;;11923:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11824:212;12075:13;;;;;;;;;;;12067:21;;:4;:21;;;:55;;;;;12106:15;;;;;;;;;;;12092:30;;:2;:30;;;;12067:55;:82;;;;;12127:18;:22;12146:2;12127:22;;;;;;;;;;;;;;;;;;;;;;;;;12126:23;12067:82;12064:343;;;12178:11;;;;;;;;;;;12170:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12253:1;12242:7;;:12;12239:114;;12297:7;;12287:6;:17;;12279:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;12239:114;12384:7;;12373:8;:18;;;;12064:343;12421:28;12452:24;12470:4;12452:9;:24::i;:::-;12421:55;;12497:6;;;;;;;;;;;12496:7;:32;;;;;12515:13;;;;;;;;;;;12507:21;;:4;:21;;;;12496:32;:47;;;;;12532:11;;;;;;;;;;;12496:47;12493:484;;;12577:8;;12566;:19;;;;12610:25;:29;12636:2;12610:29;;;;;;;;;;;;;;;;;;;;;;;;;12606:354;;;12690:23;;12667:20;:46;12664:277;;;12746:8;;;;;;;;;;12742:119;;12810:23;;12787:46;;12742:119;12887:30;12896:20;12887:8;:30::i;:::-;12664:277;12606:354;12493:484;11743:1245;11706:1282;12998:12;13013:4;12998:19;;13033:18;:24;13052:4;13033:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13061:18;:22;13080:2;13061:22;;;;;;;;;;;;;;;;;;;;;;;;;13033:50;13030:97;;;13110:5;13100:15;;13030:97;13143:25;:31;13169:4;13143:31;;;;;;;;;;;;;;;;;;;;;;;;;13142:32;:66;;;;;13179:25;:29;13205:2;13179:29;;;;;;;;;;;;;;;;;;;;;;;;;13178:30;13142:66;13139:113;;;13235:5;13225:15;;13139:113;13272:38;13287:4;13292:2;13295:6;13302:7;13272:14;:38::i;:::-;11464:1854;11395:1923;;;:::o;3965:192::-;4051:7;4084:1;4079;:6;;4087:12;4071:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4111:9;4127:1;4123;:5;;;;:::i;:::-;4111:17;;4148:1;4141:8;;;3965:192;;;;;:::o;14639:163::-;14697:14;14717:16;;;;;;;;;;;:21;;14746:6;14717:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14696:61;;;14775:19;14784:9;14775:19;;;;;;:::i;:::-;;;;;;;;14685:117;14639:163;:::o;22722:254::-;22789:7;22828;;22817;:18;;22809:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22893:19;22916:10;:8;:10::i;:::-;22893:33;;22944:24;22956:11;22944:7;:11;;:24;;;;:::i;:::-;22937:31;;;22722:254;;;:::o;21277:130::-;21394:5;21360:25;:31;21386:4;21360:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21277:130;;:::o;14140:483::-;10696:4;10687:6;;:13;;;;;;;;;;;;;;;;;;14218:21:::1;14256:1;14242:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14218:40;;14287:4;14269;14274:1;14269:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14313:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14303:4;14308:1;14303:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14346:62;14363:4;14378:15;;;;;;;;;;;14396:11;14346:8;:62::i;:::-;14419:15;;;;;;;;;;;:66;;;14500:11;14526:1;14542:4;14569;14589:15;14419:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14207:416;10732:5:::0;10723:6;;:14;;;;;;;;;;;;;;;;;;14140:483;:::o;13847:285::-;13924:38;13941:20;13924:16;:38::i;:::-;13975:26;14004:21;13975:50;;14060:1;14039:18;:22;14036:89;;;14078:35;14091:21;14078:12;:35::i;:::-;14036:89;13903:229;13847:285;:::o;14814:263::-;14926:7;14922:40;;14948:14;:12;:14::i;:::-;14922:40;14973:44;14991:6;14999:9;15010:6;14973:17;:44::i;:::-;15032:7;15028:41;;15054:15;:13;:15::i;:::-;15028:41;14814:263;;;;:::o;16418:163::-;16459:7;16480:15;16497;16516:19;:17;:19::i;:::-;16479:56;;;;16553:20;16565:7;16553;:11;;:20;;;;:::i;:::-;16546:27;;;;16418:163;:::o;5363:132::-;5421:7;5448:39;5452:1;5455;5448:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5441:46;;5363:132;;;;:::o;21881:210::-;21938:1;21927:7;;:12;:29;;;;;21955:1;21943:8;;:13;21927:29;21958:7;21924:41;21993:7;;21975:15;:25;;;;22030:8;;22011:16;:27;;;;22059:1;22049:7;:11;;;;22082:1;22071:8;:12;;;;21881:210;:::o;15085:490::-;15184:15;15201:23;15226:12;15240:23;15265:12;15279:13;15296:19;15307:7;15296:10;:19::i;:::-;15183:132;;;;;;;;;;;;15344:28;15364:7;15344;:15;15352:6;15344:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15326:7;:15;15334:6;15326:15;;;;;;;;;;;;;;;:46;;;;15404:39;15427:15;15404:7;:18;15412:9;15404:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15383:7;:18;15391:9;15383:18;;;;;;;;;;;;;;;:60;;;;15457:16;15467:5;15457:9;:16::i;:::-;15484:23;15496:4;15502;15484:11;:23::i;:::-;15540:9;15523:44;;15532:6;15523:44;;;15551:15;15523:44;;;;;;:::i;:::-;;;;;;;;15172:403;;;;;;15085:490;;;:::o;22103:115::-;22157:15;;22147:7;:25;;;;22194:16;;22183:8;:27;;;;22103:115::o;16589:255::-;16639:7;16648;16668:15;16686:7;;16668:25;;16704:15;9469:12;16704:25;;16753:20;9469:12;16753:7;;:11;;:20;;;;:::i;:::-;16743:7;:30;16740:60;;;16783:7;;9469:12;16775:25;;;;;;;;16740:60;16819:7;16828;16811:25;;;;;;16589:255;;;:::o;5991:278::-;6077:7;6109:1;6105;:5;6112:12;6097:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6136:9;6152:1;6148;:5;;;;:::i;:::-;6136:17;;6260:1;6253:8;;;5991:278;;;;;:::o;15583:468::-;15642:7;15651;15660;15669;15678;15687;15708:23;15733:12;15747:13;15764:39;15776:7;15785;;15794:8;;15764:11;:39::i;:::-;15707:96;;;;;;15814:19;15837:10;:8;:10::i;:::-;15814:33;;15859:15;15876:23;15901:12;15917:46;15929:7;15938:4;15944:5;15951:11;15917;:46::i;:::-;15858:105;;;;;;15982:7;15991:15;16008:4;16014:15;16031:4;16037:5;15974:69;;;;;;;;;;;;;;;;;;;15583:468;;;;;;;:::o;3526:136::-;3584:7;3611:43;3615:1;3618;3611:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3604:50;;3526:136;;;;:::o;3062:181::-;3120:7;3140:9;3156:1;3152;:5;;;;:::i;:::-;3140:17;;3181:1;3176;:6;;3168:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3234:1;3227:8;;;3062:181;;;;:::o;17269:214::-;17322:19;17345:10;:8;:10::i;:::-;17322:33;;17366:13;17382:22;17392:11;17382:5;:9;;:22;;;;:::i;:::-;17366:38;;17442:33;17469:5;17442:7;:22;17458:4;17442:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17417:7;:22;17433:4;17417:22;;;;;;;;;;;;;;;:58;;;;17311:172;;17269:214;:::o;17491:147::-;17569:17;17581:4;17569:7;;:11;;:17;;;;:::i;:::-;17559:7;:27;;;;17610:20;17625:4;17610:10;;:14;;:20;;;;:::i;:::-;17597:10;:33;;;;17491:147;;:::o;16059:351::-;16152:7;16161;16170;16190:12;16205:28;16229:3;16205:19;16217:6;16205:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16190:43;;16244:13;16260:29;16285:3;16260:20;16272:7;16260;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16244:45;;16300:23;16326:28;16348:5;16326:17;16338:4;16326:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16300:54;;16373:15;16390:4;16396:5;16365:37;;;;;;;;;16059:351;;;;;;;:::o;16852:409::-;16962:7;16971;16980;17000:15;17018:24;17030:11;17018:7;:11;;:24;;;;:::i;:::-;17000:42;;17053:12;17068:21;17077:11;17068:4;:8;;:21;;;;:::i;:::-;17053:36;;17100:13;17116:22;17126:11;17116:5;:9;;:22;;;;:::i;:::-;17100:38;;17149:23;17175:28;17197:5;17175:17;17187:4;17175:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17149:54;;17222:7;17231:15;17248:4;17214:39;;;;;;;;;;16852:409;;;;;;;;:::o;4416:471::-;4474:7;4724:1;4719;:6;4715:47;;4749:1;4742:8;;;;4715:47;4774:9;4790:1;4786;:5;;;;:::i;:::-;4774:17;;4819:1;4814;4810;:5;;;;:::i;:::-;:10;4802:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4878:1;4871:8;;;4416: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:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:117::-;4867:1;4864;4857:12;4881:117;4990:1;4987;4980:12;5004:117;5113:1;5110;5103:12;5144:568;5217:8;5227:6;5277:3;5270:4;5262:6;5258:17;5254:27;5244:122;;5285:79;;:::i;:::-;5244:122;5398:6;5385:20;5375:30;;5428:18;5420:6;5417:30;5414:117;;;5450:79;;:::i;:::-;5414:117;5564:4;5556:6;5552:17;5540:29;;5618:3;5610:4;5602:6;5598:17;5588:8;5584:32;5581:41;5578:128;;;5625:79;;:::i;:::-;5578:128;5144:568;;;;;:::o;5718:116::-;5788:21;5803:5;5788:21;:::i;:::-;5781:5;5778:32;5768:60;;5824:1;5821;5814:12;5768:60;5718:116;:::o;5840:133::-;5883:5;5921:6;5908:20;5899:29;;5937:30;5961:5;5937:30;:::i;:::-;5840:133;;;;:::o;5979:698::-;6071:6;6079;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6290:1;6279:9;6275:17;6262:31;6320:18;6312:6;6309:30;6306:117;;;6342:79;;:::i;:::-;6306:117;6455:80;6527:7;6518:6;6507:9;6503:22;6455:80;:::i;:::-;6437:98;;;;6233:312;6584:2;6610:50;6652:7;6643:6;6632:9;6628:22;6610:50;:::i;:::-;6600:60;;6555:115;5979:698;;;;;:::o;6683:86::-;6718:7;6758:4;6751:5;6747:16;6736:27;;6683:86;;;:::o;6775:112::-;6858:22;6874:5;6858:22;:::i;:::-;6853:3;6846:35;6775:112;;:::o;6893:214::-;6982:4;7020:2;7009:9;7005:18;6997:26;;7033:67;7097:1;7086:9;7082:17;7073:6;7033:67;:::i;:::-;6893:214;;;;:::o;7113:329::-;7172:6;7221:2;7209:9;7200:7;7196:23;7192:32;7189:119;;;7227:79;;:::i;:::-;7189:119;7347:1;7372:53;7417:7;7408:6;7397:9;7393:22;7372:53;:::i;:::-;7362:63;;7318:117;7113:329;;;;:::o;7448:104::-;7493:7;7522:24;7540:5;7522:24;:::i;:::-;7511:35;;7448:104;;;:::o;7558:138::-;7639:32;7665:5;7639:32;:::i;:::-;7632:5;7629:43;7619:71;;7686:1;7683;7676:12;7619:71;7558:138;:::o;7702:155::-;7756:5;7794:6;7781:20;7772:29;;7810:41;7845:5;7810:41;:::i;:::-;7702:155;;;;:::o;7863:345::-;7930:6;7979:2;7967:9;7958:7;7954:23;7950:32;7947:119;;;7985:79;;:::i;:::-;7947:119;8105:1;8130:61;8183:7;8174:6;8163:9;8159:22;8130:61;:::i;:::-;8120:71;;8076:125;7863:345;;;;:::o;8214:118::-;8301:24;8319:5;8301:24;:::i;:::-;8296:3;8289:37;8214:118;;:::o;8338:222::-;8431:4;8469:2;8458:9;8454:18;8446:26;;8482:71;8550:1;8539:9;8535:17;8526:6;8482:71;:::i;:::-;8338:222;;;;:::o;8566:468::-;8631:6;8639;8688:2;8676:9;8667:7;8663:23;8659:32;8656:119;;;8694:79;;:::i;:::-;8656:119;8814:1;8839:53;8884:7;8875:6;8864:9;8860:22;8839:53;:::i;:::-;8829:63;;8785:117;8941:2;8967:50;9009:7;9000:6;8989:9;8985:22;8967:50;:::i;:::-;8957:60;;8912:115;8566:468;;;;;:::o;9040:474::-;9108:6;9116;9165:2;9153:9;9144:7;9140:23;9136:32;9133:119;;;9171:79;;:::i;:::-;9133:119;9291:1;9316:53;9361:7;9352:6;9341:9;9337:22;9316:53;:::i;:::-;9306:63;;9262:117;9418:2;9444:53;9489:7;9480:6;9469:9;9465:22;9444:53;:::i;:::-;9434:63;;9389:118;9040:474;;;;;:::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:182::-;9989:34;9985:1;9977:6;9973:14;9966:58;9849:182;:::o;10037:366::-;10179:3;10200:67;10264:2;10259:3;10200:67;:::i;:::-;10193:74;;10276:93;10365:3;10276:93;:::i;:::-;10394:2;10389:3;10385:12;10378:19;;10037:366;;;:::o;10409:419::-;10575:4;10613:2;10602:9;10598:18;10590:26;;10662:9;10656:4;10652:20;10648:1;10637:9;10633:17;10626:47;10690:131;10816:4;10690:131;:::i;:::-;10682:139;;10409:419;;;:::o;10834:180::-;10882:77;10879:1;10872:88;10979:4;10976:1;10969:15;11003:4;11000:1;10993:15;11020:410;11060:7;11083:20;11101:1;11083:20;:::i;:::-;11078:25;;11117:20;11135:1;11117:20;:::i;:::-;11112:25;;11172:1;11169;11165:9;11194:30;11212:11;11194:30;:::i;:::-;11183:41;;11373:1;11364:7;11360:15;11357:1;11354:22;11334:1;11327:9;11307:83;11284:139;;11403:18;;:::i;:::-;11284:139;11068:362;11020:410;;;;:::o;11436:180::-;11484:77;11481:1;11474:88;11581:4;11578:1;11571:15;11605:4;11602:1;11595:15;11622:233;11661:3;11684:24;11702:5;11684:24;:::i;:::-;11675:33;;11730:66;11723:5;11720:77;11717:103;;11800:18;;:::i;:::-;11717:103;11847:1;11840:5;11836:13;11829:20;;11622:233;;;:::o;11861:244::-;12001:34;11997:1;11989:6;11985:14;11978:58;12070:27;12065:2;12057:6;12053:15;12046:52;11861:244;:::o;12111:366::-;12253:3;12274:67;12338:2;12333:3;12274:67;:::i;:::-;12267:74;;12350:93;12439:3;12350:93;:::i;:::-;12468:2;12463:3;12459:12;12452:19;;12111:366;;;:::o;12483:419::-;12649:4;12687:2;12676:9;12672:18;12664:26;;12736:9;12730:4;12726:20;12722:1;12711:9;12707:17;12700:47;12764:131;12890:4;12764:131;:::i;:::-;12756:139;;12483:419;;;:::o;12908:173::-;13048:25;13044:1;13036:6;13032:14;13025:49;12908:173;:::o;13087:366::-;13229:3;13250:67;13314:2;13309:3;13250:67;:::i;:::-;13243:74;;13326:93;13415:3;13326:93;:::i;:::-;13444:2;13439:3;13435:12;13428:19;;13087:366;;;:::o;13459:419::-;13625:4;13663:2;13652:9;13648:18;13640:26;;13712:9;13706:4;13702:20;13698:1;13687:9;13683:17;13676:47;13740:131;13866:4;13740:131;:::i;:::-;13732:139;;13459:419;;;:::o;13884:143::-;13941:5;13972:6;13966:13;13957:22;;13988:33;14015:5;13988:33;:::i;:::-;13884:143;;;;:::o;14033:351::-;14103:6;14152:2;14140:9;14131:7;14127:23;14123:32;14120:119;;;14158:79;;:::i;:::-;14120:119;14278:1;14303:64;14359:7;14350:6;14339:9;14335:22;14303:64;:::i;:::-;14293:74;;14249:128;14033:351;;;;:::o;14390:332::-;14511:4;14549:2;14538:9;14534:18;14526:26;;14562:71;14630:1;14619:9;14615:17;14606:6;14562:71;:::i;:::-;14643:72;14711:2;14700:9;14696:18;14687:6;14643:72;:::i;:::-;14390:332;;;;;:::o;14728:85::-;14773:7;14802:5;14791:16;;14728:85;;;:::o;14819:60::-;14847:3;14868:5;14861:12;;14819:60;;;:::o;14885:158::-;14943:9;14976:61;14994:42;15003:32;15029:5;15003:32;:::i;:::-;14994:42;:::i;:::-;14976:61;:::i;:::-;14963:74;;14885:158;;;:::o;15049:147::-;15144:45;15183:5;15144:45;:::i;:::-;15139:3;15132:58;15049:147;;:::o;15202:807::-;15451:4;15489:3;15478:9;15474:19;15466:27;;15503:71;15571:1;15560:9;15556:17;15547:6;15503:71;:::i;:::-;15584:72;15652:2;15641:9;15637:18;15628:6;15584:72;:::i;:::-;15666:80;15742:2;15731:9;15727:18;15718:6;15666:80;:::i;:::-;15756;15832:2;15821:9;15817:18;15808:6;15756:80;:::i;:::-;15846:73;15914:3;15903:9;15899:19;15890:6;15846:73;:::i;:::-;15929;15997:3;15986:9;15982:19;15973:6;15929:73;:::i;:::-;15202:807;;;;;;;;;:::o;16015:143::-;16072:5;16103:6;16097:13;16088:22;;16119:33;16146:5;16119:33;:::i;:::-;16015:143;;;;:::o;16164:663::-;16252:6;16260;16268;16317:2;16305:9;16296:7;16292:23;16288:32;16285:119;;;16323:79;;:::i;:::-;16285:119;16443:1;16468:64;16524:7;16515:6;16504:9;16500:22;16468:64;:::i;:::-;16458:74;;16414:128;16581:2;16607:64;16663:7;16654:6;16643:9;16639:22;16607:64;:::i;:::-;16597:74;;16552:129;16720:2;16746:64;16802:7;16793:6;16782:9;16778:22;16746:64;:::i;:::-;16736:74;;16691:129;16164:663;;;;;:::o;16833:332::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17005:71;17073:1;17062:9;17058:17;17049:6;17005:71;:::i;:::-;17086:72;17154:2;17143:9;17139:18;17130:6;17086:72;:::i;:::-;16833:332;;;;;:::o;17171:137::-;17225:5;17256:6;17250:13;17241:22;;17272:30;17296:5;17272:30;:::i;:::-;17171:137;;;;:::o;17314:345::-;17381:6;17430:2;17418:9;17409:7;17405:23;17401:32;17398:119;;;17436:79;;:::i;:::-;17398:119;17556:1;17581:61;17634:7;17625:6;17614:9;17610:22;17581:61;:::i;:::-;17571:71;;17527:125;17314:345;;;;:::o;17665:223::-;17805:34;17801:1;17793:6;17789:14;17782:58;17874:6;17869:2;17861:6;17857:15;17850:31;17665:223;:::o;17894:366::-;18036:3;18057:67;18121:2;18116:3;18057:67;:::i;:::-;18050:74;;18133:93;18222:3;18133:93;:::i;:::-;18251:2;18246:3;18242:12;18235:19;;17894:366;;;:::o;18266:419::-;18432:4;18470:2;18459:9;18455:18;18447:26;;18519:9;18513:4;18509:20;18505:1;18494:9;18490:17;18483:47;18547:131;18673:4;18547:131;:::i;:::-;18539:139;;18266:419;;;:::o;18691:221::-;18831:34;18827:1;18819:6;18815:14;18808:58;18900:4;18895:2;18887:6;18883:15;18876:29;18691:221;:::o;18918:366::-;19060:3;19081:67;19145:2;19140:3;19081:67;:::i;:::-;19074:74;;19157:93;19246:3;19157:93;:::i;:::-;19275:2;19270:3;19266:12;19259:19;;18918:366;;;:::o;19290:419::-;19456:4;19494:2;19483:9;19479:18;19471:26;;19543:9;19537:4;19533:20;19529:1;19518:9;19514:17;19507:47;19571:131;19697:4;19571:131;:::i;:::-;19563:139;;19290:419;;;:::o;19715:224::-;19855:34;19851:1;19843:6;19839:14;19832:58;19924:7;19919:2;19911:6;19907:15;19900:32;19715:224;:::o;19945:366::-;20087:3;20108:67;20172:2;20167:3;20108:67;:::i;:::-;20101:74;;20184:93;20273:3;20184:93;:::i;:::-;20302:2;20297:3;20293:12;20286:19;;19945:366;;;:::o;20317:419::-;20483:4;20521:2;20510:9;20506:18;20498:26;;20570:9;20564:4;20560:20;20556:1;20545:9;20541:17;20534:47;20598:131;20724:4;20598:131;:::i;:::-;20590:139;;20317:419;;;:::o;20742:222::-;20882:34;20878:1;20870:6;20866:14;20859:58;20951:5;20946:2;20938:6;20934:15;20927:30;20742:222;:::o;20970:366::-;21112:3;21133:67;21197:2;21192:3;21133:67;:::i;:::-;21126:74;;21209:93;21298:3;21209:93;:::i;:::-;21327:2;21322:3;21318:12;21311:19;;20970:366;;;:::o;21342:419::-;21508:4;21546:2;21535:9;21531:18;21523:26;;21595:9;21589:4;21585:20;21581:1;21570:9;21566:17;21559:47;21623:131;21749:4;21623:131;:::i;:::-;21615:139;;21342:419;;;:::o;21767:228::-;21907:34;21903:1;21895:6;21891:14;21884:58;21976:11;21971:2;21963:6;21959:15;21952:36;21767:228;:::o;22001:366::-;22143:3;22164:67;22228:2;22223:3;22164:67;:::i;:::-;22157:74;;22240:93;22329:3;22240:93;:::i;:::-;22358:2;22353:3;22349:12;22342:19;;22001:366;;;:::o;22373:419::-;22539:4;22577:2;22566:9;22562:18;22554:26;;22626:9;22620:4;22616:20;22612:1;22601:9;22597:17;22590:47;22654:131;22780:4;22654:131;:::i;:::-;22646:139;;22373:419;;;:::o;22798:191::-;22838:3;22857:20;22875:1;22857:20;:::i;:::-;22852:25;;22891:20;22909:1;22891:20;:::i;:::-;22886:25;;22934:1;22931;22927:9;22920:16;;22955:3;22952:1;22949:10;22946:36;;;22962:18;;:::i;:::-;22946:36;22798:191;;;;:::o;22995:222::-;23135:34;23131:1;23123:6;23119:14;23112:58;23204:5;23199:2;23191:6;23187:15;23180:30;22995:222;:::o;23223:366::-;23365:3;23386:67;23450:2;23445:3;23386:67;:::i;:::-;23379:74;;23462:93;23551:3;23462:93;:::i;:::-;23580:2;23575:3;23571:12;23564:19;;23223:366;;;:::o;23595:419::-;23761:4;23799:2;23788:9;23784:18;23776:26;;23848:9;23842:4;23838:20;23834:1;23823:9;23819:17;23812:47;23876:131;24002:4;23876:131;:::i;:::-;23868:139;;23595:419;;;:::o;24020:174::-;24160:26;24156:1;24148:6;24144:14;24137:50;24020:174;:::o;24200:366::-;24342:3;24363:67;24427:2;24422:3;24363:67;:::i;:::-;24356:74;;24439:93;24528:3;24439:93;:::i;:::-;24557:2;24552:3;24548:12;24541:19;;24200:366;;;:::o;24572:419::-;24738:4;24776:2;24765:9;24761:18;24753:26;;24825:9;24819:4;24815:20;24811:1;24800:9;24796:17;24789:47;24853:131;24979:4;24853:131;:::i;:::-;24845:139;;24572:419;;;:::o;24997:174::-;25137:26;25133:1;25125:6;25121:14;25114:50;24997:174;:::o;25177:366::-;25319:3;25340:67;25404:2;25399:3;25340:67;:::i;:::-;25333:74;;25416:93;25505:3;25416:93;:::i;:::-;25534:2;25529:3;25525:12;25518:19;;25177:366;;;:::o;25549:419::-;25715:4;25753:2;25742:9;25738:18;25730:26;;25802:9;25796:4;25792:20;25788:1;25777:9;25773:17;25766:47;25830:131;25956:4;25830:131;:::i;:::-;25822:139;;25549:419;;;:::o;25974:194::-;26014:4;26034:20;26052:1;26034:20;:::i;:::-;26029:25;;26068:20;26086:1;26068:20;:::i;:::-;26063:25;;26112:1;26109;26105:9;26097:17;;26136:1;26130:4;26127:11;26124:37;;;26141:18;;:::i;:::-;26124:37;25974:194;;;;:::o;26174:147::-;26275:11;26312:3;26297:18;;26174:147;;;;:::o;26327:114::-;;:::o;26447:398::-;26606:3;26627:83;26708:1;26703:3;26627:83;:::i;:::-;26620:90;;26719:93;26808:3;26719:93;:::i;:::-;26837:1;26832:3;26828:11;26821:18;;26447:398;;;:::o;26851:379::-;27035:3;27057:147;27200:3;27057:147;:::i;:::-;27050:154;;27221:3;27214:10;;26851:379;;;:::o;27236:229::-;27376:34;27372:1;27364:6;27360:14;27353:58;27445:12;27440:2;27432:6;27428:15;27421:37;27236:229;:::o;27471:366::-;27613:3;27634:67;27698:2;27693:3;27634:67;:::i;:::-;27627:74;;27710:93;27799:3;27710:93;:::i;:::-;27828:2;27823:3;27819:12;27812:19;;27471:366;;;:::o;27843:419::-;28009:4;28047:2;28036:9;28032:18;28024:26;;28096:9;28090:4;28086:20;28082:1;28071:9;28067:17;28060:47;28124:131;28250:4;28124:131;:::i;:::-;28116:139;;27843:419;;;:::o;28268:180::-;28316:77;28313:1;28306:88;28413:4;28410:1;28403:15;28437:4;28434:1;28427:15;28454:114;28521:6;28555:5;28549:12;28539:22;;28454:114;;;:::o;28574:184::-;28673:11;28707:6;28702:3;28695:19;28747:4;28742:3;28738:14;28723:29;;28574:184;;;;:::o;28764:132::-;28831:4;28854:3;28846:11;;28884:4;28879:3;28875:14;28867:22;;28764:132;;;:::o;28902:108::-;28979:24;28997:5;28979:24;:::i;:::-;28974:3;28967:37;28902:108;;:::o;29016:179::-;29085:10;29106:46;29148:3;29140:6;29106:46;:::i;:::-;29184:4;29179:3;29175:14;29161:28;;29016:179;;;;:::o;29201:113::-;29271:4;29303;29298:3;29294:14;29286:22;;29201:113;;;:::o;29350:732::-;29469:3;29498:54;29546:5;29498:54;:::i;:::-;29568:86;29647:6;29642:3;29568:86;:::i;:::-;29561:93;;29678:56;29728:5;29678:56;:::i;:::-;29757:7;29788:1;29773:284;29798:6;29795:1;29792:13;29773:284;;;29874:6;29868:13;29901:63;29960:3;29945:13;29901:63;:::i;:::-;29894:70;;29987:60;30040:6;29987:60;:::i;:::-;29977:70;;29833:224;29820:1;29817;29813:9;29808:14;;29773:284;;;29777:14;30073:3;30066:10;;29474:608;;;29350:732;;;;:::o;30088:831::-;30351:4;30389:3;30378:9;30374:19;30366:27;;30403:71;30471:1;30460:9;30456:17;30447:6;30403:71;:::i;:::-;30484:80;30560:2;30549:9;30545:18;30536:6;30484:80;:::i;:::-;30611:9;30605:4;30601:20;30596:2;30585:9;30581:18;30574:48;30639:108;30742:4;30733:6;30639:108;:::i;:::-;30631:116;;30757:72;30825:2;30814:9;30810:18;30801:6;30757:72;:::i;:::-;30839:73;30907:3;30896:9;30892:19;30883:6;30839:73;:::i;:::-;30088:831;;;;;;;;:::o;30925:180::-;30973:77;30970:1;30963:88;31070:4;31067:1;31060:15;31094:4;31091:1;31084:15;31111:185;31151:1;31168:20;31186:1;31168:20;:::i;:::-;31163:25;;31202:20;31220:1;31202:20;:::i;:::-;31197:25;;31241:1;31231:35;;31246:18;;:::i;:::-;31231:35;31288:1;31285;31281:9;31276:14;;31111:185;;;;:::o;31302:177::-;31442:29;31438:1;31430:6;31426:14;31419:53;31302:177;:::o;31485:366::-;31627:3;31648:67;31712:2;31707:3;31648:67;:::i;:::-;31641:74;;31724:93;31813:3;31724:93;:::i;:::-;31842:2;31837:3;31833:12;31826:19;;31485:366;;;:::o;31857:419::-;32023:4;32061:2;32050:9;32046:18;32038:26;;32110:9;32104:4;32100:20;32096:1;32085:9;32081:17;32074:47;32138:131;32264:4;32138:131;:::i;:::-;32130:139;;31857:419;;;:::o;32282:220::-;32422:34;32418:1;32410:6;32406:14;32399:58;32491:3;32486:2;32478:6;32474:15;32467:28;32282:220;:::o;32508:366::-;32650:3;32671:67;32735:2;32730:3;32671:67;:::i;:::-;32664:74;;32747:93;32836:3;32747:93;:::i;:::-;32865:2;32860:3;32856:12;32849:19;;32508:366;;;:::o;32880:419::-;33046:4;33084:2;33073:9;33069:18;33061:26;;33133:9;33127:4;33123:20;33119:1;33108:9;33104:17;33097:47;33161:131;33287:4;33161:131;:::i;:::-;33153:139;;32880:419;;;:::o

Swarm Source

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