ETH Price: $2,507.69 (-4.81%)

Token

Mikawa Inu (MIKAWA)
 

Overview

Max Total Supply

1,000,000,000,000 MIKAWA

Holders

406

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000075 MIKAWA

Value
$0.00
0x99749f51e759c272abc76fee393a3f92230db217
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:
Mikawa

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-20
*/

pragma solidity 0.8.10;
pragma experimental ABIEncoderV2;

// SPDX-License-Identifier: MIT
// Mikawa original code

interface ERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address _account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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
    );
}

// Dex Factory contract interface
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

// Dex Router02 contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new _account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    /**
     * @dev set the owner for the first time.
     * Can only be called by the contract or deployer.
     */
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // 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;
    }

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

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

        return c;
    }

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

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

contract Mikawa is ERC20, Ownable {
    using SafeMath for uint256;

    // all private variables and functions are only for contract use
    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 _isExcludedFromReward;
    mapping(address => bool) private _isExcludedFromMaxHoldLimit;
    mapping(address => bool) private _isExcludedFromMinBuyLimit;
    mapping(address => bool) public isSniper;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000000 * 1e9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Mikawa Inu"; // token name
    string private _symbol = "MIKAWA"; // token ticker
    uint8 private _decimals = 9; // token decimals

    IDexRouter public dexRouter; // Dex router address
    address public dexPair; // LP token address
    address payable public marketWallet; // market wallet address
    address public burnAddress = (0x000000000000000000000000000000000000dEaD);

    uint256 public minTokenToSwap = 1000000000 * 1e9; // 100k amount will trigger the swap and add liquidity
    uint256 public maxHoldingAmount = 20000000000 * 1e9;
    uint256 public minBuyLimit = 20000000000 * 1e9;

    uint256 private excludedTSupply; // for contract use
    uint256 private excludedRSupply; // for contract use

    bool public swapAndLiquifyEnabled = true; // should be true to turn on to liquidate the pool
    bool public Fees = true;
    bool public antiBotStopEnabled = false;
    bool public isMaxHoldLimitValid = true; // max Holding Limit is valid if it's true

    // buy tax fee
    uint256 public reflectionFeeOnBuying = 0;
    uint256 public liquidityFeeOnBuying = 30;
    uint256 public marketWalletFeeOnBuying = 100;
    uint256 public burnFeeOnBuying = 20;

    // sell tax fee
    uint256 public reflectionFeeOnSelling = 0;
    uint256 public liquidityFeeOnSelling = 30;
    uint256 public marketWalletFeeOnSelling = 100;
    uint256 public burnFeeOnSelling = 20;

    // for smart contract use
    uint256 private _currentReflectionFee;
    uint256 private _currentLiquidityFee;
    uint256 private _currentmarketWalletFee;
    uint256 private _currentBurnFee;

    uint256 private _accumulatedLiquidity;
    uint256 private _accumulatedMarketWallet;

    //Events for blockchain
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event AntiBotStopEnableUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    // constructor for initializing the contract
    constructor(address payable _marketWallet) {
        _rOwned[owner()] = _rTotal;
        marketWallet = _marketWallet;

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
            // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //testnet
        );
        // Create a Dex pair for this new token
        dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

       // exclude addresses from max holding limit
        _isExcludedFromMaxHoldLimit[owner()] = true;
        _isExcludedFromMaxHoldLimit[address(this)] = true;
        _isExcludedFromMaxHoldLimit[dexPair] = true;
        _isExcludedFromMaxHoldLimit[burnAddress] = true;

        _isExcludedFromMinBuyLimit[owner()] = true;
        _isExcludedFromMinBuyLimit[dexPair] = true;

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

    // token standards by Blockchain

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

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

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

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

    function balanceOf(address _account)
        public
        view
        override
        returns (uint256)
    {
        if (_isExcludedFromReward[_account]) return _tOwned[_account];
        return tokenFromReflection(_rOwned[_account]);
    }

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

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


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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        require(!isSniper[sender], "Sniper detected");
        require(!isSniper[recipient], "Sniper detected");
        require(!antiBotStopEnabled, "Trading shifted for bot deletion.");

        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "Token: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

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

    // public view able functions

    // to check wether the address is excluded from reward or not
    function isExcludedFromReward(address _account) public view returns (bool) {
        return _isExcludedFromReward[_account];
    }

    // to check how much tokens get redistributed among holders till now
    function totalHolderDistribution() public view returns (uint256) {
        return _tFeeTotal;
    }

    // to check wether the address is excluded from fee or not
    function isExcludedFromFee(address _account) public view returns (bool) {
        return _isExcludedFromFee[_account];
    }
    // to check wether the address is excluded from max Holding or not
    function isExcludedFromMaxHoldLimit(address _account)
        public
        view
        returns (bool)
    {
        return _isExcludedFromMaxHoldLimit[_account];
    }

    // to check wether the address is excluded from max txn or not
    function isExcludedFromMaxTxnLimit(address _account)
        public
        view
        returns (bool)
    {
        return _isExcludedFromMinBuyLimit[_account];
    }

    // For manual distribution to the holders
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcludedFromReward[sender],
            "Token: Excluded addresses cannot call this function"
        );
        uint256 rAmount = tAmount.mul(_getRate());
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "BEP20: Amount must be less than supply");
        if (!deductTransferFee) {
            uint256 rAmount = tAmount.mul(_getRate());
            return rAmount;
        } else {
            uint256 rAmount = tAmount.mul(_getRate());
            uint256 rTransferAmount = rAmount.sub(
                totalFeePerTx(tAmount).mul(_getRate())
            );
            return rTransferAmount;
        }
    }

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

    //to include or exludde  any address from max hold limit
    function includeOrExcludeFromMaxHoldLimit(address _address, bool value)
        public
        onlyOwner
    {
        _isExcludedFromMaxHoldLimit[_address] = value;
    }

    //to include or exludde  any address from max hold limit
    function includeOrExcludeFromMaxTxnLimit(address _address, bool value)
        public
        onlyOwner
    {
        _isExcludedFromMinBuyLimit[_address] = value;
    }

    //only owner can change MaxHoldingAmount
    function setMaxHoldingAmount(uint256 _amount) public onlyOwner {
        maxHoldingAmount = _amount;
    }

    //only owner can change MaxHoldingAmount
    function setMinBuyLimit(uint256 _amount) public onlyOwner {
        minBuyLimit = _amount;
    }

    // owner can remove stuck tokens in case of any issue
    function removeStuckToken(address _token, uint256 _amount)
        external
        onlyOwner
    {
        ERC20(_token).transfer(owner(), _amount);
    }
    
    //only owner can change SellFeePercentages any time after deployment
    function setSellFeePercent(
        uint256 _redistributionFee,
        uint256 _liquidityFee,
        uint256 _marketWalletFee,
        uint256 _burnFee
    ) external onlyOwner {
        reflectionFeeOnSelling = _redistributionFee;
        liquidityFeeOnSelling = _liquidityFee;
        marketWalletFeeOnSelling = _marketWalletFee;
        burnFeeOnSelling = _burnFee;
    }

    //to include or exludde  any address from fee
    function includeOrExcludeFromFee(address _account, bool _value)
        public
        onlyOwner
    {
        _isExcludedFromFee[_account] = _value;
    }

    //only owner can change MinTokenToSwap
    function setMinTokenToSwap(uint256 _amount) public onlyOwner {
        minTokenToSwap = _amount;
    }

    //only owner can change BuyFeePercentages any time after deployment
    function setBuyFeePercent(
        uint256 _redistributionFee,
        uint256 _liquidityFee,
        uint256 _marketWalletFee,
        uint256 _burnFee
    ) external onlyOwner {
        reflectionFeeOnBuying = _redistributionFee;
        liquidityFeeOnBuying = _liquidityFee;
        marketWalletFeeOnBuying = _marketWalletFee;
        burnFeeOnBuying = _burnFee;
    }

    
    //only owner can change state of swapping, he can turn it in to true or false any time after deployment
    function enableOrDisableSwapAndLiquify(bool _state) public onlyOwner {
        swapAndLiquifyEnabled = _state;
        emit SwapAndLiquifyEnabledUpdated(_state);
    }

    // owner can change market address
    function setmarketWalletAddress(address payable _newAddress)
        external
        onlyOwner
    {
        marketWallet = _newAddress;
    }

    //to receive eth from dexRouter when swapping
    receive() external payable {}

    // internal functions for contract use

    function totalFeePerTx(uint256 tAmount) internal view returns (uint256) {
        uint256 percentage = tAmount
            .mul(
                _currentReflectionFee.add(_currentLiquidityFee).add(
                    _currentmarketWalletFee.add(_currentBurnFee)
                )
            )
            .div(1e3);
        return percentage;
    }

    function _checkMaxWalletAmount(address to, uint256 amount) private view{
        if (
            !_isExcludedFromMaxHoldLimit[to] // by default false
        ) {
            if (isMaxHoldLimitValid) {
                require(
                    balanceOf(to).add(amount) <= maxHoldingAmount,
                    "BEP20: amount exceed max holding limit"
                );
            }
        }
    }


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

    function setBuyFee() private {
        _currentReflectionFee = reflectionFeeOnBuying;
        _currentLiquidityFee = liquidityFeeOnBuying;
        _currentmarketWalletFee = marketWalletFeeOnBuying;
        _currentBurnFee = burnFeeOnBuying; 
    }

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

    function removeAllFee() private {
        _currentReflectionFee = 0;
        _currentLiquidityFee = 0;
        _currentmarketWalletFee = 0;
        _currentBurnFee = 0;
    }

    function setSellFee() private {
        _currentReflectionFee = reflectionFeeOnSelling;
        _currentLiquidityFee = liquidityFeeOnSelling;
        _currentmarketWalletFee = marketWalletFeeOnSelling;
        _currentBurnFee = burnFeeOnSelling;
    }

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

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

    // base function to transfer tokens
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Token: transfer from the zero address");
        require(to != address(0), "Token: transfer to the zero address");
        require(amount > 0, "Token: transfer amount must be greater than zero");
        
        // swap and liquify
        swapAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any _account belongs to _isExcludedFromFee _account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || !Fees) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        // buying handler
        require(!isSniper[sender], "Sniper detected");
        require(!isSniper[recipient], "Sniper detected");
        require(!antiBotStopEnabled, "Trading shifted for bot deletion.");

        if(!_isExcludedFromMinBuyLimit[recipient]){
            require(amount <= minBuyLimit,"Amount must be greater than minimum buy Limit" );
        }
        if (sender == dexPair && takeFee) {
            setBuyFee();
        }
        // selling handler
        else if (recipient == dexPair && takeFee) {
            setSellFee();
        }
        // normal transaction handler
        else {
            removeAllFee();
        }

        // check if sender or reciver excluded from reward then do transfer accordingly
        if (
            _isExcludedFromReward[sender] && !_isExcludedFromReward[recipient]
        ) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (
            !_isExcludedFromReward[sender] && _isExcludedFromReward[recipient]
        ) {
            _transferToExcluded(sender, recipient, amount);
        } else if (
            _isExcludedFromReward[sender] && _isExcludedFromReward[recipient]
        ) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    // if both sender and receiver are not excluded from reward
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(
            totalFeePerTx(tAmount).mul(currentRate)
        );
        _checkMaxWalletAmount(recipient, tTransferAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(sender,tAmount, currentRate);
        _takeBurnFee(sender,tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    // if sender is excluded from reward
    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(
            totalFeePerTx(tAmount).mul(currentRate)
        );
        _checkMaxWalletAmount(recipient, tTransferAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        excludedTSupply = excludedTSupply.sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(sender,tAmount, currentRate);
        _takeBurnFee(sender,tAmount, currentRate);
        _reflectFee(tAmount);

        emit Transfer(sender, recipient, tTransferAmount);
    }

    // if both sender and receiver are excluded from reward
    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        _checkMaxWalletAmount(recipient, tTransferAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        excludedTSupply = excludedTSupply.sub(tAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        excludedTSupply = excludedTSupply.add(tAmount);
        _takeAllFee(sender,tAmount, currentRate);
        _takeBurnFee(sender,tAmount, currentRate);
        _reflectFee(tAmount);

        emit Transfer(sender, recipient, tTransferAmount);
    }

    // if receiver is excluded from reward
    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        _checkMaxWalletAmount(recipient, tTransferAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        excludedTSupply = excludedTSupply.add(tAmount);
        _takeAllFee(sender,tAmount, currentRate);
        _takeBurnFee(sender,tAmount, currentRate);
        _reflectFee(tAmount);

        emit Transfer(sender, recipient, tTransferAmount);
    }

    // for automatic redistribution among all holders on each tx
    function _reflectFee(uint256 tAmount) private {
        uint256 tFee = tAmount.mul(_currentReflectionFee).div(1e3);
        uint256 rFee = tFee.mul(_getRate());
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

     // take fees for liquidity, market/dev
    function _takeAllFee(address sender,uint256 tAmount, uint256 currentRate) internal {
        uint256 tFee = tAmount
            .mul(_currentLiquidityFee.add(_currentmarketWalletFee))
            .div(1e3);

        if (tFee > 0) {
            _accumulatedLiquidity = _accumulatedLiquidity.add(
                tAmount.mul(_currentLiquidityFee).div(1e3)
            );
            _accumulatedMarketWallet = _accumulatedMarketWallet.add(
                tAmount.mul(_currentmarketWalletFee).div(1e3)
            );

            uint256 rFee = tFee.mul(currentRate);
            if (_isExcludedFromReward[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tFee);
            else _rOwned[address(this)] = _rOwned[address(this)].add(rFee);

            emit Transfer(sender, address(this), tFee);
        }
    }
   function _takeBurnFee(address sender,uint256 tAmount, uint256 currentRate) internal {
        uint256 burnFee = tAmount.mul(_currentBurnFee).div(1e3);
        uint256 rBurnFee = burnFee.mul(currentRate);
        _rOwned[burnAddress] = _rOwned[burnAddress].add(rBurnFee);

        emit Transfer(sender, burnAddress, burnFee);
    }

    
    function swapAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            swapAndLiquifyEnabled &&
            !(from == address(this) && to == address(dexPair)) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), contractTokenBalance);

            uint256 halfLiquid = _accumulatedLiquidity.div(2);
            uint256 otherHalfLiquid = _accumulatedLiquidity.sub(halfLiquid);

            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherHalfLiquid
            );

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), tokenAmountToBeSwapped);

            uint256 deltaBalance = address(this).balance;
            uint256 ethToBeAddedToLiquidity = deltaBalance.mul(halfLiquid).div(tokenAmountToBeSwapped);
            uint256 ethFormarketWallet = deltaBalance.sub(ethToBeAddedToLiquidity);  

            // sending eth to award pool wallet
            if(ethFormarketWallet > 0)
                marketWallet.transfer(ethFormarketWallet); 

            // add liquidity to Dex
            if(ethToBeAddedToLiquidity > 0){
                Utils.addLiquidity(
                    address(dexRouter),
                    owner(),
                    otherHalfLiquid,
                    ethToBeAddedToLiquidity
                );

                emit SwapAndLiquify(
                    halfLiquid,
                    ethToBeAddedToLiquidity,
                    otherHalfLiquid
                );
            }

            // Reset current accumulated amount
            _accumulatedLiquidity = 0; 
            _accumulatedMarketWallet = 0;
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of eth
            path,
            address(this),
            block.timestamp + 300
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_marketWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AntiBotStopEnableUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotStopEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"enableOrDisableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromMaxHoldLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromMaxTxnLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMaxHoldLimitValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWalletFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWalletFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_redistributionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketWalletFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_redistributionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketWalletFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newAddress","type":"address"}],"name":"setmarketWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHolderDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006009819055620000219060001962000525565b6200002f9060001962000548565b600a90815560408051808201909152818152694d696b61776120496e7560b01b60209091019081526200006691600c91906200047f565b50604080518082019091526006808252654d494b41574160d01b60209092019182526200009691600d916200047f565b50600e805460ff19166009179055601180546001600160a01b03191661dead179055670de0b6b3a76400006012556801158e460913d000006013819055601490815560178054630100010163ffffffff1990911617905560006018819055601e60198190556064601a819055601b849055601c92909255601d81905555601f553480156200012357600080fd5b506040516200315038038062003150833981016040819052620001469162000587565b62000151336200042f565b600a54600160006200016b6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355601080546001600160a01b03191693851693909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a0155926004808401938290030181865afa158015620001f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000217919062000587565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028b919062000587565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ff919062000587565b600f80546001600160a01b0319166001600160a01b03928316178155600e8054610100600160a81b031916610100858516021790556000805483168152600460209081526040808320805460ff199081166001908117909255308086528386208054831684179055855488168652600685528386208054831684179055855282852080548216831790558554871685528285208054821683179055601154871685528285208054821683179055845487168552600790935281842080548416821790559354851683528220805490911690921790915554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200041f91815260200190565b60405180910390a35050620005eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200048d90620005ae565b90600052602060002090601f016020900481019282620004b15760008555620004fc565b82601f10620004cc57805160ff1916838001178555620004fc565b82800160010185558215620004fc579182015b82811115620004fc578251825591602001919060010190620004df565b506200050a9291506200050e565b5090565b5b808211156200050a57600081556001016200050f565b6000826200054357634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200056957634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146200058457600080fd5b50565b6000602082840312156200059a57600080fd5b8151620005a7816200056e565b9392505050565b600181811c90821680620005c357607f821691505b60208210811415620005e557634e487b7160e01b600052602260045260246000fd5b50919050565b612b5580620005fb6000396000f3fe60806040526004361061031c5760003560e01c80637584817c116101ab578063afee32a9116100f7578063e4440a8611610095578063f097ea1a1161006f578063f097ea1a14610985578063f242ab41146109a5578063f2fde38b146109c5578063fe1a7111146109e557600080fd5b8063e4440a861461092f578063e6c84dc61461094f578063ea5b9e851461096557600080fd5b8063cb5c474c116100d1578063cb5c474c1461089d578063ce261d10146108b3578063dd073829146108d3578063dd62ed3e146108e957600080fd5b8063afee32a914610847578063b81df74214610867578063bded89fb1461087d57600080fd5b80639285c1ca116101645780639d3feb9a1161013e5780639d3feb9a146107d15780639d854b63146107e7578063a457c2d714610807578063a9059cbb1461082757600080fd5b80639285c1ca1461077c57806395d89b411461079c57806399b77032146107b157600080fd5b80637584817c146106a0578063775a1f6c146106d957806388f82020146106ef57806389f5649e1461072857806389f9a1d3146107485780638da5cb5b1461075e57600080fd5b8063395093511161026a5780635249a820116102235780636d268267116101fd5780636d2682671461063557806370a082311461064b57806370d5ae051461066b578063715018a61461068b57600080fd5b80635249a820146105bc5780635342acb4146105dc5780635e9416fc1461061557600080fd5b8063395093511461050e5780633aaa36e61461052e5780633bd5d1731461054d5780634549b0391461056d5780634a74bb021461058d57806350a64fcd146105a757600080fd5b8063172fdc23116102d757806323b872dd116102b157806323b872dd146104965780632d838119146104b6578063313ce567146104d65780633326d7f2146104f857600080fd5b8063172fdc231461044957806318160ddd1461046b5780631884f1e61461048057600080fd5b8062281dc1146103285780629cb0e91461035157806306fdde031461039a5780630758d924146103bc578063095ea7b3146103f95780630f3a325f1461041957600080fd5b3661032357005b600080fd5b34801561033457600080fd5b5061033e601c5481565b6040519081526020015b60405180910390f35b34801561035d57600080fd5b5061038a61036c366004612682565b6001600160a01b031660009081526006602052604090205460ff1690565b6040519015158152602001610348565b3480156103a657600080fd5b506103af610a06565b604051610348919061269f565b3480156103c857600080fd5b50600e546103e19061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610348565b34801561040557600080fd5b5061038a6104143660046126f4565b610a98565b34801561042557600080fd5b5061038a610434366004612682565b60086020526000908152604090205460ff1681565b34801561045557600080fd5b5061046961046436600461272e565b610aaf565b005b34801561047757600080fd5b5060095461033e565b34801561048c57600080fd5b5061033e60125481565b3480156104a257600080fd5b5061038a6104b136600461274b565b610b29565b3480156104c257600080fd5b5061033e6104d136600461278c565b610c2b565b3480156104e257600080fd5b50600e5460405160ff9091168152602001610348565b34801561050457600080fd5b5061033e60195481565b34801561051a57600080fd5b5061038a6105293660046126f4565b610cb6565b34801561053a57600080fd5b5060175461038a90610100900460ff1681565b34801561055957600080fd5b5061046961056836600461278c565b610cec565b34801561057957600080fd5b5061033e6105883660046127a5565b610de0565b34801561059957600080fd5b5060175461038a9060ff1681565b3480156105b357600080fd5b50600b5461033e565b3480156105c857600080fd5b506104696105d7366004612682565b610ea4565b3480156105e857600080fd5b5061038a6105f7366004612682565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062157600080fd5b506104696106303660046127d5565b610ef0565b34801561064157600080fd5b5061033e601b5481565b34801561065757600080fd5b5061033e610666366004612682565b610f45565b34801561067757600080fd5b506011546103e1906001600160a01b031681565b34801561069757600080fd5b50610469610fa4565b3480156106ac57600080fd5b5061038a6106bb366004612682565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106e557600080fd5b5061033e601e5481565b3480156106fb57600080fd5b5061038a61070a366004612682565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561073457600080fd5b506104696107433660046127d5565b610fda565b34801561075457600080fd5b5061033e60135481565b34801561076a57600080fd5b506000546001600160a01b03166103e1565b34801561078857600080fd5b5060175461038a9062010000900460ff1681565b3480156107a857600080fd5b506103af61102f565b3480156107bd57600080fd5b506104696107cc36600461278c565b61103e565b3480156107dd57600080fd5b5061033e601f5481565b3480156107f357600080fd5b50610469610802366004612803565b61106d565b34801561081357600080fd5b5061038a6108223660046126f4565b6110ab565b34801561083357600080fd5b5061038a6108423660046126f4565b6110fa565b34801561085357600080fd5b50610469610862366004612803565b611107565b34801561087357600080fd5b5061033e60145481565b34801561088957600080fd5b5061046961089836600461278c565b611145565b3480156108a957600080fd5b5061033e601a5481565b3480156108bf57600080fd5b506104696108ce3660046126f4565b611174565b3480156108df57600080fd5b5061033e60185481565b3480156108f557600080fd5b5061033e610904366004612835565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561093b57600080fd5b506010546103e1906001600160a01b031681565b34801561095b57600080fd5b5061033e601d5481565b34801561097157600080fd5b506104696109803660046127d5565b611235565b34801561099157600080fd5b506104696109a036600461278c565b61128a565b3480156109b157600080fd5b50600f546103e1906001600160a01b031681565b3480156109d157600080fd5b506104696109e0366004612682565b6112b9565b3480156109f157600080fd5b5060175461038a906301000000900460ff1681565b6060600c8054610a1590612863565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4190612863565b8015610a8e5780601f10610a6357610100808354040283529160200191610a8e565b820191906000526020600020905b815481529060010190602001808311610a7157829003601f168201915b5050505050905090565b6000610aa5338484611354565b5060015b92915050565b6000546001600160a01b03163314610ae25760405162461bcd60e51b8152600401610ad99061289e565b60405180910390fd5b6017805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6001600160a01b03831660009081526008602052604081205460ff1615610b625760405162461bcd60e51b8152600401610ad9906128d3565b6001600160a01b03831660009081526008602052604090205460ff1615610b9b5760405162461bcd60e51b8152600401610ad9906128d3565b60175462010000900460ff1615610bc45760405162461bcd60e51b8152600401610ad9906128fc565b610bcf848484611478565b610c218433610c1c85604051806060016040528060288152602001612af8602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611621565b611354565b5060019392505050565b6000600a54821115610c995760405162461bcd60e51b815260206004820152603160248201527f546f6b656e3a20416d6f756e74206d757374206265206c657373207468616e20604482015270746f74616c207265666c656374696f6e7360781b6064820152608401610ad9565b6000610ca361165b565b9050610caf838261167e565b9392505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610aa5918590610c1c90866116c0565b3360008181526005602052604090205460ff1615610d685760405162461bcd60e51b815260206004820152603360248201527f546f6b656e3a204578636c75646564206164647265737365732063616e6e6f746044820152721031b0b636103a3434b990333ab731ba34b7b760691b6064820152608401610ad9565b6000610d7c610d7561165b565b849061171f565b6001600160a01b038316600090815260016020526040902054909150610da2908261179e565b6001600160a01b038316600090815260016020526040902055600a54610dc8908261179e565b600a55600b54610dd890846116c0565b600b55505050565b6000600954831115610e435760405162461bcd60e51b815260206004820152602660248201527f42455032303a20416d6f756e74206d757374206265206c657373207468616e20604482015265737570706c7960d01b6064820152608401610ad9565b81610e65576000610e5c610e5561165b565b859061171f565b9150610aa99050565b6000610e72610e5561165b565b90506000610e9a610e93610e8461165b565b610e8d886117e0565b9061171f565b839061179e565b9250610aa9915050565b6000546001600160a01b03163314610ece5760405162461bcd60e51b8152600401610ad99061289e565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f1a5760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f8257506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610aa990610c2b565b6000546001600160a01b03163314610fce5760405162461bcd60e51b8152600401610ad99061289e565b610fd86000611828565b565b6000546001600160a01b031633146110045760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6060600d8054610a1590612863565b6000546001600160a01b031633146110685760405162461bcd60e51b8152600401610ad99061289e565b601455565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610ad99061289e565b601c93909355601d91909155601e55601f55565b6000610aa53384610c1c85604051806060016040528060258152602001612ab3602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611621565b6000610aa5338484611478565b6000546001600160a01b031633146111315760405162461bcd60e51b8152600401610ad99061289e565b601893909355601991909155601a55601b55565b6000546001600160a01b0316331461116f5760405162461bcd60e51b8152600401610ad99061289e565b601355565b6000546001600160a01b0316331461119e5760405162461bcd60e51b8152600401610ad99061289e565b816001600160a01b031663a9059cbb6111bf6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611230919061293d565b505050565b6000546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112b45760405162461bcd60e51b8152600401610ad99061289e565b601255565b6000546001600160a01b031633146112e35760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b0381166113485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad9565b61135181611828565b50565b6001600160a01b0383166113b65760405162461bcd60e51b8152602060048201526024808201527f546f6b656e3a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad9565b6001600160a01b0382166114175760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114dc5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad9565b6001600160a01b03821661153e5760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad9565b600081116115a75760405162461bcd60e51b815260206004820152603060248201527f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610ad9565b6115b18383611878565b6001600160a01b03831660009081526004602052604090205460019060ff16806115f357506001600160a01b03831660009081526004602052604090205460ff165b806116065750601754610100900460ff16155b1561160f575060005b61161b84848484611a4c565b50505050565b600081848411156116455760405162461bcd60e51b8152600401610ad9919061269f565b5060006116528486612970565b95945050505050565b6000806000611668611d07565b9092509050611677828261167e565b9250505090565b6000610caf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d72565b6000806116cd8385612987565b905083811015610caf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad9565b60008261172e57506000610aa9565b600061173a838561299f565b90508261174785836129be565b14610caf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad9565b6000610caf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611621565b600080610caf6103e861182261181b6118066023546022546116c090919063ffffffff16565b602154602054611815916116c0565b906116c0565b869061171f565b9061167e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061188330610f45565b601254909150811080159081906118a85750600f546001600160a01b03858116911614155b80156118b6575060175460ff165b80156118e457506001600160a01b038416301480156118e25750600f546001600160a01b038481169116145b155b1561161b57600e5461190690309061010090046001600160a01b031684611354565b60245460009061191790600261167e565b905060006119308260245461179e90919063ffffffff16565b9050600061193e858361179e565b600e5490915061195c9061010090046001600160a01b031682611da0565b47600061196d83611822848861171f565b9050600061197b838361179e565b905080156119bf576010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156119bd573d6000803e3d6000fd5b505b8115611a3657600e546119f4906001600160a01b03610100909104166119ed6000546001600160a01b031690565b8785611ef4565b60408051878152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050600060248190556025555050505050505050565b6001600160a01b03841660009081526008602052604090205460ff1615611a855760405162461bcd60e51b8152600401610ad9906128d3565b6001600160a01b03831660009081526008602052604090205460ff1615611abe5760405162461bcd60e51b8152600401610ad9906128d3565b60175462010000900460ff1615611ae75760405162461bcd60e51b8152600401610ad9906128fc565b6001600160a01b03831660009081526007602052604090205460ff16611b6f57601454821115611b6f5760405162461bcd60e51b815260206004820152602d60248201527f416d6f756e74206d7573742062652067726561746572207468616e206d696e6960448201526c1b5d5b48189d5e48131a5b5a5d609a1b6064820152608401610ad9565b600f546001600160a01b038581169116148015611b895750805b15611bb057611bab601854602055601954602155601a54602255601b54602355565b611c05565b600f546001600160a01b038481169116148015611bca5750805b15611bec57611bab601c54602055601d54602155601e54602255601f54602355565b611c056000602081905560218190556022819055602355565b6001600160a01b03841660009081526005602052604090205460ff168015611c4657506001600160a01b03831660009081526005602052604090205460ff16155b15611c5b57611c56848484611fa9565b61161b565b6001600160a01b03841660009081526005602052604090205460ff16158015611c9c57506001600160a01b03831660009081526005602052604090205460ff165b15611cac57611c568484846120e3565b6001600160a01b03841660009081526005602052604090205460ff168015611cec57506001600160a01b03831660009081526005602052604090205460ff165b15611cfc57611c568484846121fb565b61161b84848461231a565b600a5460095460165460009283929091611d2290839061179e565b9150611d396015548261179e90919063ffffffff16565b9050611d52600954600a5461167e90919063ffffffff16565b821015611d6957600a546009549350935050509091565b90939092509050565b60008183611d935760405162461bcd60e51b8152600401610ad9919061269f565b50600061165284866129be565b604080516002808252606082018352849260009291906020830190803683370190505090503081600081518110611dd957611dd96129e0565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b91906129f6565b81600181518110611e6e57611e6e6129e0565b6001600160a01b039283166020918202929092010152821663791ac9478460008430611e9c4261012c612987565b6040518663ffffffff1660e01b8152600401611ebc959493929190612a13565b600060405180830381600087803b158015611ed657600080fd5b505af1158015611eea573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a611f174261012c612987565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015611f84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eea9190612a84565b6000611fb361165b565b90506000611fca611fc3846117e0565b849061179e565b90506000611fd8848461171f565b90506000611fec610e9385610e8d886117e0565b9050611ff886846123b4565b6001600160a01b03871660009081526002602052604090205461201b908661179e565b6001600160a01b038816600090815260026020526040902055601554612041908661179e565b6015556001600160a01b03861660009081526001602052604090205461206790826116c0565b6001600160a01b03871660009081526001602052604090205561208b878686612457565b61209687868661257d565b61209f8561261a565b856001600160a01b0316876001600160a01b0316600080516020612ad8833981519152856040516120d291815260200190565b60405180910390a350505050505050565b60006120ed61165b565b905060006120fd611fc3846117e0565b9050600061210b848461171f565b905061211785836123b4565b6001600160a01b03861660009081526001602052604090205461213a908261179e565b6001600160a01b0380881660009081526001602090815260408083209490945591881681526002909152205461217090836116c0565b6001600160a01b03861660009081526002602052604090205560155461219690856116c0565b6015556121a4868585612457565b6121af86858561257d565b6121b88461261a565b846001600160a01b0316866001600160a01b0316600080516020612ad8833981519152846040516121eb91815260200190565b60405180910390a3505050505050565b600061220561165b565b90506000612215611fc3846117e0565b905061222184826123b4565b6001600160a01b038516600090815260026020526040902054612244908461179e565b6001600160a01b03861660009081526002602052604090205560155461226a908461179e565b6015556001600160a01b03841660009081526002602052604090205461229090826116c0565b6001600160a01b0385166000908152600260205260409020556015546122b690846116c0565b6015556122c4858484612457565b6122cf85848461257d565b6122d88361261a565b836001600160a01b0316856001600160a01b0316600080516020612ad88339815191528360405161230b91815260200190565b60405180910390a35050505050565b600061232461165b565b90506000612334611fc3846117e0565b90506000612342848461171f565b90506000612356610e9385610e8d886117e0565b905061236286846123b4565b6001600160a01b038716600090815260016020526040902054612385908361179e565b6001600160a01b03808916600090815260016020526040808220939093559088168152205461206790826116c0565b6001600160a01b03821660009081526006602052604090205460ff16612453576017546301000000900460ff1615612453576013546123f68261181585610f45565b11156124535760405162461bcd60e51b815260206004820152602660248201527f42455032303a20616d6f756e7420657863656564206d617820686f6c64696e67604482015265081b1a5b5a5d60d21b6064820152608401610ad9565b5050565b60006124796103e861182261181b6022546021546116c090919063ffffffff16565b9050801561161b576124a861249f6103e86118226021548761171f90919063ffffffff16565b602454906116c0565b6024556022546124ce906124c5906103e89061182290879061171f565b602554906116c0565b60255560006124dd828461171f565b3060009081526005602052604090205490915060ff1615612527573060009081526002602052604090205461251290836116c0565b30600090815260026020526040902055612552565b3060009081526001602052604090205461254190826116c0565b306000908152600160205260409020555b60405182815230906001600160a01b03871690600080516020612ad88339815191529060200161230b565b600061259a6103e86118226023548661171f90919063ffffffff16565b905060006125a8828461171f565b6011546001600160a01b03166000908152600160205260409020549091506125d090826116c0565b601180546001600160a01b0390811660009081526001602090815260409182902094909455915491518581529181169290881691600080516020612ad8833981519152910161230b565b60006126376103e86118226020548561171f90919063ffffffff16565b9050600061264d61264661165b565b839061171f565b600a5490915061265d908261179e565b600a55600b54610dd890836116c0565b6001600160a01b038116811461135157600080fd5b60006020828403121561269457600080fd5b8135610caf8161266d565b600060208083528351808285015260005b818110156126cc578581018301518582016040015282016126b0565b818111156126de576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561270757600080fd5b82356127128161266d565b946020939093013593505050565b801515811461135157600080fd5b60006020828403121561274057600080fd5b8135610caf81612720565b60008060006060848603121561276057600080fd5b833561276b8161266d565b9250602084013561277b8161266d565b929592945050506040919091013590565b60006020828403121561279e57600080fd5b5035919050565b600080604083850312156127b857600080fd5b8235915060208301356127ca81612720565b809150509250929050565b600080604083850312156127e857600080fd5b82356127f38161266d565b915060208301356127ca81612720565b6000806000806080858703121561281957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561284857600080fd5b82356128538161266d565b915060208301356127ca8161266d565b600181811c9082168061287757607f821691505b6020821081141561289857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600f908201526e14db9a5c195c8819195d1958dd1959608a1b604082015260600190565b60208082526021908201527f54726164696e67207368696674656420666f7220626f742064656c6574696f6e6040820152601760f91b606082015260800190565b60006020828403121561294f57600080fd5b8151610caf81612720565b634e487b7160e01b600052601160045260246000fd5b6000828210156129825761298261295a565b500390565b6000821982111561299a5761299a61295a565b500190565b60008160001904831182151516156129b9576129b961295a565b500290565b6000826129db57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a0857600080fd5b8151610caf8161266d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a635784516001600160a01b031683529383019391830191600101612a3e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a9957600080fd5b835192506020840151915060408401519050925092509256fe546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e7d3572137fb05ab680499c2bab813bb3a7bf875acc0b860a061d408d7da28464736f6c634300080a003300000000000000000000000025685da431efe969e096c47c8dc89e08f0e63e77

