ETH Price: $2,644.39 (+1.44%)

Token

SAFU Token (SAFU)
 

Overview

Max Total Supply

1,000,000,000,000 SAFU

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
wantsumfuch.eth
Balance
22,217,198,480.841597544985151243 SAFU

Value
$0.00
0x1Dc907D55F1be2bC4370FEb0f01Fb89324B8941c
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:
SAFUToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-06
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
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;
    }
}




/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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


interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the token symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the token name.
     */
    function name() external view returns (string memory);

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

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

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

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

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

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

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}




interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor()  {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}



interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}



interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


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

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    

    //======== FEE Description ===========
    uint256 public constant MARKETING1_FEE = 60;
    uint256 public constant MARKETING2_FEE = 60;
    uint256 public constant MARKETING3_FEE = 30;

    uint256 public constant LP_FEE = 20;




    mapping (address => bool) public blacklist;
    mapping (address => bool) public whitelist;
    mapping (address => bool) public maxHoldWhitelist;

    uint256 public numTokensSellForLP =  2000*1e18;


    bool public swapAndLiquifiyEnable = true;
    bool public isFeeEnabled = true;

    
    address marketing1Wallet;
    address marketing2Wallet;
    address marketing3Wallet;
    uint256 public MAX_SUPPLY = 1000000000000*1e18;
    uint256 public maxTransferAmount =  MAX_SUPPLY.mul(40).div(1000);
    uint256 public maxHoldPerWallet =  MAX_SUPPLY.mul(40).div(1000);

    bool inSwapAndLiquify;
    
    IUniswapV2Router02 public immutable uniswapV2Router;
    
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    
   event onChangenumTokensSellForLP(uint256 newLimit,uint256 oldLimit);
   event onSetLiquification(bool isFeeEnable);
   event onEnableDisableFee(bool isFeeEnable);


    address public immutable uniswapV2Pair;




    constructor(address _marketing1Wallet,address _marketing2Wallet, address _marketing3Wallet)  {
        _name = "SAFU Token";
        _symbol = "SAFU";
        _decimals = 18;
        IUniswapV2Router02 _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Router =_router;

        marketing1Wallet = _marketing1Wallet;
        marketing2Wallet = _marketing2Wallet;
        marketing3Wallet = _marketing3Wallet;

        address _uniswapV2Pair = IUniswapV2Factory(_router.factory())
            .createPair(address(this), _router.WETH());
        uniswapV2Pair  = _uniswapV2Pair;
        maxHoldWhitelist[_uniswapV2Pair] = true;
        maxHoldWhitelist[msg.sender] = true;
        maxHoldWhitelist[marketing1Wallet] = true;
        maxHoldWhitelist[marketing2Wallet] = true;
        maxHoldWhitelist[marketing3Wallet] = true;

        maxHoldWhitelist[address(this)] = true;

        whitelist[msg.sender] = true;
        whitelist[marketing1Wallet] = true;
        whitelist[marketing2Wallet] = true;
        whitelist[marketing3Wallet] = true;

        whitelist[address(this)] = true;


        _mint(msg.sender, MAX_SUPPLY);

    }
    
    
    
     modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
   

  

    function addOrRemoveWhitelist(address addr, bool isAdd) public onlyOwner{
        whitelist[addr] = isAdd;
    }

    function addOrRemoveBlackList(address addr, bool isAdd) public onlyOwner{
        blacklist[addr] = isAdd;
    }


     function addOrRemoveMaxHoldWhitelist(address addr, bool isAdd) public onlyOwner{
        maxHoldWhitelist[addr] = isAdd;
    }



    
    function setNumTokensSellForLP(uint256 limit) public onlyOwner{
        require(limit> 0,"Invalid Limit");
        emit onChangenumTokensSellForLP(limit,numTokensSellForLP);
        numTokensSellForLP = limit;
    }
    
    function enableDisableFee(bool isEnable) public onlyOwner{
        isFeeEnabled  = isEnable;
        emit onEnableDisableFee(isEnable);
    }
    
    function setLiquification(bool isEnable) public onlyOwner{
       swapAndLiquifiyEnable = isEnable;
        emit onSetLiquification(isEnable);
    }


    function setMaxTransferLimit(uint256 limit) public onlyOwner{
       maxTransferAmount = limit;
    }
    function setMaxHoldPerWallet(uint256 limit) public onlyOwner{
        require(limit> 0,"Invalid Limit");
       maxHoldPerWallet = limit;
    }
    
    



    /**
     * @dev Returns the name of the token.
     */
    function name() public override view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public override view returns (string memory) {
        return _symbol;
    }


   
    /**
    * @dev Returns the number of decimals used to get its user representation.
    */
    function decimals() public override view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {ERC20-totalSupply}.
     */
    function totalSupply() public override view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {ERC20-balanceOf}.
     */
    function balanceOf(address account) public override view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {ERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        
     
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {ERC20-allowance}.
     */
    function allowance(address owner, address spender) public override view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {ERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
       
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {ERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom (address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, 'ERC20: transfer amount exceeds allowance')
        );
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {ERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {ERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, 'ERC20: decreased allowance below zero'));
        return true;
    }

   


    function chargeFee(address from, uint256 _amount) internal returns(uint256){
         
        uint256 _marketingFee1 = _amount.mul(MARKETING1_FEE).div(1000);
        uint256 _marketingFee2 = _amount.mul(MARKETING2_FEE).div(1000);
        uint256 _marketingFee3 = _amount.mul(MARKETING3_FEE).div(1000);

        uint256 lpFee = _amount.mul(LP_FEE).div(1000);
        _balances[address(this)] = _balances[address(this)].add(lpFee);
        _balances[marketing1Wallet] = _balances[marketing1Wallet].add(_marketingFee1);
        _balances[marketing2Wallet] = _balances[marketing2Wallet].add(_marketingFee3);
        _balances[marketing3Wallet] = _balances[marketing3Wallet].add(_marketingFee3);

        emit Transfer(from, address(this), lpFee);
        emit Transfer(from, marketing1Wallet, _marketingFee1);
        emit Transfer(from, marketing2Wallet, _marketingFee2);
        emit Transfer(from, marketing3Wallet, _marketingFee3);

        uint256 totalFee= _marketingFee1.add(_marketingFee2).add(_marketingFee3).add(lpFee);
        return totalFee;

    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), 'ERC20: transfer from the zero address');
        require(recipient != address(0), 'ERC20: transfer to the zero address');
        require(blacklist[sender] == false && blacklist[recipient] == false, "Can't transfer to blacklisted wallet");
        
        if(whitelist[sender] == false || sender == uniswapV2Pair ){
            require(amount <= maxTransferAmount,"Transfer Limit Exceeds");
        }

        if(!maxHoldWhitelist[recipient] && maxHoldWhitelist[sender] == false || maxHoldWhitelist[recipient] == false){
            require(balanceOf(recipient).add(amount)<= maxHoldPerWallet,"Max Hold Per Wallet Exceeds");
        }
      
      
       if (swapAndLiquifiyEnable) {
            if(balanceOf(address(this)) >= numTokensSellForLP && 
            !inSwapAndLiquify){
                swapAndLiquify(numTokensSellForLP);
            }
        
        }
        
        
        if(isFeeEnabled && whitelist[sender] == false && sender !=address(this)){
            _balances[sender] = _balances[sender].sub(amount, 'ERC20: transfer amount exceeds balance');
            uint256 totalFee = chargeFee(sender,amount);
            uint256 remainingAmount = amount.sub(totalFee);
            _balances[recipient] = _balances[recipient].add(remainingAmount);
            emit Transfer(sender, recipient, remainingAmount);
        }else{
            _balances[sender] = _balances[sender].sub(amount, 'ERC20: transfer amount exceeds balance');
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
       
        
    }




    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), 'ERC20: mint to the zero address');

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), 'ERC20: burn from the zero address');

        _balances[account] = _balances[account].sub(amount, 'ERC20: burn amount exceeds balance');
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve (address owner, address spender, uint256 amount) internal {
        require(owner != address(0), 'ERC20: approve from the zero address');
        require(spender != address(0), 'ERC20: approve to the zero address');

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

    /**
     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, 'ERC20: burn amount exceeds allowance'));
    }
    
    
    
    
    
    
    
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    
    




}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketing1Wallet","type":"address"},{"internalType":"address","name":"_marketing2Wallet","type":"address"},{"internalType":"address","name":"_marketing3Wallet","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":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"newLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldLimit","type":"uint256"}],"name":"onChangenumTokensSellForLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isFeeEnable","type":"bool"}],"name":"onEnableDisableFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isFeeEnable","type":"bool"}],"name":"onSetLiquification","type":"event"},{"inputs":[],"name":"LP_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING1_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING2_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING3_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isAdd","type":"bool"}],"name":"addOrRemoveBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isAdd","type":"bool"}],"name":"addOrRemoveMaxHoldWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isAdd","type":"bool"}],"name":"addOrRemoveWhitelist","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":[{"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":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"bool","name":"isEnable","type":"bool"}],"name":"enableDisableFee","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":[],"name":"isFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxHoldWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellForLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnable","type":"bool"}],"name":"setLiquification","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setMaxHoldPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setMaxTransferLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setNumTokensSellForLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifiyEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60c0604052686c6b935b8bbd400000600a55600b805461ff001960ff19909116600117166101001790556c0c9f2c9cd04674edea40000000600e81905562000075906103e8906200006190602862000bae6200049e602090811b91909117901c565b620004fe60201b62000bfa1790919060201c565b600f556200009c6103e8620000616028600e546200049e60201b62000bae1790919060201c565b601055348015620000ac57600080fd5b50604051620028f9380380620028f9833981016040819052620000cf9162000773565b6000620000db62000548565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600a8082526929a0a32a902a37b5b2b760b11b6020909201918252620001589160049162000693565b50604080518082019091526004808252635341465560e01b6020909201918252620001869160059162000693565b506006805460ff191660121790557f7a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000608052600b80546001600160a01b03858116620100000262010000600160b01b031990921691909117909155600c80548483166001600160a01b031991821617909155600d8054928416929091169190911790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a0155916004808301926020929190829003018186803b1580156200025a57600080fd5b505afa1580156200026f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000295919062000756565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002de57600080fd5b505afa158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000319919062000756565b6040518363ffffffff1660e01b815260040162000338929190620007bc565b602060405180830381600087803b1580156200035357600080fd5b505af115801562000368573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038e919062000756565b606081901b6001600160601b03191660a0526001600160a01b0380821660009081526009602090815260408083208054600160ff199182168117909255338086528386208054831684179055600b80546201000090819004891688528588208054851686179055600c80548a1689528689208054861687179055600d80548b168a52878a20805487168817905530808b52888b208054881689179055858b526008909952878a208054871688179055925491909104891688528588208054851686179055548816875284872080548416851790555490961685528285208054821683179055928452922080549091169091179055600e5491925062000493916200054c565b505050505062000995565b600082620004af57506000620004f8565b6000620004bd838562000920565b905082620004cc8583620008ff565b14620004f55760405162461bcd60e51b8152600401620004ec9062000863565b60405180910390fd5b90505b92915050565b6000620004f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200062360201b60201c565b3390565b6001600160a01b038216620005755760405162461bcd60e51b8152600401620004ec90620008a4565b62000591816003546200065f60201b62000c3c1790919060201c565b6003556001600160a01b038216600090815260016020908152604090912054620005c691839062000c3c6200065f821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062000617908590620008db565b60405180910390a35050565b60008183620006475760405162461bcd60e51b8152600401620004ec9190620007d6565b506000620006568486620008ff565b95945050505050565b6000806200066e8385620008e4565b905083811015620004f55760405162461bcd60e51b8152600401620004ec906200082c565b828054620006a19062000942565b90600052602060002090601f016020900481019282620006c5576000855562000710565b82601f10620006e057805160ff191683800117855562000710565b8280016001018555821562000710579182015b8281111562000710578251825591602001919060010190620006f3565b506200071e92915062000722565b5090565b5b808211156200071e576000815560010162000723565b80516001600160a01b03811681146200075157600080fd5b919050565b60006020828403121562000768578081fd5b620004f58262000739565b60008060006060848603121562000788578182fd5b620007938462000739565b9250620007a36020850162000739565b9150620007b36040850162000739565b90509250925092565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b818110156200080457858101830151858201604001528201620007e6565b81811115620008165783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60008219821115620008fa57620008fa6200097f565b500190565b6000826200091b57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156200093d576200093d6200097f565b500290565b6002810460018216806200095757607f821691505b602082108114156200097957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c611f0e620009eb600039600081816107390152610df201526000818161052e0152818161155f0152818161163501528181611671015281816116eb01526117120152611f0e6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063ad02d073116100b8578063deb6b9cc1161007c578063deb6b9cc14610415578063f2fde38b14610428578063f5b3dd111461043b578063f73aaab214610443578063f9f92be41461045657610227565b8063ad02d073146103c1578063b2acc36c146103c9578063bda64664146103dc578063dd62ed3e146103ef578063dd6899501461040257610227565b80639b19251a116100ff5780639b19251a146103785780639c5e5f9d1461038b578063a457c2d714610393578063a9059cbb146103a6578063a9e75723146103b957610227565b8063715018a61461036057806384d142211461026a5780638da5cb5b1461036857806395d89b411461037057610227565b8063258f1934116101b357806349bd5a5e1161018257806349bd5a5e146103225780635e3f27271461032a578063673f73ed146103325780636d10e2f81461033a57806370a082311461034d57610227565b8063258f1934146102df578063313ce567146102f257806332cb6b0c14610307578063395093511461030f57610227565b80631694505e116101fa5780631694505e1461028757806318160ddd1461029c5780631978c0b3146102a45780631b80c9fe146102b957806323b872dd146102cc57610227565b806306fdde031461022c578063095ea7b31461024a5780630b576b631461026a5780630e66dc691461027f575b600080fd5b610234610469565b60405161024191906119a0565b60405180910390f35b61025d6102583660046118bc565b6104fb565b6040516102419190611995565b610272610519565b6040516102419190611cc6565b61025d61051e565b61028f61052c565b6040516102419190611946565b610272610550565b6102b76102b2366004611901565b610556565b005b6102b76102c7366004611888565b610599565b61025d6102da366004611848565b6105f9565b6102b76102ed366004611901565b610680565b6102fa6106da565b6040516102419190611d63565b6102726106e3565b61025d61031d3660046118bc565b6106e9565b61028f610737565b61027261075b565b610272610760565b6102b76103483660046118e7565b610765565b61027261035b3660046117d8565b6107e8565b6102b7610807565b61028f610886565b610234610895565b61025d6103863660046117d8565b6108a4565b6102726108b9565b61025d6103a13660046118bc565b6108bf565b61025d6103b43660046118bc565b610927565b61027261093b565b610272610941565b6102b76103d7366004611901565b610947565b6102b76103ea366004611888565b6109dc565b6102726103fd366004611810565b610a3c565b6102b7610410366004611888565b610a67565b6102b76104233660046118e7565b610ac7565b6102b76104363660046117d8565b610b3a565b61025d610b7b565b61025d6104513660046117d8565b610b84565b61025d6104643660046117d8565b610b99565b60606004805461047890611ddf565b80601f01602080910402602001604051908101604052809291908181526020018280546104a490611ddf565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b5050505050905090565b600061050f610508610c6b565b8484610c6f565b5060015b92915050565b603c81565b600b54610100900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035490565b61055e610c6b565b6000546001600160a01b039081169116146105945760405162461bcd60e51b815260040161058b90611b9d565b60405180910390fd5b600f55565b6105a1610c6b565b6000546001600160a01b039081169116146105ce5760405162461bcd60e51b815260040161058b90611b9d565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610606848484610d23565b61067684610612610c6b565b61067185604051806060016040528060288152602001611e6c602891396001600160a01b038a16600090815260026020526040812090610650610c6b565b6001600160a01b031681526020810191909152604001600020549190611105565b610c6f565b5060019392505050565b610688610c6b565b6000546001600160a01b039081169116146106b55760405162461bcd60e51b815260040161058b90611b9d565b600081116106d55760405162461bcd60e51b815260040161058b90611c9f565b601055565b60065460ff1690565b600e5481565b600061050f6106f6610c6b565b846106718560026000610707610c6b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610c3c565b7f000000000000000000000000000000000000000000000000000000000000000081565b601481565b601e81565b61076d610c6b565b6000546001600160a01b0390811691161461079a5760405162461bcd60e51b815260040161058b90611b9d565b600b805461ff001916610100831515021790556040517f2d73a197cd9108390ba72b43d5863b707e44b124949d61b917fc7225a14d3c5f906107dd908390611995565b60405180910390a150565b6001600160a01b0381166000908152600160205260409020545b919050565b61080f610c6b565b6000546001600160a01b0390811691161461083c5760405162461bcd60e51b815260040161058b90611b9d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60606005805461047890611ddf565b60086020526000908152604090205460ff1681565b600a5481565b600061050f6108cc610c6b565b8461067185604051806060016040528060258152602001611eb460259139600260006108f6610c6b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611105565b600061050f610934610c6b565b8484610d23565b600f5481565b60105481565b61094f610c6b565b6000546001600160a01b0390811691161461097c5760405162461bcd60e51b815260040161058b90611b9d565b6000811161099c5760405162461bcd60e51b815260040161058b90611c9f565b7fc95b6d61a53a408937d5482d8b6010e9c0e045bb6a3c7f7c2217ab44442c03fb81600a546040516109cf929190611d3f565b60405180910390a1600a55565b6109e4610c6b565b6000546001600160a01b03908116911614610a115760405162461bcd60e51b815260040161058b90611b9d565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610a6f610c6b565b6000546001600160a01b03908116911614610a9c5760405162461bcd60e51b815260040161058b90611b9d565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b610acf610c6b565b6000546001600160a01b03908116911614610afc5760405162461bcd60e51b815260040161058b90611b9d565b600b805460ff19168215151790556040517f1e10f1314654ac1983f5c0321490f555dbb27e701ad64e56e8b741d6147f8947906107dd908390611995565b610b42610c6b565b6000546001600160a01b03908116911614610b6f5760405162461bcd60e51b815260040161058b90611b9d565b610b788161113f565b50565b600b5460ff1681565b60096020526000908152604090205460ff1681565b60076020526000908152604090205460ff1681565b600082610bbd57506000610513565b6000610bc98385611da9565b905082610bd68583611d89565b14610bf35760405162461bcd60e51b815260040161058b90611b5c565b9392505050565b6000610bf383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111c0565b600080610c498385611d71565b905083811015610bf35760405162461bcd60e51b815260040161058b90611abe565b3390565b6001600160a01b038316610c955760405162461bcd60e51b815260040161058b90611c17565b6001600160a01b038216610cbb5760405162461bcd60e51b815260040161058b90611a7c565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d16908590611cc6565b60405180910390a3505050565b6001600160a01b038316610d495760405162461bcd60e51b815260040161058b90611bd2565b6001600160a01b038216610d6f5760405162461bcd60e51b815260040161058b906119f3565b6001600160a01b03831660009081526007602052604090205460ff16158015610db157506001600160a01b03821660009081526007602052604090205460ff16155b610dcd5760405162461bcd60e51b815260040161058b90611c5b565b6001600160a01b03831660009081526008602052604090205460ff161580610e2657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15610e4d57600f54811115610e4d5760405162461bcd60e51b815260040161058b90611b2c565b6001600160a01b03821660009081526009602052604090205460ff16158015610e8f57506001600160a01b03831660009081526009602052604090205460ff16155b80610eb357506001600160a01b03821660009081526009602052604090205460ff16155b15610eec57601054610ece82610ec8856107e8565b90610c3c565b1115610eec5760405162461bcd60e51b815260040161058b90611af5565b600b5460ff1615610f2457600a54610f03306107e8565b10158015610f14575060115460ff16155b15610f2457610f24600a546111ee565b600b54610100900460ff168015610f5457506001600160a01b03831660009081526008602052604090205460ff16155b8015610f6957506001600160a01b0383163014155b1561105457610fab81604051806060016040528060268152602001611e46602691396001600160a01b0386166000908152600160205260409020549190611105565b6001600160a01b038416600090815260016020526040812091909155610fd18483611286565b90506000610fdf83836114b8565b6001600160a01b0385166000908152600160205260409020549091506110059082610c3c565b6001600160a01b038086166000818152600160205260409081902093909355915190871690600080516020611e9483398151915290611045908590611cc6565b60405180910390a35050611100565b61109181604051806060016040528060268152602001611e46602691396001600160a01b0386166000908152600160205260409020549190611105565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546110c09082610c3c565b6001600160a01b038084166000818152600160205260409081902093909355915190851690600080516020611e9483398151915290610d16908590611cc6565b505050565b600081848411156111295760405162461bcd60e51b815260040161058b91906119a0565b5060006111368486611dc8565b95945050505050565b6001600160a01b0381166111655760405162461bcd60e51b815260040161058b90611a36565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081836111e15760405162461bcd60e51b815260040161058b91906119a0565b5060006111368486611d89565b6011805460ff191660011790556000611208826002610bfa565b9050600061121683836114b8565b905047611222836114fa565b600061122e47836114b8565b905061123a83826116e5565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161126d93929190611d4d565b60405180910390a150506011805460ff19169055505050565b6000806112a06103e861129a85603c610bae565b90610bfa565b905060006112b56103e861129a86603c610bae565b905060006112ca6103e861129a87601e610bae565b905060006112df6103e861129a886014610bae565b306000908152600160205260409020549091506112fc9082610c3c565b3060009081526001602052604080822092909255600b546201000090046001600160a01b0316815220546113309085610c3c565b600b546001600160a01b0362010000909104811660009081526001602052604080822093909355600c549091168152205461136b9083610c3c565b600c546001600160a01b0390811660009081526001602052604080822093909355600d54909116815220546113a09083610c3c565b600d546001600160a01b03908116600090815260016020526040908190209290925590513091891690600080516020611e94833981519152906113e4908590611cc6565b60405180910390a3600b546040516001600160a01b0362010000909204821691891690600080516020611e9483398151915290611422908890611cc6565b60405180910390a3600c546040516001600160a01b0391821691891690600080516020611e948339815191529061145a908790611cc6565b60405180910390a3600d546040516001600160a01b0391821691891690600080516020611e9483398151915290611492908690611cc6565b60405180910390a360006114ac82610ec885818989610c3c565b98975050505050505050565b6000610bf383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611105565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061153d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b657600080fd5b505afa1580156115ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ee91906117f4565b8160018151811061160f57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505061165a307f000000000000000000000000000000000000000000000000000000000000000084610c6f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906116af908590600090869030904290600401611ccf565b600060405180830381600087803b1580156116c957600080fd5b505af11580156116dd573d6000803e3d6000fd5b505050505050565b611710307f000000000000000000000000000000000000000000000000000000000000000084610c6f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71982308560008061174d610886565b426040518863ffffffff1660e01b815260040161176f9695949392919061195a565b6060604051808303818588803b15801561178857600080fd5b505af115801561179c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117c19190611919565b5050505050565b8035801515811461080257600080fd5b6000602082840312156117e9578081fd5b8135610bf381611e30565b600060208284031215611805578081fd5b8151610bf381611e30565b60008060408385031215611822578081fd5b823561182d81611e30565b9150602083013561183d81611e30565b809150509250929050565b60008060006060848603121561185c578081fd5b833561186781611e30565b9250602084013561187781611e30565b929592945050506040919091013590565b6000806040838503121561189a578182fd5b82356118a581611e30565b91506118b3602084016117c8565b90509250929050565b600080604083850312156118ce578182fd5b82356118d981611e30565b946020939093013593505050565b6000602082840312156118f8578081fd5b610bf3826117c8565b600060208284031215611912578081fd5b5035919050565b60008060006060848603121561192d578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156119cc578581018301518582016040015282016119b0565b818111156119dd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f4d617820486f6c64205065722057616c6c657420457863656564730000000000604082015260600190565b6020808252601690820152755472616e73666572204c696d6974204578636565647360501b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526024908201527f43616e2774207472616e7366657220746f20626c61636b6c69737465642077616040820152631b1b195d60e21b606082015260800190565b6020808252600d908201526c125b9d985b1a5908131a5b5a5d609a1b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611d1e5784516001600160a01b031683529383019391830191600101611cf9565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b60008219821115611d8457611d84611e1a565b500190565b600082611da457634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611dc357611dc3611e1a565b500290565b600082821015611dda57611dda611e1a565b500390565b600281046001821680611df357607f821691505b60208210811415611e1457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b7857600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220702f5714727746f976870d794dcaf4a490b015d57e063ca7c14eb2ad0d72501864736f6c634300080000330000000000000000000000009be73401c47e07e1ccb6974cd405a9678c281f2b0000000000000000000000006c9c00af4b812e5c28a36f09662bc9591a653f2d00000000000000000000000086853b4e70d470e514b9adb5e7f7332633d9660d

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063ad02d073116100b8578063deb6b9cc1161007c578063deb6b9cc14610415578063f2fde38b14610428578063f5b3dd111461043b578063f73aaab214610443578063f9f92be41461045657610227565b8063ad02d073146103c1578063b2acc36c146103c9578063bda64664146103dc578063dd62ed3e146103ef578063dd6899501461040257610227565b80639b19251a116100ff5780639b19251a146103785780639c5e5f9d1461038b578063a457c2d714610393578063a9059cbb146103a6578063a9e75723146103b957610227565b8063715018a61461036057806384d142211461026a5780638da5cb5b1461036857806395d89b411461037057610227565b8063258f1934116101b357806349bd5a5e1161018257806349bd5a5e146103225780635e3f27271461032a578063673f73ed146103325780636d10e2f81461033a57806370a082311461034d57610227565b8063258f1934146102df578063313ce567146102f257806332cb6b0c14610307578063395093511461030f57610227565b80631694505e116101fa5780631694505e1461028757806318160ddd1461029c5780631978c0b3146102a45780631b80c9fe146102b957806323b872dd146102cc57610227565b806306fdde031461022c578063095ea7b31461024a5780630b576b631461026a5780630e66dc691461027f575b600080fd5b610234610469565b60405161024191906119a0565b60405180910390f35b61025d6102583660046118bc565b6104fb565b6040516102419190611995565b610272610519565b6040516102419190611cc6565b61025d61051e565b61028f61052c565b6040516102419190611946565b610272610550565b6102b76102b2366004611901565b610556565b005b6102b76102c7366004611888565b610599565b61025d6102da366004611848565b6105f9565b6102b76102ed366004611901565b610680565b6102fa6106da565b6040516102419190611d63565b6102726106e3565b61025d61031d3660046118bc565b6106e9565b61028f610737565b61027261075b565b610272610760565b6102b76103483660046118e7565b610765565b61027261035b3660046117d8565b6107e8565b6102b7610807565b61028f610886565b610234610895565b61025d6103863660046117d8565b6108a4565b6102726108b9565b61025d6103a13660046118bc565b6108bf565b61025d6103b43660046118bc565b610927565b61027261093b565b610272610941565b6102b76103d7366004611901565b610947565b6102b76103ea366004611888565b6109dc565b6102726103fd366004611810565b610a3c565b6102b7610410366004611888565b610a67565b6102b76104233660046118e7565b610ac7565b6102b76104363660046117d8565b610b3a565b61025d610b7b565b61025d6104513660046117d8565b610b84565b61025d6104643660046117d8565b610b99565b60606004805461047890611ddf565b80601f01602080910402602001604051908101604052809291908181526020018280546104a490611ddf565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b5050505050905090565b600061050f610508610c6b565b8484610c6f565b5060015b92915050565b603c81565b600b54610100900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60035490565b61055e610c6b565b6000546001600160a01b039081169116146105945760405162461bcd60e51b815260040161058b90611b9d565b60405180910390fd5b600f55565b6105a1610c6b565b6000546001600160a01b039081169116146105ce5760405162461bcd60e51b815260040161058b90611b9d565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610606848484610d23565b61067684610612610c6b565b61067185604051806060016040528060288152602001611e6c602891396001600160a01b038a16600090815260026020526040812090610650610c6b565b6001600160a01b031681526020810191909152604001600020549190611105565b610c6f565b5060019392505050565b610688610c6b565b6000546001600160a01b039081169116146106b55760405162461bcd60e51b815260040161058b90611b9d565b600081116106d55760405162461bcd60e51b815260040161058b90611c9f565b601055565b60065460ff1690565b600e5481565b600061050f6106f6610c6b565b846106718560026000610707610c6b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610c3c565b7f000000000000000000000000291ccc8f1f9f54bb6220b8fb9e34f0d424ebcf6281565b601481565b601e81565b61076d610c6b565b6000546001600160a01b0390811691161461079a5760405162461bcd60e51b815260040161058b90611b9d565b600b805461ff001916610100831515021790556040517f2d73a197cd9108390ba72b43d5863b707e44b124949d61b917fc7225a14d3c5f906107dd908390611995565b60405180910390a150565b6001600160a01b0381166000908152600160205260409020545b919050565b61080f610c6b565b6000546001600160a01b0390811691161461083c5760405162461bcd60e51b815260040161058b90611b9d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60606005805461047890611ddf565b60086020526000908152604090205460ff1681565b600a5481565b600061050f6108cc610c6b565b8461067185604051806060016040528060258152602001611eb460259139600260006108f6610c6b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611105565b600061050f610934610c6b565b8484610d23565b600f5481565b60105481565b61094f610c6b565b6000546001600160a01b0390811691161461097c5760405162461bcd60e51b815260040161058b90611b9d565b6000811161099c5760405162461bcd60e51b815260040161058b90611c9f565b7fc95b6d61a53a408937d5482d8b6010e9c0e045bb6a3c7f7c2217ab44442c03fb81600a546040516109cf929190611d3f565b60405180910390a1600a55565b6109e4610c6b565b6000546001600160a01b03908116911614610a115760405162461bcd60e51b815260040161058b90611b9d565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610a6f610c6b565b6000546001600160a01b03908116911614610a9c5760405162461bcd60e51b815260040161058b90611b9d565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b610acf610c6b565b6000546001600160a01b03908116911614610afc5760405162461bcd60e51b815260040161058b90611b9d565b600b805460ff19168215151790556040517f1e10f1314654ac1983f5c0321490f555dbb27e701ad64e56e8b741d6147f8947906107dd908390611995565b610b42610c6b565b6000546001600160a01b03908116911614610b6f5760405162461bcd60e51b815260040161058b90611b9d565b610b788161113f565b50565b600b5460ff1681565b60096020526000908152604090205460ff1681565b60076020526000908152604090205460ff1681565b600082610bbd57506000610513565b6000610bc98385611da9565b905082610bd68583611d89565b14610bf35760405162461bcd60e51b815260040161058b90611b5c565b9392505050565b6000610bf383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111c0565b600080610c498385611d71565b905083811015610bf35760405162461bcd60e51b815260040161058b90611abe565b3390565b6001600160a01b038316610c955760405162461bcd60e51b815260040161058b90611c17565b6001600160a01b038216610cbb5760405162461bcd60e51b815260040161058b90611a7c565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d16908590611cc6565b60405180910390a3505050565b6001600160a01b038316610d495760405162461bcd60e51b815260040161058b90611bd2565b6001600160a01b038216610d6f5760405162461bcd60e51b815260040161058b906119f3565b6001600160a01b03831660009081526007602052604090205460ff16158015610db157506001600160a01b03821660009081526007602052604090205460ff16155b610dcd5760405162461bcd60e51b815260040161058b90611c5b565b6001600160a01b03831660009081526008602052604090205460ff161580610e2657507f000000000000000000000000291ccc8f1f9f54bb6220b8fb9e34f0d424ebcf626001600160a01b0316836001600160a01b0316145b15610e4d57600f54811115610e4d5760405162461bcd60e51b815260040161058b90611b2c565b6001600160a01b03821660009081526009602052604090205460ff16158015610e8f57506001600160a01b03831660009081526009602052604090205460ff16155b80610eb357506001600160a01b03821660009081526009602052604090205460ff16155b15610eec57601054610ece82610ec8856107e8565b90610c3c565b1115610eec5760405162461bcd60e51b815260040161058b90611af5565b600b5460ff1615610f2457600a54610f03306107e8565b10158015610f14575060115460ff16155b15610f2457610f24600a546111ee565b600b54610100900460ff168015610f5457506001600160a01b03831660009081526008602052604090205460ff16155b8015610f6957506001600160a01b0383163014155b1561105457610fab81604051806060016040528060268152602001611e46602691396001600160a01b0386166000908152600160205260409020549190611105565b6001600160a01b038416600090815260016020526040812091909155610fd18483611286565b90506000610fdf83836114b8565b6001600160a01b0385166000908152600160205260409020549091506110059082610c3c565b6001600160a01b038086166000818152600160205260409081902093909355915190871690600080516020611e9483398151915290611045908590611cc6565b60405180910390a35050611100565b61109181604051806060016040528060268152602001611e46602691396001600160a01b0386166000908152600160205260409020549190611105565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546110c09082610c3c565b6001600160a01b038084166000818152600160205260409081902093909355915190851690600080516020611e9483398151915290610d16908590611cc6565b505050565b600081848411156111295760405162461bcd60e51b815260040161058b91906119a0565b5060006111368486611dc8565b95945050505050565b6001600160a01b0381166111655760405162461bcd60e51b815260040161058b90611a36565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081836111e15760405162461bcd60e51b815260040161058b91906119a0565b5060006111368486611d89565b6011805460ff191660011790556000611208826002610bfa565b9050600061121683836114b8565b905047611222836114fa565b600061122e47836114b8565b905061123a83826116e5565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161126d93929190611d4d565b60405180910390a150506011805460ff19169055505050565b6000806112a06103e861129a85603c610bae565b90610bfa565b905060006112b56103e861129a86603c610bae565b905060006112ca6103e861129a87601e610bae565b905060006112df6103e861129a886014610bae565b306000908152600160205260409020549091506112fc9082610c3c565b3060009081526001602052604080822092909255600b546201000090046001600160a01b0316815220546113309085610c3c565b600b546001600160a01b0362010000909104811660009081526001602052604080822093909355600c549091168152205461136b9083610c3c565b600c546001600160a01b0390811660009081526001602052604080822093909355600d54909116815220546113a09083610c3c565b600d546001600160a01b03908116600090815260016020526040908190209290925590513091891690600080516020611e94833981519152906113e4908590611cc6565b60405180910390a3600b546040516001600160a01b0362010000909204821691891690600080516020611e9483398151915290611422908890611cc6565b60405180910390a3600c546040516001600160a01b0391821691891690600080516020611e948339815191529061145a908790611cc6565b60405180910390a3600d546040516001600160a01b0391821691891690600080516020611e9483398151915290611492908690611cc6565b60405180910390a360006114ac82610ec885818989610c3c565b98975050505050505050565b6000610bf383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611105565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061153d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b657600080fd5b505afa1580156115ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ee91906117f4565b8160018151811061160f57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505061165a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610c6f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906116af908590600090869030904290600401611ccf565b600060405180830381600087803b1580156116c957600080fd5b505af11580156116dd573d6000803e3d6000fd5b505050505050565b611710307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610c6f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d71982308560008061174d610886565b426040518863ffffffff1660e01b815260040161176f9695949392919061195a565b6060604051808303818588803b15801561178857600080fd5b505af115801561179c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117c19190611919565b5050505050565b8035801515811461080257600080fd5b6000602082840312156117e9578081fd5b8135610bf381611e30565b600060208284031215611805578081fd5b8151610bf381611e30565b60008060408385031215611822578081fd5b823561182d81611e30565b9150602083013561183d81611e30565b809150509250929050565b60008060006060848603121561185c578081fd5b833561186781611e30565b9250602084013561187781611e30565b929592945050506040919091013590565b6000806040838503121561189a578182fd5b82356118a581611e30565b91506118b3602084016117c8565b90509250929050565b600080604083850312156118ce578182fd5b82356118d981611e30565b946020939093013593505050565b6000602082840312156118f8578081fd5b610bf3826117c8565b600060208284031215611912578081fd5b5035919050565b60008060006060848603121561192d578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156119cc578581018301518582016040015282016119b0565b818111156119dd5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f4d617820486f6c64205065722057616c6c657420457863656564730000000000604082015260600190565b6020808252601690820152755472616e73666572204c696d6974204578636565647360501b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526024908201527f43616e2774207472616e7366657220746f20626c61636b6c69737465642077616040820152631b1b195d60e21b606082015260800190565b6020808252600d908201526c125b9d985b1a5908131a5b5a5d609a1b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611d1e5784516001600160a01b031683529383019391830191600101611cf9565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b60008219821115611d8457611d84611e1a565b500190565b600082611da457634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611dc357611dc3611e1a565b500290565b600082821015611dda57611dda611e1a565b500390565b600281046001821680611df357607f821691505b60208210811415611e1457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b7857600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220702f5714727746f976870d794dcaf4a490b015d57e063ca7c14eb2ad0d72501864736f6c63430008000033

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

0000000000000000000000009be73401c47e07e1ccb6974cd405a9678c281f2b0000000000000000000000006c9c00af4b812e5c28a36f09662bc9591a653f2d00000000000000000000000086853b4e70d470e514b9adb5e7f7332633d9660d

-----Decoded View---------------
Arg [0] : _marketing1Wallet (address): 0x9be73401c47E07E1cCB6974cd405A9678c281f2b
Arg [1] : _marketing2Wallet (address): 0x6c9C00AF4b812e5C28a36f09662bC9591A653F2d
Arg [2] : _marketing3Wallet (address): 0x86853B4E70d470E514B9ADB5e7F7332633d9660D

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009be73401c47e07e1ccb6974cd405a9678c281f2b
Arg [1] : 0000000000000000000000006c9c00af4b812e5c28a36f09662bc9591a653f2d
Arg [2] : 00000000000000000000000086853b4e70d470e514b9adb5e7f7332633d9660d


Deployed Bytecode Sourcemap

19139:15959:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23583:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25194:170;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19589:43::-;;;:::i;:::-;;;;;;;:::i;20001:31::-;;;:::i;20370:51::-;;;:::i;:::-;;;;;;;:::i;24158:100::-;;;:::i;23242:103::-;;;;;;:::i;:::-;;:::i;:::-;;22548:128;;;;;;:::i;:::-;;:::i;25835:364::-;;;;;;:::i;:::-;;:::i;23351:146::-;;;;;;:::i;:::-;;:::i;24002:92::-;;;:::i;:::-;;;;;;;:::i;20140:46::-;;;:::i;26607:210::-;;;;;;:::i;:::-;;:::i;20881:38::-;;;:::i;19691:35::-;;;:::i;19639:43::-;;;:::i;22925:144::-;;;;;;:::i;:::-;;:::i;24320:119::-;;;;;;:::i;:::-;;:::i;11070:140::-;;;:::i;10428:79::-;;;:::i;23794:96::-;;;:::i;19790:42::-;;;;;;:::i;:::-;;:::i;19897:46::-;;;:::i;27319:261::-;;;;;;:::i;:::-;;:::i;24651:192::-;;;;;;:::i;:::-;;:::i;20193:64::-;;;:::i;20264:63::-;;;:::i;22694:219::-;;;;;;:::i;:::-;;:::i;22423:114::-;;;;;;:::i;:::-;;:::i;24905:143::-;;;;;;:::i;:::-;;:::i;22301:114::-;;;;;;:::i;:::-;;:::i;23081:151::-;;;;;;:::i;:::-;;:::i;11365:109::-;;;;;;:::i;:::-;;:::i;19954:40::-;;;:::i;19839:49::-;;;;;;:::i;:::-;;:::i;19741:42::-;;;;;;:::i;:::-;;:::i;23583:92::-;23629:13;23662:5;23655:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23583:92;:::o;25194:170::-;25269:4;25295:39;25304:12;:10;:12::i;:::-;25318:7;25327:6;25295:8;:39::i;:::-;-1:-1:-1;25352:4:0;25194:170;;;;;:::o;19589:43::-;19630:2;19589:43;:::o;20001:31::-;;;;;;;;;:::o;20370:51::-;;;:::o;24158:100::-;24238:12;;24158:100;:::o;23242:103::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;;;;;;;;;23312:17:::1;:25:::0;23242:103::o;22548:128::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22638:22:0;;;::::1;;::::0;;;:16:::1;:22;::::0;;;;:30;;-1:-1:-1;;22638:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22548:128::o;25835:364::-;25934:4;25951:36;25961:6;25969:9;25980:6;25951:9;:36::i;:::-;25998:171;26021:6;26042:12;:10;:12::i;:::-;26069:89;26107:6;26069:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26069:19:0;;;;;;:11;:19;;;;;;26089:12;:10;:12::i;:::-;-1:-1:-1;;;;;26069:33:0;;;;;;;;;;;;-1:-1:-1;26069:33:0;;;:89;:37;:89::i;:::-;25998:8;:171::i;:::-;-1:-1:-1;26187:4:0;25835:364;;;;;:::o;23351:146::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;23437:1:::1;23430:5;:8;23422:33;;;;-1:-1:-1::0;;;23422:33:0::1;;;;;;;:::i;:::-;23465:16;:24:::0;23351:146::o;24002:92::-;24077:9;;;;24002:92;:::o;20140:46::-;;;;:::o;26607:210::-;26687:4;26704:83;26713:12;:10;:12::i;:::-;26727:7;26736:50;26775:10;26736:11;:25;26748:12;:10;:12::i;:::-;-1:-1:-1;;;;;26736:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;26736:25:0;;;:34;;;;;;;;;;;:38;:50::i;20881:38::-;;;:::o;19691:35::-;19724:2;19691:35;:::o;19639:43::-;19680:2;19639:43;:::o;22925:144::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;22993:12:::1;:24:::0;;-1:-1:-1;;22993:24:0::1;;::::0;::::1;;;;::::0;;23033:28:::1;::::0;::::1;::::0;::::1;::::0;22993:24;;23033:28:::1;:::i;:::-;;;;;;;;22925:144:::0;:::o;24320:119::-;-1:-1:-1;;;;;24413:18:0;;24386:7;24413:18;;;:9;:18;;;;;;24320:119;;;;:::o;11070:140::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;11169:1:::1;11153:6:::0;;11132:40:::1;::::0;-1:-1:-1;;;;;11153:6:0;;::::1;::::0;11132:40:::1;::::0;11169:1;;11132:40:::1;11200:1;11183:19:::0;;-1:-1:-1;;;;;;11183:19:0::1;::::0;;11070:140::o;10428:79::-;10466:7;10493:6;-1:-1:-1;;;;;10493:6:0;10428:79;:::o;23794:96::-;23842:13;23875:7;23868:14;;;;;:::i;19790:42::-;;;;;;;;;;;;;;;:::o;19897:46::-;;;;:::o;27319:261::-;27404:4;27421:129;27430:12;:10;:12::i;:::-;27444:7;27453:96;27492:15;27453:96;;;;;;;;;;;;;;;;;:11;:25;27465:12;:10;:12::i;:::-;-1:-1:-1;;;;;27453:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;27453:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;24651:192::-;24737:4;24771:42;24781:12;:10;:12::i;:::-;24795:9;24806:6;24771:9;:42::i;20193:64::-;;;;:::o;20264:63::-;;;;:::o;22694:219::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;22782:1:::1;22775:5;:8;22767:33;;;;-1:-1:-1::0;;;22767:33:0::1;;;;;;;:::i;:::-;22816:52;22843:5;22849:18;;22816:52;;;;;;;:::i;:::-;;;;;;;;22879:18;:26:::0;22694:219::o;22423:114::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22506:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:23;;-1:-1:-1;;22506:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22423:114::o;24905:143::-;-1:-1:-1;;;;;25013:18:0;;;24986:7;25013:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24905:143::o;22301:114::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22384:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:23;;-1:-1:-1;;22384:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22301:114::o;23081:151::-;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;23148:21:::1;:32:::0;;-1:-1:-1;;23148:32:0::1;::::0;::::1;;;::::0;;23196:28:::1;::::0;::::1;::::0;::::1;::::0;23148:32;;23196:28:::1;:::i;11365:109::-:0;10650:12;:10;:12::i;:::-;10640:6;;-1:-1:-1;;;;;10640:6:0;;;:22;;;10632:67;;;;-1:-1:-1;;;10632:67:0;;;;;;;:::i;:::-;11438:28:::1;11457:8;11438:18;:28::i;:::-;11365:109:::0;:::o;19954:40::-;;;;;;:::o;19839:49::-;;;;;;;;;;;;;;;:::o;19741:42::-;;;;;;;;;;;;;;;:::o;3168:471::-;3226:7;3471:6;3467:47;;-1:-1:-1;3501:1:0;3494:8;;3467:47;3526:9;3538:5;3542:1;3538;:5;:::i;:::-;3526:17;-1:-1:-1;3571:1:0;3562:5;3566:1;3526:17;3562:5;:::i;:::-;:10;3554:56;;;;-1:-1:-1;;;3554:56:0;;;;;;;:::i;:::-;3630:1;3168:471;-1:-1:-1;;;3168:471:0:o;4115:132::-;4173:7;4200:39;4204:1;4207;4200:39;;;;;;;;;;;;;;;;;:3;:39::i;1814:181::-;1872:7;;1904:5;1908:1;1904;:5;:::i;:::-;1892:17;;1933:1;1928;:6;;1920:46;;;;-1:-1:-1;;;1920:46:0;;;;;;;:::i;605:115::-;701:10;605:115;:::o;32165:339::-;-1:-1:-1;;;;;32260:19:0;;32252:68;;;;-1:-1:-1;;;32252:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32339:21:0;;32331:68;;;;-1:-1:-1;;;32331:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32412:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;32464:32;;;;;32442:6;;32464:32;:::i;:::-;;;;;;;;32165:339;;;:::o;28687:1763::-;-1:-1:-1;;;;;28785:20:0;;28777:70;;;;-1:-1:-1;;;28777:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28866:23:0;;28858:71;;;;-1:-1:-1;;;28858:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28948:17:0;;;;;;:9;:17;;;;;;;;:26;;;:59;;-1:-1:-1;;;;;;28978:20:0;;;;;;:9;:20;;;;;;;;:29;28948:59;28940:108;;;;-1:-1:-1;;;28940:108:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29072:17:0;;;;;;:9;:17;;;;;;;;:26;;:53;;;29112:13;-1:-1:-1;;;;;29102:23:0;:6;-1:-1:-1;;;;;29102:23:0;;29072:53;29069:146;;;29160:17;;29150:6;:27;;29142:61;;;;-1:-1:-1;;;29142:61:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29231:27:0;;;;;;:16;:27;;;;;;;;29230:28;:65;;;;-1:-1:-1;;;;;;29262:24:0;;;;;;:16;:24;;;;;;;;:33;29230:65;:105;;;-1:-1:-1;;;;;;29299:27:0;;;;;;:16;:27;;;;;;;;:36;29230:105;29227:226;;;29394:16;;29359:32;29384:6;29359:20;29369:9;29359;:20::i;:::-;:24;;:32::i;:::-;:51;;29351:90;;;;-1:-1:-1;;;29351:90:0;;;;;;;:::i;:::-;29482:21;;;;29478:217;;;29551:18;;29523:24;29541:4;29523:9;:24::i;:::-;:46;;:81;;;;-1:-1:-1;29588:16:0;;;;29587:17;29523:81;29520:154;;;29624:34;29639:18;;29624:14;:34::i;:::-;29728:12;;;;;;;:42;;;;-1:-1:-1;;;;;;29744:17:0;;;;;;:9;:17;;;;;;;;:26;29728:42;:68;;;;-1:-1:-1;;;;;;29774:22:0;;29791:4;29774:22;;29728:68;29725:699;;;29832:71;29854:6;29832:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29832:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;29812:17:0;;;;;;:9;:17;;;;;:91;;;;29937:24;29822:6;29954;29937:9;:24::i;:::-;29918:43;-1:-1:-1;29976:23:0;30002:20;:6;29918:43;30002:10;:20::i;:::-;-1:-1:-1;;;;;30060:20:0;;;;;;:9;:20;;;;;;29976:46;;-1:-1:-1;30060:41:0;;29976:46;30060:24;:41::i;:::-;-1:-1:-1;;;;;30037:20:0;;;;;;;:9;:20;;;;;;;:64;;;;30121:44;;;;;;-1:-1:-1;;;;;;;;;;;30121:44:0;;;30149:15;;30121:44;:::i;:::-;;;;;;;;29725:699;;;;;30216:71;30238:6;30216:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30216:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;30196:17:0;;;;;;;:9;:17;;;;;;:91;;;;30325:20;;;;;;;:32;;30350:6;30325:24;:32::i;:::-;-1:-1:-1;;;;;30302:20:0;;;;;;;:9;:20;;;;;;;:55;;;;30377:35;;;;;;-1:-1:-1;;;;;;;;;;;30377:35:0;;;30405:6;;30377:35;:::i;29725:699::-;28687:1763;;;:::o;2717:192::-;2803:7;2839:12;2831:6;;;;2823:29;;;;-1:-1:-1;;;2823:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2863:9:0;2875:5;2879:1;2875;:5;:::i;:::-;2863:17;2717:192;-1:-1:-1;;;;;2717:192:0:o;11580:229::-;-1:-1:-1;;;;;11654:22:0;;11646:73;;;;-1:-1:-1;;;11646:73:0;;;;;;;:::i;:::-;11756:6;;;11735:38;;-1:-1:-1;;;;;11735:38:0;;;;11756:6;;;11735:38;;;11784:6;:17;;-1:-1:-1;;;;;;11784:17:0;-1:-1:-1;;;;;11784:17:0;;;;;;;;;;11580:229::o;4743:278::-;4829:7;4864:12;4857:5;4849:28;;;;-1:-1:-1;;;4849:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4888:9:0;4900:5;4904:1;4900;:5;:::i;32970:985::-;22198:16;:23;;-1:-1:-1;;22198:23:0;22217:4;22198:23;;;:16;33121:27:::1;:20:::0;33146:1:::1;33121:24;:27::i;:::-;33106:42:::0;-1:-1:-1;33159:17:0::1;33179:30;:20:::0;33106:42;33179:24:::1;:30::i;:::-;33159:50:::0;-1:-1:-1;33512:21:0::1;33578:22;33595:4:::0;33578:16:::1;:22::i;:::-;33731:18;33752:41;:21;33778:14:::0;33752:25:::1;:41::i;:::-;33731:62;;33843:35;33856:9;33867:10;33843:12;:35::i;:::-;33904:43;33919:4;33925:10;33937:9;33904:43;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;22244:16:0;:24;;-1:-1:-1;;22244:24:0;;;-1:-1:-1;;;32970:985:0:o;27597:1078::-;27664:7;;27719:37;27751:4;27719:27;:7;19580:2;27719:11;:27::i;:::-;:31;;:37::i;:::-;27694:62;-1:-1:-1;27767:22:0;27792:37;27824:4;27792:27;:7;19630:2;27792:11;:27::i;:37::-;27767:62;-1:-1:-1;27840:22:0;27865:37;27897:4;27865:27;:7;19680:2;27865:11;:27::i;:37::-;27840:62;-1:-1:-1;27915:13:0;27931:29;27955:4;27931:19;:7;19724:2;27931:11;:19::i;:29::-;28016:4;27998:24;;;;:9;:24;;;;;;27915:45;;-1:-1:-1;27998:35:0;;27915:45;27998:28;:35::i;:::-;27989:4;27971:24;;;;:9;:24;;;;;;:62;;;;28084:16;;;;;-1:-1:-1;;;;;28084:16:0;28074:27;;;;:47;;28106:14;28074:31;:47::i;:::-;28054:16;;-1:-1:-1;;;;;28054:16:0;;;;;;28044:27;;;;:9;:27;;;;;;:77;;;;28172:16;;;;;28162:27;;;;:47;;28194:14;28162:31;:47::i;:::-;28142:16;;-1:-1:-1;;;;;28142:16:0;;;28132:27;;;;:9;:27;;;;;;:77;;;;28260:16;;;;;28250:27;;;;:47;;28282:14;28250:31;:47::i;:::-;28230:16;;-1:-1:-1;;;;;28230:16:0;;;28220:27;;;;:9;:27;;;;;;;:77;;;;28315:36;;28338:4;;28315:36;;;-1:-1:-1;;;;;;;;;;;28315:36:0;;;28345:5;;28315:36;:::i;:::-;;;;;;;;28382:16;;28367:48;;-1:-1:-1;;;;;28382:16:0;;;;;;;28367:48;;;-1:-1:-1;;;;;;;;;;;28367:48:0;;;28400:14;;28367:48;:::i;:::-;;;;;;;;28446:16;;28431:48;;-1:-1:-1;;;;;28446:16:0;;;;28431:48;;;-1:-1:-1;;;;;;;;;;;28431:48:0;;;28464:14;;28431:48;:::i;:::-;;;;;;;;28510:16;;28495:48;;-1:-1:-1;;;;;28510:16:0;;;;28495:48;;;-1:-1:-1;;;;;;;;;;;28495:48:0;;;28528:14;;28495:48;:::i;:::-;;;;;;;;28556:16;28574:65;28633:5;28574:54;28613:14;28574:54;:14;28593;28574:18;:34::i;:65::-;28556:83;27597:1078;-1:-1:-1;;;;;;;;27597:1078:0:o;2278:136::-;2336:7;2363:43;2367:1;2370;2363:43;;;;;;;;;;;;;;;;;:3;:43::i;33963:589::-;34113:16;;;34127:1;34113:16;;;;;;;;34089:21;;34113:16;;;;;;;;;;-1:-1:-1;34113:16:0;34089:40;;34158:4;34140;34145:1;34140:7;;;;;;-1:-1:-1;;;34140:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;34140:23:0;;;-1:-1:-1;;;;;34140:23:0;;;;;34184:15;-1:-1:-1;;;;;34184:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34174:4;34179:1;34174:7;;;;;;-1:-1:-1;;;34174:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;34174:32:0;;;-1:-1:-1;;;;;34174:32:0;;;;;34219:62;34236:4;34251:15;34269:11;34219:8;:62::i;:::-;34320:224;;-1:-1:-1;;;34320:224:0;;-1:-1:-1;;;;;34320:15:0;:66;;;;:224;;34401:11;;34427:1;;34471:4;;34498;;34518:15;;34320:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33963:589;;:::o;34560:513::-;34708:62;34725:4;34740:15;34758:11;34708:8;:62::i;:::-;34813:15;-1:-1:-1;;;;;34813:31:0;;34852:9;34885:4;34905:11;34931:1;34974;35017:7;:5;:7::i;:::-;35039:15;34813:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34560:513;;:::o;14:162:1:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:259;;293:2;281:9;272:7;268:23;264:32;261:2;;;314:6;306;299:22;261:2;358:9;345:23;377:33;404:5;377:33;:::i;445:263::-;;568:2;556:9;547:7;543:23;539:32;536:2;;;589:6;581;574:22;536:2;626:9;620:16;645:33;672:5;645:33;:::i;713:402::-;;;842:2;830:9;821:7;817:23;813:32;810:2;;;863:6;855;848:22;810:2;907:9;894:23;926:33;953:5;926:33;:::i;:::-;978:5;-1:-1:-1;1035:2:1;1020:18;;1007:32;1048:35;1007:32;1048:35;:::i;:::-;1102:7;1092:17;;;800:315;;;;;:::o;1120:470::-;;;;1266:2;1254:9;1245:7;1241:23;1237:32;1234:2;;;1287:6;1279;1272:22;1234:2;1331:9;1318:23;1350:33;1377:5;1350:33;:::i;:::-;1402:5;-1:-1:-1;1459:2:1;1444:18;;1431:32;1472:35;1431:32;1472:35;:::i;:::-;1224:366;;1526:7;;-1:-1:-1;;;1580:2:1;1565:18;;;;1552:32;;1224:366::o;1595:329::-;;;1721:2;1709:9;1700:7;1696:23;1692:32;1689:2;;;1742:6;1734;1727:22;1689:2;1786:9;1773:23;1805:33;1832:5;1805:33;:::i;:::-;1857:5;-1:-1:-1;1881:37:1;1914:2;1899:18;;1881:37;:::i;:::-;1871:47;;1679:245;;;;;:::o;1929:327::-;;;2058:2;2046:9;2037:7;2033:23;2029:32;2026:2;;;2079:6;2071;2064:22;2026:2;2123:9;2110:23;2142:33;2169:5;2142:33;:::i;:::-;2194:5;2246:2;2231:18;;;;2218:32;;-1:-1:-1;;;2016:240:1:o;2261:192::-;;2370:2;2358:9;2349:7;2345:23;2341:32;2338:2;;;2391:6;2383;2376:22;2338:2;2419:28;2437:9;2419:28;:::i;2458:190::-;;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;-1:-1:-1;2619:23:1;;2528:120;-1:-1:-1;2528:120:1:o;2653:316::-;;;;2810:2;2798:9;2789:7;2785:23;2781:32;2778:2;;;2831:6;2823;2816:22;2778:2;2865:9;2859:16;2849:26;;2915:2;2904:9;2900:18;2894:25;2884:35;;2959:2;2948:9;2944:18;2938:25;2928:35;;2768:201;;;;;:::o;2974:203::-;-1:-1:-1;;;;;3138:32:1;;;;3120:51;;3108:2;3093:18;;3075:102::o;3182:607::-;-1:-1:-1;;;;;3541:15:1;;;3523:34;;3588:2;3573:18;;3566:34;;;;3631:2;3616:18;;3609:34;;;;3674:2;3659:18;;3652:34;;;;3723:15;;;3717:3;3702:19;;3695:44;3503:3;3755:19;;3748:35;;;;3472:3;3457:19;;3439:350::o;3794:187::-;3959:14;;3952:22;3934:41;;3922:2;3907:18;;3889:92::o;4221:603::-;;4362:2;4391;4380:9;4373:21;4423:6;4417:13;4466:6;4461:2;4450:9;4446:18;4439:34;4491:4;4504:140;4518:6;4515:1;4512:13;4504:140;;;4613:14;;;4609:23;;4603:30;4579:17;;;4598:2;4575:26;4568:66;4533:10;;4504:140;;;4662:6;4659:1;4656:13;4653:2;;;4732:4;4727:2;4718:6;4707:9;4703:22;4699:31;4692:45;4653:2;-1:-1:-1;4808:2:1;4787:15;-1:-1:-1;;4783:29:1;4768:45;;;;4815:2;4764:54;;4342:482;-1:-1:-1;;;4342:482:1:o;4829:399::-;5031:2;5013:21;;;5070:2;5050:18;;;5043:30;5109:34;5104:2;5089:18;;5082:62;-1:-1:-1;;;5175:2:1;5160:18;;5153:33;5218:3;5203:19;;5003:225::o;5233:402::-;5435:2;5417:21;;;5474:2;5454:18;;;5447:30;5513:34;5508:2;5493:18;;5486:62;-1:-1:-1;;;5579:2:1;5564:18;;5557:36;5625:3;5610:19;;5407:228::o;5640:398::-;5842:2;5824:21;;;5881:2;5861:18;;;5854:30;5920:34;5915:2;5900:18;;5893:62;-1:-1:-1;;;5986:2:1;5971:18;;5964:32;6028:3;6013:19;;5814:224::o;6043:351::-;6245:2;6227:21;;;6284:2;6264:18;;;6257:30;6323:29;6318:2;6303:18;;6296:57;6385:2;6370:18;;6217:177::o;6399:351::-;6601:2;6583:21;;;6640:2;6620:18;;;6613:30;6679:29;6674:2;6659:18;;6652:57;6741:2;6726:18;;6573:177::o;6755:346::-;6957:2;6939:21;;;6996:2;6976:18;;;6969:30;-1:-1:-1;;;7030:2:1;7015:18;;7008:52;7092:2;7077:18;;6929:172::o;7106:397::-;7308:2;7290:21;;;7347:2;7327:18;;;7320:30;7386:34;7381:2;7366:18;;7359:62;-1:-1:-1;;;7452:2:1;7437:18;;7430:31;7493:3;7478:19;;7280:223::o;7508:356::-;7710:2;7692:21;;;7729:18;;;7722:30;7788:34;7783:2;7768:18;;7761:62;7855:2;7840:18;;7682:182::o;7869:401::-;8071:2;8053:21;;;8110:2;8090:18;;;8083:30;8149:34;8144:2;8129:18;;8122:62;-1:-1:-1;;;8215:2:1;8200:18;;8193:35;8260:3;8245:19;;8043:227::o;8275:400::-;8477:2;8459:21;;;8516:2;8496:18;;;8489:30;8555:34;8550:2;8535:18;;8528:62;-1:-1:-1;;;8621:2:1;8606:18;;8599:34;8665:3;8650:19;;8449:226::o;8680:400::-;8882:2;8864:21;;;8921:2;8901:18;;;8894:30;8960:34;8955:2;8940:18;;8933:62;-1:-1:-1;;;9026:2:1;9011:18;;9004:34;9070:3;9055:19;;8854:226::o;9085:337::-;9287:2;9269:21;;;9326:2;9306:18;;;9299:30;-1:-1:-1;;;9360:2:1;9345:18;;9338:43;9413:2;9398:18;;9259:163::o;9427:177::-;9573:25;;;9561:2;9546:18;;9528:76::o;9609:983::-;;9919:3;9908:9;9904:19;9950:6;9939:9;9932:25;9976:2;10014:6;10009:2;9998:9;9994:18;9987:34;10057:3;10052:2;10041:9;10037:18;10030:31;10081:6;10116;10110:13;10147:6;10139;10132:22;10185:3;10174:9;10170:19;10163:26;;10224:2;10216:6;10212:15;10198:29;;10245:4;10258:195;10272:6;10269:1;10266:13;10258:195;;;10337:13;;-1:-1:-1;;;;;10333:39:1;10321:52;;10428:15;;;;10393:12;;;;10369:1;10287:9;10258:195;;;-1:-1:-1;;;;;;;10509:32:1;;;;10504:2;10489:18;;10482:60;-1:-1:-1;;;10573:3:1;10558:19;10551:35;10470:3;9880:712;-1:-1:-1;;;9880:712:1:o;10597:248::-;10771:25;;;10827:2;10812:18;;10805:34;10759:2;10744:18;;10726:119::o;10850:319::-;11052:25;;;11108:2;11093:18;;11086:34;;;;11151:2;11136:18;;11129:34;11040:2;11025:18;;11007:162::o;11174:184::-;11346:4;11334:17;;;;11316:36;;11304:2;11289:18;;11271:87::o;11363:128::-;;11434:1;11430:6;11427:1;11424:13;11421:2;;;11440:18;;:::i;:::-;-1:-1:-1;11476:9:1;;11411:80::o;11496:217::-;;11562:1;11552:2;;-1:-1:-1;;;11587:31:1;;11641:4;11638:1;11631:15;11669:4;11594:1;11659:15;11552:2;-1:-1:-1;11698:9:1;;11542:171::o;11718:168::-;;11824:1;11820;11816:6;11812:14;11809:1;11806:21;11801:1;11794:9;11787:17;11783:45;11780:2;;;11831:18;;:::i;:::-;-1:-1:-1;11871:9:1;;11770:116::o;11891:125::-;;11959:1;11956;11953:8;11950:2;;;11964:18;;:::i;:::-;-1:-1:-1;12001:9:1;;11940:76::o;12021:380::-;12106:1;12096:12;;12153:1;12143:12;;;12164:2;;12218:4;12210:6;12206:17;12196:27;;12164:2;12271;12263:6;12260:14;12240:18;12237:38;12234:2;;;12317:10;12312:3;12308:20;12305:1;12298:31;12352:4;12349:1;12342:15;12380:4;12377:1;12370:15;12234:2;;12076:325;;;:::o;12406:127::-;12467:10;12462:3;12458:20;12455:1;12448:31;12498:4;12495:1;12488:15;12522:4;12519:1;12512:15;12538:133;-1:-1:-1;;;;;12615:31:1;;12605:42;;12595:2;;12661:1;12658;12651:12

Swarm Source

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