ETH Price: $3,071.54 (+0.74%)
Gas: 4 Gwei

Token

ApeCapital (AC)
 

Overview

Max Total Supply

1,000,000,000 AC

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
678,416.107021155715741078 AC

Value
$0.00
0xb057f79b53ca5ee518dfcacb8971a054b5c29b29
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:
ApeCapital

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-05
*/

/* APECAPITAL  
apecapital.finance
Telegram: https://t.me/ApecapitalERC
Total Supply 1 billion
2% redistribution, 10% treasury and marketing
*/
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;

// SPDX-License-Identifier:MIT

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

    event transFer(address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address payable private _owner;
    address payable private _previousOwner;
    uint256 private _lockTime;

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

    constructor() {
        _owner = payable(msg.sender);
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

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

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = payable(address(0));
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(
            _previousOwner == msg.sender,
            "You don't have permission to unlock"
        );
        require(
            block.timestamp > _lockTime,
            "Contract is locked until defined days"
        );
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
        _previousOwner = payable(address(0));
    }
}

interface IPancakeFactory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IPancakePair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IPancakeRouter01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Factory is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress);

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

        // make the swap
        uniSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            address(this),
            block.timestamp + 360
        );
    }

    function swapETHForTokens(
        address routerAddress,
        address recipient,
        uint256 ethAmount
    ) internal {
        IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress);

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

        // make the swap
        uniSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: ethAmount
        }(
            0, // accept any amount of BNB
            path,
            address(recipient),
            block.timestamp + 360
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress);

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

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    modifier isHuman() {
        require(tx.origin == msg.sender, "sorry humans only");
        _;
    }
}