Deployed Bytecode

0x60806040526004361061031c5760003560e01c80637584817c116101ab578063afee32a9116100f7578063e4440a8611610095578063f097ea1a1161006f578063f097ea1a14610985578063f242ab41146109a5578063f2fde38b146109c5578063fe1a7111146109e557600080fd5b8063e4440a861461092f578063e6c84dc61461094f578063ea5b9e851461096557600080fd5b8063cb5c474c116100d1578063cb5c474c1461089d578063ce261d10146108b3578063dd073829146108d3578063dd62ed3e146108e957600080fd5b8063afee32a914610847578063b81df74214610867578063bded89fb1461087d57600080fd5b80639285c1ca116101645780639d3feb9a1161013e5780639d3feb9a146107d15780639d854b63146107e7578063a457c2d714610807578063a9059cbb1461082757600080fd5b80639285c1ca1461077c57806395d89b411461079c57806399b77032146107b157600080fd5b80637584817c146106a0578063775a1f6c146106d957806388f82020146106ef57806389f5649e1461072857806389f9a1d3146107485780638da5cb5b1461075e57600080fd5b8063395093511161026a5780635249a820116102235780636d268267116101fd5780636d2682671461063557806370a082311461064b57806370d5ae051461066b578063715018a61461068b57600080fd5b80635249a820146105bc5780635342acb4146105dc5780635e9416fc1461061557600080fd5b8063395093511461050e5780633aaa36e61461052e5780633bd5d1731461054d5780634549b0391461056d5780634a74bb021461058d57806350a64fcd146105a757600080fd5b8063172fdc23116102d757806323b872dd116102b157806323b872dd146104965780632d838119146104b6578063313ce567146104d65780633326d7f2146104f857600080fd5b8063172fdc231461044957806318160ddd1461046b5780631884f1e61461048057600080fd5b8062281dc1146103285780629cb0e91461035157806306fdde031461039a5780630758d924146103bc578063095ea7b3146103f95780630f3a325f1461041957600080fd5b3661032357005b600080fd5b34801561033457600080fd5b5061033e601c5481565b6040519081526020015b60405180910390f35b34801561035d57600080fd5b5061038a61036c366004612682565b6001600160a01b031660009081526006602052604090205460ff1690565b6040519015158152602001610348565b3480156103a657600080fd5b506103af610a06565b604051610348919061269f565b3480156103c857600080fd5b50600e546103e19061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610348565b34801561040557600080fd5b5061038a6104143660046126f4565b610a98565b34801561042557600080fd5b5061038a610434366004612682565b60086020526000908152604090205460ff1681565b34801561045557600080fd5b5061046961046436600461272e565b610aaf565b005b34801561047757600080fd5b5060095461033e565b34801561048c57600080fd5b5061033e60125481565b3480156104a257600080fd5b5061038a6104b136600461274b565b610b29565b3480156104c257600080fd5b5061033e6104d136600461278c565b610c2b565b3480156104e257600080fd5b50600e5460405160ff9091168152602001610348565b34801561050457600080fd5b5061033e60195481565b34801561051a57600080fd5b5061038a6105293660046126f4565b610cb6565b34801561053a57600080fd5b5060175461038a90610100900460ff1681565b34801561055957600080fd5b5061046961056836600461278c565b610cec565b34801561057957600080fd5b5061033e6105883660046127a5565b610de0565b34801561059957600080fd5b5060175461038a9060ff1681565b3480156105b357600080fd5b50600b5461033e565b3480156105c857600080fd5b506104696105d7366004612682565b610ea4565b3480156105e857600080fd5b5061038a6105f7366004612682565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062157600080fd5b506104696106303660046127d5565b610ef0565b34801561064157600080fd5b5061033e601b5481565b34801561065757600080fd5b5061033e610666366004612682565b610f45565b34801561067757600080fd5b506011546103e1906001600160a01b031681565b34801561069757600080fd5b50610469610fa4565b3480156106ac57600080fd5b5061038a6106bb366004612682565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106e557600080fd5b5061033e601e5481565b3480156106fb57600080fd5b5061038a61070a366004612682565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561073457600080fd5b506104696107433660046127d5565b610fda565b34801561075457600080fd5b5061033e60135481565b34801561076a57600080fd5b506000546001600160a01b03166103e1565b34801561078857600080fd5b5060175461038a9062010000900460ff1681565b3480156107a857600080fd5b506103af61102f565b3480156107bd57600080fd5b506104696107cc36600461278c565b61103e565b3480156107dd57600080fd5b5061033e601f5481565b3480156107f357600080fd5b50610469610802366004612803565b61106d565b34801561081357600080fd5b5061038a6108223660046126f4565b6110ab565b34801561083357600080fd5b5061038a6108423660046126f4565b6110fa565b34801561085357600080fd5b50610469610862366004612803565b611107565b34801561087357600080fd5b5061033e60145481565b34801561088957600080fd5b5061046961089836600461278c565b611145565b3480156108a957600080fd5b5061033e601a5481565b3480156108bf57600080fd5b506104696108ce3660046126f4565b611174565b3480156108df57600080fd5b5061033e60185481565b3480156108f557600080fd5b5061033e610904366004612835565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561093b57600080fd5b506010546103e1906001600160a01b031681565b34801561095b57600080fd5b5061033e601d5481565b34801561097157600080fd5b506104696109803660046127d5565b611235565b34801561099157600080fd5b506104696109a036600461278c565b61128a565b3480156109b157600080fd5b50600f546103e1906001600160a01b031681565b3480156109d157600080fd5b506104696109e0366004612682565b6112b9565b3480156109f157600080fd5b5060175461038a906301000000900460ff1681565b6060600c8054610a1590612863565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4190612863565b8015610a8e5780601f10610a6357610100808354040283529160200191610a8e565b820191906000526020600020905b815481529060010190602001808311610a7157829003601f168201915b5050505050905090565b6000610aa5338484611354565b5060015b92915050565b6000546001600160a01b03163314610ae25760405162461bcd60e51b8152600401610ad99061289e565b60405180910390fd5b6017805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6001600160a01b03831660009081526008602052604081205460ff1615610b625760405162461bcd60e51b8152600401610ad9906128d3565b6001600160a01b03831660009081526008602052604090205460ff1615610b9b5760405162461bcd60e51b8152600401610ad9906128d3565b60175462010000900460ff1615610bc45760405162461bcd60e51b8152600401610ad9906128fc565b610bcf848484611478565b610c218433610c1c85604051806060016040528060288152602001612af8602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611621565b611354565b5060019392505050565b6000600a54821115610c995760405162461bcd60e51b815260206004820152603160248201527f546f6b656e3a20416d6f756e74206d757374206265206c657373207468616e20604482015270746f74616c207265666c656374696f6e7360781b6064820152608401610ad9565b6000610ca361165b565b9050610caf838261167e565b9392505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610aa5918590610c1c90866116c0565b3360008181526005602052604090205460ff1615610d685760405162461bcd60e51b815260206004820152603360248201527f546f6b656e3a204578636c75646564206164647265737365732063616e6e6f746044820152721031b0b636103a3434b990333ab731ba34b7b760691b6064820152608401610ad9565b6000610d7c610d7561165b565b849061171f565b6001600160a01b038316600090815260016020526040902054909150610da2908261179e565b6001600160a01b038316600090815260016020526040902055600a54610dc8908261179e565b600a55600b54610dd890846116c0565b600b55505050565b6000600954831115610e435760405162461bcd60e51b815260206004820152602660248201527f42455032303a20416d6f756e74206d757374206265206c657373207468616e20604482015265737570706c7960d01b6064820152608401610ad9565b81610e65576000610e5c610e5561165b565b859061171f565b9150610aa99050565b6000610e72610e5561165b565b90506000610e9a610e93610e8461165b565b610e8d886117e0565b9061171f565b839061179e565b9250610aa9915050565b6000546001600160a01b03163314610ece5760405162461bcd60e51b8152600401610ad99061289e565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f1a5760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f8257506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610aa990610c2b565b6000546001600160a01b03163314610fce5760405162461bcd60e51b8152600401610ad99061289e565b610fd86000611828565b565b6000546001600160a01b031633146110045760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6060600d8054610a1590612863565b6000546001600160a01b031633146110685760405162461bcd60e51b8152600401610ad99061289e565b601455565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610ad99061289e565b601c93909355601d91909155601e55601f55565b6000610aa53384610c1c85604051806060016040528060258152602001612ab3602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611621565b6000610aa5338484611478565b6000546001600160a01b031633146111315760405162461bcd60e51b8152600401610ad99061289e565b601893909355601991909155601a55601b55565b6000546001600160a01b0316331461116f5760405162461bcd60e51b8152600401610ad99061289e565b601355565b6000546001600160a01b0316331461119e5760405162461bcd60e51b8152600401610ad99061289e565b816001600160a01b031663a9059cbb6111bf6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611230919061293d565b505050565b6000546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112b45760405162461bcd60e51b8152600401610ad99061289e565b601255565b6000546001600160a01b031633146112e35760405162461bcd60e51b8152600401610ad99061289e565b6001600160a01b0381166113485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad9565b61135181611828565b50565b6001600160a01b0383166113b65760405162461bcd60e51b8152602060048201526024808201527f546f6b656e3a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad9565b6001600160a01b0382166114175760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114dc5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad9565b6001600160a01b03821661153e5760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad9565b600081116115a75760405162461bcd60e51b815260206004820152603060248201527f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610ad9565b6115b18383611878565b6001600160a01b03831660009081526004602052604090205460019060ff16806115f357506001600160a01b03831660009081526004602052604090205460ff165b806116065750601754610100900460ff16155b1561160f575060005b61161b84848484611a4c565b50505050565b600081848411156116455760405162461bcd60e51b8152600401610ad9919061269f565b5060006116528486612970565b95945050505050565b6000806000611668611d07565b9092509050611677828261167e565b9250505090565b6000610caf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d72565b6000806116cd8385612987565b905083811015610caf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad9565b60008261172e57506000610aa9565b600061173a838561299f565b90508261174785836129be565b14610caf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad9565b6000610caf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611621565b600080610caf6103e861182261181b6118066023546022546116c090919063ffffffff16565b602154602054611815916116c0565b906116c0565b869061171f565b9061167e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061188330610f45565b601254909150811080159081906118a85750600f546001600160a01b03858116911614155b80156118b6575060175460ff165b80156118e457506001600160a01b038416301480156118e25750600f546001600160a01b038481169116145b155b1561161b57600e5461190690309061010090046001600160a01b031684611354565b60245460009061191790600261167e565b905060006119308260245461179e90919063ffffffff16565b9050600061193e858361179e565b600e5490915061195c9061010090046001600160a01b031682611da0565b47600061196d83611822848861171f565b9050600061197b838361179e565b905080156119bf576010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156119bd573d6000803e3d6000fd5b505b8115611a3657600e546119f4906001600160a01b03610100909104166119ed6000546001600160a01b031690565b8785611ef4565b60408051878152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050600060248190556025555050505050505050565b6001600160a01b03841660009081526008602052604090205460ff1615611a855760405162461bcd60e51b8152600401610ad9906128d3565b6001600160a01b03831660009081526008602052604090205460ff1615611abe5760405162461bcd60e51b8152600401610ad9906128d3565b60175462010000900460ff1615611ae75760405162461bcd60e51b8152600401610ad9906128fc565b6001600160a01b03831660009081526007602052604090205460ff16611b6f57601454821115611b6f5760405162461bcd60e51b815260206004820152602d60248201527f416d6f756e74206d7573742062652067726561746572207468616e206d696e6960448201526c1b5d5b48189d5e48131a5b5a5d609a1b6064820152608401610ad9565b600f546001600160a01b038581169116148015611b895750805b15611bb057611bab601854602055601954602155601a54602255601b54602355565b611c05565b600f546001600160a01b038481169116148015611bca5750805b15611bec57611bab601c54602055601d54602155601e54602255601f54602355565b611c056000602081905560218190556022819055602355565b6001600160a01b03841660009081526005602052604090205460ff168015611c4657506001600160a01b03831660009081526005602052604090205460ff16155b15611c5b57611c56848484611fa9565b61161b565b6001600160a01b03841660009081526005602052604090205460ff16158015611c9c57506001600160a01b03831660009081526005602052604090205460ff165b15611cac57611c568484846120e3565b6001600160a01b03841660009081526005602052604090205460ff168015611cec57506001600160a01b03831660009081526005602052604090205460ff165b15611cfc57611c568484846121fb565b61161b84848461231a565b600a5460095460165460009283929091611d2290839061179e565b9150611d396015548261179e90919063ffffffff16565b9050611d52600954600a5461167e90919063ffffffff16565b821015611d6957600a546009549350935050509091565b90939092509050565b60008183611d935760405162461bcd60e51b8152600401610ad9919061269f565b50600061165284866129be565b604080516002808252606082018352849260009291906020830190803683370190505090503081600081518110611dd957611dd96129e0565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b91906129f6565b81600181518110611e6e57611e6e6129e0565b6001600160a01b039283166020918202929092010152821663791ac9478460008430611e9c4261012c612987565b6040518663ffffffff1660e01b8152600401611ebc959493929190612a13565b600060405180830381600087803b158015611ed657600080fd5b505af1158015611eea573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a611f174261012c612987565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015611f84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eea9190612a84565b6000611fb361165b565b90506000611fca611fc3846117e0565b849061179e565b90506000611fd8848461171f565b90506000611fec610e9385610e8d886117e0565b9050611ff886846123b4565b6001600160a01b03871660009081526002602052604090205461201b908661179e565b6001600160a01b038816600090815260026020526040902055601554612041908661179e565b6015556001600160a01b03861660009081526001602052604090205461206790826116c0565b6001600160a01b03871660009081526001602052604090205561208b878686612457565b61209687868661257d565b61209f8561261a565b856001600160a01b0316876001600160a01b0316600080516020612ad8833981519152856040516120d291815260200190565b60405180910390a350505050505050565b60006120ed61165b565b905060006120fd611fc3846117e0565b9050600061210b848461171f565b905061211785836123b4565b6001600160a01b03861660009081526001602052604090205461213a908261179e565b6001600160a01b0380881660009081526001602090815260408083209490945591881681526002909152205461217090836116c0565b6001600160a01b03861660009081526002602052604090205560155461219690856116c0565b6015556121a4868585612457565b6121af86858561257d565b6121b88461261a565b846001600160a01b0316866001600160a01b0316600080516020612ad8833981519152846040516121eb91815260200190565b60405180910390a3505050505050565b600061220561165b565b90506000612215611fc3846117e0565b905061222184826123b4565b6001600160a01b038516600090815260026020526040902054612244908461179e565b6001600160a01b03861660009081526002602052604090205560155461226a908461179e565b6015556001600160a01b03841660009081526002602052604090205461229090826116c0565b6001600160a01b0385166000908152600260205260409020556015546122b690846116c0565b6015556122c4858484612457565b6122cf85848461257d565b6122d88361261a565b836001600160a01b0316856001600160a01b0316600080516020612ad88339815191528360405161230b91815260200190565b60405180910390a35050505050565b600061232461165b565b90506000612334611fc3846117e0565b90506000612342848461171f565b90506000612356610e9385610e8d886117e0565b905061236286846123b4565b6001600160a01b038716600090815260016020526040902054612385908361179e565b6001600160a01b03808916600090815260016020526040808220939093559088168152205461206790826116c0565b6001600160a01b03821660009081526006602052604090205460ff16612453576017546301000000900460ff1615612453576013546123f68261181585610f45565b11156124535760405162461bcd60e51b815260206004820152602660248201527f42455032303a20616d6f756e7420657863656564206d617820686f6c64696e67604482015265081b1a5b5a5d60d21b6064820152608401610ad9565b5050565b60006124796103e861182261181b6022546021546116c090919063ffffffff16565b9050801561161b576124a861249f6103e86118226021548761171f90919063ffffffff16565b602454906116c0565b6024556022546124ce906124c5906103e89061182290879061171f565b602554906116c0565b60255560006124dd828461171f565b3060009081526005602052604090205490915060ff1615612527573060009081526002602052604090205461251290836116c0565b30600090815260026020526040902055612552565b3060009081526001602052604090205461254190826116c0565b306000908152600160205260409020555b60405182815230906001600160a01b03871690600080516020612ad88339815191529060200161230b565b600061259a6103e86118226023548661171f90919063ffffffff16565b905060006125a8828461171f565b6011546001600160a01b03166000908152600160205260409020549091506125d090826116c0565b601180546001600160a01b0390811660009081526001602090815260409182902094909455915491518581529181169290881691600080516020612ad8833981519152910161230b565b60006126376103e86118226020548561171f90919063ffffffff16565b9050600061264d61264661165b565b839061171f565b600a5490915061265d908261179e565b600a55600b54610dd890836116c0565b6001600160a01b038116811461135157600080fd5b60006020828403121561269457600080fd5b8135610caf8161266d565b600060208083528351808285015260005b818110156126cc578581018301518582016040015282016126b0565b818111156126de576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561270757600080fd5b82356127128161266d565b946020939093013593505050565b801515811461135157600080fd5b60006020828403121561274057600080fd5b8135610caf81612720565b60008060006060848603121561276057600080fd5b833561276b8161266d565b9250602084013561277b8161266d565b929592945050506040919091013590565b60006020828403121561279e57600080fd5b5035919050565b600080604083850312156127b857600080fd5b8235915060208301356127ca81612720565b809150509250929050565b600080604083850312156127e857600080fd5b82356127f38161266d565b915060208301356127ca81612720565b6000806000806080858703121561281957600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561284857600080fd5b82356128538161266d565b915060208301356127ca8161266d565b600181811c9082168061287757607f821691505b6020821081141561289857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600f908201526e14db9a5c195c8819195d1958dd1959608a1b604082015260600190565b60208082526021908201527f54726164696e67207368696674656420666f7220626f742064656c6574696f6e6040820152601760f91b606082015260800190565b60006020828403121561294f57600080fd5b8151610caf81612720565b634e487b7160e01b600052601160045260246000fd5b6000828210156129825761298261295a565b500390565b6000821982111561299a5761299a61295a565b500190565b60008160001904831182151516156129b9576129b961295a565b500290565b6000826129db57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a0857600080fd5b8151610caf8161266d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a635784516001600160a01b031683529383019391830191600101612a3e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a9957600080fd5b835192506020840151915060408401519050925092509256fe546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e7d3572137fb05ab680499c2bab813bb3a7bf875acc0b860a061d408d7da28464736f6c634300080a0033

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

