ETH Price: $3,320.30 (+0.38%)
Gas: 13 Gwei

Token

Joe Rohan (ROHAN)
 

Overview

Max Total Supply

1,000,000,000,000 ROHAN

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,014,163,174.69252112 ROHAN

Value
$0.00
0x5c1Ba414316fAD5326a682e7B3Fa1a0FDb3d0A8b
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:
ROHAN

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-11-07
*/

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

pragma solidity ^0.8.20;

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

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

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

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

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

}

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

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

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

    string private constant _name = "Joe Rohan";
    string private constant _symbol = "ROHAN";
    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;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 0;
    uint256 private _maxWalletSize = 1e10 * 10**9;
    uint256 private _buyFee = 10;
    uint256 private _sellFee = 25;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _developmentWallet;
    address payable private _marketingWallet;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _swapAll = true;
    bool private _noFees = false;
    bool private inSwap = false;
    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool dev, bool marketing);

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

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

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

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

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

            if(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.");
                _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(_noFees || _isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        } else if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

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

6080604052683635c9adc5dea000005f196200001c9190620006b3565b5f196200002a919062000717565b600255670de0b6b3a76400006004555f600a555f600b55678ac7230489e80000600c55600a600d556019600e55600a54600f55600b546010555f6014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f601460176101000a81548160ff021916908315150217905550348015620000d7575f80fd5b505f620000e96200064f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507346d093a68910ccae88a2d2fce48d5e7c41bc06b460115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d2d73f1e8878b227149104093ba0fcf43dec3e9b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460055f620002436200064f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f620002956200065660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f6200043a6200065660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005da6200064f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162000641919062000762565b60405180910390a36200077d565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006bf826200067d565b9150620006cc836200067d565b925082620006df57620006de62000686565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000723826200067d565b915062000730836200067d565b92508282039050818111156200074b576200074a620006ea565b5b92915050565b6200075c816200067d565b82525050565b5f602082019050620007775f83018462000751565b92915050565b61426a806200078b5f395ff3fe6080604052600436106101c5575f3560e01c8063715018a6116100f6578063c4081a4c11610094578063db92dbb611610063578063db92dbb6146105e0578063dd62ed3e1461060a578063de30aad114610646578063e1ab04c91461066e576101cc565b8063c4081a4c14610552578063c9567bf91461057a578063caa8934514610590578063db8aeab1146105b8576101cc565b806395d89b41116100d057806395d89b41146104ae5780639a7a23d6146104d8578063a9059cbb14610500578063c3c8cd801461053c576101cc565b8063715018a61461044657806372ac24861461045c5780638da5cb5b14610484576101cc565b8063313ce567116101635780635d0044ca1161013d5780635d0044ca146103a45780635d098b38146103cc5780636fc3eaec146103f457806370a082311461040a576101cc565b8063313ce5671461031657806352f7c988146103405780635342acb414610368576101cc565b806318160ddd1161019f57806318160ddd1461025e57806323b872dd1461028857806327f3a72a146102c457806328875c16146102ee576101cc565b806306fdde03146101d0578063095ea7b3146101fa57806312dfbd3314610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106aa565b6040516101f191906131d1565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190613286565b6106e7565b60405161022d91906132de565b60405180910390f35b348015610241575f80fd5b5061025c600480360381019061025791906132f7565b610704565b005b348015610269575f80fd5b506102726107b1565b60405161027f9190613331565b60405180910390f35b348015610293575f80fd5b506102ae60048036038101906102a9919061334a565b6107c1565b6040516102bb91906132de565b60405180910390f35b3480156102cf575f80fd5b506102d8610895565b6040516102e59190613331565b60405180910390f35b3480156102f9575f80fd5b50610314600480360381019061030f9190613425565b6108a4565b005b348015610321575f80fd5b5061032a6109d9565b604051610337919061349d565b60405180910390f35b34801561034b575f80fd5b50610366600480360381019061036191906134b6565b6109e1565b005b348015610373575f80fd5b5061038e600480360381019061038991906134f4565b610a87565b60405161039b91906132de565b60405180910390f35b3480156103af575f80fd5b506103ca60048036038101906103c591906132f7565b610ad9565b005b3480156103d7575f80fd5b506103f260048036038101906103ed919061355a565b610b86565b005b3480156103ff575f80fd5b50610408610d27565b005b348015610415575f80fd5b50610430600480360381019061042b91906134f4565b610dcb565b60405161043d9190613331565b60405180910390f35b348015610451575f80fd5b5061045a610e19565b005b348015610467575f80fd5b50610482600480360381019061047d919061355a565b610f67565b005b34801561048f575f80fd5b50610498611108565b6040516104a59190613594565b60405180910390f35b3480156104b9575f80fd5b506104c261112f565b6040516104cf91906131d1565b60405180910390f35b3480156104e3575f80fd5b506104fe60048036038101906104f991906135ad565b61116c565b005b34801561050b575f80fd5b5061052660048036038101906105219190613286565b61129d565b60405161053391906132de565b60405180910390f35b348015610547575f80fd5b506105506112ba565b005b34801561055d575f80fd5b50610578600480360381019061057391906132f7565b611366565b005b348015610585575f80fd5b5061058e611404565b005b34801561059b575f80fd5b506105b660048036038101906105b191906135eb565b61192e565b005b3480156105c3575f80fd5b506105de60048036038101906105d99190613425565b6119df565b005b3480156105eb575f80fd5b506105f4611b14565b6040516106019190613331565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190613616565b611b44565b60405161063d9190613331565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906135eb565b611bc6565b005b348015610679575f80fd5b50610694600480360381019061068f91906134f4565b611c77565b6040516106a191906132de565b60405180910390f35b60606040518060400160405280600981526020017f4a6f6520526f68616e0000000000000000000000000000000000000000000000815250905090565b5f6106fa6106f3611cc9565b8484611cd0565b6001905092915050565b61070c611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f9061369e565b60405180910390fd5b633b9aca00816107a891906136e9565b60048190555050565b5f683635c9adc5dea00000905090565b5f6107cd848484611e93565b61088a846107d9611cc9565b6108858560405180606001604052806028815260200161420d6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61083c611cc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252d9092919063ffffffff16565b611cd0565b600190509392505050565b5f61089f30610dcb565b905090565b6108ac611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f9061369e565b60405180910390fd5b5f5b838390508110156109d3578160085f86868581811061095c5761095b61372a565b5b905060200201602081019061097191906134f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806109cb90613757565b91505061093a565b50505050565b5f6009905090565b6109e9611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9061369e565b60405180910390fd5b81600d8190555080600e819055505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610ae1611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b649061369e565b60405180910390fd5b633b9aca0081610b7d91906136e9565b600c8190555050565b610b8e611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c119061369e565b60405180910390fd5b5f60085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610d2f611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db29061369e565b60405180910390fd5b5f479050610dc88161258f565b50565b5f610e1260055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612705565b9050919050565b610e21611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea49061369e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f6f611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff29061369e565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f524f48414e000000000000000000000000000000000000000000000000000000815250905090565b611174611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f79061369e565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112869061380e565b60405180910390fd5b6112998282612771565b5050565b5f6112b06112a9611cc9565b8484611e93565b6001905092915050565b6112c2611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113459061369e565b60405180910390fd5b5f61135830610dcb565b9050611363816127c9565b50565b61136e611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f19061369e565b60405180910390fd5b80600a8190555050565b61140c611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f9061369e565b60405180910390fd5b60148054906101000a900460ff16156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90613876565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115733060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611cd0565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e091906138a8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611645573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166991906138a8565b6040518363ffffffff1660e01b81526004016116869291906138d3565b6020604051808303815f875af11580156116a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c691906138a8565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061174d30610dcb565b5f80611757611108565b426040518863ffffffff1660e01b81526004016117799695949392919061393c565b60606040518083038185885af1158015611795573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117ba91906139af565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161185a9291906139ff565b6020604051808303815f875af1158015611876573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189a9190613a3a565b5060016014806101000a81548160ff021916908315150217905550600160155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611936611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b99061369e565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6119e7611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9061369e565b60405180910390fd5b5f5b83839050811015611b0e578160095f868685818110611a9757611a9661372a565b5b9050602002016020810190611aac91906134f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611b0690613757565b915050611a75565b50505050565b5f611b3f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dcb565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bce611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c519061369e565b60405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613ad5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da390613b63565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e869190613331565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890613bf1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6690613c7f565b60405180910390fd5b5f8111611fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa890613d0d565b60405180910390fd5b611fb9611108565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120275750611ff7611108565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123af5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120d0575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120de57505f600c5414155b1561213c57600c54816120f084610dcb565b6120fa9190613d2b565b111561213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290613dce565b60405180910390fd5b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121e5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612238575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122945760148054906101000a900460ff1661228a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228190613e36565b60405180910390fd5b600d54600b819055505b5f61229e30610dcb565b9050601460179054906101000a900460ff1615801561230a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612320575060148054906101000a900460ff165b156123ad57600e54600b8190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123ac576004548111156123ab57601460159054906101000a900460ff166123a15760045490505b6123aa81612a34565b5b5b5b505b5f60019050601460169054906101000a900460ff1680612415575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612466575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612473575f905061251b565b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612511575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561251a575f90505b5b61252784848484612a57565b50505050565b5f838311158290612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b91906131d1565b60405180910390fd5b505f83856125829190613e54565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125dc600284612a8490919063ffffffff16565b6040516125e890613eb4565b5f6040518083038185875af1925050503d805f8114612622576040519150601f19603f3d011682016040523d82523d5f602084013e612627565b606091505b505090505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612678600285612a8490919063ffffffff16565b60405161268490613eb4565b5f6040518083038185875af1925050503d805f81146126be576040519150601f19603f3d011682016040523d82523d5f602084013e6126c3565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b982826040516126f8929190613ec8565b60405180910390a1505050565b5f60025482111561274b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274290613f5f565b60405180910390fd5b5f612754612acd565b90506127698184612a8490919063ffffffff16565b915050919050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601460176101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612800576127ff613f7d565b5b60405190808252806020026020018201604052801561282e5781602001602082028036833780820191505090505b50905030815f815181106128455761284461372a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290d91906138a8565b816001815181106129215761292061372a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129873060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cd0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129e9959493929190614061565b5f604051808303815f87803b158015612a00575f80fd5b505af1158015612a12573d5f803e3d5ffd5b50505050505f601460176101000a81548160ff02191690831515021790555050565b612a3d816127c9565b5f4790505f811115612a5357612a524761258f565b5b5050565b80612a6557612a64612af6565b5b612a70848484612b2f565b80612a7e57612a7d612cef565b5b50505050565b5f612ac583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d03565b905092915050565b5f805f612ad8612d64565b91509150612aef8183612a8490919063ffffffff16565b9250505090565b5f600a54148015612b0857505f600b54145b612b2d57600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f80612b3e87612dc3565b955095509550955095509550612b9a8660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2390919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c2b8560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6c90919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c7581612ec9565b612c7f8483612f80565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612cdc9190613331565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f8083118290612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4091906131d1565b60405180910390fd5b505f8385612d5791906140e6565b9050809150509392505050565b5f805f60025490505f683635c9adc5dea000009050612d97683635c9adc5dea00000600254612a8490919063ffffffff16565b821015612db657600254683635c9adc5dea00000935093505050612dbf565b81819350935050505b9091565b5f805f805f805f805f612ddb8a600a54600b54612fba565b9250925092505f612dea612acd565b90505f805f612dfb8e87878761304c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612e6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061252d565b905092915050565b5f808284612e7a9190613d2b565b905083811015612ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb690614160565b60405180910390fd5b8091505092915050565b5f612ed2612acd565b90505f612ee882846130d090919063ffffffff16565b9050612f3a8160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6c90919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612f9582600254612e2390919063ffffffff16565b600281905550612fb081600354612e6c90919063ffffffff16565b6003819055505050565b5f805f80612fe46064612fd6888a6130d090919063ffffffff16565b612a8490919063ffffffff16565b90505f61300d6064612fff888b6130d090919063ffffffff16565b612a8490919063ffffffff16565b90505f61303582613027858c612e2390919063ffffffff16565b612e2390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061306385896130d090919063ffffffff16565b90505f61307986896130d090919063ffffffff16565b90505f61308f87896130d090919063ffffffff16565b90505f6130b7826130a98587612e2390919063ffffffff16565b612e2390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036130e0575f9050613141565b5f82846130ed91906136e9565b90508284826130fc91906140e6565b1461313c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613133906141ee565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561317e578082015181840152602081019050613163565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6131a382613147565b6131ad8185613151565b93506131bd818560208601613161565b6131c681613189565b840191505092915050565b5f6020820190508181035f8301526131e98184613199565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613222826131f9565b9050919050565b61323281613218565b811461323c575f80fd5b50565b5f8135905061324d81613229565b92915050565b5f819050919050565b61326581613253565b811461326f575f80fd5b50565b5f813590506132808161325c565b92915050565b5f806040838503121561329c5761329b6131f1565b5b5f6132a98582860161323f565b92505060206132ba85828601613272565b9150509250929050565b5f8115159050919050565b6132d8816132c4565b82525050565b5f6020820190506132f15f8301846132cf565b92915050565b5f6020828403121561330c5761330b6131f1565b5b5f61331984828501613272565b91505092915050565b61332b81613253565b82525050565b5f6020820190506133445f830184613322565b92915050565b5f805f60608486031215613361576133606131f1565b5b5f61336e8682870161323f565b935050602061337f8682870161323f565b925050604061339086828701613272565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126133bb576133ba61339a565b5b8235905067ffffffffffffffff8111156133d8576133d761339e565b5b6020830191508360208202830111156133f4576133f36133a2565b5b9250929050565b613404816132c4565b811461340e575f80fd5b50565b5f8135905061341f816133fb565b92915050565b5f805f6040848603121561343c5761343b6131f1565b5b5f84013567ffffffffffffffff811115613459576134586131f5565b5b613465868287016133a6565b9350935050602061347886828701613411565b9150509250925092565b5f60ff82169050919050565b61349781613482565b82525050565b5f6020820190506134b05f83018461348e565b92915050565b5f80604083850312156134cc576134cb6131f1565b5b5f6134d985828601613272565b92505060206134ea85828601613272565b9150509250929050565b5f60208284031215613509576135086131f1565b5b5f6135168482850161323f565b91505092915050565b5f613529826131f9565b9050919050565b6135398161351f565b8114613543575f80fd5b50565b5f8135905061355481613530565b92915050565b5f6020828403121561356f5761356e6131f1565b5b5f61357c84828501613546565b91505092915050565b61358e81613218565b82525050565b5f6020820190506135a75f830184613585565b92915050565b5f80604083850312156135c3576135c26131f1565b5b5f6135d08582860161323f565b92505060206135e185828601613411565b9150509250929050565b5f60208284031215613600576135ff6131f1565b5b5f61360d84828501613411565b91505092915050565b5f806040838503121561362c5761362b6131f1565b5b5f6136398582860161323f565b925050602061364a8582860161323f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613688602083613151565b915061369382613654565b602082019050919050565b5f6020820190508181035f8301526136b58161367c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136f382613253565b91506136fe83613253565b925082820261370c81613253565b91508282048414831517613723576137226136bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61376182613253565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613793576137926136bc565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6137f8603983613151565b91506138038261379e565b604082019050919050565b5f6020820190508181035f830152613825816137ec565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613860601783613151565b915061386b8261382c565b602082019050919050565b5f6020820190508181035f83015261388d81613854565b9050919050565b5f815190506138a281613229565b92915050565b5f602082840312156138bd576138bc6131f1565b5b5f6138ca84828501613894565b91505092915050565b5f6040820190506138e65f830185613585565b6138f36020830184613585565b9392505050565b5f819050919050565b5f819050919050565b5f61392661392161391c846138fa565b613903565b613253565b9050919050565b6139368161390c565b82525050565b5f60c08201905061394f5f830189613585565b61395c6020830188613322565b613969604083018761392d565b613976606083018661392d565b6139836080830185613585565b61399060a0830184613322565b979650505050505050565b5f815190506139a98161325c565b92915050565b5f805f606084860312156139c6576139c56131f1565b5b5f6139d38682870161399b565b93505060206139e48682870161399b565b92505060406139f58682870161399b565b9150509250925092565b5f604082019050613a125f830185613585565b613a1f6020830184613322565b9392505050565b5f81519050613a34816133fb565b92915050565b5f60208284031215613a4f57613a4e6131f1565b5b5f613a5c84828501613a26565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613abf602483613151565b9150613aca82613a65565b604082019050919050565b5f6020820190508181035f830152613aec81613ab3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b4d602283613151565b9150613b5882613af3565b604082019050919050565b5f6020820190508181035f830152613b7a81613b41565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613bdb602583613151565b9150613be682613b81565b604082019050919050565b5f6020820190508181035f830152613c0881613bcf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c69602383613151565b9150613c7482613c0f565b604082019050919050565b5f6020820190508181035f830152613c9681613c5d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613cf7602983613151565b9150613d0282613c9d565b604082019050919050565b5f6020820190508181035f830152613d2481613ceb565b9050919050565b5f613d3582613253565b9150613d4083613253565b9250828201905080821115613d5857613d576136bc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613db8602383613151565b9150613dc382613d5e565b604082019050919050565b5f6020820190508181035f830152613de581613dac565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613e20601883613151565b9150613e2b82613dec565b602082019050919050565b5f6020820190508181035f830152613e4d81613e14565b9050919050565b5f613e5e82613253565b9150613e6983613253565b9250828203905081811115613e8157613e806136bc565b5b92915050565b5f81905092915050565b50565b5f613e9f5f83613e87565b9150613eaa82613e91565b5f82019050919050565b5f613ebe82613e94565b9150819050919050565b5f604082019050613edb5f8301856132cf565b613ee860208301846132cf565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f49602a83613151565b9150613f5482613eef565b604082019050919050565b5f6020820190508181035f830152613f7681613f3d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fdc81613218565b82525050565b5f613fed8383613fd3565b60208301905092915050565b5f602082019050919050565b5f61400f82613faa565b6140198185613fb4565b935061402483613fc4565b805f5b8381101561405457815161403b8882613fe2565b975061404683613ff9565b925050600181019050614027565b5085935050505092915050565b5f60a0820190506140745f830188613322565b614081602083018761392d565b81810360408301526140938186614005565b90506140a26060830185613585565b6140af6080830184613322565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140f082613253565b91506140fb83613253565b92508261410b5761410a6140b9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61414a601b83613151565b915061415582614116565b602082019050919050565b5f6020820190508181035f8301526141778161413e565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141d8602183613151565b91506141e38261417e565b604082019050919050565b5f6020820190508181035f830152614205816141cc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220019d32d4ac280736a2cc559986925dd20c9b489682a12f5f9828285265a2e6d464736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c8063715018a6116100f6578063c4081a4c11610094578063db92dbb611610063578063db92dbb6146105e0578063dd62ed3e1461060a578063de30aad114610646578063e1ab04c91461066e576101cc565b8063c4081a4c14610552578063c9567bf91461057a578063caa8934514610590578063db8aeab1146105b8576101cc565b806395d89b41116100d057806395d89b41146104ae5780639a7a23d6146104d8578063a9059cbb14610500578063c3c8cd801461053c576101cc565b8063715018a61461044657806372ac24861461045c5780638da5cb5b14610484576101cc565b8063313ce567116101635780635d0044ca1161013d5780635d0044ca146103a45780635d098b38146103cc5780636fc3eaec146103f457806370a082311461040a576101cc565b8063313ce5671461031657806352f7c988146103405780635342acb414610368576101cc565b806318160ddd1161019f57806318160ddd1461025e57806323b872dd1461028857806327f3a72a146102c457806328875c16146102ee576101cc565b806306fdde03146101d0578063095ea7b3146101fa57806312dfbd3314610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106aa565b6040516101f191906131d1565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190613286565b6106e7565b60405161022d91906132de565b60405180910390f35b348015610241575f80fd5b5061025c600480360381019061025791906132f7565b610704565b005b348015610269575f80fd5b506102726107b1565b60405161027f9190613331565b60405180910390f35b348015610293575f80fd5b506102ae60048036038101906102a9919061334a565b6107c1565b6040516102bb91906132de565b60405180910390f35b3480156102cf575f80fd5b506102d8610895565b6040516102e59190613331565b60405180910390f35b3480156102f9575f80fd5b50610314600480360381019061030f9190613425565b6108a4565b005b348015610321575f80fd5b5061032a6109d9565b604051610337919061349d565b60405180910390f35b34801561034b575f80fd5b50610366600480360381019061036191906134b6565b6109e1565b005b348015610373575f80fd5b5061038e600480360381019061038991906134f4565b610a87565b60405161039b91906132de565b60405180910390f35b3480156103af575f80fd5b506103ca60048036038101906103c591906132f7565b610ad9565b005b3480156103d7575f80fd5b506103f260048036038101906103ed919061355a565b610b86565b005b3480156103ff575f80fd5b50610408610d27565b005b348015610415575f80fd5b50610430600480360381019061042b91906134f4565b610dcb565b60405161043d9190613331565b60405180910390f35b348015610451575f80fd5b5061045a610e19565b005b348015610467575f80fd5b50610482600480360381019061047d919061355a565b610f67565b005b34801561048f575f80fd5b50610498611108565b6040516104a59190613594565b60405180910390f35b3480156104b9575f80fd5b506104c261112f565b6040516104cf91906131d1565b60405180910390f35b3480156104e3575f80fd5b506104fe60048036038101906104f991906135ad565b61116c565b005b34801561050b575f80fd5b5061052660048036038101906105219190613286565b61129d565b60405161053391906132de565b60405180910390f35b348015610547575f80fd5b506105506112ba565b005b34801561055d575f80fd5b50610578600480360381019061057391906132f7565b611366565b005b348015610585575f80fd5b5061058e611404565b005b34801561059b575f80fd5b506105b660048036038101906105b191906135eb565b61192e565b005b3480156105c3575f80fd5b506105de60048036038101906105d99190613425565b6119df565b005b3480156105eb575f80fd5b506105f4611b14565b6040516106019190613331565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190613616565b611b44565b60405161063d9190613331565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906135eb565b611bc6565b005b348015610679575f80fd5b50610694600480360381019061068f91906134f4565b611c77565b6040516106a191906132de565b60405180910390f35b60606040518060400160405280600981526020017f4a6f6520526f68616e0000000000000000000000000000000000000000000000815250905090565b5f6106fa6106f3611cc9565b8484611cd0565b6001905092915050565b61070c611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f9061369e565b60405180910390fd5b633b9aca00816107a891906136e9565b60048190555050565b5f683635c9adc5dea00000905090565b5f6107cd848484611e93565b61088a846107d9611cc9565b6108858560405180606001604052806028815260200161420d6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61083c611cc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252d9092919063ffffffff16565b611cd0565b600190509392505050565b5f61089f30610dcb565b905090565b6108ac611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f9061369e565b60405180910390fd5b5f5b838390508110156109d3578160085f86868581811061095c5761095b61372a565b5b905060200201602081019061097191906134f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806109cb90613757565b91505061093a565b50505050565b5f6009905090565b6109e9611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9061369e565b60405180910390fd5b81600d8190555080600e819055505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610ae1611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b649061369e565b60405180910390fd5b633b9aca0081610b7d91906136e9565b600c8190555050565b610b8e611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c119061369e565b60405180910390fd5b5f60085f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610d2f611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db29061369e565b60405180910390fd5b5f479050610dc88161258f565b50565b5f610e1260055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612705565b9050919050565b610e21611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea49061369e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f6f611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff29061369e565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f524f48414e000000000000000000000000000000000000000000000000000000815250905090565b611174611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f79061369e565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112869061380e565b60405180910390fd5b6112998282612771565b5050565b5f6112b06112a9611cc9565b8484611e93565b6001905092915050565b6112c2611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113459061369e565b60405180910390fd5b5f61135830610dcb565b9050611363816127c9565b50565b61136e611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f19061369e565b60405180910390fd5b80600a8190555050565b61140c611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f9061369e565b60405180910390fd5b60148054906101000a900460ff16156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd90613876565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115733060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611cd0565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e091906138a8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611645573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166991906138a8565b6040518363ffffffff1660e01b81526004016116869291906138d3565b6020604051808303815f875af11580156116a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c691906138a8565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061174d30610dcb565b5f80611757611108565b426040518863ffffffff1660e01b81526004016117799695949392919061393c565b60606040518083038185885af1158015611795573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117ba91906139af565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161185a9291906139ff565b6020604051808303815f875af1158015611876573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189a9190613a3a565b5060016014806101000a81548160ff021916908315150217905550600160155f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611936611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b99061369e565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6119e7611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a9061369e565b60405180910390fd5b5f5b83839050811015611b0e578160095f868685818110611a9757611a9661372a565b5b9050602002016020810190611aac91906134f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611b0690613757565b915050611a75565b50505050565b5f611b3f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dcb565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bce611cc9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c519061369e565b60405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613ad5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da390613b63565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e869190613331565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890613bf1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6690613c7f565b60405180910390fd5b5f8111611fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa890613d0d565b60405180910390fd5b611fb9611108565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120275750611ff7611108565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123af5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120d0575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120de57505f600c5414155b1561213c57600c54816120f084610dcb565b6120fa9190613d2b565b111561213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290613dce565b60405180910390fd5b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121e5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612238575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122945760148054906101000a900460ff1661228a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228190613e36565b60405180910390fd5b600d54600b819055505b5f61229e30610dcb565b9050601460179054906101000a900460ff1615801561230a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612320575060148054906101000a900460ff165b156123ad57600e54600b8190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123ac576004548111156123ab57601460159054906101000a900460ff166123a15760045490505b6123aa81612a34565b5b5b5b505b5f60019050601460169054906101000a900460ff1680612415575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612466575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612473575f905061251b565b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612511575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561251a575f90505b5b61252784848484612a57565b50505050565b5f838311158290612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b91906131d1565b60405180910390fd5b505f83856125829190613e54565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125dc600284612a8490919063ffffffff16565b6040516125e890613eb4565b5f6040518083038185875af1925050503d805f8114612622576040519150601f19603f3d011682016040523d82523d5f602084013e612627565b606091505b505090505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612678600285612a8490919063ffffffff16565b60405161268490613eb4565b5f6040518083038185875af1925050503d805f81146126be576040519150601f19603f3d011682016040523d82523d5f602084013e6126c3565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b982826040516126f8929190613ec8565b60405180910390a1505050565b5f60025482111561274b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274290613f5f565b60405180910390fd5b5f612754612acd565b90506127698184612a8490919063ffffffff16565b915050919050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6001601460176101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612800576127ff613f7d565b5b60405190808252806020026020018201604052801561282e5781602001602082028036833780820191505090505b50905030815f815181106128455761284461372a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290d91906138a8565b816001815181106129215761292061372a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129873060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cd0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129e9959493929190614061565b5f604051808303815f87803b158015612a00575f80fd5b505af1158015612a12573d5f803e3d5ffd5b50505050505f601460176101000a81548160ff02191690831515021790555050565b612a3d816127c9565b5f4790505f811115612a5357612a524761258f565b5b5050565b80612a6557612a64612af6565b5b612a70848484612b2f565b80612a7e57612a7d612cef565b5b50505050565b5f612ac583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d03565b905092915050565b5f805f612ad8612d64565b91509150612aef8183612a8490919063ffffffff16565b9250505090565b5f600a54148015612b0857505f600b54145b612b2d57600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f80612b3e87612dc3565b955095509550955095509550612b9a8660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e2390919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c2b8560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6c90919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c7581612ec9565b612c7f8483612f80565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612cdc9190613331565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f8083118290612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4091906131d1565b60405180910390fd5b505f8385612d5791906140e6565b9050809150509392505050565b5f805f60025490505f683635c9adc5dea000009050612d97683635c9adc5dea00000600254612a8490919063ffffffff16565b821015612db657600254683635c9adc5dea00000935093505050612dbf565b81819350935050505b9091565b5f805f805f805f805f612ddb8a600a54600b54612fba565b9250925092505f612dea612acd565b90505f805f612dfb8e87878761304c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612e6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061252d565b905092915050565b5f808284612e7a9190613d2b565b905083811015612ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb690614160565b60405180910390fd5b8091505092915050565b5f612ed2612acd565b90505f612ee882846130d090919063ffffffff16565b9050612f3a8160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6c90919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612f9582600254612e2390919063ffffffff16565b600281905550612fb081600354612e6c90919063ffffffff16565b6003819055505050565b5f805f80612fe46064612fd6888a6130d090919063ffffffff16565b612a8490919063ffffffff16565b90505f61300d6064612fff888b6130d090919063ffffffff16565b612a8490919063ffffffff16565b90505f61303582613027858c612e2390919063ffffffff16565b612e2390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061306385896130d090919063ffffffff16565b90505f61307986896130d090919063ffffffff16565b90505f61308f87896130d090919063ffffffff16565b90505f6130b7826130a98587612e2390919063ffffffff16565b612e2390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036130e0575f9050613141565b5f82846130ed91906136e9565b90508284826130fc91906140e6565b1461313c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613133906141ee565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561317e578082015181840152602081019050613163565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6131a382613147565b6131ad8185613151565b93506131bd818560208601613161565b6131c681613189565b840191505092915050565b5f6020820190508181035f8301526131e98184613199565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613222826131f9565b9050919050565b61323281613218565b811461323c575f80fd5b50565b5f8135905061324d81613229565b92915050565b5f819050919050565b61326581613253565b811461326f575f80fd5b50565b5f813590506132808161325c565b92915050565b5f806040838503121561329c5761329b6131f1565b5b5f6132a98582860161323f565b92505060206132ba85828601613272565b9150509250929050565b5f8115159050919050565b6132d8816132c4565b82525050565b5f6020820190506132f15f8301846132cf565b92915050565b5f6020828403121561330c5761330b6131f1565b5b5f61331984828501613272565b91505092915050565b61332b81613253565b82525050565b5f6020820190506133445f830184613322565b92915050565b5f805f60608486031215613361576133606131f1565b5b5f61336e8682870161323f565b935050602061337f8682870161323f565b925050604061339086828701613272565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126133bb576133ba61339a565b5b8235905067ffffffffffffffff8111156133d8576133d761339e565b5b6020830191508360208202830111156133f4576133f36133a2565b5b9250929050565b613404816132c4565b811461340e575f80fd5b50565b5f8135905061341f816133fb565b92915050565b5f805f6040848603121561343c5761343b6131f1565b5b5f84013567ffffffffffffffff811115613459576134586131f5565b5b613465868287016133a6565b9350935050602061347886828701613411565b9150509250925092565b5f60ff82169050919050565b61349781613482565b82525050565b5f6020820190506134b05f83018461348e565b92915050565b5f80604083850312156134cc576134cb6131f1565b5b5f6134d985828601613272565b92505060206134ea85828601613272565b9150509250929050565b5f60208284031215613509576135086131f1565b5b5f6135168482850161323f565b91505092915050565b5f613529826131f9565b9050919050565b6135398161351f565b8114613543575f80fd5b50565b5f8135905061355481613530565b92915050565b5f6020828403121561356f5761356e6131f1565b5b5f61357c84828501613546565b91505092915050565b61358e81613218565b82525050565b5f6020820190506135a75f830184613585565b92915050565b5f80604083850312156135c3576135c26131f1565b5b5f6135d08582860161323f565b92505060206135e185828601613411565b9150509250929050565b5f60208284031215613600576135ff6131f1565b5b5f61360d84828501613411565b91505092915050565b5f806040838503121561362c5761362b6131f1565b5b5f6136398582860161323f565b925050602061364a8582860161323f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613688602083613151565b915061369382613654565b602082019050919050565b5f6020820190508181035f8301526136b58161367c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136f382613253565b91506136fe83613253565b925082820261370c81613253565b91508282048414831517613723576137226136bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61376182613253565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613793576137926136bc565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6137f8603983613151565b91506138038261379e565b604082019050919050565b5f6020820190508181035f830152613825816137ec565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613860601783613151565b915061386b8261382c565b602082019050919050565b5f6020820190508181035f83015261388d81613854565b9050919050565b5f815190506138a281613229565b92915050565b5f602082840312156138bd576138bc6131f1565b5b5f6138ca84828501613894565b91505092915050565b5f6040820190506138e65f830185613585565b6138f36020830184613585565b9392505050565b5f819050919050565b5f819050919050565b5f61392661392161391c846138fa565b613903565b613253565b9050919050565b6139368161390c565b82525050565b5f60c08201905061394f5f830189613585565b61395c6020830188613322565b613969604083018761392d565b613976606083018661392d565b6139836080830185613585565b61399060a0830184613322565b979650505050505050565b5f815190506139a98161325c565b92915050565b5f805f606084860312156139c6576139c56131f1565b5b5f6139d38682870161399b565b93505060206139e48682870161399b565b92505060406139f58682870161399b565b9150509250925092565b5f604082019050613a125f830185613585565b613a1f6020830184613322565b9392505050565b5f81519050613a34816133fb565b92915050565b5f60208284031215613a4f57613a4e6131f1565b5b5f613a5c84828501613a26565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613abf602483613151565b9150613aca82613a65565b604082019050919050565b5f6020820190508181035f830152613aec81613ab3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b4d602283613151565b9150613b5882613af3565b604082019050919050565b5f6020820190508181035f830152613b7a81613b41565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613bdb602583613151565b9150613be682613b81565b604082019050919050565b5f6020820190508181035f830152613c0881613bcf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c69602383613151565b9150613c7482613c0f565b604082019050919050565b5f6020820190508181035f830152613c9681613c5d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613cf7602983613151565b9150613d0282613c9d565b604082019050919050565b5f6020820190508181035f830152613d2481613ceb565b9050919050565b5f613d3582613253565b9150613d4083613253565b9250828201905080821115613d5857613d576136bc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613db8602383613151565b9150613dc382613d5e565b604082019050919050565b5f6020820190508181035f830152613de581613dac565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f613e20601883613151565b9150613e2b82613dec565b602082019050919050565b5f6020820190508181035f830152613e4d81613e14565b9050919050565b5f613e5e82613253565b9150613e6983613253565b9250828203905081811115613e8157613e806136bc565b5b92915050565b5f81905092915050565b50565b5f613e9f5f83613e87565b9150613eaa82613e91565b5f82019050919050565b5f613ebe82613e94565b9150819050919050565b5f604082019050613edb5f8301856132cf565b613ee860208301846132cf565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f49602a83613151565b9150613f5482613eef565b604082019050919050565b5f6020820190508181035f830152613f7681613f3d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fdc81613218565b82525050565b5f613fed8383613fd3565b60208301905092915050565b5f602082019050919050565b5f61400f82613faa565b6140198185613fb4565b935061402483613fc4565b805f5b8381101561405457815161403b8882613fe2565b975061404683613ff9565b925050600181019050614027565b5085935050505092915050565b5f60a0820190506140745f830188613322565b614081602083018761392d565b81810360408301526140938186614005565b90506140a26060830185613585565b6140af6080830184613322565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140f082613253565b91506140fb83613253565b92508261410b5761410a6140b9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61414a601b83613151565b915061415582614116565b602082019050919050565b5f6020820190508181035f8301526141778161413e565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141d8602183613151565b91506141e38261417e565b604082019050919050565b5f6020820190508181035f830152614205816141cc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220019d32d4ac280736a2cc559986925dd20c9b489682a12f5f9828285265a2e6d464736f6c63430008140033

Deployed Bytecode Sourcemap

9001:14301:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11357:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21403:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19735:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22861:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22092:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20499:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18840:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22770:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19512:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19042:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19877:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18608:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20338:153;;;;;;;;;;;;;:::i;:::-;;21106:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8082:148;;;;;;;;;;;;;:::i;:::-;;18358:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7868:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22675:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20716:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21917:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20172:154;;;;;;;;;;;;;:::i;:::-;;19640:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17583:767;;;;;;;;;;;;;:::i;:::-;;20080:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19164:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20607:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21252:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19986:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19382:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11357:83;11394:13;11427:5;;;;;;;;;;;;;;;;;11420:12;;11357:83;:::o;21403:161::-;21478:4;21495:39;21504:12;:10;:12::i;:::-;21518:7;21527:6;21495:8;:39::i;:::-;21552:4;21545:11;;21403:161;;;;:::o;19735:134::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19856:5:::1;19845:8;:16;;;;:::i;:::-;19819:23;:42;;;;19735:134:::0;:::o;22861:95::-;22914:7;9311:12;22934:14;;22861:95;:::o;22092:313::-;22190:4;22207:36;22217:6;22225:9;22236:6;22207:9;:36::i;:::-;22254:121;22263:6;22271:12;:10;:12::i;:::-;22285:89;22323:6;22285:89;;;;;;;;;;;;;;;;;:11;:19;22297:6;22285:19;;;;;;;;;;;;;;;:33;22305:12;:10;:12::i;:::-;22285:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22254:8;:121::i;:::-;22393:4;22386:11;;22092:313;;;;;:::o;20499:100::-;20543:4;20567:24;20585:4;20567:9;:24::i;:::-;20560:31;;20499:100;:::o;18840:194::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18933:6:::1;18928:99;18949:3;;:10;;18945:1;:14;18928:99;;;19010:5;18981:18;:26;19000:3;;19004:1;19000:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18981:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18961:3;;;;;:::i;:::-;;;;18928:99;;;;18840:194:::0;;;:::o;22770:83::-;22811:5;9219:1;22829:16;;22770:83;:::o;19512:120::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19595:3:::1;19585:7;:13;;;;19620:4;19609:8;:15;;;;19512:120:::0;;:::o;19042:114::-;19102:4;19126:18;:22;19145:2;19126:22;;;;;;;;;;;;;;;;;;;;;;;;;19119:29;;19042:114;;;:::o;19877:101::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19965:5:::1;19959:3;:11;;;;:::i;:::-;19942:14;:28;;;;19877:101:::0;:::o;18608:224::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18733:5:::1;18694:18;:36;18713:16;;;;;;;;;;;18694:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;18768:9;18749:16;;:28;;;;;;;;;;;;;;;;;;18820:4;18788:18;:29;18807:9;18788:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18608:224:::0;:::o;20338:153::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20390:26:::1;20419:21;20390:50;;20451:32;20464:18;20451:12;:32::i;:::-;20379:112;20338:153::o:0;21106:138::-;21172:7;21199:37;21219:7;:16;21227:7;21219:16;;;;;;;;;;;;;;;;21199:19;:37::i;:::-;21192:44;;21106:138;;;:::o;8082:148::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8189:1:::1;8152:40;;8173:6;::::0;::::1;;;;;;;;8152:40;;;;;;;;;;;;8220:1;8203:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8082:148::o:0;18358:238::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18491:5:::1;18450:18;:38;18469:18;;;;;;;;;;;18450:38;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18528:11;18507:18;;:32;;;;;;;;;;;;;;;;;;18584:4;18550:18;:31;18569:11;18550:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;18358:238:::0;:::o;7868:79::-;7906:7;7933:6;;;;;;;;;;;7926:13;;7868:79;:::o;22675:87::-;22714:13;22747:7;;;;;;;;;;;;;;;;;22740:14;;22675:87;:::o;20716:244::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20825:13:::1;;;;;;;;;;;20817:21;;:4;:21;;::::0;20809:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20911:41;20940:4;20946:5;20911:28;:41::i;:::-;20716:244:::0;;:::o;21917:167::-;21995:4;22012:42;22022:12;:10;:12::i;:::-;22036:9;22047:6;22012:9;:42::i;:::-;22072:4;22065:11;;21917:167;;;;:::o;20172:154::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20224:23:::1;20250:24;20268:4;20250:9;:24::i;:::-;20224:50;;20285:33;20302:15;20285:16;:33::i;:::-;20213:113;20172:154::o:0;19640:83::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19712:3:::1;19702:7;:13;;;;19640:83:::0;:::o;17583:767::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17647:11:::1;::::0;::::1;;;;;;;;17646:12;17638:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17696:35;17753:42;17696:100;;17825:16;17807:15;;:34;;;;;;;;;;;;;;;;;;17852:58;17869:4;17884:15;;;;;;;;;;;9311:12;17852:8;:58::i;:::-;17955:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17937:56;;;18002:4;18009:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17937:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17921:13;;:112;;;;;;;;;;;;;;;;;;18044:15;;;;;;;;;;;:31;;;18083:21;18114:4;18120:24;18138:4;18120:9;:24::i;:::-;18145:1;18147::::0;18149:7:::1;:5;:7::i;:::-;18157:15;18044:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18191:13;;;;;;;;;;;18184:29;;;18222:15;;;;;;;;;;;18240:14;18184:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18280:4;18266:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;18338:4;18295:25;:40;18321:13;;;;;;;;;;;18295:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;17627:723;17583:767::o:0;20080:84::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20151:5:::1;20141:7;;:15;;;;;;;;;;;;;;;;;;20080:84:::0;:::o;19164:206::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19263:6:::1;19258:105;19279:3;;:10;;19275:1;:14;19258:105;;;19346:5;19311:24;:32;19336:3;;19340:1;19336:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19311:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19291:3;;;;;:::i;:::-;;;;19258:105;;;;19164:206:::0;;;:::o;20607:101::-;20652:4;20676:24;20686:13;;;;;;;;;;;20676:9;:24::i;:::-;20669:31;;20607:101;:::o;21252:143::-;21333:7;21360:11;:18;21372:5;21360:18;;;;;;;;;;;;;;;:27;21379:7;21360:27;;;;;;;;;;;;;;;;21353:34;;21252:143;;;;:::o;19986:86::-;8005:12;:10;:12::i;:::-;7995:22;;:6;;;;;;;;;;:22;;;7987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20059:5:::1;20048:8;;:16;;;;;;;;;;;;;;;;;;19986:86:::0;:::o;19382:122::-;19444:4;19468:24;:28;19493:2;19468:28;;;;;;;;;;;;;;;;;;;;;;;;;19461:35;;19382:122;;;:::o;7408:98::-;7461:7;7488:10;7481:17;;7408:98;:::o;22964:335::-;23074:1;23057:19;;:5;:19;;;23049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23155:1;23136:21;;:7;:21;;;23128:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23237:6;23207:11;:18;23219:5;23207:18;;;;;;;;;;;;;;;:27;23226:7;23207:27;;;;;;;;;;;;;;;:36;;;;23275:7;23259:32;;23268:5;23259:32;;;23284:6;23259:32;;;;;;:::i;:::-;;;;;;;;22964:335;;;:::o;11452:1726::-;11556:1;11540:18;;:4;:18;;;11532:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11633:1;11619:16;;:2;:16;;;11611:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11703:1;11694:6;:10;11686:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11774:7;:5;:7::i;:::-;11766:15;;:4;:15;;;;:32;;;;;11791:7;:5;:7::i;:::-;11785:13;;:2;:13;;;;11766:32;11763:1080;;;11826:13;;;;;;;;;;;11820:19;;:2;:19;;;;:52;;;;;11844:24;:28;11869:2;11844:28;;;;;;;;;;;;;;;;;;;;;;;;;11843:29;11820:52;:75;;;;;11894:1;11876:14;;:19;;11820:75;11817:212;;;11959:14;;11949:6;11924:22;11942:2;11924:9;:22::i;:::-;:31;;;;:::i;:::-;:49;;11916:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11817:212;12068:13;;;;;;;;;;;12060:21;;:4;:21;;;:55;;;;;12099:15;;;;;;;;;;;12085:30;;:2;:30;;;;12060:55;:82;;;;;12120:18;:22;12139:2;12120:22;;;;;;;;;;;;;;;;;;;;;;;;;12119:23;12060:82;12057:207;;;12171:11;;;;;;;;;;12163:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12241:7;;12230:8;:18;;;;12057:207;12278:28;12309:24;12327:4;12309:9;:24::i;:::-;12278:55;;12354:6;;;;;;;;;;;12353:7;:32;;;;;12372:13;;;;;;;;;;;12364:21;;:4;:21;;;;12353:32;:47;;;;;12389:11;;;;;;;;;;12353:47;12350:482;;;12434:8;;12423;:19;;;;12467:25;:29;12493:2;12467:29;;;;;;;;;;;;;;;;;;;;;;;;;12463:354;;;12547:23;;12524:20;:46;12521:277;;;12603:8;;;;;;;;;;;12599:119;;12667:23;;12644:46;;12599:119;12744:30;12753:20;12744:8;:30::i;:::-;12521:277;12463:354;12350:482;11800:1043;11763:1080;12853:12;12868:4;12853:19;;12888:7;;;;;;;;;;;:35;;;;12899:18;:24;12918:4;12899:24;;;;;;;;;;;;;;;;;;;;;;;;;12888:35;:61;;;;12927:18;:22;12946:2;12927:22;;;;;;;;;;;;;;;;;;;;;;;;;12888:61;12885:227;;;12976:5;12966:15;;12885:227;;;13003:25;:31;13029:4;13003:31;;;;;;;;;;;;;;;;;;;;;;;;;13002:32;:66;;;;;13039:25;:29;13065:2;13039:29;;;;;;;;;;;;;;;;;;;;;;;;;13038:30;13002:66;12999:113;;;13095:5;13085:15;;12999:113;12885:227;13132:38;13147:4;13152:2;13155:6;13162:7;13132:14;:38::i;:::-;11521:1657;11452:1726;;;:::o;3818:192::-;3904:7;3937:1;3932;:6;;3940:12;3924:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3964:9;3980:1;3976;:5;;;;:::i;:::-;3964:17;;4001:1;3994:8;;;3818:192;;;;;:::o;14432:266::-;14490:16;14512:18;;;;;;;;;;;:23;;14543:13;14554:1;14543:6;:10;;:13;;;;:::i;:::-;14512:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14489:72;;;14573:14;14593:16;;;;;;;;;;;:21;;14622:13;14633:1;14622:6;:10;;:13;;;;:::i;:::-;14593:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14572:68;;;14658:32;14667:11;14680:9;14658:32;;;;;;;:::i;:::-;;;;;;;;14478:220;;14432:266;:::o;22413:254::-;22480:7;22519;;22508;:18;;22500:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22584:19;22607:10;:8;:10::i;:::-;22584:33;;22635:24;22647:11;22635:7;:11;;:24;;;;:::i;:::-;22628:31;;;22413:254;;;:::o;20968:130::-;21085:5;21051:25;:31;21077:4;21051:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20968:130;;:::o;13933:483::-;10552:4;10543:6;;:13;;;;;;;;;;;;;;;;;;14011:21:::1;14049:1;14035:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14011:40;;14080:4;14062;14067:1;14062:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14106:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14096:4;14101:1;14096:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14139:62;14156:4;14171:15;;;;;;;;;;;14189:11;14139:8;:62::i;:::-;14212:15;;;;;;;;;;;:66;;;14293:11;14319:1;14335:4;14362;14382:15;14212:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14000:416;10588:5:::0;10579:6;;:14;;;;;;;;;;;;;;;;;;13933:483;:::o;13640:285::-;13717:38;13734:20;13717:16;:38::i;:::-;13768:26;13797:21;13768:50;;13853:1;13832:18;:22;13829:89;;;13871:35;13884:21;13871:12;:35::i;:::-;13829:89;13696:229;13640:285;:::o;14710:263::-;14822:7;14818:40;;14844:14;:12;:14::i;:::-;14818:40;14869:44;14887:6;14895:9;14906:6;14869:17;:44::i;:::-;14928:7;14924:41;;14950:15;:13;:15::i;:::-;14924:41;14710:263;;;;:::o;5216:132::-;5274:7;5301:39;5305:1;5308;5301:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5294:46;;5216:132;;;;:::o;16314:163::-;16355:7;16376:15;16393;16412:19;:17;:19::i;:::-;16375:56;;;;16449:20;16461:7;16449;:11;;:20;;;;:::i;:::-;16442:27;;;;16314:163;:::o;21572:210::-;21629:1;21618:7;;:12;:29;;;;;21646:1;21634:8;;:13;21618:29;21649:7;21615:41;21684:7;;21666:15;:25;;;;21721:8;;21702:16;:27;;;;21750:1;21740:7;:11;;;;21773:1;21762:8;:12;;;;21572:210;:::o;14981:490::-;15080:15;15097:23;15122:12;15136:23;15161:12;15175:13;15192:19;15203:7;15192:10;:19::i;:::-;15079:132;;;;;;;;;;;;15240:28;15260:7;15240;:15;15248:6;15240:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15222:7;:15;15230:6;15222:15;;;;;;;;;;;;;;;:46;;;;15300:39;15323:15;15300:7;:18;15308:9;15300:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15279:7;:18;15287:9;15279:18;;;;;;;;;;;;;;;:60;;;;15353:16;15363:5;15353:9;:16::i;:::-;15380:23;15392:4;15398;15380:11;:23::i;:::-;15436:9;15419:44;;15428:6;15419:44;;;15447:15;15419:44;;;;;;:::i;:::-;;;;;;;;15068:403;;;;;;14981:490;;;:::o;21794:115::-;21848:15;;21838:7;:25;;;;21885:16;;21874:8;:27;;;;21794:115::o;5844:278::-;5930:7;5962:1;5958;:5;5965:12;5950:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5989:9;6005:1;6001;:5;;;;:::i;:::-;5989:17;;6113:1;6106:8;;;5844:278;;;;;:::o;16485:255::-;16535:7;16544;16564:15;16582:7;;16564:25;;16600:15;9311:12;16600:25;;16649:20;9311:12;16649:7;;:11;;:20;;;;:::i;:::-;16639:7;:30;16636:60;;;16679:7;;9311:12;16671:25;;;;;;;;16636:60;16715:7;16724;16707:25;;;;;;16485:255;;;:::o;15479:468::-;15538:7;15547;15556;15565;15574;15583;15604:23;15629:12;15643:13;15660:39;15672:7;15681;;15690:8;;15660:11;:39::i;:::-;15603:96;;;;;;15710:19;15733:10;:8;:10::i;:::-;15710:33;;15755:15;15772:23;15797:12;15813:46;15825:7;15834:4;15840:5;15847:11;15813;:46::i;:::-;15754:105;;;;;;15878:7;15887:15;15904:4;15910:15;15927:4;15933:5;15870:69;;;;;;;;;;;;;;;;;;;15479:468;;;;;;;:::o;3379:136::-;3437:7;3464:43;3468:1;3471;3464:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3457:50;;3379:136;;;;:::o;2915:181::-;2973:7;2993:9;3009:1;3005;:5;;;;:::i;:::-;2993:17;;3034:1;3029;:6;;3021:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3087:1;3080:8;;;2915:181;;;;:::o;17165:214::-;17218:19;17241:10;:8;:10::i;:::-;17218:33;;17262:13;17278:22;17288:11;17278:5;:9;;:22;;;;:::i;:::-;17262:38;;17338:33;17365:5;17338:7;:22;17354:4;17338:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17313:7;:22;17329:4;17313:22;;;;;;;;;;;;;;;:58;;;;17207:172;;17165:214;:::o;17387:147::-;17465:17;17477:4;17465:7;;:11;;:17;;;;:::i;:::-;17455:7;:27;;;;17506:20;17521:4;17506:10;;:14;;:20;;;;:::i;:::-;17493:10;:33;;;;17387:147;;:::o;15955:351::-;16048:7;16057;16066;16086:12;16101:28;16125:3;16101:19;16113:6;16101:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16086:43;;16140:13;16156:29;16181:3;16156:20;16168:7;16156;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16140:45;;16196:23;16222:28;16244:5;16222:17;16234:4;16222:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16196:54;;16269:15;16286:4;16292:5;16261:37;;;;;;;;;15955:351;;;;;;;:::o;16748:409::-;16858:7;16867;16876;16896:15;16914:24;16926:11;16914:7;:11;;:24;;;;:::i;:::-;16896:42;;16949:12;16964:21;16973:11;16964:4;:8;;:21;;;;:::i;:::-;16949:36;;16996:13;17012:22;17022:11;17012:5;:9;;:22;;;;:::i;:::-;16996:38;;17045:23;17071:28;17093:5;17071:17;17083:4;17071:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17045:54;;17118:7;17127:15;17144:4;17110:39;;;;;;;;;;16748:409;;;;;;;;:::o;4269:471::-;4327:7;4577:1;4572;:6;4568:47;;4602:1;4595:8;;;;4568:47;4627:9;4643:1;4639;:5;;;;:::i;:::-;4627:17;;4672:1;4667;4663;:5;;;;:::i;:::-;:10;4655:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4731:1;4724:8;;;4269:471;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446: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:474::-;7181:6;7189;7238:2;7226:9;7217:7;7213:23;7209:32;7206:119;;;7244:79;;:::i;:::-;7206:119;7364:1;7389:53;7434:7;7425:6;7414:9;7410:22;7389:53;:::i;:::-;7379:63;;7335:117;7491:2;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7462:118;7113:474;;;;;:::o;7593:329::-;7652:6;7701:2;7689:9;7680:7;7676:23;7672:32;7669:119;;;7707:79;;:::i;:::-;7669:119;7827:1;7852:53;7897:7;7888:6;7877:9;7873:22;7852:53;:::i;:::-;7842:63;;7798:117;7593:329;;;;:::o;7928:104::-;7973:7;8002:24;8020:5;8002:24;:::i;:::-;7991:35;;7928:104;;;:::o;8038:138::-;8119:32;8145:5;8119:32;:::i;:::-;8112:5;8109:43;8099:71;;8166:1;8163;8156:12;8099:71;8038:138;:::o;8182:155::-;8236:5;8274:6;8261:20;8252:29;;8290:41;8325:5;8290:41;:::i;:::-;8182:155;;;;:::o;8343:345::-;8410:6;8459:2;8447:9;8438:7;8434:23;8430:32;8427:119;;;8465:79;;:::i;:::-;8427:119;8585:1;8610:61;8663:7;8654:6;8643:9;8639:22;8610:61;:::i;:::-;8600:71;;8556:125;8343:345;;;;:::o;8694:118::-;8781:24;8799:5;8781:24;:::i;:::-;8776:3;8769:37;8694:118;;:::o;8818:222::-;8911:4;8949:2;8938:9;8934:18;8926:26;;8962:71;9030:1;9019:9;9015:17;9006:6;8962:71;:::i;:::-;8818:222;;;;:::o;9046:468::-;9111:6;9119;9168:2;9156:9;9147:7;9143:23;9139:32;9136:119;;;9174:79;;:::i;:::-;9136:119;9294:1;9319:53;9364:7;9355:6;9344:9;9340:22;9319:53;:::i;:::-;9309:63;;9265:117;9421:2;9447:50;9489:7;9480:6;9469:9;9465:22;9447:50;:::i;:::-;9437:60;;9392:115;9046:468;;;;;:::o;9520:323::-;9576:6;9625:2;9613:9;9604:7;9600:23;9596:32;9593:119;;;9631:79;;:::i;:::-;9593:119;9751:1;9776:50;9818:7;9809:6;9798:9;9794:22;9776:50;:::i;:::-;9766:60;;9722:114;9520:323;;;;:::o;9849:474::-;9917:6;9925;9974:2;9962:9;9953:7;9949:23;9945:32;9942:119;;;9980:79;;:::i;:::-;9942:119;10100:1;10125:53;10170:7;10161:6;10150:9;10146:22;10125:53;:::i;:::-;10115:63;;10071:117;10227:2;10253:53;10298:7;10289:6;10278:9;10274:22;10253:53;:::i;:::-;10243:63;;10198:118;9849:474;;;;;:::o;10329:182::-;10469:34;10465:1;10457:6;10453:14;10446:58;10329:182;:::o;10517:366::-;10659:3;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10756:93;10845:3;10756:93;:::i;:::-;10874:2;10869:3;10865:12;10858:19;;10517:366;;;:::o;10889:419::-;11055:4;11093:2;11082:9;11078:18;11070:26;;11142:9;11136:4;11132:20;11128:1;11117:9;11113:17;11106:47;11170:131;11296:4;11170:131;:::i;:::-;11162:139;;10889:419;;;:::o;11314:180::-;11362:77;11359:1;11352:88;11459:4;11456:1;11449:15;11483:4;11480:1;11473:15;11500:410;11540:7;11563:20;11581:1;11563:20;:::i;:::-;11558:25;;11597:20;11615:1;11597:20;:::i;:::-;11592:25;;11652:1;11649;11645:9;11674:30;11692:11;11674:30;:::i;:::-;11663:41;;11853:1;11844:7;11840:15;11837:1;11834:22;11814:1;11807:9;11787:83;11764:139;;11883:18;;:::i;:::-;11764:139;11548:362;11500:410;;;;:::o;11916:180::-;11964:77;11961:1;11954:88;12061:4;12058:1;12051:15;12085:4;12082:1;12075:15;12102:233;12141:3;12164:24;12182:5;12164:24;:::i;:::-;12155:33;;12210:66;12203:5;12200:77;12197:103;;12280:18;;:::i;:::-;12197:103;12327:1;12320:5;12316:13;12309:20;;12102:233;;;:::o;12341:244::-;12481:34;12477:1;12469:6;12465:14;12458:58;12550:27;12545:2;12537:6;12533:15;12526:52;12341:244;:::o;12591:366::-;12733:3;12754:67;12818:2;12813:3;12754:67;:::i;:::-;12747:74;;12830:93;12919:3;12830:93;:::i;:::-;12948:2;12943:3;12939:12;12932:19;;12591:366;;;:::o;12963:419::-;13129:4;13167:2;13156:9;13152:18;13144:26;;13216:9;13210:4;13206:20;13202:1;13191:9;13187:17;13180:47;13244:131;13370:4;13244:131;:::i;:::-;13236:139;;12963:419;;;:::o;13388:173::-;13528:25;13524:1;13516:6;13512:14;13505:49;13388:173;:::o;13567:366::-;13709:3;13730:67;13794:2;13789:3;13730:67;:::i;:::-;13723:74;;13806:93;13895:3;13806:93;:::i;:::-;13924:2;13919:3;13915:12;13908:19;;13567:366;;;:::o;13939:419::-;14105:4;14143:2;14132:9;14128:18;14120:26;;14192:9;14186:4;14182:20;14178:1;14167:9;14163:17;14156:47;14220:131;14346:4;14220:131;:::i;:::-;14212:139;;13939:419;;;:::o;14364:143::-;14421:5;14452:6;14446:13;14437:22;;14468:33;14495:5;14468:33;:::i;:::-;14364:143;;;;:::o;14513:351::-;14583:6;14632:2;14620:9;14611:7;14607:23;14603:32;14600:119;;;14638:79;;:::i;:::-;14600:119;14758:1;14783:64;14839:7;14830:6;14819:9;14815:22;14783:64;:::i;:::-;14773:74;;14729:128;14513:351;;;;:::o;14870:332::-;14991:4;15029:2;15018:9;15014:18;15006:26;;15042:71;15110:1;15099:9;15095:17;15086:6;15042:71;:::i;:::-;15123:72;15191:2;15180:9;15176:18;15167:6;15123:72;:::i;:::-;14870:332;;;;;:::o;15208:85::-;15253:7;15282:5;15271:16;;15208:85;;;:::o;15299:60::-;15327:3;15348:5;15341:12;;15299:60;;;:::o;15365:158::-;15423:9;15456:61;15474:42;15483:32;15509:5;15483:32;:::i;:::-;15474:42;:::i;:::-;15456:61;:::i;:::-;15443:74;;15365:158;;;:::o;15529:147::-;15624:45;15663:5;15624:45;:::i;:::-;15619:3;15612:58;15529:147;;:::o;15682:807::-;15931:4;15969:3;15958:9;15954:19;15946:27;;15983:71;16051:1;16040:9;16036:17;16027:6;15983:71;:::i;:::-;16064:72;16132:2;16121:9;16117:18;16108:6;16064:72;:::i;:::-;16146:80;16222:2;16211:9;16207:18;16198:6;16146:80;:::i;:::-;16236;16312:2;16301:9;16297:18;16288:6;16236:80;:::i;:::-;16326:73;16394:3;16383:9;16379:19;16370:6;16326:73;:::i;:::-;16409;16477:3;16466:9;16462:19;16453:6;16409:73;:::i;:::-;15682:807;;;;;;;;;:::o;16495:143::-;16552:5;16583:6;16577:13;16568:22;;16599:33;16626:5;16599:33;:::i;:::-;16495:143;;;;:::o;16644:663::-;16732:6;16740;16748;16797:2;16785:9;16776:7;16772:23;16768:32;16765:119;;;16803:79;;:::i;:::-;16765:119;16923:1;16948:64;17004:7;16995:6;16984:9;16980:22;16948:64;:::i;:::-;16938:74;;16894:128;17061:2;17087:64;17143:7;17134:6;17123:9;17119:22;17087:64;:::i;:::-;17077:74;;17032:129;17200:2;17226:64;17282:7;17273:6;17262:9;17258:22;17226:64;:::i;:::-;17216:74;;17171:129;16644:663;;;;;:::o;17313:332::-;17434:4;17472:2;17461:9;17457:18;17449:26;;17485:71;17553:1;17542:9;17538:17;17529:6;17485:71;:::i;:::-;17566:72;17634:2;17623:9;17619:18;17610:6;17566:72;:::i;:::-;17313:332;;;;;:::o;17651:137::-;17705:5;17736:6;17730:13;17721:22;;17752:30;17776:5;17752:30;:::i;:::-;17651:137;;;;:::o;17794:345::-;17861:6;17910:2;17898:9;17889:7;17885:23;17881:32;17878:119;;;17916:79;;:::i;:::-;17878:119;18036:1;18061:61;18114:7;18105:6;18094:9;18090:22;18061:61;:::i;:::-;18051:71;;18007:125;17794:345;;;;:::o;18145:223::-;18285:34;18281:1;18273:6;18269:14;18262:58;18354:6;18349:2;18341:6;18337:15;18330:31;18145:223;:::o;18374:366::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:419::-;18912:4;18950:2;18939:9;18935:18;18927:26;;18999:9;18993:4;18989:20;18985:1;18974:9;18970:17;18963:47;19027:131;19153:4;19027:131;:::i;:::-;19019:139;;18746:419;;;:::o;19171:221::-;19311:34;19307:1;19299:6;19295:14;19288:58;19380:4;19375:2;19367:6;19363:15;19356:29;19171:221;:::o;19398:366::-;19540:3;19561:67;19625:2;19620:3;19561:67;:::i;:::-;19554:74;;19637:93;19726:3;19637:93;:::i;:::-;19755:2;19750:3;19746:12;19739:19;;19398:366;;;:::o;19770:419::-;19936:4;19974:2;19963:9;19959:18;19951:26;;20023:9;20017:4;20013:20;20009:1;19998:9;19994:17;19987:47;20051:131;20177:4;20051:131;:::i;:::-;20043:139;;19770:419;;;:::o;20195:224::-;20335:34;20331:1;20323:6;20319:14;20312:58;20404:7;20399:2;20391:6;20387:15;20380:32;20195:224;:::o;20425:366::-;20567:3;20588:67;20652:2;20647:3;20588:67;:::i;:::-;20581:74;;20664:93;20753:3;20664:93;:::i;:::-;20782:2;20777:3;20773:12;20766:19;;20425:366;;;:::o;20797:419::-;20963:4;21001:2;20990:9;20986:18;20978:26;;21050:9;21044:4;21040:20;21036:1;21025:9;21021:17;21014:47;21078:131;21204:4;21078:131;:::i;:::-;21070:139;;20797:419;;;:::o;21222:222::-;21362:34;21358:1;21350:6;21346:14;21339:58;21431:5;21426:2;21418:6;21414:15;21407:30;21222:222;:::o;21450:366::-;21592:3;21613:67;21677:2;21672:3;21613:67;:::i;:::-;21606:74;;21689:93;21778:3;21689:93;:::i;:::-;21807:2;21802:3;21798:12;21791:19;;21450:366;;;:::o;21822:419::-;21988:4;22026:2;22015:9;22011:18;22003:26;;22075:9;22069:4;22065:20;22061:1;22050:9;22046:17;22039:47;22103:131;22229:4;22103:131;:::i;:::-;22095:139;;21822:419;;;:::o;22247:228::-;22387:34;22383:1;22375:6;22371:14;22364:58;22456:11;22451:2;22443:6;22439:15;22432:36;22247:228;:::o;22481:366::-;22623:3;22644:67;22708:2;22703:3;22644:67;:::i;:::-;22637:74;;22720:93;22809:3;22720:93;:::i;:::-;22838:2;22833:3;22829:12;22822:19;;22481:366;;;:::o;22853:419::-;23019:4;23057:2;23046:9;23042:18;23034:26;;23106:9;23100:4;23096:20;23092:1;23081:9;23077:17;23070:47;23134:131;23260:4;23134:131;:::i;:::-;23126:139;;22853:419;;;:::o;23278:191::-;23318:3;23337:20;23355:1;23337:20;:::i;:::-;23332:25;;23371:20;23389:1;23371:20;:::i;:::-;23366:25;;23414:1;23411;23407:9;23400:16;;23435:3;23432:1;23429:10;23426:36;;;23442:18;;:::i;:::-;23426:36;23278:191;;;;:::o;23475:222::-;23615:34;23611:1;23603:6;23599:14;23592:58;23684:5;23679:2;23671:6;23667:15;23660:30;23475:222;:::o;23703:366::-;23845:3;23866:67;23930:2;23925:3;23866:67;:::i;:::-;23859:74;;23942:93;24031:3;23942:93;:::i;:::-;24060:2;24055:3;24051:12;24044:19;;23703:366;;;:::o;24075:419::-;24241:4;24279:2;24268:9;24264:18;24256:26;;24328:9;24322:4;24318:20;24314:1;24303:9;24299:17;24292:47;24356:131;24482:4;24356:131;:::i;:::-;24348:139;;24075:419;;;:::o;24500:174::-;24640:26;24636:1;24628:6;24624:14;24617:50;24500:174;:::o;24680:366::-;24822:3;24843:67;24907:2;24902:3;24843:67;:::i;:::-;24836:74;;24919:93;25008:3;24919:93;:::i;:::-;25037:2;25032:3;25028:12;25021:19;;24680:366;;;:::o;25052:419::-;25218:4;25256:2;25245:9;25241:18;25233:26;;25305:9;25299:4;25295:20;25291:1;25280:9;25276:17;25269:47;25333:131;25459:4;25333:131;:::i;:::-;25325:139;;25052:419;;;:::o;25477:194::-;25517:4;25537:20;25555:1;25537:20;:::i;:::-;25532:25;;25571:20;25589:1;25571:20;:::i;:::-;25566:25;;25615:1;25612;25608:9;25600:17;;25639:1;25633:4;25630:11;25627:37;;;25644:18;;:::i;:::-;25627:37;25477:194;;;;:::o;25677:147::-;25778:11;25815:3;25800:18;;25677:147;;;;:::o;25830:114::-;;:::o;25950:398::-;26109:3;26130:83;26211:1;26206:3;26130:83;:::i;:::-;26123:90;;26222:93;26311:3;26222:93;:::i;:::-;26340:1;26335:3;26331:11;26324:18;;25950:398;;;:::o;26354:379::-;26538:3;26560:147;26703:3;26560:147;:::i;:::-;26553:154;;26724:3;26717:10;;26354:379;;;:::o;26739:308::-;26848:4;26886:2;26875:9;26871:18;26863:26;;26899:65;26961:1;26950:9;26946:17;26937:6;26899:65;:::i;:::-;26974:66;27036:2;27025:9;27021:18;27012:6;26974:66;:::i;:::-;26739:308;;;;;:::o;27053:229::-;27193:34;27189:1;27181:6;27177:14;27170:58;27262:12;27257:2;27249:6;27245:15;27238:37;27053:229;:::o;27288:366::-;27430:3;27451:67;27515:2;27510:3;27451:67;:::i;:::-;27444:74;;27527:93;27616:3;27527:93;:::i;:::-;27645:2;27640:3;27636:12;27629:19;;27288:366;;;:::o;27660:419::-;27826:4;27864:2;27853:9;27849:18;27841:26;;27913:9;27907:4;27903:20;27899:1;27888:9;27884:17;27877:47;27941:131;28067:4;27941:131;:::i;:::-;27933:139;;27660:419;;;:::o;28085:180::-;28133:77;28130:1;28123:88;28230:4;28227:1;28220:15;28254:4;28251:1;28244:15;28271:114;28338:6;28372:5;28366:12;28356:22;;28271:114;;;:::o;28391:184::-;28490:11;28524:6;28519:3;28512:19;28564:4;28559:3;28555:14;28540:29;;28391:184;;;;:::o;28581:132::-;28648:4;28671:3;28663:11;;28701:4;28696:3;28692:14;28684:22;;28581:132;;;:::o;28719:108::-;28796:24;28814:5;28796:24;:::i;:::-;28791:3;28784:37;28719:108;;:::o;28833:179::-;28902:10;28923:46;28965:3;28957:6;28923:46;:::i;:::-;29001:4;28996:3;28992:14;28978:28;;28833:179;;;;:::o;29018:113::-;29088:4;29120;29115:3;29111:14;29103:22;;29018:113;;;:::o;29167:732::-;29286:3;29315:54;29363:5;29315:54;:::i;:::-;29385:86;29464:6;29459:3;29385:86;:::i;:::-;29378:93;;29495:56;29545:5;29495:56;:::i;:::-;29574:7;29605:1;29590:284;29615:6;29612:1;29609:13;29590:284;;;29691:6;29685:13;29718:63;29777:3;29762:13;29718:63;:::i;:::-;29711:70;;29804:60;29857:6;29804:60;:::i;:::-;29794:70;;29650:224;29637:1;29634;29630:9;29625:14;;29590:284;;;29594:14;29890:3;29883:10;;29291:608;;;29167:732;;;;:::o;29905:831::-;30168:4;30206:3;30195:9;30191:19;30183:27;;30220:71;30288:1;30277:9;30273:17;30264:6;30220:71;:::i;:::-;30301:80;30377:2;30366:9;30362:18;30353:6;30301:80;:::i;:::-;30428:9;30422:4;30418:20;30413:2;30402:9;30398:18;30391:48;30456:108;30559:4;30550:6;30456:108;:::i;:::-;30448:116;;30574:72;30642:2;30631:9;30627:18;30618:6;30574:72;:::i;:::-;30656:73;30724:3;30713:9;30709:19;30700:6;30656:73;:::i;:::-;29905:831;;;;;;;;:::o;30742:180::-;30790:77;30787:1;30780:88;30887:4;30884:1;30877:15;30911:4;30908:1;30901:15;30928:185;30968:1;30985:20;31003:1;30985:20;:::i;:::-;30980:25;;31019:20;31037:1;31019:20;:::i;:::-;31014:25;;31058:1;31048:35;;31063:18;;:::i;:::-;31048:35;31105:1;31102;31098:9;31093:14;;30928:185;;;;:::o;31119:177::-;31259:29;31255:1;31247:6;31243:14;31236:53;31119:177;:::o;31302:366::-;31444:3;31465:67;31529:2;31524:3;31465:67;:::i;:::-;31458:74;;31541:93;31630:3;31541:93;:::i;:::-;31659:2;31654:3;31650:12;31643:19;;31302:366;;;:::o;31674:419::-;31840:4;31878:2;31867:9;31863:18;31855:26;;31927:9;31921:4;31917:20;31913:1;31902:9;31898:17;31891:47;31955:131;32081:4;31955:131;:::i;:::-;31947:139;;31674:419;;;:::o;32099:220::-;32239:34;32235:1;32227:6;32223:14;32216:58;32308:3;32303:2;32295:6;32291:15;32284:28;32099:220;:::o;32325:366::-;32467:3;32488:67;32552:2;32547:3;32488:67;:::i;:::-;32481:74;;32564:93;32653:3;32564:93;:::i;:::-;32682:2;32677:3;32673:12;32666:19;;32325:366;;;:::o;32697:419::-;32863:4;32901:2;32890:9;32886:18;32878:26;;32950:9;32944:4;32940:20;32936:1;32925:9;32921:17;32914:47;32978:131;33104:4;32978:131;:::i;:::-;32970:139;;32697:419;;;:::o

Swarm Source

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