contract ApeCapital is Context, IERC20, Ownable, ReentrancyGuard {
    using SafeMath for uint256;
    using Address for address;

    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 _isExcluded;
    mapping(address => bool) private _isExcludedFromMaxTx;
    mapping(address => bool) public _isSniper;

    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1 * 1e9 * 1e18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public _startingTimeOfbuy; // can be set only once
    uint256 public antiSnipingTime = 60 seconds;

    string private _name = "ApeCapital";
    string private _symbol = "AC";
    uint8 private _decimals = 18;

    IUniswapV2Factory public uniSwapRouter;
    address public immutable uniSwapPair;
    address payable public marketWallet;

    uint256 public _maxTxAmount = _tTotal.mul(50).div(100); // should be 1% percent per transaction
    uint256 minTokenNumberToSell = _tTotal.div(10000); // 0.00001%  amount will trigger swap and add liquidity

    bool public swapAndLiquifyEnabled = false; // should be true to turn on to liquidate the pool
    bool public reflectionFeesdiabled = false; // should be false to charge fee
    bool inSwapAndLiquify = false;
    bool public _antiwhale = true;  
    bool public _buyingOpen; //once switched on, can never be switched off.

    uint256 public _holderDistributionFee = 20; // 2% will be distributed among holder as token divideneds
    uint256 private _previousHolderDistributionFee = _holderDistributionFee;

    uint256 public _liquidityFee = 0; // 0% will be added to the liquidity pool
    uint256 private _previousLiquidityFee = _liquidityFee;

    uint256 public _marketFee = 100; // 10% will go to the treasury wallet
    uint256 private _previousMarketFee = _marketFee;

    // uint256 public marketPercentage = 770;
    // uint256 public poolPercentage = 230;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event ClaimBNBSuccessfully(
        address recipient,
        uint256 ethReceived,
        uint256 nextAvailableClaimDate
    );
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address payable _marketWallet) {
        _rOwned[owner()] = _rTotal;
        marketWallet = _marketWallet;

        IUniswapV2Factory _uniSwapRouter = IUniswapV2Factory(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //uinswap router
            // 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3  //pancakeswap testnet router
        );
        // Create a pancake pair for this new token
        uniSwapPair = IPancakeFactory(_uniSwapRouter.factory()).createPair(
            address(this),
            _uniSwapRouter.WETH()
        );

        // set the rest of the contract variables
        uniSwapRouter = _uniSwapRouter;

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

        // exclude from max tx
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[address(this)] = true;

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

    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 (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "WE: 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,
                "WE: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "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 AntiWhale(bool value) external onlyOwner {
        _antiwhale = value;
    }

    function startBuying() external onlyOwner {
        require(!_buyingOpen, "WE: Already enabled");
        _buyingOpen = true;
        _startingTimeOfbuy = block.timestamp;
        swapAndLiquifyEnabled = true;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "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,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _rOwned[account] = _tOwned[account].mul(_getRate());
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function addSniperInList(address _account) external onlyOwner {
        require(
            _account != address(uniSwapRouter),
            "WE: We can not blacklist uniSwapRouter"
        );
        require(!_isSniper[_account], "WE: sniper already exist");
        _isSniper[_account] = true;
    }

    function removeSniperFromList(address _account) external onlyOwner {
        require(_isSniper[_account], "WE: Not a sniper");
        _isSniper[_account] = false;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    // for 1% input 1
    function setMaxTxPercent(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal.mul(maxTxAmount).div(100);
    }

    function setMinTokenNumberToSell(uint256 _amount) public onlyOwner {
        minTokenNumberToSell = _amount;
    }

    function setExcludeFromMaxTx(address _address, bool value)
        public
        onlyOwner
    {
        _isExcludedFromMaxTx[_address] = value;
    }

    function setHolderDistributionFeePercent(uint256 holderFee)
        external
        onlyOwner
    {
        _holderDistributionFee = holderFee;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner {
        _liquidityFee = liquidityFee;
    }

    function setMarketFeePercent(uint256 marketFee) external onlyOwner {
        _marketFee = marketFee;
    }

    function setSwapAndLiquifyEnabled(bool _state) public onlyOwner {
        swapAndLiquifyEnabled = _state;
        emit SwapAndLiquifyEnabledUpdated(_state);
    }

    function setReflectionFees(bool _state) external onlyOwner {
        reflectionFeesdiabled = _state;
    }

    function setMarketAddress(address payable _marketAddress)
        external
        onlyOwner
    {
        marketWallet = _marketAddress;
    }

    function setPancakeRouter(IUniswapV2Factory _uniSwapRouter)
        external
        onlyOwner
    {
        uniSwapRouter = _uniSwapRouter;
    }

    function setTimeForSniping(uint256 _time) external onlyOwner {
        antiSnipingTime = _time;
    }

    //to receive BNB from uniSwapRouter when swapping
    receive() external payable {}

    function totalFeePerTx(uint256 tAmount) internal view returns (uint256) {
        uint256 percentage = tAmount
            .mul(_holderDistributionFee.add(_liquidityFee).add(_marketFee))
            .div(1e3);
        return percentage;
    }

    function _reflectFee(uint256 tAmount) private {
        uint256 tFee = tAmount.mul(_holderDistributionFee).div(1e3);
        uint256 rFee = tFee.mul(_getRate());
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidityPoolFee(uint256 tAmount, uint256 currentRate)
        internal
    {
        uint256 tPoolFee = tAmount.mul(_liquidityFee).div(1e3);
        uint256 rPoolFee = tPoolFee.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rPoolFee);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tPoolFee);
        emit Transfer(_msgSender(), address(this), tPoolFee);
    }

    function _takeMarketFee(uint256 tAmount, uint256 currentRate) internal {
        uint256 tMarketFee = tAmount.mul(_marketFee).div(1e3);
        uint256 rMarketFee = tMarketFee.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rMarketFee);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tMarketFee);
        emit Transfer(_msgSender(), address(this), tMarketFee);
    }

    function removeAllFee() private {
        _previousHolderDistributionFee = _holderDistributionFee;
        _previousLiquidityFee = _liquidityFee;
        _previousMarketFee = _marketFee;

        _holderDistributionFee = 0;
        _liquidityFee = 0;
        _marketFee = 0;
    }

    function restoreAllFee() private {
        _holderDistributionFee = _previousHolderDistributionFee;
        _liquidityFee = _previousLiquidityFee;
        _marketFee = _previousMarketFee;
    }

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "WE: transfer from the zero address");
        require(to != address(0), "WE: transfer to the zero address");
        require(amount > 0, "WE: Transfer amount must be greater than zero");
        require(!_isSniper[to], "WE: Sniper detected");
        require(!_isSniper[from], "WE: Sniper detected");

        if (
            _isExcludedFromMaxTx[from] == false &&
            _isExcludedFromMaxTx[to] == false // by default false
        ) {
            require(amount <= _maxTxAmount, "amount exceed max limit");
            if (!_antiwhale) {
                require(to != uniSwapPair, "WE: antiwhale is not enabled yet");
            }

            if (!_buyingOpen) {
                require(from != uniSwapPair, "WE: Buying is not enabled yet");
            }

            if (
                block.timestamp < _startingTimeOfbuy + antiSnipingTime &&
                from != address(uniSwapRouter)
            ) {
                if (from == uniSwapPair) {
                    _isSniper[to] = true;
                } else if (to == uniSwapPair) {
                    _isSniper[from] = true;
                }
            }
        }

        // 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] ||
            reflectionFeesdiabled
        ) {
            takeFee = false;
        }
        if (to != uniSwapPair && from != uniSwapPair) {
            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 {
        if (!takeFee) removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee) restoreAllFee();
    }

    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)
        );
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        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)
        );
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    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)
        );
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(
        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)
        );
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    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 pancake pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool shouldSell = contractTokenBalance >= minTokenNumberToSell;

        if (
            !inSwapAndLiquify &&
            shouldSell &&
            from != uniSwapPair &&
            swapAndLiquifyEnabled &&
            !(from == address(this) && to == address(uniSwapPair)) // swap 1 time
        ) {
            contractTokenBalance = minTokenNumberToSell;

            uint256 totalPercent = _liquidityFee.add(_marketFee);
            uint256 lpPercent = (_liquidityFee).mul(1e4).div(totalPercent).div(
                2
            );
            uint256 mPercent = _marketFee.mul(1e4).div(totalPercent);

            // approve contract
            _approve(
                address(this),
                address(uniSwapRouter),
                contractTokenBalance
            );

            // add liquidity
            // split the contract balance into 2 pieces

            uint256 otherPiece = contractTokenBalance.mul(lpPercent).div(1e4);
            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherPiece
            );

            Utils.swapTokensForEth(
                address(uniSwapRouter),
                tokenAmountToBeSwapped
            );

            uint256 deltaBalance = address(this).balance;

            totalPercent = lpPercent.add(mPercent);

            uint256 EthToBeAddedToLiquidity = deltaBalance.mul(lpPercent).div(
                totalPercent
            );

            // add liquidity to pancake
            Utils.addLiquidity(
                address(uniSwapRouter),
                owner(),
                otherPiece,
                EthToBeAddedToLiquidity
            );

            marketWallet.transfer(deltaBalance.mul(mPercent).div(totalPercent));
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_marketWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimBNBSuccessfully","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"transFer","type":"event"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"AntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_antiwhale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_holderDistributionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startingTimeOfbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addSniperInList","outputs":[],"stateMutability":"nonpayable","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":"antiSnipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_account","type":"address"}],"name":"removeSniperFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"holderFee","type":"uint256"}],"name":"setHolderDistributionFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketAddress","type":"address"}],"name":"setMarketAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketFee","type":"uint256"}],"name":"setMarketFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenNumberToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Factory","name":"_uniSwapRouter","type":"address"}],"name":"setPancakeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setReflectionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setTimeForSniping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBuying","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":"totalFees","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniSwapRouter","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526b033b2e3c9fd0803ce8000000600c81905562000024906000196200079c565b620000329060001962000745565b600d55603c60105560408051808201909152600a80825269105c1950d85c1a5d185b60b21b60209092019182526200006d91601191620005ee565b5060408051808201909152600280825261414360f01b60209092019182526200009991601291620005ee565b5060138054601260ff19909116179055600c54620000e190606490620000cd906032620004d4602090811b62001b3b17901c565b6200056860201b62001bba1790919060201c565b60155562000102612710600c546200056860201b62001bba1790919060201c565b6016556017805463ffffffff19166301000000179055601460188190556019556000601a819055601b556064601c819055601d553480156200014357600080fd5b5060405162003c3338038062003c33833981016040819052620001669162000694565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600355600d5460046000620001c46000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355601480546001600160a01b03191693851693909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200024557600080fd5b505afa1580156200025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000280919062000694565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c957600080fd5b505afa158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000694565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200034d57600080fd5b505af115801562000362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000388919062000694565b60601b6001600160601b03191660805260138054610100600160a81b0319166101006001600160a01b03841602179055600160076000620003d16000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260079092528120805490921660019081179092556009906200042a6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260099092529020805490911660011790556200047d6000546001600160a01b031690565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620004c491815260200190565b60405180910390a35050620007f8565b600082620004e55750600062000562565b6000620004f3838562000723565b9050826200050285836200070c565b146200055f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200055f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005b260201b60201c565b60008183620005d65760405162461bcd60e51b8152600401620005569190620006b4565b506000620005e584866200070c565b95945050505050565b828054620005fc906200075f565b90600052602060002090601f0160209004810192826200062057600085556200066b565b82601f106200063b57805160ff19168380011785556200066b565b828001600101855582156200066b579182015b828111156200066b5782518255916020019190600101906200064e565b50620006799291506200067d565b5090565b5b808211156200067957600081556001016200067e565b600060208284031215620006a757600080fd5b81516200055f81620007df565b600060208083528351808285015260005b81811015620006e357858101830151858201604001528201620006c5565b81811115620006f6576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200071e576200071e620007c9565b500490565b6000816000190483118215151615620007405762000740620007b3565b500290565b6000828210156200075a576200075a620007b3565b500390565b600181811c908216806200077457607f821691505b602082108114156200079657634e487b7160e01b600052602260045260246000fd5b50919050565b600082620007ae57620007ae620007c9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114620007f557600080fd5b50565b60805160601c6133e46200084f6000396000818161092701528181611f9a0152818161202e015281816120e6015281816121480152818161220d0152818161224a0152818161243e015261249d01526133e46000f3fe60806040526004361061036f5760003560e01c8063715018a6116101c6578063c49b9a80116100f7578063e4440a8611610095578063f8316c901161006f578063f8316c9014610a2f578063fa58fc2d14610a4f578063fae9261214610a6f578063fc6f4cbb14610a8f57600080fd5b8063e4440a86146109cf578063ea2f0b37146109ef578063f2fde38b14610a0f57600080fd5b8063d837df05116100d1578063d837df0514610915578063dd46706414610949578063dd62ed3e14610969578063dd7bd775146109af57600080fd5b8063c49b9a80146108c0578063c7d5b8ed146108e0578063d543dbeb146108f557600080fd5b80639cb1258211610164578063a8a037f51161013e578063a8a037f514610849578063a9059cbb14610869578063b6c5232414610889578063c04bd6e01461089e57600080fd5b80639cb12582146107f4578063a457c2d714610814578063a69df4b51461083457600080fd5b806388f82020116101a057806388f82020146107685780638da5cb5b146107a15780638ee88c53146107bf57806395d89b41146107df57600080fd5b8063715018a6146107275780637d1db4a51461073c57806384d6ff2f1461075257600080fd5b80633fd149d6116102a05780635342acb41161023e578063639423691161021857806363942369146106bb57806365d60e56146106d15780636bc87c3a146106f157806370a082311461070757600080fd5b80635342acb4146106255780635b89029c1461065e5780635d01ff3d1461067e57600080fd5b80634a74bb021161027a5780634a74bb02146105aa5780634bcc2616146105c45780634ce4898f146105e457806352390c021461060557600080fd5b80633fd149d614610554578063437823ec1461056a5780634549b0391461058a57600080fd5b8063313ce5671161030d57806339265989116102e757806339265989146104de57806339509351146104fe5780633bd5d1731461051e5780633c8d355f1461053e57600080fd5b8063313ce5671461047a5780633685d4191461049c57806338d6f847146104be57600080fd5b806318160ddd1161034957806318160ddd146103f55780631fca803d1461040a57806323b872dd1461043a5780632d8381191461045a57600080fd5b806306fdde031461037b578063095ea7b3146103a657806313114a9d146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aae565b60405161039d919061312c565b60405180910390f35b3480156103b257600080fd5b506103c66103c136600461307b565b610b40565b604051901515815260200161039d565b3480156103e257600080fd5b50600e545b60405190815260200161039d565b34801561040157600080fd5b50600c546103e7565b34801561041657600080fd5b506103c6610425366004612f92565b600a6020526000908152604090205460ff1681565b34801561044657600080fd5b506103c6610455366004613005565b610b57565b34801561046657600080fd5b506103e76104753660046130c2565b610bc0565b34801561048657600080fd5b5060135460405160ff909116815260200161039d565b3480156104a857600080fd5b506104bc6104b7366004612f92565b610c49565b005b3480156104ca57600080fd5b506104bc6104d9366004612f92565b610e47565b3480156104ea57600080fd5b506104bc6104f93660046130c2565b610f70565b34801561050a57600080fd5b506103c661051936600461307b565b610f9f565b34801561052a57600080fd5b506104bc6105393660046130c2565b610fd5565b34801561054a57600080fd5b506103e760105481565b34801561056057600080fd5b506103e7600f5481565b34801561057657600080fd5b506104bc610585366004612f92565b6110c2565b34801561059657600080fd5b506103e76105a53660046130db565b611110565b3480156105b657600080fd5b506017546103c69060ff1681565b3480156105d057600080fd5b506104bc6105df3660046130c2565b6111c5565b3480156105f057600080fd5b506017546103c6906301000000900460ff1681565b34801561061157600080fd5b506104bc610620366004612f92565b6111f4565b34801561063157600080fd5b506103c6610640366004612f92565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561066a57600080fd5b506104bc610679366004613046565b611347565b34801561068a57600080fd5b506013546106a39061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b3480156106c757600080fd5b506103e760185481565b3480156106dd57600080fd5b506104bc6106ec3660046130a7565b61139c565b3480156106fd57600080fd5b506103e7601a5481565b34801561071357600080fd5b506103e7610722366004612f92565b6113e0565b34801561073357600080fd5b506104bc61143f565b34801561074857600080fd5b506103e760155481565b34801561075e57600080fd5b506103e7601c5481565b34801561077457600080fd5b506103c6610783366004612f92565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156107ad57600080fd5b506000546001600160a01b03166106a3565b3480156107cb57600080fd5b506104bc6107da3660046130c2565b6114a1565b3480156107eb57600080fd5b506103906114d0565b34801561080057600080fd5b506104bc61080f3660046130c2565b6114df565b34801561082057600080fd5b506103c661082f36600461307b565b61150e565b34801561084057600080fd5b506104bc61155d565b34801561085557600080fd5b506104bc6108643660046130a7565b611674565b34801561087557600080fd5b506103c661088436600461307b565b6116bc565b34801561089557600080fd5b506002546103e7565b3480156108aa57600080fd5b506017546103c690640100000000900460ff1681565b3480156108cc57600080fd5b506104bc6108db3660046130a7565b6116c9565b3480156108ec57600080fd5b506104bc61173a565b34801561090157600080fd5b506104bc6109103660046130c2565b6117d0565b34801561092157600080fd5b506106a37f000000000000000000000000000000000000000000000000000000000000000081565b34801561095557600080fd5b506104bc6109643660046130c2565b611820565b34801561097557600080fd5b506103e7610984366004612fcc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156109bb57600080fd5b506104bc6109ca366004612f92565b6118a5565b3480156109db57600080fd5b506014546106a3906001600160a01b031681565b3480156109fb57600080fd5b506104bc610a0a366004612f92565b61194b565b348015610a1b57600080fd5b506104bc610a2a366004612f92565b611996565b348015610a3b57600080fd5b506104bc610a4a366004612f92565b611a6e565b348015610a5b57600080fd5b506104bc610a6a3660046130c2565b611ac0565b348015610a7b57600080fd5b506104bc610a8a366004612f92565b611aef565b348015610a9b57600080fd5b506017546103c690610100900460ff1681565b606060118054610abd90613297565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae990613297565b8015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b5050505050905090565b6000610b4d338484611bfc565b5060015b92915050565b6000610b64848484611d13565b610bb68433610bb185604051806060016040528060258152602001613348602591396001600160a01b038a166000908152600660209081526040808320338452909152902054919061229a565b611bfc565b5060019392505050565b6000600d54821115610c2c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b6000610c366122d4565b9050610c428382611bba565b9392505050565b6000546001600160a01b03163314610c735760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16610cdb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b60005b600b54811015610e4357816001600160a01b0316600b8281548110610d0557610d05613319565b6000918252602090912001546001600160a01b03161415610e3157600b8054610d3090600190613280565b81548110610d4057610d40613319565b600091825260209091200154600b80546001600160a01b039092169183908110610d6c57610d6c613319565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610dc4610da56122d4565b6001600160a01b03841660009081526005602052604090205490611b3b565b6001600160a01b038316600090815260046020908152604080832093909355600581528282208290556008905220805460ff19169055600b805480610e0b57610e0b613303565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e3b816132d2565b915050610cde565b5050565b6000546001600160a01b03163314610e715760405162461bcd60e51b8152600401610c2390613181565b6013546001600160a01b03828116610100909204161415610ee35760405162461bcd60e51b815260206004820152602660248201527f57453a2057652063616e206e6f7420626c61636b6c69737420756e69537761706044820152652937baba32b960d11b6064820152608401610c23565b6001600160a01b0381166000908152600a602052604090205460ff1615610f4c5760405162461bcd60e51b815260206004820152601860248201527f57453a20736e6970657220616c726561647920657869737400000000000000006044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c2390613181565b601c55565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b4d918590610bb190866122f7565b3360008181526008602052604090205460ff161561104a5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610c23565b600061105e6110576122d4565b8490611b3b565b6001600160a01b0383166000908152600460205260409020549091506110849082612356565b6001600160a01b038316600090815260046020526040902055600d546110aa9082612356565b600d55600e546110ba90846122f7565b600e55505050565b6000546001600160a01b031633146110ec5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600c548311156111645760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c23565b8161118657600061117d6111766122d4565b8590611b3b565b9150610b519050565b60006111936111766122d4565b905060006111bb6111b46111a56122d4565b6111ae88612398565b90611b3b565b8390612356565b9250610b51915050565b6000546001600160a01b031633146111ef5760405162461bcd60e51b8152600401610c2390613181565b601655565b6000546001600160a01b0316331461121e5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16156112875760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b6001600160a01b038116600090815260046020526040902054156112e1576001600160a01b0381166000908152600460205260409020546112c790610bc0565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146113715760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c65760405162461bcd60e51b8152600401610c2390613181565b601780549115156101000261ff0019909216919091179055565b6001600160a01b03811660009081526008602052604081205460ff161561141d57506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610b5190610bc0565b6000546001600160a01b031633146114695760405162461bcd60e51b8152600401610c2390613181565b600080546040516001600160a01b039091169060008051602061336d833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114cb5760405162461bcd60e51b8152600401610c2390613181565b601a55565b606060128054610abd90613297565b6000546001600160a01b031633146115095760405162461bcd60e51b8152600401610c2390613181565b601855565b6000610b4d3384610bb18560405180606001604052806022815260200161338d602291393360009081526006602090815260408083206001600160a01b038d168452909152902054919061229a565b6001546001600160a01b031633146115c35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c23565b60025442116116225760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610c23565b600154600080546040516001600160a01b03938416939091169160008051602061336d83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b0316331461169e5760405162461bcd60e51b8152600401610c2390613181565b6017805491151563010000000263ff00000019909216919091179055565b6000610b4d338484611d13565b6000546001600160a01b031633146116f35760405162461bcd60e51b8152600401610c2390613181565b6017805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146117645760405162461bcd60e51b8152600401610c2390613181565b601754640100000000900460ff16156117b55760405162461bcd60e51b815260206004820152601360248201527215d14e88105b1c9958591e48195b98589b1959606a1b6044820152606401610c23565b6017805442600f5564ff000000ff1916640100000001179055565b6000546001600160a01b031633146117fa5760405162461bcd60e51b8152600401610c2390613181565b61181a606461181483600c54611b3b90919063ffffffff16565b90611bba565b60155550565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610c2390613181565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118798142613227565b600255600080546040516001600160a01b039091169060008051602061336d833981519152908390a350565b6000546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b0381166000908152600a602052604090205460ff1661192a5760405162461bcd60e51b815260206004820152601060248201526f2ba29d102737ba10309039b734b832b960811b6044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146119755760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146119c05760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b038116611a255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c23565b600080546040516001600160a01b038085169392169160008051602061336d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a985760405162461bcd60e51b8152600401610c2390613181565b601380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611aea5760405162461bcd60e51b8152600401610c2390613181565b601055565b6000546001600160a01b03163314611b195760405162461bcd60e51b8152600401610c2390613181565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611b4a57506000610b51565b6000611b568385613261565b905082611b63858361323f565b14610c425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c23565b6000610c4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ce565b6001600160a01b038316611c5c5760405162461bcd60e51b815260206004820152602160248201527f57453a20617070726f76652066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c23565b6001600160a01b038216611cb25760405162461bcd60e51b815260206004820152601f60248201527f57453a20617070726f766520746f20746865207a65726f2061646472657373006044820152606401610c23565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d745760405162461bcd60e51b815260206004820152602260248201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c23565b6001600160a01b038216611dca5760405162461bcd60e51b815260206004820181905260248201527f57453a207472616e7366657220746f20746865207a65726f20616464726573736044820152606401610c23565b60008111611e305760405162461bcd60e51b815260206004820152602d60248201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b6064820152608401610c23565b6001600160a01b0382166000908152600a602052604090205460ff1615611e8f5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b0383166000908152600a602052604090205460ff1615611eee5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b03831660009081526009602052604090205460ff16158015611f3057506001600160a01b03821660009081526009602052604090205460ff16155b156121a457601554811115611f875760405162461bcd60e51b815260206004820152601760248201527f616d6f756e7420657863656564206d6178206c696d69740000000000000000006044820152606401610c23565b6017546301000000900460ff1661201a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561201a5760405162461bcd60e51b815260206004820181905260248201527f57453a20616e74697768616c65206973206e6f7420656e61626c6564207965746044820152606401610c23565b601754640100000000900460ff166120ae577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614156120ae5760405162461bcd60e51b815260206004820152601d60248201527f57453a20427579696e67206973206e6f7420656e61626c6564207965740000006044820152606401610c23565b601054600f546120be9190613227565b421080156120df57506013546001600160a01b038481166101009092041614155b156121a4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415612146576001600160a01b0382166000908152600a60205260409020805460ff191660011790556121a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156121a4576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b6121ae83836123fc565b6001600160a01b03831660009081526007602052604090205460019060ff16806121f057506001600160a01b03831660009081526007602052604090205460ff165b806122025750601754610100900460ff165b1561220b575060005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561227f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b15612288575060005b6122948484848461263b565b50505050565b600081848411156122be5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb8486613280565b95945050505050565b60008060006122e1612783565b90925090506122f08282611bba565b9250505090565b6000806123048385613227565b905083811015610c425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c23565b6000610c4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229a565b600080610c426103e86118146123c7601c546123c1601a546018546122f790919063ffffffff16565b906122f7565b8690611b3b565b600081836123ef5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb848661323f565b6000612407306113e0565b9050601554811061241757506015545b601654601754908210159062010000900460ff161580156124355750805b801561247357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015612481575060175460ff165b80156124d357506001600160a01b038416301480156124d157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b155b1561229457601654915060006124f6601c54601a546122f790919063ffffffff16565b9050600061251a600261181484611814612710601a54611b3b90919063ffffffff16565b9050600061253983611814612710601c54611b3b90919063ffffffff16565b905061255b30601360019054906101000a90046001600160a01b031687611bfc565b600061256d6127106118148886611b3b565b9050600061257b8783612356565b6013549091506125999061010090046001600160a01b031682612905565b476125a485856122f7565b955060006125b6876118148489611b3b565b6013549091506125e8906001600160a01b03610100909104166125e16000546001600160a01b031690565b8684612a68565b6014546001600160a01b03166108fc61260589611814868a611b3b565b6040518115909202916000818181858888f1935050505015801561262d573d6000803e3d6000fd5b505050505050505050505050565b806126655761266560188054601955601a8054601b55601c8054601d556000928390559082905555565b6001600160a01b03841660009081526008602052604090205460ff1680156126a657506001600160a01b03831660009081526008602052604090205460ff16155b156126bb576126b6848484612b2c565b612767565b6001600160a01b03841660009081526008602052604090205460ff161580156126fc57506001600160a01b03831660009081526008602052604090205460ff165b1561270c576126b6848484612c7f565b6001600160a01b03841660009081526008602052604090205460ff16801561274c57506001600160a01b03831660009081526008602052604090205460ff165b1561275c576126b6848484612d46565b612767848484612dd7565b8061229457612294601954601855601b54601a55601d54601c55565b600d54600c546000918291825b600b548110156128d5578260046000600b84815481106127b2576127b2613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061281d57508160056000600b84815481106127f6576127f6613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561283357600d54600c54945094505050509091565b61287960046000600b848154811061284d5761284d613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612356565b92506128c160056000600b848154811061289557612895613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612356565b9150806128cd816132d2565b915050612790565b50600c54600d546128e591611bba565b8210156128fc57600d54600c549350935050509091565b90939092509050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061293e5761293e613319565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561299757600080fd5b505afa1580156129ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cf9190612faf565b816001815181106129e2576129e2613319565b6001600160a01b039283166020918202929092010152821663791ac9478460008430612a1042610168613227565b6040518663ffffffff1660e01b8152600401612a309594939291906131b6565b600060405180830381600087803b158015612a4a57600080fd5b505af1158015612a5e573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a612a8b42610168613227565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015612af357600080fd5b505af1158015612b07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a5e91906130fe565b6000612b366122d4565b90506000612b4d612b4684612398565b8490612356565b90506000612b5b8484611b3b565b90506000612b6f6111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612b959086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612bc49083612356565b6001600160a01b038089166000908152600460205260408082209390935590881681522054612bf390826122f7565b6001600160a01b038716600090815260046020526040902055612c168585612e39565b612c208585612f0d565b612c2985612f2a565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c6e91815260200190565b60405180910390a350505050505050565b6000612c896122d4565b90506000612c99612b4684612398565b90506000612ca78484611b3b565b90506000612cbb6111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612ce19083612356565b6001600160a01b03808916600090815260046020908152604080832094909455918916815260059091522054612d1790846122f7565b6001600160a01b038716600090815260056020908152604080832093909355600490522054612bf390826122f7565b6000612d506122d4565b90506000612d60612b4684612398565b90506000612d6e8484611b3b565b90506000612d826111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612da89086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612ce19083612356565b6000612de16122d4565b90506000612df1612b4684612398565b90506000612dff8484611b3b565b90506000612e136111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612bc49083612356565b6000612e566103e8611814601a5486611b3b90919063ffffffff16565b90506000612e648284611b3b565b30600090815260046020526040902054909150612e8190826122f7565b3060009081526004602090815260408083209390935560089052205460ff1615612ed05730600090815260056020526040902054612ebf90836122f7565b306000908152600560205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612e566103e8611814601c5486611b3b90919063ffffffff16565b6000612f476103e861181460185485611b3b90919063ffffffff16565b90506000612f5d612f566122d4565b8390611b3b565b600d54909150612f6d9082612356565b600d55600e546110ba90836122f7565b80358015158114612f8d57600080fd5b919050565b600060208284031215612fa457600080fd5b8135610c428161332f565b600060208284031215612fc157600080fd5b8151610c428161332f565b60008060408385031215612fdf57600080fd5b8235612fea8161332f565b91506020830135612ffa8161332f565b809150509250929050565b60008060006060848603121561301a57600080fd5b83356130258161332f565b925060208401356130358161332f565b929592945050506040919091013590565b6000806040838503121561305957600080fd5b82356130648161332f565b915061307260208401612f7d565b90509250929050565b6000806040838503121561308e57600080fd5b82356130998161332f565b946020939093013593505050565b6000602082840312156130b957600080fd5b610c4282612f7d565b6000602082840312156130d457600080fd5b5035919050565b600080604083850312156130ee57600080fd5b8235915061307260208401612f7d565b60008060006060848603121561311357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131595785810183015185820160400152820161313d565b8181111561316b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132065784516001600160a01b0316835293830193918301916001016131e1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561323a5761323a6132ed565b500190565b60008261325c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561327b5761327b6132ed565b500290565b600082821015613292576132926132ed565b500390565b600181811c908216806132ab57607f821691505b602082108114156132cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156132e6576132e66132ed565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461334457600080fd5b5056fe57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e057453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ffe073ac9467929a0a62da1ab51703b00175cd81ebace499e92bdce47f023b0f64736f6c63430008070033000000000000000000000000cf6dd23f5a8ef7386de1b8e7a12ff12ea19d1313

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063715018a6116101c6578063c49b9a80116100f7578063e4440a8611610095578063f8316c901161006f578063f8316c9014610a2f578063fa58fc2d14610a4f578063fae9261214610a6f578063fc6f4cbb14610a8f57600080fd5b8063e4440a86146109cf578063ea2f0b37146109ef578063f2fde38b14610a0f57600080fd5b8063d837df05116100d1578063d837df0514610915578063dd46706414610949578063dd62ed3e14610969578063dd7bd775146109af57600080fd5b8063c49b9a80146108c0578063c7d5b8ed146108e0578063d543dbeb146108f557600080fd5b80639cb1258211610164578063a8a037f51161013e578063a8a037f514610849578063a9059cbb14610869578063b6c5232414610889578063c04bd6e01461089e57600080fd5b80639cb12582146107f4578063a457c2d714610814578063a69df4b51461083457600080fd5b806388f82020116101a057806388f82020146107685780638da5cb5b146107a15780638ee88c53146107bf57806395d89b41146107df57600080fd5b8063715018a6146107275780637d1db4a51461073c57806384d6ff2f1461075257600080fd5b80633fd149d6116102a05780635342acb41161023e578063639423691161021857806363942369146106bb57806365d60e56146106d15780636bc87c3a146106f157806370a082311461070757600080fd5b80635342acb4146106255780635b89029c1461065e5780635d01ff3d1461067e57600080fd5b80634a74bb021161027a5780634a74bb02146105aa5780634bcc2616146105c45780634ce4898f146105e457806352390c021461060557600080fd5b80633fd149d614610554578063437823ec1461056a5780634549b0391461058a57600080fd5b8063313ce5671161030d57806339265989116102e757806339265989146104de57806339509351146104fe5780633bd5d1731461051e5780633c8d355f1461053e57600080fd5b8063313ce5671461047a5780633685d4191461049c57806338d6f847146104be57600080fd5b806318160ddd1161034957806318160ddd146103f55780631fca803d1461040a57806323b872dd1461043a5780632d8381191461045a57600080fd5b806306fdde031461037b578063095ea7b3146103a657806313114a9d146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aae565b60405161039d919061312c565b60405180910390f35b3480156103b257600080fd5b506103c66103c136600461307b565b610b40565b604051901515815260200161039d565b3480156103e257600080fd5b50600e545b60405190815260200161039d565b34801561040157600080fd5b50600c546103e7565b34801561041657600080fd5b506103c6610425366004612f92565b600a6020526000908152604090205460ff1681565b34801561044657600080fd5b506103c6610455366004613005565b610b57565b34801561046657600080fd5b506103e76104753660046130c2565b610bc0565b34801561048657600080fd5b5060135460405160ff909116815260200161039d565b3480156104a857600080fd5b506104bc6104b7366004612f92565b610c49565b005b3480156104ca57600080fd5b506104bc6104d9366004612f92565b610e47565b3480156104ea57600080fd5b506104bc6104f93660046130c2565b610f70565b34801561050a57600080fd5b506103c661051936600461307b565b610f9f565b34801561052a57600080fd5b506104bc6105393660046130c2565b610fd5565b34801561054a57600080fd5b506103e760105481565b34801561056057600080fd5b506103e7600f5481565b34801561057657600080fd5b506104bc610585366004612f92565b6110c2565b34801561059657600080fd5b506103e76105a53660046130db565b611110565b3480156105b657600080fd5b506017546103c69060ff1681565b3480156105d057600080fd5b506104bc6105df3660046130c2565b6111c5565b3480156105f057600080fd5b506017546103c6906301000000900460ff1681565b34801561061157600080fd5b506104bc610620366004612f92565b6111f4565b34801561063157600080fd5b506103c6610640366004612f92565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561066a57600080fd5b506104bc610679366004613046565b611347565b34801561068a57600080fd5b506013546106a39061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b3480156106c757600080fd5b506103e760185481565b3480156106dd57600080fd5b506104bc6106ec3660046130a7565b61139c565b3480156106fd57600080fd5b506103e7601a5481565b34801561071357600080fd5b506103e7610722366004612f92565b6113e0565b34801561073357600080fd5b506104bc61143f565b34801561074857600080fd5b506103e760155481565b34801561075e57600080fd5b506103e7601c5481565b34801561077457600080fd5b506103c6610783366004612f92565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156107ad57600080fd5b506000546001600160a01b03166106a3565b3480156107cb57600080fd5b506104bc6107da3660046130c2565b6114a1565b3480156107eb57600080fd5b506103906114d0565b34801561080057600080fd5b506104bc61080f3660046130c2565b6114df565b34801561082057600080fd5b506103c661082f36600461307b565b61150e565b34801561084057600080fd5b506104bc61155d565b34801561085557600080fd5b506104bc6108643660046130a7565b611674565b34801561087557600080fd5b506103c661088436600461307b565b6116bc565b34801561089557600080fd5b506002546103e7565b3480156108aa57600080fd5b506017546103c690640100000000900460ff1681565b3480156108cc57600080fd5b506104bc6108db3660046130a7565b6116c9565b3480156108ec57600080fd5b506104bc61173a565b34801561090157600080fd5b506104bc6109103660046130c2565b6117d0565b34801561092157600080fd5b506106a37f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c81565b34801561095557600080fd5b506104bc6109643660046130c2565b611820565b34801561097557600080fd5b506103e7610984366004612fcc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156109bb57600080fd5b506104bc6109ca366004612f92565b6118a5565b3480156109db57600080fd5b506014546106a3906001600160a01b031681565b3480156109fb57600080fd5b506104bc610a0a366004612f92565b61194b565b348015610a1b57600080fd5b506104bc610a2a366004612f92565b611996565b348015610a3b57600080fd5b506104bc610a4a366004612f92565b611a6e565b348015610a5b57600080fd5b506104bc610a6a3660046130c2565b611ac0565b348015610a7b57600080fd5b506104bc610a8a366004612f92565b611aef565b348015610a9b57600080fd5b506017546103c690610100900460ff1681565b606060118054610abd90613297565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae990613297565b8015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b5050505050905090565b6000610b4d338484611bfc565b5060015b92915050565b6000610b64848484611d13565b610bb68433610bb185604051806060016040528060258152602001613348602591396001600160a01b038a166000908152600660209081526040808320338452909152902054919061229a565b611bfc565b5060019392505050565b6000600d54821115610c2c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b6000610c366122d4565b9050610c428382611bba565b9392505050565b6000546001600160a01b03163314610c735760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16610cdb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b60005b600b54811015610e4357816001600160a01b0316600b8281548110610d0557610d05613319565b6000918252602090912001546001600160a01b03161415610e3157600b8054610d3090600190613280565b81548110610d4057610d40613319565b600091825260209091200154600b80546001600160a01b039092169183908110610d6c57610d6c613319565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610dc4610da56122d4565b6001600160a01b03841660009081526005602052604090205490611b3b565b6001600160a01b038316600090815260046020908152604080832093909355600581528282208290556008905220805460ff19169055600b805480610e0b57610e0b613303565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e3b816132d2565b915050610cde565b5050565b6000546001600160a01b03163314610e715760405162461bcd60e51b8152600401610c2390613181565b6013546001600160a01b03828116610100909204161415610ee35760405162461bcd60e51b815260206004820152602660248201527f57453a2057652063616e206e6f7420626c61636b6c69737420756e69537761706044820152652937baba32b960d11b6064820152608401610c23565b6001600160a01b0381166000908152600a602052604090205460ff1615610f4c5760405162461bcd60e51b815260206004820152601860248201527f57453a20736e6970657220616c726561647920657869737400000000000000006044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c2390613181565b601c55565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b4d918590610bb190866122f7565b3360008181526008602052604090205460ff161561104a5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610c23565b600061105e6110576122d4565b8490611b3b565b6001600160a01b0383166000908152600460205260409020549091506110849082612356565b6001600160a01b038316600090815260046020526040902055600d546110aa9082612356565b600d55600e546110ba90846122f7565b600e55505050565b6000546001600160a01b031633146110ec5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600c548311156111645760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c23565b8161118657600061117d6111766122d4565b8590611b3b565b9150610b519050565b60006111936111766122d4565b905060006111bb6111b46111a56122d4565b6111ae88612398565b90611b3b565b8390612356565b9250610b51915050565b6000546001600160a01b031633146111ef5760405162461bcd60e51b8152600401610c2390613181565b601655565b6000546001600160a01b0316331461121e5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16156112875760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b6001600160a01b038116600090815260046020526040902054156112e1576001600160a01b0381166000908152600460205260409020546112c790610bc0565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146113715760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c65760405162461bcd60e51b8152600401610c2390613181565b601780549115156101000261ff0019909216919091179055565b6001600160a01b03811660009081526008602052604081205460ff161561141d57506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610b5190610bc0565b6000546001600160a01b031633146114695760405162461bcd60e51b8152600401610c2390613181565b600080546040516001600160a01b039091169060008051602061336d833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114cb5760405162461bcd60e51b8152600401610c2390613181565b601a55565b606060128054610abd90613297565b6000546001600160a01b031633146115095760405162461bcd60e51b8152600401610c2390613181565b601855565b6000610b4d3384610bb18560405180606001604052806022815260200161338d602291393360009081526006602090815260408083206001600160a01b038d168452909152902054919061229a565b6001546001600160a01b031633146115c35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c23565b60025442116116225760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610c23565b600154600080546040516001600160a01b03938416939091169160008051602061336d83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b0316331461169e5760405162461bcd60e51b8152600401610c2390613181565b6017805491151563010000000263ff00000019909216919091179055565b6000610b4d338484611d13565b6000546001600160a01b031633146116f35760405162461bcd60e51b8152600401610c2390613181565b6017805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146117645760405162461bcd60e51b8152600401610c2390613181565b601754640100000000900460ff16156117b55760405162461bcd60e51b815260206004820152601360248201527215d14e88105b1c9958591e48195b98589b1959606a1b6044820152606401610c23565b6017805442600f5564ff000000ff1916640100000001179055565b6000546001600160a01b031633146117fa5760405162461bcd60e51b8152600401610c2390613181565b61181a606461181483600c54611b3b90919063ffffffff16565b90611bba565b60155550565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610c2390613181565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118798142613227565b600255600080546040516001600160a01b039091169060008051602061336d833981519152908390a350565b6000546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b0381166000908152600a602052604090205460ff1661192a5760405162461bcd60e51b815260206004820152601060248201526f2ba29d102737ba10309039b734b832b960811b6044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146119755760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146119c05760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b038116611a255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c23565b600080546040516001600160a01b038085169392169160008051602061336d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a985760405162461bcd60e51b8152600401610c2390613181565b601380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611aea5760405162461bcd60e51b8152600401610c2390613181565b601055565b6000546001600160a01b03163314611b195760405162461bcd60e51b8152600401610c2390613181565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611b4a57506000610b51565b6000611b568385613261565b905082611b63858361323f565b14610c425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c23565b6000610c4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ce565b6001600160a01b038316611c5c5760405162461bcd60e51b815260206004820152602160248201527f57453a20617070726f76652066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c23565b6001600160a01b038216611cb25760405162461bcd60e51b815260206004820152601f60248201527f57453a20617070726f766520746f20746865207a65726f2061646472657373006044820152606401610c23565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d745760405162461bcd60e51b815260206004820152602260248201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c23565b6001600160a01b038216611dca5760405162461bcd60e51b815260206004820181905260248201527f57453a207472616e7366657220746f20746865207a65726f20616464726573736044820152606401610c23565b60008111611e305760405162461bcd60e51b815260206004820152602d60248201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b6064820152608401610c23565b6001600160a01b0382166000908152600a602052604090205460ff1615611e8f5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b0383166000908152600a602052604090205460ff1615611eee5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b03831660009081526009602052604090205460ff16158015611f3057506001600160a01b03821660009081526009602052604090205460ff16155b156121a457601554811115611f875760405162461bcd60e51b815260206004820152601760248201527f616d6f756e7420657863656564206d6178206c696d69740000000000000000006044820152606401610c23565b6017546301000000900460ff1661201a577f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316826001600160a01b0316141561201a5760405162461bcd60e51b815260206004820181905260248201527f57453a20616e74697768616c65206973206e6f7420656e61626c6564207965746044820152606401610c23565b601754640100000000900460ff166120ae577f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b031614156120ae5760405162461bcd60e51b815260206004820152601d60248201527f57453a20427579696e67206973206e6f7420656e61626c6564207965740000006044820152606401610c23565b601054600f546120be9190613227565b421080156120df57506013546001600160a01b038481166101009092041614155b156121a4577f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b03161415612146576001600160a01b0382166000908152600a60205260409020805460ff191660011790556121a4565b7f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316826001600160a01b031614156121a4576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b6121ae83836123fc565b6001600160a01b03831660009081526007602052604090205460019060ff16806121f057506001600160a01b03831660009081526007602052604090205460ff165b806122025750601754610100900460ff165b1561220b575060005b7f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b03161415801561227f57507f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316846001600160a01b031614155b15612288575060005b6122948484848461263b565b50505050565b600081848411156122be5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb8486613280565b95945050505050565b60008060006122e1612783565b90925090506122f08282611bba565b9250505090565b6000806123048385613227565b905083811015610c425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c23565b6000610c4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229a565b600080610c426103e86118146123c7601c546123c1601a546018546122f790919063ffffffff16565b906122f7565b8690611b3b565b600081836123ef5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb848661323f565b6000612407306113e0565b9050601554811061241757506015545b601654601754908210159062010000900460ff161580156124355750805b801561247357507f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316846001600160a01b031614155b8015612481575060175460ff165b80156124d357506001600160a01b038416301480156124d157507f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b0316145b155b1561229457601654915060006124f6601c54601a546122f790919063ffffffff16565b9050600061251a600261181484611814612710601a54611b3b90919063ffffffff16565b9050600061253983611814612710601c54611b3b90919063ffffffff16565b905061255b30601360019054906101000a90046001600160a01b031687611bfc565b600061256d6127106118148886611b3b565b9050600061257b8783612356565b6013549091506125999061010090046001600160a01b031682612905565b476125a485856122f7565b955060006125b6876118148489611b3b565b6013549091506125e8906001600160a01b03610100909104166125e16000546001600160a01b031690565b8684612a68565b6014546001600160a01b03166108fc61260589611814868a611b3b565b6040518115909202916000818181858888f1935050505015801561262d573d6000803e3d6000fd5b505050505050505050505050565b806126655761266560188054601955601a8054601b55601c8054601d556000928390559082905555565b6001600160a01b03841660009081526008602052604090205460ff1680156126a657506001600160a01b03831660009081526008602052604090205460ff16155b156126bb576126b6848484612b2c565b612767565b6001600160a01b03841660009081526008602052604090205460ff161580156126fc57506001600160a01b03831660009081526008602052604090205460ff165b1561270c576126b6848484612c7f565b6001600160a01b03841660009081526008602052604090205460ff16801561274c57506001600160a01b03831660009081526008602052604090205460ff165b1561275c576126b6848484612d46565b612767848484612dd7565b8061229457612294601954601855601b54601a55601d54601c55565b600d54600c546000918291825b600b548110156128d5578260046000600b84815481106127b2576127b2613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061281d57508160056000600b84815481106127f6576127f6613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561283357600d54600c54945094505050509091565b61287960046000600b848154811061284d5761284d613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612356565b92506128c160056000600b848154811061289557612895613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612356565b9150806128cd816132d2565b915050612790565b50600c54600d546128e591611bba565b8210156128fc57600d54600c549350935050509091565b90939092509050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061293e5761293e613319565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561299757600080fd5b505afa1580156129ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cf9190612faf565b816001815181106129e2576129e2613319565b6001600160a01b039283166020918202929092010152821663791ac9478460008430612a1042610168613227565b6040518663ffffffff1660e01b8152600401612a309594939291906131b6565b600060405180830381600087803b158015612a4a57600080fd5b505af1158015612a5e573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a612a8b42610168613227565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015612af357600080fd5b505af1158015612b07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a5e91906130fe565b6000612b366122d4565b90506000612b4d612b4684612398565b8490612356565b90506000612b5b8484611b3b565b90506000612b6f6111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612b959086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612bc49083612356565b6001600160a01b038089166000908152600460205260408082209390935590881681522054612bf390826122f7565b6001600160a01b038716600090815260046020526040902055612c168585612e39565b612c208585612f0d565b612c2985612f2a565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c6e91815260200190565b60405180910390a350505050505050565b6000612c896122d4565b90506000612c99612b4684612398565b90506000612ca78484611b3b565b90506000612cbb6111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612ce19083612356565b6001600160a01b03808916600090815260046020908152604080832094909455918916815260059091522054612d1790846122f7565b6001600160a01b038716600090815260056020908152604080832093909355600490522054612bf390826122f7565b6000612d506122d4565b90506000612d60612b4684612398565b90506000612d6e8484611b3b565b90506000612d826111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612da89086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612ce19083612356565b6000612de16122d4565b90506000612df1612b4684612398565b90506000612dff8484611b3b565b90506000612e136111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612bc49083612356565b6000612e566103e8611814601a5486611b3b90919063ffffffff16565b90506000612e648284611b3b565b30600090815260046020526040902054909150612e8190826122f7565b3060009081526004602090815260408083209390935560089052205460ff1615612ed05730600090815260056020526040902054612ebf90836122f7565b306000908152600560205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612e566103e8611814601c5486611b3b90919063ffffffff16565b6000612f476103e861181460185485611b3b90919063ffffffff16565b90506000612f5d612f566122d4565b8390611b3b565b600d54909150612f6d9082612356565b600d55600e546110ba90836122f7565b80358015158114612f8d57600080fd5b919050565b600060208284031215612fa457600080fd5b8135610c428161332f565b600060208284031215612fc157600080fd5b8151610c428161332f565b60008060408385031215612fdf57600080fd5b8235612fea8161332f565b91506020830135612ffa8161332f565b809150509250929050565b60008060006060848603121561301a57600080fd5b83356130258161332f565b925060208401356130358161332f565b929592945050506040919091013590565b6000806040838503121561305957600080fd5b82356130648161332f565b915061307260208401612f7d565b90509250929050565b6000806040838503121561308e57600080fd5b82356130998161332f565b946020939093013593505050565b6000602082840312156130b957600080fd5b610c4282612f7d565b6000602082840312156130d457600080fd5b5035919050565b600080604083850312156130ee57600080fd5b8235915061307260208401612f7d565b60008060006060848603121561311357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131595785810183015185820160400152820161313d565b8181111561316b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132065784516001600160a01b0316835293830193918301916001016131e1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561323a5761323a6132ed565b500190565b60008261325c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561327b5761327b6132ed565b500290565b600082821015613292576132926132ed565b500390565b600181811c908216806132ab57607f821691505b602082108114156132cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156132e6576132e66132ed565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461334457600080fd5b5056fe57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e057453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ffe073ac9467929a0a62da1ab51703b00175cd81ebace499e92bdce47f023b0f64736f6c63430008070033

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