00000000000000000000000025685da431efe969e096c47c8dc89e08f0e63e77

-----Decoded View---------------
Arg [0] : _marketWallet (address): 0x25685Da431efE969e096C47c8Dc89e08F0e63E77

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000025685da431efe969e096c47c8dc89e08f0e63e77


Deployed Bytecode Sourcemap

5852:24325:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7919:41;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7919:41:0;;;;;;;;13256:176;;;;;;;;;;-1:-1:-1;13256:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;13387:37:0;13358:4;13387:37;;;:27;:37;;;;;;;;;13256:176;;;;749:14:1;;742:22;724:41;;712:2;697:18;13256:176:0;584:187:1;9955:83:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6831:27::-;;;;;;;;;;-1:-1:-1;6831:27:0;;;;;;;-1:-1:-1;;;;;6831:27:0;;;;;;-1:-1:-1;;;;;1560:32:1;;;1542:51;;1530:2;1515:18;6831:27:0;1378:221:1;10997:193:0;;;;;;;;;;-1:-1:-1;10997:193:0;;;;;:::i;:::-;;:::i;6424:40::-;;;;;;;;;;-1:-1:-1;6424:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17559:170;;;;;;;;;;-1:-1:-1;17559:170:0;;;;;:::i;:::-;;:::i;:::-;;10232:95;;;;;;;;;;-1:-1:-1;10312:7:0;;10232:95;;7085:48;;;;;;;;;;;;;;;;11198:639;;;;;;;;;;-1:-1:-1;11198:639:0;;;;;:::i;:::-;;:::i;14767:329::-;;;;;;;;;;-1:-1:-1;14767:329:0;;;;;:::i;:::-;;:::i;10141:83::-;;;;;;;;;;-1:-1:-1;10207:9:0;;10141:83;;10207:9;;;;3081:36:1;;3069:2;3054:18;10141:83:0;2939:184:1;7756:40:0;;;;;;;;;;;;;;;;11845:300;;;;;;;;;;-1:-1:-1;11845:300:0;;;;;:::i;:::-;;:::i;7524:23::-;;;;;;;;;;-1:-1:-1;7524:23:0;;;;;;;;;;;13737:428;;;;;;;;;;-1:-1:-1;13737:428:0;;;;;:::i;:::-;;:::i;14173:586::-;;;;;;;;;;-1:-1:-1;14173:586:0;;;;;:::i;:::-;;:::i;7426:40::-;;;;;;;;;;-1:-1:-1;7426:40:0;;;;;;;;12879:101;;;;;;;;;;-1:-1:-1;12962:10:0;;12879:101;;17777:148;;;;;;;;;;-1:-1:-1;17777:148:0;;;;;:::i;:::-;;:::i;13052:126::-;;;;;;;;;;-1:-1:-1;13052:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;13142:28:0;13118:4;13142:28;;;:18;:28;;;;;;;;;13052:126;15166:176;;;;;;;;;;-1:-1:-1;15166:176:0;;;;;:::i;:::-;;:::i;7854:35::-;;;;;;;;;;;;;;;;10335:253;;;;;;;;;;-1:-1:-1;10335:253:0;;;;;:::i;:::-;;:::i;7003:73::-;;;;;;;;;;-1:-1:-1;7003:73:0;;;;-1:-1:-1;;;;;7003:73:0;;;3187:94;;;;;;;;;;;;;:::i;13508:174::-;;;;;;;;;;-1:-1:-1;13508:174:0;;;;;:::i;:::-;-1:-1:-1;;;;;13638:36:0;13609:4;13638:36;;;:26;:36;;;;;;;;;13508:174;8015:45;;;;;;;;;;;;;;;;12665:132;;;;;;;;;;-1:-1:-1;12665:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12758:31:0;12734:4;12758:31;;;:21;:31;;;;;;;;;12665:132;15412:174;;;;;;;;;;-1:-1:-1;15412:174:0;;;;;:::i;:::-;;:::i;7195:51::-;;;;;;;;;;;;;;;;2878:87;;;;;;;;;;-1:-1:-1;2924:7:0;2951:6;-1:-1:-1;;;;;2951:6:0;2878:87;;7554:38;;;;;;;;;;-1:-1:-1;7554:38:0;;;;;;;;;;;10046:87;;;;;;;;;;;;;:::i;15802:98::-;;;;;;;;;;-1:-1:-1;15802:98:0;;;;;:::i;:::-;;:::i;8067:36::-;;;;;;;;;;;;;;;;16213:386;;;;;;;;;;-1:-1:-1;16213:386:0;;;;;:::i;:::-;;:::i;12153:400::-;;;;;;;;;;-1:-1:-1;12153:400:0;;;;;:::i;:::-;;:::i;10788:199::-;;;;;;;;;;-1:-1:-1;10788:199:0;;;;;:::i;:::-;;:::i;17055:381::-;;;;;;;;;;-1:-1:-1;17055:381:0;;;;;:::i;:::-;;:::i;7253:46::-;;;;;;;;;;;;;;;;15640:108;;;;;;;;;;-1:-1:-1;15640:108:0;;;;;:::i;:::-;;:::i;7803:44::-;;;;;;;;;;;;;;;;15967:160;;;;;;;;;;-1:-1:-1;15967:160:0;;;;;:::i;:::-;;:::i;7709:40::-;;;;;;;;;;;;;;;;10596:184;;;;;;;;;;-1:-1:-1;10596:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;10745:18:0;;;10713:7;10745:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10596:184;6936:35;;;;;;;;;;-1:-1:-1;6936:35:0;;;;-1:-1:-1;;;;;6936:35:0;;;7967:41;;;;;;;;;;;;;;;;16658:160;;;;;;;;;;-1:-1:-1;16658:160:0;;;;;:::i;:::-;;:::i;16870:104::-;;;;;;;;;;-1:-1:-1;16870:104:0;;;;;:::i;:::-;;:::i;6887:22::-;;;;;;;;;;-1:-1:-1;6887:22:0;;;;-1:-1:-1;;;;;6887:22:0;;;3437:229;;;;;;;;;;-1:-1:-1;3437:229:0;;;;;:::i;:::-;;:::i;7599:38::-;;;;;;;;;;-1:-1:-1;7599:38:0;;;;;;;;;;;9955:83;9992:13;10025:5;10018:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:83;:::o;10997:193::-;11099:4;11121:39;2316:10;11144:7;11153:6;11121:8;:39::i;:::-;-1:-1:-1;11178:4:0;10997:193;;;;;:::o;17559:170::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;;;;;;;;;17639:21:::1;:30:::0;;-1:-1:-1;;17639:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17685:36:::1;::::0;724:41:1;;;17685:36:0::1;::::0;712:2:1;697:18;17685:36:0::1;;;;;;;17559:170:::0;:::o;11198:639::-;-1:-1:-1;;;;;11356:16:0;;11330:4;11356:16;;;:8;:16;;;;;;;;11355:17;11347:45;;;;-1:-1:-1;;;11347:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11412:19:0;;;;;;:8;:19;;;;;;;;11411:20;11403:48;;;;-1:-1:-1;;;11403:48:0;;;;;;;:::i;:::-;11471:18;;;;;;;11470:19;11462:65;;;;-1:-1:-1;;;11462:65:0;;;;;;;:::i;:::-;11540:36;11550:6;11558:9;11569:6;11540:9;:36::i;:::-;11587:220;11610:6;2316:10;11658:138;11714:6;11658:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11658:19:0;;;;;;:11;:19;;;;;;;;2316:10;11658:33;;;;;;;;;;:37;:138::i;:::-;11587:8;:220::i;:::-;-1:-1:-1;11825:4:0;11198:639;;;;;:::o;14767:329::-;14861:7;14919;;14908;:18;;14886:117;;;;-1:-1:-1;;;14886:117:0;;6998:2:1;14886:117:0;;;6980:21:1;7037:2;7017:18;;;7010:30;7076:34;7056:18;;;7049:62;-1:-1:-1;;;7127:18:1;;;7120:47;7184:19;;14886:117:0;6796:413:1;14886:117:0;15014:19;15036:10;:8;:10::i;:::-;15014:32;-1:-1:-1;15064:24:0;:7;15014:32;15064:11;:24::i;:::-;15057:31;14767:329;-1:-1:-1;;;14767:329:0:o;11845:300::-;2316:10;11960:4;12054:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12054:34:0;;;;;;;;;;11960:4;;11982:133;;12032:7;;12054:50;;12093:10;12054:38;:50::i;13737:428::-;2316:10;13789:14;13852:29;;;:21;:29;;;;;;;;13851:30;13829:131;;;;-1:-1:-1;;;13829:131:0;;7416:2:1;13829:131:0;;;7398:21:1;7455:2;7435:18;;;7428:30;7494:34;7474:18;;;7467:62;-1:-1:-1;;;7545:18:1;;;7538:49;7604:19;;13829:131:0;7214:415:1;13829:131:0;13971:15;13989:23;14001:10;:8;:10::i;:::-;13989:7;;:11;:23::i;:::-;-1:-1:-1;;;;;14041:15:0;;;;;;:7;:15;;;;;;13971:41;;-1:-1:-1;14041:28:0;;13971:41;14041:19;:28::i;:::-;-1:-1:-1;;;;;14023:15:0;;;;;;:7;:15;;;;;:46;14090:7;;:20;;14102:7;14090:11;:20::i;:::-;14080:7;:30;14134:10;;:23;;14149:7;14134:14;:23::i;:::-;14121:10;:36;-1:-1:-1;;;13737:428:0:o;14173:586::-;14291:7;14335;;14324;:18;;14316:69;;;;-1:-1:-1;;;14316:69:0;;7836:2:1;14316:69:0;;;7818:21:1;7875:2;7855:18;;;7848:30;7914:34;7894:18;;;7887:62;-1:-1:-1;;;7965:18:1;;;7958:36;8011:19;;14316:69:0;7634:402:1;14316:69:0;14401:17;14396:356;;14435:15;14453:23;14465:10;:8;:10::i;:::-;14453:7;;:11;:23::i;:::-;14435:41;-1:-1:-1;14491:14:0;;-1:-1:-1;14491:14:0;14396:356;14538:15;14556:23;14568:10;:8;:10::i;14556:23::-;14538:41;;14594:23;14620:83;14650:38;14677:10;:8;:10::i;:::-;14650:22;14664:7;14650:13;:22::i;:::-;:26;;:38::i;:::-;14620:7;;:11;:83::i;:::-;14594:109;-1:-1:-1;14718:22:0;;-1:-1:-1;;14718:22:0;17777:148;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;17891:12:::1;:26:::0;;-1:-1:-1;;;;;;17891:26:0::1;-1:-1:-1::0;;;;;17891:26:0;;;::::1;::::0;;;::::1;::::0;;17777:148::o;15166:176::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15289:37:0;;;::::1;;::::0;;;:27:::1;:37;::::0;;;;:45;;-1:-1:-1;;15289:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15166:176::o;10335:253::-;-1:-1:-1;;;;;10467:31:0;;10438:7;10467:31;;;:21;:31;;;;;;;;10463:61;;;-1:-1:-1;;;;;;10507:17:0;;;;;:7;:17;;;;;;;10335:253::o;10463:61::-;-1:-1:-1;;;;;10562:17:0;;;;;;:7;:17;;;;;;10542:38;;:19;:38::i;3187:94::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;3252:21:::1;3270:1;3252:9;:21::i;:::-;3187:94::o:0;15412:174::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15534:36:0;;;::::1;;::::0;;;:26:::1;:36;::::0;;;;:44;;-1:-1:-1;;15534:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15412:174::o;10046:87::-;10085:13;10118:7;10111:14;;;;;:::i;15802:98::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;15871:11:::1;:21:::0;15802:98::o;16213:386::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;16408:22:::1;:43:::0;;;;16462:21:::1;:37:::0;;;;16510:24:::1;:43:::0;16564:16:::1;:27:::0;16213:386::o;12153:400::-;12273:4;12295:228;2316:10;12345:7;12367:145;12424:15;12367:145;;;;;;;;;;;;;;;;;2316:10;12367:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12367:34:0;;;;;;;;;;;;:38;:145::i;10788:199::-;10893:4;10915:42;2316:10;10939:9;10950:6;10915:9;:42::i;17055:381::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;17249:21:::1;:42:::0;;;;17302:20:::1;:36:::0;;;;17349:23:::1;:42:::0;17402:15:::1;:26:::0;17055:381::o;15640:108::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;15714:16:::1;:26:::0;15640:108::o;15967:160::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;16085:6:::1;-1:-1:-1::0;;;;;16079:22:0::1;;16102:7;2924::::0;2951:6;-1:-1:-1;;;;;2951:6:0;;2878:87;16102:7:::1;16079:40;::::0;-1:-1:-1;;;;;;16079:40:0::1;::::0;;;;;;-1:-1:-1;;;;;8233:32:1;;;16079:40:0::1;::::0;::::1;8215:51:1::0;8282:18;;;8275:34;;;8188:18;;16079:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15967:160:::0;;:::o;16658:::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16773:28:0;;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:37;;-1:-1:-1;;16773:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16658:160::o;16870:104::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;16942:14:::1;:24:::0;16870:104::o;3437:229::-;2924:7;2951:6;-1:-1:-1;;;;;2951:6:0;2316:10;3099:23;3091:68;;;;-1:-1:-1;;;3091:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3540:22:0;::::1;3518:110;;;::::0;-1:-1:-1;;;3518:110:0;;8772:2:1;3518:110:0::1;::::0;::::1;8754:21:1::0;8811:2;8791:18;;;8784:30;8850:34;8830:18;;;8823:62;-1:-1:-1;;;8901:18:1;;;8894:36;8947:19;;3518:110:0::1;8570:402:1::0;3518:110:0::1;3639:19;3649:8;3639:9;:19::i;:::-;3437:229:::0;:::o;20104:371::-;-1:-1:-1;;;;;20231:19:0;;20223:68;;;;-1:-1:-1;;;20223:68:0;;9179:2:1;20223:68:0;;;9161:21:1;9218:2;9198:18;;;9191:30;9257:34;9237:18;;;9230:62;-1:-1:-1;;;9308:18:1;;;9301:34;9352:19;;20223:68:0;8977:400:1;20223:68:0;-1:-1:-1;;;;;20310:21:0;;20302:68;;;;-1:-1:-1;;;20302:68:0;;9584:2:1;20302:68:0;;;9566:21:1;9623:2;9603:18;;;9596:30;9662:34;9642:18;;;9635:62;-1:-1:-1;;;9713:18:1;;;9706:32;9755:19;;20302:68:0;9382:398:1;20302:68:0;-1:-1:-1;;;;;20383:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20435:32;;160:25:1;;;20435:32:0;;133:18:1;20435:32:0;;;;;;;20104:371;;;:::o;20524:839::-;-1:-1:-1;;;;;20646:18:0;;20638:68;;;;-1:-1:-1;;;20638:68:0;;9987:2:1;20638:68:0;;;9969:21:1;10026:2;10006:18;;;9999:30;10065:34;10045:18;;;10038:62;-1:-1:-1;;;10116:18:1;;;10109:35;10161:19;;20638:68:0;9785:401:1;20638:68:0;-1:-1:-1;;;;;20725:16:0;;20717:64;;;;-1:-1:-1;;;20717:64:0;;10393:2:1;20717:64:0;;;10375:21:1;10432:2;10412:18;;;10405:30;10471:34;10451:18;;;10444:62;-1:-1:-1;;;10522:18:1;;;10515:33;10565:19;;20717:64:0;10191:399:1;20717:64:0;20809:1;20800:6;:10;20792:71;;;;-1:-1:-1;;;20792:71:0;;10797:2:1;20792:71:0;;;10779:21:1;10836:2;10816:18;;;10809:30;10875:34;10855:18;;;10848:62;-1:-1:-1;;;10926:18:1;;;10919:46;10982:19;;20792:71:0;10595:412:1;20792:71:0;20913:24;20928:4;20934:2;20913:14;:24::i;:::-;-1:-1:-1;;;;;21133:24:0;;21011:12;21133:24;;;:18;:24;;;;;;21026:4;;21133:24;;;:50;;-1:-1:-1;;;;;;21161:22:0;;;;;;:18;:22;;;;;;;;21133:50;:59;;;-1:-1:-1;21188:4:0;;;;;;;21187:5;21133:59;21129:107;;;-1:-1:-1;21219:5:0;21129:107;21314:41;21329:4;21335:2;21339:6;21347:7;21314:14;:41::i;:::-;20627:736;20524:839;;;:::o;4334:226::-;4454:7;4490:12;4482:6;;;;4474:29;;;;-1:-1:-1;;;4474:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4514:9:0;4526:5;4530:1;4526;:5;:::i;:::-;4514:17;4334:226;-1:-1:-1;;;;;4334:226:0:o;18858:164::-;18900:7;18921:15;18938;18957:19;:17;:19::i;:::-;18920:56;;-1:-1:-1;18920:56:0;-1:-1:-1;18994:20:0;18920:56;;18994:11;:20::i;:::-;18987:27;;;;18858:164;:::o;5047:132::-;5105:7;5132:39;5136:1;5139;5132:39;;;;;;;;;;;;;;;;;:3;:39::i;4001:181::-;4059:7;;4091:5;4095:1;4091;:5;:::i;:::-;4079:17;;4120:1;4115;:6;;4107:46;;;;-1:-1:-1;;;4107:46:0;;11609:2:1;4107:46:0;;;11591:21:1;11648:2;11628:18;;;11621:30;11687:29;11667:18;;;11660:57;11734:18;;4107:46:0;11407:351:1;4568:471:0;4626:7;4871:6;4867:47;;-1:-1:-1;4901:1:0;4894:8;;4867:47;4926:9;4938:5;4942:1;4938;:5;:::i;:::-;4926:17;-1:-1:-1;4971:1:0;4962:5;4966:1;4926:17;4962:5;:::i;:::-;:10;4954:56;;;;-1:-1:-1;;;4954:56:0;;12360:2:1;4954:56:0;;;12342:21:1;12399:2;12379:18;;;12372:30;12438:34;12418:18;;;12411:62;-1:-1:-1;;;12489:18:1;;;12482:31;12530:19;;4954:56:0;12158:397:1;4190:136:0;4248:7;4275:43;4279:1;4282;4275:43;;;;;;;;;;;;;;;;;:3;:43::i;18067:359::-;18130:7;18150:18;18171:219;18386:3;18171:196;18215:137;18289:44;18317:15;;18289:23;;:27;;:44;;;;:::i;:::-;18241:20;;18215:21;;:47;;:25;:47::i;:::-;:51;;:137::i;:::-;18171:7;;:25;:196::i;:::-;:214;;:219::i;3795:173::-;3851:16;3870:6;;-1:-1:-1;;;;;3887:17:0;;;-1:-1:-1;;;;;;3887:17:0;;;;;;3920:40;;3870:6;;;;;;;3920:40;;3851:16;3920:40;3840:128;3795:173;:::o;27939:2235::-;28286:28;28317:24;28335:4;28317:9;:24::i;:::-;28396:14;;28286:55;;-1:-1:-1;28372:38:0;;;;;;;28441:42;;-1:-1:-1;28476:7:0;;-1:-1:-1;;;;;28468:15:0;;;28476:7;;28468:15;;28441:42;:80;;;;-1:-1:-1;28500:21:0;;;;28441:80;:147;;;;-1:-1:-1;;;;;;28540:21:0;;28556:4;28540:21;:47;;;;-1:-1:-1;28579:7:0;;-1:-1:-1;;;;;28565:22:0;;;28579:7;;28565:22;28540:47;28538:50;28441:147;28423:1744;;;28695:9;;28663:65;;28680:4;;28695:9;;;-1:-1:-1;;;;;28695:9:0;28707:20;28663:8;:65::i;:::-;28766:21;;28745:18;;28766:28;;28792:1;28766:25;:28::i;:::-;28745:49;;28809:23;28835:37;28861:10;28835:21;;:25;;:37;;;;:::i;:::-;28809:63;-1:-1:-1;28889:30:0;28922:73;:20;28809:63;28922:24;:73::i;:::-;29093:9;;28889:106;;-1:-1:-1;29062:66:0;;29093:9;;;-1:-1:-1;;;;;29093:9:0;28889:106;29062:22;:66::i;:::-;29168:21;29145:20;29238:56;29271:22;29238:28;29168:21;29255:10;29238:16;:28::i;:56::-;29204:90;-1:-1:-1;29309:26:0;29338:41;:12;29204:90;29338:16;:41::i;:::-;29309:70;-1:-1:-1;29450:22:0;;29447:85;;29491:12;;:41;;-1:-1:-1;;;;;29491:12:0;;;;:41;;;;;29513:18;;29491:12;:41;:12;:41;29513:18;29491:12;:41;;;;;;;;;;;;;;;;;;;;;29447:85;29590:27;;29587:434;;29686:9;;29637:192;;-1:-1:-1;;;;;29686:9:0;;;;;29719:7;2924;2951:6;-1:-1:-1;;;;;2951:6:0;;2878:87;29719:7;29749:15;29787:23;29637:18;:192::i;:::-;29855:150;;;12762:25:1;;;12818:2;12803:18;;12796:34;;;12846:18;;;12839:34;;;29855:150:0;;12750:2:1;12735:18;29855:150:0;;;;;;;29587:434;-1:-1:-1;;30110:1:0;30086:21;:25;;;30127:24;:28;-1:-1:-1;;;;27997:2177:0;;27939:2235;;:::o;21444:1522::-;-1:-1:-1;;;;;21631:16:0;;;;;;:8;:16;;;;;;;;21630:17;21622:45;;;;-1:-1:-1;;;21622:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21687:19:0;;;;;;:8;:19;;;;;;;;21686:20;21678:48;;;;-1:-1:-1;;;21678:48:0;;;;;;;:::i;:::-;21746:18;;;;;;;21745:19;21737:65;;;;-1:-1:-1;;;21737:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21819:37:0;;;;;;:26;:37;;;;;;;;21815:148;;21890:11;;21880:6;:21;;21872:79;;;;-1:-1:-1;;;21872:79:0;;13086:2:1;21872:79:0;;;13068:21:1;13125:2;13105:18;;;13098:30;13164:34;13144:18;;;13137:62;-1:-1:-1;;;13215:18:1;;;13208:43;13268:19;;21872:79:0;12884:409:1;21872:79:0;21987:7;;-1:-1:-1;;;;;21977:17:0;;;21987:7;;21977:17;:28;;;;;21998:7;21977:28;21973:286;;;22022:11;19094:21;;19070;:45;19149:20;;19126;:43;19206:23;;19180;:49;19258:15;;19240;:33;19030:252;22022:11;21973:286;;;22105:7;;-1:-1:-1;;;;;22092:20:0;;;22105:7;;22092:20;:31;;;;;22116:7;22092:31;22088:171;;;22140:12;19905:22;;19881:21;:46;19961:21;;19938:20;:44;20019:24;;19993:23;:50;20072:16;;20054:15;:34;19840:256;22088:171;22233:14;19720:1;19696:21;:25;;;19732:20;:24;;;19767:23;:27;;;19805:15;:19;19653:179;22233:14;-1:-1:-1;;;;;22378:29:0;;;;;;:21;:29;;;;;;;;:66;;;;-1:-1:-1;;;;;;22412:32:0;;;;;;:21;:32;;;;;;;;22411:33;22378:66;22360:599;;;22471:48;22493:6;22501:9;22512:6;22471:21;:48::i;:::-;22360:599;;;-1:-1:-1;;;;;22556:29:0;;;;;;:21;:29;;;;;;;;22555:30;:66;;;;-1:-1:-1;;;;;;22589:32:0;;;;;;:21;:32;;;;;;;;22555:66;22537:422;;;22648:46;22668:6;22676:9;22687:6;22648:19;:46::i;22537:422::-;-1:-1:-1;;;;;22730:29:0;;;;;;:21;:29;;;;;;;;:65;;;;-1:-1:-1;;;;;;22763:32:0;;;;;;:21;:32;;;;;;;;22730:65;22712:247;;;22822:48;22844:6;22852:9;22863:6;22822:21;:48::i;22712:247::-;22903:44;22921:6;22929:9;22940:6;22903:17;:44::i;19290:355::-;19388:7;;19424;;19464:15;;19341:7;;;;19388;;19452:28;;19388:7;;19452:11;:28::i;:::-;19442:38;;19501:28;19513:15;;19501:7;:11;;:28;;;;:::i;:::-;19491:38;;19554:20;19566:7;;19554;;:11;;:20;;;;:::i;:::-;19544:7;:30;19540:61;;;19584:7;;19593;;19576:25;;;;;;19290:355;;:::o;19540:61::-;19620:7;;19629;;-1:-1:-1;19290:355:0;-1:-1:-1;19290:355:0:o;5187:312::-;5307:7;5342:12;5335:5;5327:28;;;;-1:-1:-1;;;5327:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5366:9:0;5378:5;5382:1;5378;:5;:::i;30273:603::-;30518:16;;;30532:1;30518:16;;;;;;;;30411:13;;30377:20;;30518:16;30532:1;30518:16;;;;;;;;;;-1:-1:-1;30518:16:0;30494:40;;30563:4;30545;30550:1;30545:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;30545:23:0;;;-1:-1:-1;;;;;30545:23:0;;;;;30589:9;-1:-1:-1;;;;;30589:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30579:4;30584:1;30579:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30579:26:0;;;:7;;;;;;;;;:26;30644:60;;;30719:11;30745:1;30789:4;30816;30836:21;:15;30854:3;30836:21;:::i;:::-;30644:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30366:510;;30273:603;;:::o;30884:512::-;31081:13;-1:-1:-1;;;;;31138:25:0;;;31171:9;31204:4;31224:11;31047:20;;31336:5;31356:21;:15;31374:3;31356:21;:::i;:::-;31138:250;;;;;;-1:-1:-1;;;;;;31138:250:0;;;-1:-1:-1;;;;;15162:15:1;;;31138:250:0;;;15144:34:1;15194:18;;;15187:34;;;;15237:18;;;15230:34;;;;15280:18;;;15273:34;;;;15344:15;;;15323:19;;;15316:44;15376:19;;;15369:35;;;;15078:19;;31138:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23881:855::-;24017:19;24039:10;:8;:10::i;:::-;24017:32;;24060:23;24086:35;24098:22;24112:7;24098:13;:22::i;:::-;24086:7;;:11;:35::i;:::-;24060:61;-1:-1:-1;24132:15:0;24150:24;:7;24162:11;24150;:24::i;:::-;24132:42;;24185:23;24211:76;24237:39;24264:11;24237:22;24251:7;24237:13;:22::i;24211:76::-;24185:102;;24298:49;24320:9;24331:15;24298:21;:49::i;:::-;-1:-1:-1;;;;;24376:15:0;;;;;;:7;:15;;;;;;:28;;24396:7;24376:19;:28::i;:::-;-1:-1:-1;;;;;24358:15:0;;;;;;:7;:15;;;;;:46;24433:15;;:28;;24453:7;24433:19;:28::i;:::-;24415:15;:46;-1:-1:-1;;;;;24493:18:0;;;;;;:7;:18;;;;;;:39;;24516:15;24493:22;:39::i;:::-;-1:-1:-1;;;;;24472:18:0;;;;;;:7;:18;;;;;:60;24543:40;24555:6;24562:7;24571:11;24543;:40::i;:::-;24594:41;24607:6;24614:7;24623:11;24594:12;:41::i;:::-;24646:20;24658:7;24646:11;:20::i;:::-;24701:9;-1:-1:-1;;;;;24684:44:0;24693:6;-1:-1:-1;;;;;24684:44:0;-1:-1:-1;;;;;;;;;;;24712:15:0;24684:44;;;;160:25:1;;148:2;133:18;;14:177;24684:44:0;;;;;;;;24006:730;;;;23881:855;;;:::o;25603:740::-;25737:19;25759:10;:8;:10::i;:::-;25737:32;;25780:23;25806:35;25818:22;25832:7;25818:13;:22::i;25806:35::-;25780:61;-1:-1:-1;25852:15:0;25870:24;:7;25882:11;25870;:24::i;:::-;25852:42;;25905:49;25927:9;25938:15;25905:21;:49::i;:::-;-1:-1:-1;;;;;25983:15:0;;;;;;:7;:15;;;;;;:28;;26003:7;25983:19;:28::i;:::-;-1:-1:-1;;;;;25965:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;26043:18;;;;;:7;:18;;;;;:39;;26066:15;26043:22;:39::i;:::-;-1:-1:-1;;;;;26022:18:0;;;;;;:7;:18;;;;;:60;26111:15;;:28;;26131:7;26111:19;:28::i;:::-;26093:15;:46;26150:40;26162:6;26169:7;26178:11;26150;:40::i;:::-;26201:41;26214:6;26221:7;26230:11;26201:12;:41::i;:::-;26253:20;26265:7;26253:11;:20::i;:::-;26308:9;-1:-1:-1;;;;;26291:44:0;26300:6;-1:-1:-1;;;;;26291:44:0;-1:-1:-1;;;;;;;;;;;26319:15:0;26291:44;;;;160:25:1;;148:2;133:18;;14:177;26291:44:0;;;;;;;;25726:617;;;25603:740;;;:::o;24805:746::-;24941:19;24963:10;:8;:10::i;:::-;24941:32;;24984:23;25010:35;25022:22;25036:7;25022:13;:22::i;25010:35::-;24984:61;;25056:49;25078:9;25089:15;25056:21;:49::i;:::-;-1:-1:-1;;;;;25134:15:0;;;;;;:7;:15;;;;;;:28;;25154:7;25134:19;:28::i;:::-;-1:-1:-1;;;;;25116:15:0;;;;;;:7;:15;;;;;:46;25191:15;;:28;;25211:7;25191:19;:28::i;:::-;25173:15;:46;-1:-1:-1;;;;;25251:18:0;;;;;;:7;:18;;;;;;:39;;25274:15;25251:22;:39::i;:::-;-1:-1:-1;;;;;25230:18:0;;;;;;:7;:18;;;;;:60;25319:15;;:28;;25339:7;25319:19;:28::i;:::-;25301:15;:46;25358:40;25370:6;25377:7;25386:11;25358;:40::i;:::-;25409:41;25422:6;25429:7;25438:11;25409:12;:41::i;:::-;25461:20;25473:7;25461:11;:20::i;:::-;25516:9;-1:-1:-1;;;;;25499:44:0;25508:6;-1:-1:-1;;;;;25499:44:0;-1:-1:-1;;;;;;;;;;;25527:15:0;25499:44;;;;160:25:1;;148:2;133:18;;14:177;25499:44:0;;;;;;;;24930:621;;24805:746;;;:::o;23039:792::-;23171:19;23193:10;:8;:10::i;:::-;23171:32;;23214:23;23240:35;23252:22;23266:7;23252:13;:22::i;23240:35::-;23214:61;-1:-1:-1;23286:15:0;23304:24;:7;23316:11;23304;:24::i;:::-;23286:42;;23339:23;23365:76;23391:39;23418:11;23391:22;23405:7;23391:13;:22::i;23365:76::-;23339:102;;23452:49;23474:9;23485:15;23452:21;:49::i;:::-;-1:-1:-1;;;;;23530:15:0;;;;;;:7;:15;;;;;;:28;;23550:7;23530:19;:28::i;:::-;-1:-1:-1;;;;;23512:15:0;;;;;;;:7;:15;;;;;;:46;;;;23590:18;;;;;;;:39;;23613:15;23590:22;:39::i;18434:414::-;-1:-1:-1;;;;;18535:31:0;;;;;;:27;:31;;;;;;;;18516:325;;18617:19;;;;;;;18613:217;;;18716:16;;18687:25;18705:6;18687:13;18697:2;18687:9;:13::i;:25::-;:45;;18657:157;;;;-1:-1:-1;;;18657:157:0;;15928:2:1;18657:157:0;;;15910:21:1;15967:2;15947:18;;;15940:30;16006:34;15986:18;;;15979:62;-1:-1:-1;;;16057:18:1;;;16050:36;16103:19;;18657:157:0;15726:402:1;18657:157:0;18434:414;;:::o;26721:863::-;26815:12;26830:99;26925:3;26830:76;26856:49;26881:23;;26856:20;;:24;;:49;;;;:::i;26830:99::-;26815:114;-1:-1:-1;26946:8:0;;26942:635;;26995:101;27039:42;27077:3;27039:33;27051:20;;27039:7;:11;;:33;;;;:::i;:42::-;26995:21;;;:25;:101::i;:::-;26971:21;:125;27197:23;;27138:107;;27185:45;;27226:3;;27185:36;;:7;;:11;:36::i;:45::-;27138:24;;;:28;:107::i;:::-;27111:24;:134;27262:12;27277:21;:4;27286:11;27277:8;:21::i;:::-;27347:4;27317:36;;;;:21;:36;;;;;;27262;;-1:-1:-1;27317:36:0;;27313:193;;;27413:4;27397:22;;;;:7;:22;;;;;;:32;;27424:4;27397:26;:32::i;:::-;27388:4;27372:22;;;;:7;:22;;;;;:57;27313:193;;;27490:4;27474:22;;;;:7;:22;;;;;;:32;;27501:4;27474:26;:32::i;:::-;27465:4;27449:22;;;;:7;:22;;;;;:57;27313:193;27528:37;;160:25:1;;;27553:4:0;;-1:-1:-1;;;;;27528:37:0;;;-1:-1:-1;;;;;;;;;;;27528:37:0;148:2:1;133:18;27528:37:0;14:177:1;27589:336:0;27684:15;27702:37;27735:3;27702:28;27714:15;;27702:7;:11;;:28;;;;:::i;:37::-;27684:55;-1:-1:-1;27750:16:0;27769:24;27684:55;27781:11;27769;:24::i;:::-;27835:11;;-1:-1:-1;;;;;27835:11:0;27827:20;;;;:7;:20;;;;;;27750:43;;-1:-1:-1;27827:34:0;;27750:43;27827:24;:34::i;:::-;27812:11;;;-1:-1:-1;;;;;27812:11:0;;;27804:20;;;;:7;:20;;;;;;;;;:57;;;;27896:11;;27879:38;;160:25:1;;;27896:11:0;;;;27879:38;;;;-1:-1:-1;;;;;;;;;;;27879:38:0;133:18:1;27879:38:0;14:177:1;26417:251:0;26474:12;26489:43;26528:3;26489:34;26501:21;;26489:7;:11;;:34;;;;:::i;:43::-;26474:58;;26543:12;26558:20;26567:10;:8;:10::i;:::-;26558:4;;:8;:20::i;:::-;26599:7;;26543:35;;-1:-1:-1;26599:17:0;;26543:35;26599:11;:17::i;:::-;26589:7;:27;26640:10;;:20;;26655:4;26640:14;:20::i;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:247;391:6;444:2;432:9;423:7;419:23;415:32;412:52;;;460:1;457;450:12;412:52;499:9;486:23;518:31;543:5;518:31;:::i;776:597::-;888:4;917:2;946;935:9;928:21;978:6;972:13;1021:6;1016:2;1005:9;1001:18;994:34;1046:1;1056:140;1070:6;1067:1;1064:13;1056:140;;;1165:14;;;1161:23;;1155:30;1131:17;;;1150:2;1127:26;1120:66;1085:10;;1056:140;;;1214:6;1211:1;1208:13;1205:91;;;1284:1;1279:2;1270:6;1259:9;1255:22;1251:31;1244:42;1205:91;-1:-1:-1;1357:2:1;1336:15;-1:-1:-1;;1332:29:1;1317:45;;;;1364:2;1313:54;;776:597;-1:-1:-1;;;776:597:1:o;1604:315::-;1672:6;1680;1733:2;1721:9;1712:7;1708:23;1704:32;1701:52;;;1749:1;1746;1739:12;1701:52;1788:9;1775:23;1807:31;1832:5;1807:31;:::i;:::-;1857:5;1909:2;1894:18;;;;1881:32;;-1:-1:-1;;;1604:315:1:o;1924:118::-;2010:5;2003:13;1996:21;1989:5;1986:32;1976:60;;2032:1;2029;2022:12;2047:241;2103:6;2156:2;2144:9;2135:7;2131:23;2127:32;2124:52;;;2172:1;2169;2162:12;2124:52;2211:9;2198:23;2230:28;2252:5;2230:28;:::i;2293:456::-;2370:6;2378;2386;2439:2;2427:9;2418:7;2414:23;2410:32;2407:52;;;2455:1;2452;2445:12;2407:52;2494:9;2481:23;2513:31;2538:5;2513:31;:::i;:::-;2563:5;-1:-1:-1;2620:2:1;2605:18;;2592:32;2633:33;2592:32;2633:33;:::i;:::-;2293:456;;2685:7;;-1:-1:-1;;;2739:2:1;2724:18;;;;2711:32;;2293:456::o;2754:180::-;2813:6;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;-1:-1:-1;2905:23:1;;2754:180;-1:-1:-1;2754:180:1:o;3128:309::-;3193:6;3201;3254:2;3242:9;3233:7;3229:23;3225:32;3222:52;;;3270:1;3267;3260:12;3222:52;3306:9;3293:23;3283:33;;3366:2;3355:9;3351:18;3338:32;3379:28;3401:5;3379:28;:::i;:::-;3426:5;3416:15;;;3128:309;;;;;:::o;3702:382::-;3767:6;3775;3828:2;3816:9;3807:7;3803:23;3799:32;3796:52;;;3844:1;3841;3834:12;3796:52;3883:9;3870:23;3902:31;3927:5;3902:31;:::i;:::-;3952:5;-1:-1:-1;4009:2:1;3994:18;;3981:32;4022:30;3981:32;4022:30;:::i;4297:385::-;4383:6;4391;4399;4407;4460:3;4448:9;4439:7;4435:23;4431:33;4428:53;;;4477:1;4474;4467:12;4428:53;-1:-1:-1;;4500:23:1;;;4570:2;4555:18;;4542:32;;-1:-1:-1;4621:2:1;4606:18;;4593:32;;4672:2;4657:18;4644:32;;-1:-1:-1;4297:385:1;-1:-1:-1;4297:385:1:o;4687:388::-;4755:6;4763;4816:2;4804:9;4795:7;4791:23;4787:32;4784:52;;;4832:1;4829;4822:12;4784:52;4871:9;4858:23;4890:31;4915:5;4890:31;:::i;:::-;4940:5;-1:-1:-1;4997:2:1;4982:18;;4969:32;5010:33;4969:32;5010:33;:::i;5304:380::-;5383:1;5379:12;;;;5426;;;5447:61;;5501:4;5493:6;5489:17;5479:27;;5447:61;5554:2;5546:6;5543:14;5523:18;5520:38;5517:161;;;5600:10;5595:3;5591:20;5588:1;5581:31;5635:4;5632:1;5625:15;5663:4;5660:1;5653:15;5517:161;;5304:380;;;:::o;5689:356::-;5891:2;5873:21;;;5910:18;;;5903:30;5969:34;5964:2;5949:18;;5942:62;6036:2;6021:18;;5689:356::o;6050:339::-;6252:2;6234:21;;;6291:2;6271:18;;;6264:30;-1:-1:-1;;;6325:2:1;6310:18;;6303:45;6380:2;6365:18;;6050:339::o;6394:397::-;6596:2;6578:21;;;6635:2;6615:18;;;6608:30;6674:34;6669:2;6654:18;;6647:62;-1:-1:-1;;;6740:2:1;6725:18;;6718:31;6781:3;6766:19;;6394:397::o;8320:245::-;8387:6;8440:2;8428:9;8419:7;8415:23;8411:32;8408:52;;;8456:1;8453;8446:12;8408:52;8488:9;8482:16;8507:28;8529:5;8507:28;:::i;11012:127::-;11073:10;11068:3;11064:20;11061:1;11054:31;11104:4;11101:1;11094:15;11128:4;11125:1;11118:15;11144:125;11184:4;11212:1;11209;11206:8;11203:34;;;11217:18;;:::i;:::-;-1:-1:-1;11254:9:1;;11144:125::o;11274:128::-;11314:3;11345:1;11341:6;11338:1;11335:13;11332:39;;;11351:18;;:::i;:::-;-1:-1:-1;11387:9:1;;11274:128::o;11763:168::-;11803:7;11869:1;11865;11861:6;11857:14;11854:1;11851:21;11846:1;11839:9;11832:17;11828:45;11825:71;;;11876:18;;:::i;:::-;-1:-1:-1;11916:9:1;;11763:168::o;11936:217::-;11976:1;12002;11992:132;;12046:10;12041:3;12037:20;12034:1;12027:31;12081:4;12078:1;12071:15;12109:4;12106:1;12099:15;11992:132;-1:-1:-1;12138:9:1;;11936:217::o;13430:127::-;13491:10;13486:3;13482:20;13479:1;13472:31;13522:4;13519:1;13512:15;13546:4;13543:1;13536:15;13562:251;13632:6;13685:2;13673:9;13664:7;13660:23;13656:32;13653:52;;;13701:1;13698;13691:12;13653:52;13733:9;13727:16;13752:31;13777:5;13752:31;:::i;13818:980::-;14080:4;14128:3;14117:9;14113:19;14159:6;14148:9;14141:25;14185:2;14223:6;14218:2;14207:9;14203:18;14196:34;14266:3;14261:2;14250:9;14246:18;14239:31;14290:6;14325;14319:13;14356:6;14348;14341:22;14394:3;14383:9;14379:19;14372:26;;14433:2;14425:6;14421:15;14407:29;;14454:1;14464:195;14478:6;14475:1;14472:13;14464:195;;;14543:13;;-1:-1:-1;;;;;14539:39:1;14527:52;;14634:15;;;;14599:12;;;;14575:1;14493:9;14464:195;;;-1:-1:-1;;;;;;;14715:32:1;;;;14710:2;14695:18;;14688:60;-1:-1:-1;;;14779:3:1;14764:19;14757:35;14676:3;13818:980;-1:-1:-1;;;13818:980:1:o;15415:306::-;15503:6;15511;15519;15572:2;15560:9;15551:7;15547:23;15543:32;15540:52;;;15588:1;15585;15578:12;15540:52;15617:9;15611:16;15601:26;;15667:2;15656:9;15652:18;15646:25;15636:35;;15711:2;15700:9;15696:18;15690:25;15680:35;;15415:306;;;;;:::o

Swarm Source

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