000000000000000000000000cf6dd23f5a8ef7386de1b8e7a12ff12ea19d1313

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cf6dd23f5a8ef7386de1b8e7a12ff12ea19d1313


Deployed Bytecode Sourcemap

20878:22788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24564:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25549:193;;;;;;;;;;-1:-1:-1;25549:193:0;;;;;:::i;:::-;;:::i;:::-;;;4862:14:1;;4855:22;4837:41;;4825:2;4810:18;25549:193:0;4697:187:1;27042:87:0;;;;;;;;;;-1:-1:-1;27111:10:0;;27042:87;;;14559:25:1;;;14547:2;14532:18;27042:87:0;14413:177:1;24841:95:0;;;;;;;;;;-1:-1:-1;24921:7:0;;24841:95;;21362:41;;;;;;;;;;-1:-1:-1;21362:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25750:443;;;;;;;;;;-1:-1:-1;25750:443:0;;;;;:::i;:::-;;:::i;28466:322::-;;;;;;;;;;-1:-1:-1;28466:322:0;;;;;:::i;:::-;;:::i;24750:83::-;;;;;;;;;;-1:-1:-1;24816:9:0;;24750:83;;24816:9;;;;15722:36:1;;15710:2;15695:18;24750:83:0;15580:184:1;29136:547:0;;;;;;;;;;-1:-1:-1;29136:547:0;;;;;:::i;:::-;;:::i;:::-;;29691:308;;;;;;;;;;-1:-1:-1;29691:308:0;;;;;:::i;:::-;;:::i;31164:108::-;;;;;;;;;;-1:-1:-1;31164:108:0;;;;;:::i;:::-;;:::i;26201:300::-;;;;;;;;;;-1:-1:-1;26201:300:0;;;;;:::i;:::-;;:::i;27137:411::-;;;;;;;;;;-1:-1:-1;27137:411:0;;;;;:::i;:::-;;:::i;21697:43::-;;;;;;;;;;;;;;;;21633:33;;;;;;;;;;;;;;;;30187:111;;;;;;;;;;-1:-1:-1;30187:111:0;;;;;:::i;:::-;;:::i;27879:579::-;;;;;;;;;;-1:-1:-1;27879:579:0;;;;;:::i;:::-;;:::i;22211:41::-;;;;;;;;;;-1:-1:-1;22211:41:0;;;;;;;;30585:116;;;;;;;;;;-1:-1:-1;30585:116:0;;;;;:::i;:::-;;:::i;22427:29::-;;;;;;;;;;-1:-1:-1;22427:29:0;;;;;;;;;;;28796:332;;;;;;;;;;-1:-1:-1;28796:332:0;;;;;:::i;:::-;;:::i;34836:124::-;;;;;;;;;;-1:-1:-1;34836:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;34925:27:0;34901:4;34925:27;;;:18;:27;;;;;;;;;34836:124;30709:156;;;;;;;;;;-1:-1:-1;30709:156:0;;;;;:::i;:::-;;:::i;21864:38::-;;;;;;;;;;-1:-1:-1;21864:38:0;;;;;;;-1:-1:-1;;;;;21864:38:0;;;;;;-1:-1:-1;;;;;3817:32:1;;;3799:51;;3787:2;3772:18;21864:38:0;3653:203:1;22544:42:0;;;;;;;;;;;;;;;;31453:108;;;;;;;;;;-1:-1:-1;31453:108:0;;;;;:::i;:::-;;:::i;22732:32::-;;;;;;;;;;;;;;;;24944:198;;;;;;;;;;-1:-1:-1;24944:198:0;;;;;:::i;:::-;;:::i;7398:157::-;;;;;;;;;;;;;:::i;21996:54::-;;;;;;;;;;;;;;;;22875:31;;;;;;;;;;;;;;;;26914:120;;;;;;;;;;-1:-1:-1;26914:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;27006:20:0;26982:4;27006:20;;;:11;:20;;;;;;;;;26914:120;7184:79;;;;;;;;;;-1:-1:-1;7222:7:0;7249:6;-1:-1:-1;;;;;7249:6:0;7184:79;;31036:120;;;;;;;;;;-1:-1:-1;31036:120:0;;;;;:::i;:::-;;:::i;24655:87::-;;;;;;;;;;;;;:::i;30873:155::-;;;;;;;;;;-1:-1:-1;30873:155:0;;;;;:::i;:::-;;:::i;26509:397::-;;;;;;;;;;-1:-1:-1;26509:397:0;;;;;:::i;:::-;;:::i;8364:431::-;;;;;;;;;;;;;:::i;27556:87::-;;;;;;;;;;-1:-1:-1;27556:87:0;;;;;:::i;:::-;;:::i;25150:199::-;;;;;;;;;;-1:-1:-1;25150:199:0;;;;;:::i;:::-;;:::i;7892:89::-;;;;;;;;;;-1:-1:-1;7964:9:0;;7892:89;;22465:23;;;;;;;;;;-1:-1:-1;22465:23:0;;;;;;;;;;;31280:165;;;;;;;;;;-1:-1:-1;31280:165:0;;;;;:::i;:::-;;:::i;27651:220::-;;;;;;;;;;;;;:::i;30447:130::-;;;;;;;;;;-1:-1:-1;30447:130:0;;;;;:::i;:::-;;:::i;21909:36::-;;;;;;;;;;;;;;;8057:235;;;;;;;;;;-1:-1:-1;8057:235:0;;;;;:::i;:::-;;:::i;25357:184::-;;;;;;;;;;-1:-1:-1;25357:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;25506:18:0;;;25474:7;25506:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;25357:184;30007:172;;;;;;;;;;-1:-1:-1;30007:172:0;;;;;:::i;:::-;;:::i;21952:35::-;;;;;;;;;;-1:-1:-1;21952:35:0;;;;-1:-1:-1;;;;;21952:35:0;;;30306:110;;;;;;;;;;-1:-1:-1;30306:110:0;;;;;:::i;:::-;;:::i;7563:321::-;;;;;;;;;;-1:-1:-1;7563:321:0;;;;;:::i;:::-;;:::i;31725:151::-;;;;;;;;;;-1:-1:-1;31725:151:0;;;;;:::i;:::-;;:::i;31884:103::-;;;;;;;;;;-1:-1:-1;31884:103:0;;;;;:::i;:::-;;:::i;31569:148::-;;;;;;;;;;-1:-1:-1;31569:148:0;;;;;:::i;:::-;;:::i;22310:41::-;;;;;;;;;;-1:-1:-1;22310:41:0;;;;;;;;;;;24564:83;24601:13;24634:5;24627:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24564:83;:::o;25549:193::-;25651:4;25673:39;3112:10;25696:7;25705:6;25673:8;:39::i;:::-;-1:-1:-1;25730:4:0;25549:193;;;;;:::o;25750:443::-;25882:4;25899:36;25909:6;25917:9;25928:6;25899:9;:36::i;:::-;25946:217;25969:6;3112:10;26017:135;26073:6;26017:135;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26017:19:0;;;;;;:11;:19;;;;;;;;3112:10;26017:33;;;;;;;;;;:37;:135::i;:::-;25946:8;:217::i;:::-;-1:-1:-1;26181:4:0;25750:443;;;;;:::o;28466:322::-;28560:7;28618;;28607;:18;;28585:110;;;;-1:-1:-1;;;28585:110:0;;7100:2:1;28585:110:0;;;7082:21:1;7139:2;7119:18;;;7112:30;7178:34;7158:18;;;7151:62;-1:-1:-1;;;7229:18:1;;;7222:40;7279:19;;28585:110:0;;;;;;;;;28706:19;28728:10;:8;:10::i;:::-;28706:32;-1:-1:-1;28756:24:0;:7;28706:32;28756:11;:24::i;:::-;28749:31;28466:322;-1:-1:-1;;;28466:322:0:o;29136:547::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29216:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;29208:60;;;::::0;-1:-1:-1;;;29208:60:0;;8274:2:1;29208:60:0::1;::::0;::::1;8256:21:1::0;8313:2;8293:18;;;8286:30;8352:29;8332:18;;;8325:57;8399:18;;29208:60:0::1;8072:351:1::0;29208:60:0::1;29284:9;29279:397;29303:9;:16:::0;29299:20;::::1;29279:397;;;29361:7;-1:-1:-1::0;;;;;29345:23:0::1;:9;29355:1;29345:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;29345:12:0::1;:23;29341:324;;;29404:9;29414:16:::0;;:20:::1;::::0;29433:1:::1;::::0;29414:20:::1;:::i;:::-;29404:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;29389:9:::1;:12:::0;;-1:-1:-1;;;;;29404:31:0;;::::1;::::0;29399:1;;29389:12;::::1;;;;;:::i;:::-;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;29389:46:0::1;;;;;-1:-1:-1::0;;;;;29389:46:0::1;;;;;;29473:32;29494:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;29473:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;:20:::1;:32::i;:::-;-1:-1:-1::0;;;;;29454:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:51;;;;29524:7:::1;:16:::0;;;;;:20;;;29563:11:::1;:20:::0;;;:28;;-1:-1:-1;;29563:28:0::1;::::0;;29610:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;29610:15:0;;;;;-1:-1:-1;;;;;;29610:15:0::1;::::0;;;;;29279:397:::1;29136:547:::0;:::o;29341:324::-:1;29321:3:::0;::::1;::::0;::::1;:::i;:::-;;;;29279:397;;;;29136:547:::0;:::o;29691:308::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;29806:13:::1;::::0;-1:-1:-1;;;;;29786:34:0;;::::1;29806:13;::::0;;::::1;;29786:34;;29764:122;;;::::0;-1:-1:-1;;;29764:122:0;;5927:2:1;29764:122:0::1;::::0;::::1;5909:21:1::0;5966:2;5946:18;;;5939:30;6005:34;5985:18;;;5978:62;-1:-1:-1;;;6056:18:1;;;6049:36;6102:19;;29764:122:0::1;5725:402:1::0;29764:122:0::1;-1:-1:-1::0;;;;;29906:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;29905:20;29897:57;;;::::0;-1:-1:-1;;;29897:57:0;;12670:2:1;29897:57:0::1;::::0;::::1;12652:21:1::0;12709:2;12689:18;;;12682:30;12748:26;12728:18;;;12721:54;12792:18;;29897:57:0::1;12468:348:1::0;29897:57:0::1;-1:-1:-1::0;;;;;29965:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;29965:26:0::1;29987:4;29965:26;::::0;;29691:308::o;31164:108::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31242:10:::1;:22:::0;31164:108::o;26201:300::-;3112:10;26316:4;26410:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26410:34:0;;;;;;;;;;26316:4;;26338:133;;26388:7;;26410:50;;26449:10;26410:38;:50::i;27137:411::-;3112:10;27189:14;27252:19;;;:11;:19;;;;;;;;27251:20;27229:114;;;;-1:-1:-1;;;27229:114:0;;13023:2:1;27229:114:0;;;13005:21:1;13062:2;13042:18;;;13035:30;13101:34;13081:18;;;13074:62;-1:-1:-1;;;13152:18:1;;;13145:42;13204:19;;27229:114:0;12821:408:1;27229:114:0;27354:15;27372:23;27384:10;:8;:10::i;:::-;27372:7;;:11;:23::i;:::-;-1:-1:-1;;;;;27424:15:0;;;;;;:7;:15;;;;;;27354:41;;-1:-1:-1;27424:28:0;;27354:41;27424:19;:28::i;:::-;-1:-1:-1;;;;;27406:15:0;;;;;;:7;:15;;;;;:46;27473:7;;:20;;27485:7;27473:11;:20::i;:::-;27463:7;:30;27517:10;;:23;;27532:7;27517:14;:23::i;:::-;27504:10;:36;-1:-1:-1;;;27137:411:0:o;30187:111::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30256:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;30256:34:0::1;30286:4;30256:34;::::0;;30187:111::o;27879:579::-;27997:7;28041;;28030;:18;;28022:62;;;;-1:-1:-1;;;28022:62:0;;10029:2:1;28022:62:0;;;10011:21:1;10068:2;10048:18;;;10041:30;10107:33;10087:18;;;10080:61;10158:18;;28022:62:0;9827:355:1;28022:62:0;28100:17;28095:356;;28134:15;28152:23;28164:10;:8;:10::i;:::-;28152:7;;:11;:23::i;:::-;28134:41;-1:-1:-1;28190:14:0;;-1:-1:-1;28190:14:0;28095:356;28237:15;28255:23;28267:10;:8;:10::i;28255:23::-;28237:41;;28293:23;28319:83;28349:38;28376:10;:8;:10::i;:::-;28349:22;28363:7;28349:13;:22::i;:::-;:26;;:38::i;:::-;28319:7;;:11;:83::i;:::-;28293:109;-1:-1:-1;28417:22:0;;-1:-1:-1;;28417:22:0;30585:116;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;30663:20:::1;:30:::0;30585:116::o;28796:332::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28877:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;28876:21;28868:61;;;::::0;-1:-1:-1;;;28868:61:0;;8274:2:1;28868:61:0::1;::::0;::::1;8256:21:1::0;8313:2;8293:18;;;8286:30;8352:29;8332:18;;;8325:57;8399:18;;28868:61:0::1;8072:351:1::0;28868:61:0::1;-1:-1:-1::0;;;;;28944:16:0;::::1;28963:1;28944:16:::0;;;:7:::1;:16;::::0;;;;;:20;28940:109:::1;;-1:-1:-1::0;;;;;29020:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;29000:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;28981:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;28940:109:::1;-1:-1:-1::0;;;;;29059:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;29059:27:0::1;29082:4;29059:27:::0;;::::1;::::0;;;29097:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;29097:23:0::1;::::0;;::::1;::::0;;28796:332::o;30709:156::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30819:30:0;;;::::1;;::::0;;;:20:::1;:30;::::0;;;;:38;;-1:-1:-1;;30819:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30709:156::o;31453:108::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31523:21:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;31523:30:0;;::::1;::::0;;;::::1;::::0;;31453:108::o;24944:198::-;-1:-1:-1;;;;;25034:20:0;;25010:7;25034:20;;;:11;:20;;;;;;;;25030:49;;;-1:-1:-1;;;;;;25063:16:0;;;;;:7;:16;;;;;;;24944:198::o;25030:49::-;-1:-1:-1;;;;;25117:16:0;;;;;;:7;:16;;;;;;25097:37;;:19;:37::i;7398:157::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;7505:1:::1;7489:6:::0;;7468:40:::1;::::0;-1:-1:-1;;;;;7489:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7468:40:0;7505:1;;7468:40:::1;7544:1;7519:28:::0;;-1:-1:-1;;;;;;7519:28:0::1;::::0;;7398:157::o;31036:120::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31120:13:::1;:28:::0;31036:120::o;24655:87::-;24694:13;24727:7;24720:14;;;;;:::i;30873:155::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;30986:22:::1;:34:::0;30873:155::o;26509:397::-;26629:4;26651:225;3112:10;26701:7;26723:142;26780:15;26723:142;;;;;;;;;;;;;;;;;3112:10;26723:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26723:34:0;;;;;;;;;;;;:38;:142::i;8364:431::-;8430:14;;-1:-1:-1;;;;;8430:14:0;8448:10;8430:28;8408:113;;;;-1:-1:-1;;;8408:113:0;;14211:2:1;8408:113:0;;;14193:21:1;14250:2;14230:18;;;14223:30;14289:34;14269:18;;;14262:62;-1:-1:-1;;;14340:18:1;;;14333:33;14383:19;;8408:113:0;14009:399:1;8408:113:0;8572:9;;8554:15;:27;8532:114;;;;-1:-1:-1;;;8532:114:0;;6334:2:1;8532:114:0;;;6316:21:1;6373:2;6353:18;;;6346:30;6412:34;6392:18;;;6385:62;-1:-1:-1;;;6463:18:1;;;6456:35;6508:19;;8532:114:0;6132:401:1;8532:114:0;8691:14;;;8683:6;;8662:44;;-1:-1:-1;;;;;8691:14:0;;;;8683:6;;;;-1:-1:-1;;;;;;;;;;;8662:44:0;;8726:14;;;;8717:23;;-1:-1:-1;;;;;;8717:23:0;;;-1:-1:-1;;;;;8726:14:0;;8717:23;;;;8751:36;;;8364:431::o;27556:87::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;27617:10:::1;:18:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27617:18:0;;::::1;::::0;;;::::1;::::0;;27556:87::o;25150:199::-;25255:4;25277:42;3112:10;25301:9;25312:6;25277:9;:42::i;31280:165::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31355:21:::1;:30:::0;;-1:-1:-1;;31355:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31401:36:::1;::::0;4837:41:1;;;31401:36:0::1;::::0;4825:2:1;4810:18;31401:36:0::1;;;;;;;31280:165:::0;:::o;27651:220::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;27713:11:::1;::::0;;;::::1;;;27712:12;27704:44;;;::::0;-1:-1:-1;;;27704:44:0;;9681:2:1;27704:44:0::1;::::0;::::1;9663:21:1::0;9720:2;9700:18;;;9693:30;-1:-1:-1;;;9739:18:1;;;9732:49;9798:18;;27704:44:0::1;9479:343:1::0;27704:44:0::1;27759:11;:18:::0;;27809:15:::1;27788:18;:36:::0;-1:-1:-1;;27835:28:0;;;;;27651:220::o;30447:130::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;30536:33:::1;30565:3;30536:24;30548:11;30536:7;;:11;;:24;;;;:::i;:::-;:28:::0;::::1;:33::i;:::-;30521:12;:48:::0;-1:-1:-1;30447:130:0:o;8057:235::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;8138:6:::1;::::0;;;8121:23;;-1:-1:-1;;;;;;8121:23:0;;::::1;-1:-1:-1::0;;;;;8138:6:0;::::1;8121:23;::::0;;;8155:28:::1;::::0;;8206:22:::1;8224:4:::0;8206:15:::1;:22;:::i;:::-;8194:9;:34:::0;8281:1:::1;8265:6:::0;;8244:40:::1;::::0;-1:-1:-1;;;;;8265:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;8244:40:0;8281:1;;8244:40:::1;8057:235:::0;:::o;30007:172::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30093:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;30085:48;;;::::0;-1:-1:-1;;;30085:48:0;;8630:2:1;30085:48:0::1;::::0;::::1;8612:21:1::0;8669:2;8649:18;;;8642:30;-1:-1:-1;;;8688:18:1;;;8681:46;8744:18;;30085:48:0::1;8428:340:1::0;30085:48:0::1;-1:-1:-1::0;;;;;30144:19:0::1;30166:5;30144:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;30144:27:0::1;::::0;;30007:172::o;30306:110::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30373:27:0::1;30403:5;30373:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;30373:35:0::1;::::0;;30306:110::o;7563:321::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7706:22:0;::::1;7684:110;;;::::0;-1:-1:-1;;;7684:110:0;;7511:2:1;7684:110:0::1;::::0;::::1;7493:21:1::0;7550:2;7530:18;;;7523:30;7589:34;7569:18;;;7562:62;-1:-1:-1;;;7640:18:1;;;7633:36;7686:19;;7684:110:0::1;7309:402:1::0;7684:110:0::1;7831:6;::::0;;7810:38:::1;::::0;-1:-1:-1;;;;;7810:38:0;;::::1;::::0;7831:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;7810:38:0;::::1;7859:6;:17:::0;;-1:-1:-1;;;;;;7859:17:0::1;-1:-1:-1::0;;;;;7859:17:0;;;::::1;::::0;;;::::1;::::0;;7563:321::o;31725:151::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31838:13:::1;:30:::0;;-1:-1:-1;;;;;31838:30:0;;::::1;;;-1:-1:-1::0;;;;;;31838:30:0;;::::1;::::0;;;::::1;::::0;;31725:151::o;31884:103::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31956:15:::1;:23:::0;31884:103::o;31569:148::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31680:12:::1;:29:::0;;-1:-1:-1;;;;;;31680:29:0::1;-1:-1:-1::0;;;;;31680:29:0;;;::::1;::::0;;;::::1;::::0;;31569:148::o;1699:471::-;1757:7;2002:6;1998:47;;-1:-1:-1;2032:1:0;2025:8;;1998:47;2057:9;2069:5;2073:1;2069;:5;:::i;:::-;2057:17;-1:-1:-1;2102:1:0;2093:5;2097:1;2057:17;2093:5;:::i;:::-;:10;2085:56;;;;-1:-1:-1;;;2085:56:0;;11153:2:1;2085:56:0;;;11135:21:1;11192:2;11172:18;;;11165:30;11231:34;11211:18;;;11204:62;-1:-1:-1;;;11282:18:1;;;11275:31;11323:19;;2085:56:0;10951:397:1;2178:132:0;2236:7;2263:39;2267:1;2270;2263:39;;;;;;;;;;;;;;;;;:3;:39::i;34968:365::-;-1:-1:-1;;;;;35095:19:0;;35087:65;;;;-1:-1:-1;;;35087:65:0;;11916:2:1;35087:65:0;;;11898:21:1;11955:2;11935:18;;;11928:30;11994:34;11974:18;;;11967:62;-1:-1:-1;;;12045:18:1;;;12038:31;12086:19;;35087:65:0;11714:397:1;35087:65:0;-1:-1:-1;;;;;35171:21:0;;35163:65;;;;-1:-1:-1;;;35163:65:0;;6740:2:1;35163:65:0;;;6722:21:1;6779:2;6759:18;;;6752:30;6818:33;6798:18;;;6791:61;6869:18;;35163:65:0;6538:355:1;35163:65:0;-1:-1:-1;;;;;35241:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;35293:32;;14559:25:1;;;35293:32:0;;14532:18:1;35293:32:0;;;;;;;34968:365;;;:::o;35341:1965::-;-1:-1:-1;;;;;35463:18:0;;35455:65;;;;-1:-1:-1;;;35455:65:0;;10750:2:1;35455:65:0;;;10732:21:1;10789:2;10769:18;;;10762:30;10828:34;10808:18;;;10801:62;-1:-1:-1;;;10879:18:1;;;10872:32;10921:19;;35455:65:0;10548:398:1;35455:65:0;-1:-1:-1;;;;;35539:16:0;;35531:61;;;;-1:-1:-1;;;35531:61:0;;13436:2:1;35531:61:0;;;13418:21:1;;;13455:18;;;13448:30;13514:34;13494:18;;;13487:62;13566:18;;35531:61:0;13234:356:1;35531:61:0;35620:1;35611:6;:10;35603:68;;;;-1:-1:-1;;;35603:68:0;;13797:2:1;35603:68:0;;;13779:21:1;13836:2;13816:18;;;13809:30;13875:34;13855:18;;;13848:62;-1:-1:-1;;;13926:18:1;;;13919:43;13979:19;;35603:68:0;13595:409:1;35603:68:0;-1:-1:-1;;;;;35691:13:0;;;;;;:9;:13;;;;;;;;35690:14;35682:46;;;;-1:-1:-1;;;35682:46:0;;8975:2:1;35682:46:0;;;8957:21:1;9014:2;8994:18;;;8987:30;-1:-1:-1;;;9033:18:1;;;9026:49;9092:18;;35682:46:0;8773:343:1;35682:46:0;-1:-1:-1;;;;;35748:15:0;;;;;;:9;:15;;;;;;;;35747:16;35739:48;;;;-1:-1:-1;;;35739:48:0;;8975:2:1;35739:48:0;;;8957:21:1;9014:2;8994:18;;;8987:30;-1:-1:-1;;;9033:18:1;;;9026:49;9092:18;;35739:48:0;8773:343:1;35739:48:0;-1:-1:-1;;;;;35818:26:0;;;;;;:20;:26;;;;;;;;:35;;;:85;;-1:-1:-1;;;;;;35870:24:0;;;;;;:20;:24;;;;;;;;:33;35818:85;35800:853;;;35968:12;;35958:6;:22;;35950:58;;;;-1:-1:-1;;;35950:58:0;;12318:2:1;35950:58:0;;;12300:21:1;12357:2;12337:18;;;12330:30;12396:25;12376:18;;;12369:53;12439:18;;35950:58:0;12116:347:1;35950:58:0;36028:10;;;;;;;36023:114;;36073:11;-1:-1:-1;;;;;36067:17:0;:2;-1:-1:-1;;;;;36067:17:0;;;36059:62;;;;-1:-1:-1;;;36059:62:0;;10389:2:1;36059:62:0;;;10371:21:1;;;10408:18;;;10401:30;10467:34;10447:18;;;10440:62;10519:18;;36059:62:0;10187:356:1;36059:62:0;36158:11;;;;;;;36153:114;;36206:11;-1:-1:-1;;;;;36198:19:0;:4;-1:-1:-1;;;;;36198:19:0;;;36190:61;;;;-1:-1:-1;;;36190:61:0;;9323:2:1;36190:61:0;;;9305:21:1;9362:2;9342:18;;;9335:30;9401:31;9381:18;;;9374:59;9450:18;;36190:61:0;9121:353:1;36190:61:0;36344:15;;36323:18;;:36;;;;:::i;:::-;36305:15;:54;:105;;;;-1:-1:-1;36396:13:0;;-1:-1:-1;;;;;36380:30:0;;;36396:13;;;;;36380:30;;36305:105;36283:359;;;36457:11;-1:-1:-1;;;;;36449:19:0;:4;-1:-1:-1;;;;;36449:19:0;;36445:182;;;-1:-1:-1;;;;;36493:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;36493:20:0;36509:4;36493:20;;;36445:182;;;36549:11;-1:-1:-1;;;;;36543:17:0;:2;-1:-1:-1;;;;;36543:17:0;;36539:88;;;-1:-1:-1;;;;;36585:15:0;;;;;;:9;:15;;;;;:22;;-1:-1:-1;;36585:22:0;36603:4;36585:22;;;36539:88;36694:24;36709:4;36715:2;36694:14;:24::i;:::-;-1:-1:-1;;;;;36926:24:0;;36792:12;36926:24;;;:18;:24;;;;;;36807:4;;36926:24;;;:63;;-1:-1:-1;;;;;;36967:22:0;;;;;;:18;:22;;;;;;;;36926:63;:101;;;-1:-1:-1;37006:21:0;;;;;;;36926:101;36908:173;;;-1:-1:-1;37064:5:0;36908:173;37101:11;-1:-1:-1;;;;;37095:17:0;:2;-1:-1:-1;;;;;37095:17:0;;;:40;;;;;37124:11;-1:-1:-1;;;;;37116:19:0;:4;-1:-1:-1;;;;;37116:19:0;;;37095:40;37091:88;;;-1:-1:-1;37162:5:0;37091:88;37257:41;37272:4;37278:2;37282:6;37290:7;37257:14;:41::i;:::-;35444:1862;35341:1965;;;:::o;1465:226::-;1585:7;1621:12;1613:6;;;;1605:29;;;;-1:-1:-1;;;1605:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1645:9:0;1657:5;1661:1;1657;:5;:::i;:::-;1645:17;1465:226;-1:-1:-1;;;;;1465:226:0:o;32602:164::-;32644:7;32665:15;32682;32701:19;:17;:19::i;:::-;32664:56;;-1:-1:-1;32664:56:0;-1:-1:-1;32738:20:0;32664:56;;32738:11;:20::i;:::-;32731:27;;;;32602:164;:::o;1132:181::-;1190:7;;1222:5;1226:1;1222;:5;:::i;:::-;1210:17;;1251:1;1246;:6;;1238:46;;;;-1:-1:-1;;;1238:46:0;;7918:2:1;1238:46:0;;;7900:21:1;7957:2;7937:18;;;7930:30;7996:29;7976:18;;;7969:57;8043:18;;1238:46:0;7716:351:1;1321:136:0;1379:7;1406:43;1410:1;1413;1406:43;;;;;;;;;;;;;;;;;:3;:43::i;32087:247::-;32150:7;32170:18;32191:107;32294:3;32191:84;32217:57;32263:10;;32217:41;32244:13;;32217:22;;:26;;:41;;;;:::i;:::-;:45;;:57::i;:::-;32191:7;;:25;:84::i;2318:312::-;2438:7;2473:12;2466:5;2458:28;;;;-1:-1:-1;;;2458:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2497:9:0;2509:5;2513:1;2509;:5;:::i;41321:2342::-;41672:28;41703:24;41721:4;41703:9;:24::i;:::-;41672:55;;41768:12;;41744:20;:36;41740:104;;-1:-1:-1;41820:12:0;;41740:104;41898:20;;41950:16;;41874:44;;;;;41950:16;;;;;41949:17;:44;;;;;41983:10;41949:44;:80;;;;;42018:11;-1:-1:-1;;;;;42010:19:0;:4;-1:-1:-1;;;;;42010:19:0;;;41949:80;:118;;;;-1:-1:-1;42046:21:0;;;;41949:118;:189;;;;-1:-1:-1;;;;;;42086:21:0;;42102:4;42086:21;:51;;;;;42125:11;-1:-1:-1;;;;;42111:26:0;:2;-1:-1:-1;;;;;42111:26:0;;42086:51;42084:54;41949:189;41931:1725;;;42203:20;;42180:43;;42240:20;42263:29;42281:10;;42263:13;;:17;;:29;;;;:::i;:::-;42240:52;;42307:17;42327:81;42392:1;42327:42;42356:12;42327:24;42347:3;42328:13;;42327:19;;:24;;;;:::i;:81::-;42307:101;;42423:16;42442:37;42466:12;42442:19;42457:3;42442:10;;:14;;:19;;;;:::i;:37::-;42423:56;;42529:135;42564:4;42596:13;;;;;;;;;-1:-1:-1;;;;;42596:13:0;42629:20;42529:8;:135::i;:::-;42770:18;42791:44;42831:3;42791:35;:20;42816:9;42791:24;:35::i;:44::-;42770:65;-1:-1:-1;42850:30:0;42883:68;:20;42770:65;42883:24;:68::i;:::-;43017:13;;42850:101;;-1:-1:-1;42968:119:0;;43017:13;;;-1:-1:-1;;;;;43017:13:0;42850:101;42968:22;:119::i;:::-;43127:21;43180:23;:9;43194:8;43180:13;:23::i;:::-;43165:38;-1:-1:-1;43220:31:0;43254:77;43165:38;43254:27;:12;43271:9;43254:16;:27::i;:77::-;43434:13;;43220:111;;-1:-1:-1;43389:171:0;;-1:-1:-1;;;;;43434:13:0;;;;;43467:7;7222;7249:6;-1:-1:-1;;;;;7249:6:0;;7184:79;43467:7;43493:10;43522:23;43389:18;:171::i;:::-;43577:12;;-1:-1:-1;;;;;43577:12:0;:67;43599:44;43630:12;43599:26;:12;43616:8;43599:16;:26::i;:44::-;43577:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42165:1491;;;;;;;41379:2284;;41321:2342;;:::o;37387:708::-;37543:7;37538:28;;37552:14;34411:22;;;34378:30;:55;34468:13;;;34444:21;:37;34513:10;;;34492:18;:31;-1:-1:-1;34536:26:0;;;;34573:17;;;;34601:14;34335:288;37552:14;-1:-1:-1;;;;;37583:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;37607:22:0;;;;;;:11;:22;;;;;;;;37606:23;37583:46;37579:467;;;37646:48;37668:6;37676:9;37687:6;37646:21;:48::i;:::-;37579:467;;;-1:-1:-1;;;;;37717:19:0;;;;;;:11;:19;;;;;;;;37716:20;:46;;;;-1:-1:-1;;;;;;37740:22:0;;;;;;:11;:22;;;;;;;;37716:46;37712:334;;;37779:46;37799:6;37807:9;37818:6;37779:19;:46::i;37712:334::-;-1:-1:-1;;;;;37847:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;37870:22:0;;;;;;:11;:22;;;;;;;;37847:45;37843:203;;;37909:48;37931:6;37939:9;37950:6;37909:21;:48::i;37843:203::-;37990:44;38008:6;38016:9;38027:6;37990:17;:44::i;:::-;38063:7;38058:29;;38072:15;34700:30;;34675:22;:55;34757:21;;34741:13;:37;34802:18;;34789:10;:31;34631:197;32774:605;32872:7;;32908;;32825;;;;;32926:338;32950:9;:16;32946:20;;32926:338;;;33034:7;33010;:21;33018:9;33028:1;33018:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33018:12:0;33010:21;;;;;;;;;;;;;:31;;:83;;;33086:7;33062;:21;33070:9;33080:1;33070:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33070:12:0;33062:21;;;;;;;;;;;;;:31;33010:83;32988:146;;;33117:7;;33126;;33109:25;;;;;;;32774:605;;:::o;32988:146::-;33159:34;33171:7;:21;33179:9;33189:1;33179:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33179:12:0;33171:21;;;;;;;;;;;;;33159:7;;:11;:34::i;:::-;33149:44;;33218:34;33230:7;:21;33238:9;33248:1;33238:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33238:12:0;33230:21;;;;;;;;;;;;;33218:7;;:11;:34::i;:::-;33208:44;-1:-1:-1;32968:3:0;;;;:::i;:::-;;;;32926:338;;;-1:-1:-1;33300:7:0;;33288;;:20;;:11;:20::i;:::-;33278:7;:30;33274:61;;;33318:7;;33327;;33310:25;;;;;;32774:605;;:::o;33274:61::-;33354:7;;33363;;-1:-1:-1;32774:605:0;-1:-1:-1;32774:605:0:o;18192:633::-;18459:16;;;18473:1;18459:16;;;;;;;;18348:13;;18296:31;;18459:16;18473:1;18459:16;;;;;;;;;;-1:-1:-1;18459:16:0;18435:40;;18504:4;18486;18491:1;18486:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18486:23:0;;;-1:-1:-1;;;;;18486:23:0;;;;;18530:13;-1:-1:-1;;;;;18530:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18520:4;18525:1;18520:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18520:30:0;;;:7;;;;;;;;;:30;18589:64;;;18668:11;18694:1;18738:4;18765;18785:21;:15;18803:3;18785:21;:::i;:::-;18589:228;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18285:540;;18192:633;;:::o;19532:534::-;19747:13;-1:-1:-1;;;;;19804:29:0;;;19841:9;19874:4;19894:11;19695:31;;20006:5;20026:21;:15;20044:3;20026:21;:::i;:::-;19804:254;;;;;;-1:-1:-1;;;;;;19804:254:0;;;-1:-1:-1;;;;;4444:15:1;;;19804:254:0;;;4426:34:1;4476:18;;;4469:34;;;;4519:18;;;4512:34;;;;4562:18;;;4555:34;;;;4626:15;;;4605:19;;;4598:44;4658:19;;;4651:35;;;;4360:19;;19804:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;39652:791::-;39788:19;39810:10;:8;:10::i;:::-;39788:32;;39831:23;39857:35;39869:22;39883:7;39869:13;:22::i;:::-;39857:7;;:11;:35::i;:::-;39831:61;-1:-1:-1;39903:15:0;39921:24;:7;39933:11;39921;:24::i;:::-;39903:42;;39956:23;39982:76;40008:39;40035:11;40008:22;40022:7;40008:13;:22::i;39982:76::-;-1:-1:-1;;;;;40087:15:0;;;;;;:7;:15;;;;;;39956:102;;-1:-1:-1;40087:28:0;;40107:7;40087:19;:28::i;:::-;-1:-1:-1;;;;;40069:15:0;;;;;;:7;:15;;;;;;;;:46;;;;40144:7;:15;;;;:28;;40164:7;40144:19;:28::i;:::-;-1:-1:-1;;;;;40126:15:0;;;;;;;:7;:15;;;;;;:46;;;;40204:18;;;;;;;:39;;40227:15;40204:22;:39::i;:::-;-1:-1:-1;;;;;40183:18:0;;;;;;:7;:18;;;;;:60;40254:43;40276:7;40285:11;40254:21;:43::i;:::-;40308:36;40323:7;40332:11;40308:14;:36::i;:::-;40355:20;40367:7;40355:11;:20::i;:::-;40408:9;-1:-1:-1;;;;;40391:44:0;40400:6;-1:-1:-1;;;;;40391:44:0;;40419:15;40391:44;;;;14559:25:1;;14547:2;14532:18;;14413:177;40391:44:0;;;;;;;;39777:666;;;;39652:791;;;:::o;38841:803::-;38975:19;38997:10;:8;:10::i;:::-;38975:32;;39018:23;39044:35;39056:22;39070:7;39056:13;:22::i;39044:35::-;39018:61;-1:-1:-1;39090:15:0;39108:24;:7;39120:11;39108;:24::i;:::-;39090:42;;39143:23;39169:76;39195:39;39222:11;39195:22;39209:7;39195:13;:22::i;39169:76::-;-1:-1:-1;;;;;39274:15:0;;;;;;:7;:15;;;;;;39143:102;;-1:-1:-1;39274:28:0;;39294:7;39274:19;:28::i;:::-;-1:-1:-1;;;;;39256:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;39334:18;;;;;:7;:18;;;;;:39;;39357:15;39334:22;:39::i;:::-;-1:-1:-1;;;;;39313:18:0;;;;;;:7;:18;;;;;;;;:60;;;;39405:7;:18;;;;:39;;39428:15;39405:22;:39::i;40451:862::-;40587:19;40609:10;:8;:10::i;:::-;40587:32;;40630:23;40656:35;40668:22;40682:7;40668:13;:22::i;40656:35::-;40630:61;-1:-1:-1;40702:15:0;40720:24;:7;40732:11;40720;:24::i;:::-;40702:42;;40755:23;40781:76;40807:39;40834:11;40807:22;40821:7;40807:13;:22::i;40781:76::-;-1:-1:-1;;;;;40886:15:0;;;;;;:7;:15;;;;;;40755:102;;-1:-1:-1;40886:28:0;;40906:7;40886:19;:28::i;:::-;-1:-1:-1;;;;;40868:15:0;;;;;;:7;:15;;;;;;;;:46;;;;40943:7;:15;;;;:28;;40963:7;40943:19;:28::i;38103:730::-;38235:19;38257:10;:8;:10::i;:::-;38235:32;;38278:23;38304:35;38316:22;38330:7;38316:13;:22::i;38304:35::-;38278:61;-1:-1:-1;38350:15:0;38368:24;:7;38380:11;38368;:24::i;:::-;38350:42;;38403:23;38429:76;38455:39;38482:11;38455:22;38469:7;38455:13;:22::i;38429:76::-;-1:-1:-1;;;;;38534:15:0;;;;;;:7;:15;;;;;;38403:102;;-1:-1:-1;38534:28:0;;38554:7;38534:19;:28::i;33387:472::-;33490:16;33509:35;33540:3;33509:26;33521:13;;33509:7;:11;;:26;;;;:::i;:35::-;33490:54;-1:-1:-1;33555:16:0;33574:25;33490:54;33587:11;33574:12;:25::i;:::-;33651:4;33635:22;;;;:7;:22;;;;;;33555:44;;-1:-1:-1;33635:36:0;;33555:44;33635:26;:36::i;:::-;33626:4;33610:22;;;;:7;:22;;;;;;;;:61;;;;33686:11;:26;;;;;;33682:106;;;33768:4;33752:22;;;;:7;:22;;;;;;:36;;33779:8;33752:26;:36::i;:::-;33743:4;33727:22;;;;:7;:22;;;;;:61;33682:106;33804:47;;14559:25:1;;;33835:4:0;;3112:10;;33804:47;;14547:2:1;14532:18;33804:47:0;;;;;;;33479:380;;33387:472;;:::o;33867:460::-;33949:18;33970:32;33998:3;33970:23;33982:10;;33970:7;:11;;:23;;;;:::i;32342:252::-;32399:12;32414:44;32454:3;32414:35;32426:22;;32414:7;:11;;:35;;;;:::i;:44::-;32399:59;;32469:12;32484:20;32493:10;:8;:10::i;:::-;32484:4;;:8;:20::i;:::-;32525:7;;32469:35;;-1:-1:-1;32525:17:0;;32469:35;32525:11;:17::i;:::-;32515:7;:27;32566:10;;:20;;32581:4;32566:14;:20::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;947:388::-;1015:6;1023;1076:2;1064:9;1055:7;1051:23;1047:32;1044:52;;;1092:1;1089;1082:12;1044:52;1131:9;1118:23;1150:31;1175:5;1150:31;:::i;:::-;1200:5;-1:-1:-1;1257:2:1;1242:18;;1229:32;1270:33;1229:32;1270:33;:::i;:::-;1322:7;1312:17;;;947:388;;;;;:::o;1340:456::-;1417:6;1425;1433;1486:2;1474:9;1465:7;1461:23;1457:32;1454:52;;;1502:1;1499;1492:12;1454:52;1541:9;1528:23;1560:31;1585:5;1560:31;:::i;:::-;1610:5;-1:-1:-1;1667:2:1;1652:18;;1639:32;1680:33;1639:32;1680:33;:::i;:::-;1340:456;;1732:7;;-1:-1:-1;;;1786:2:1;1771:18;;;;1758:32;;1340:456::o;1801:315::-;1866:6;1874;1927:2;1915:9;1906:7;1902:23;1898:32;1895:52;;;1943:1;1940;1933:12;1895:52;1982:9;1969:23;2001:31;2026:5;2001:31;:::i;:::-;2051:5;-1:-1:-1;2075:35:1;2106:2;2091:18;;2075:35;:::i;:::-;2065:45;;1801:315;;;;;:::o;2121:::-;2189:6;2197;2250:2;2238:9;2229:7;2225:23;2221:32;2218:52;;;2266:1;2263;2256:12;2218:52;2305:9;2292:23;2324:31;2349:5;2324:31;:::i;:::-;2374:5;2426:2;2411:18;;;;2398:32;;-1:-1:-1;;;2121:315:1:o;2441:180::-;2497:6;2550:2;2538:9;2529:7;2525:23;2521:32;2518:52;;;2566:1;2563;2556:12;2518:52;2589:26;2605:9;2589:26;:::i;2904:180::-;2963:6;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;-1:-1:-1;3055:23:1;;2904:180;-1:-1:-1;2904:180:1:o;3089:248::-;3154:6;3162;3215:2;3203:9;3194:7;3190:23;3186:32;3183:52;;;3231:1;3228;3221:12;3183:52;3267:9;3254:23;3244:33;;3296:35;3327:2;3316:9;3312:18;3296:35;:::i;3342:306::-;3430:6;3438;3446;3499:2;3487:9;3478:7;3474:23;3470:32;3467:52;;;3515:1;3512;3505:12;3467:52;3544:9;3538:16;3528:26;;3594:2;3583:9;3579:18;3573:25;3563:35;;3638:2;3627:9;3623:18;3617:25;3607:35;;3342:306;;;;;:::o;5123:597::-;5235:4;5264:2;5293;5282:9;5275:21;5325:6;5319:13;5368:6;5363:2;5352:9;5348:18;5341:34;5393:1;5403:140;5417:6;5414:1;5411:13;5403:140;;;5512:14;;;5508:23;;5502:30;5478:17;;;5497:2;5474:26;5467:66;5432:10;;5403:140;;;5561:6;5558:1;5555:13;5552:91;;;5631:1;5626:2;5617:6;5606:9;5602:22;5598:31;5591:42;5552:91;-1:-1:-1;5704:2:1;5683:15;-1:-1:-1;;5679:29:1;5664:45;;;;5711:2;5660:54;;5123:597;-1:-1:-1;;;5123:597:1:o;11353:356::-;11555:2;11537:21;;;11574:18;;;11567:30;11633:34;11628:2;11613:18;;11606:62;11700:2;11685:18;;11353:356::o;14595:980::-;14857:4;14905:3;14894:9;14890:19;14936:6;14925:9;14918:25;14962:2;15000:6;14995:2;14984:9;14980:18;14973:34;15043:3;15038:2;15027:9;15023:18;15016:31;15067:6;15102;15096:13;15133:6;15125;15118:22;15171:3;15160:9;15156:19;15149:26;;15210:2;15202:6;15198:15;15184:29;;15231:1;15241:195;15255:6;15252:1;15249:13;15241:195;;;15320:13;;-1:-1:-1;;;;;15316:39:1;15304:52;;15411:15;;;;15376:12;;;;15352:1;15270:9;15241:195;;;-1:-1:-1;;;;;;;15492:32:1;;;;15487:2;15472:18;;15465:60;-1:-1:-1;;;15556:3:1;15541:19;15534:35;15453:3;14595:980;-1:-1:-1;;;14595:980:1:o;15769:128::-;15809:3;15840:1;15836:6;15833:1;15830:13;15827:39;;;15846:18;;:::i;:::-;-1:-1:-1;15882:9:1;;15769:128::o;15902:217::-;15942:1;15968;15958:132;;16012:10;16007:3;16003:20;16000:1;15993:31;16047:4;16044:1;16037:15;16075:4;16072:1;16065:15;15958:132;-1:-1:-1;16104:9:1;;15902:217::o;16124:168::-;16164:7;16230:1;16226;16222:6;16218:14;16215:1;16212:21;16207:1;16200:9;16193:17;16189:45;16186:71;;;16237:18;;:::i;:::-;-1:-1:-1;16277:9:1;;16124:168::o;16297:125::-;16337:4;16365:1;16362;16359:8;16356:34;;;16370:18;;:::i;:::-;-1:-1:-1;16407:9:1;;16297:125::o;16427:380::-;16506:1;16502:12;;;;16549;;;16570:61;;16624:4;16616:6;16612:17;16602:27;;16570:61;16677:2;16669:6;16666:14;16646:18;16643:38;16640:161;;;16723:10;16718:3;16714:20;16711:1;16704:31;16758:4;16755:1;16748:15;16786:4;16783:1;16776:15;16640:161;;16427:380;;;:::o;16812:135::-;16851:3;-1:-1:-1;;16872:17:1;;16869:43;;;16892:18;;:::i;:::-;-1:-1:-1;16939:1:1;16928:13;;16812:135::o;16952:127::-;17013:10;17008:3;17004:20;17001:1;16994:31;17044:4;17041:1;17034:15;17068:4;17065:1;17058:15;17084:127;17145:10;17140:3;17136:20;17133:1;17126:31;17176:4;17173:1;17166:15;17200:4;17197:1;17190:15;17216:127;17277:10;17272:3;17268:20;17265:1;17258:31;17308:4;17305:1;17298:15;17332:4;17329:1;17322:15;17480:131;-1:-1:-1;;;;;17555:31:1;;17545:42;;17535:70;;17601:1;17598;17591:12;17535:70;17480:131;:::o

Swarm Source

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