ETH Price: $3,029.17 (+3.34%)
Gas: 2 Gwei

Token

Soliton (SOLITON)
 

Overview

Max Total Supply

10,000,000,000,000 SOLITON

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 1 Decimals)

Balance
0 SOLITON

Value
$0.00
0xa68fdefbc26db2087f1d24255177a49553229afb
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:
Token

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/utils/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.9;

/**
 * @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 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) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/access/Ownable.sol

// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.9;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

    /**
     * @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 virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.9;

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

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

    function setFeeTo(address) external;

    function allPairsLength() external view returns (uint256);

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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
    );

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

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 1;
    }

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) external virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        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 {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) external virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + 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 {IERC20-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
    ) external virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /** @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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += 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 virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This 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 virtual {
        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);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }
}

contract Token is Ownable, ERC20 {
    uint256 private _numTokensSellToAddToSwap = 100000 * (10 ** decimals());
    bool inSwapAndLiquify;

    // 1% buy/sell tax
    uint256 public buySellLiquidityTax;
    uint256 public sellDevelopmentTax;
    address public developmentWallet;
    address public constant DEAD = address(0xdead); // burn LP to dead address

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping(address => bool) private _isExcludedFromFee;

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

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

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(
        address _developmentWallet,
        uint _liquidityTax,
        uint _developmentTax,
        address _routerAddress
    ) ERC20("Soliton", "SOLITON") {
        _mint(msg.sender, (10000000000000 * 10 ** decimals()));

        developmentWallet = _developmentWallet;
        buySellLiquidityTax = _liquidityTax;
        sellDevelopmentTax = _developmentTax;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            _routerAddress
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
    }

    function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 half = (contractTokenBalance / 2);
        uint256 otherHalf = (contractTokenBalance - half);

        uint256 initialBalance = address(this).balance;

        _swapTokensForEth(half);

        uint256 newBalance = (address(this).balance - initialBalance);

        _addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function excludeFromFee(address _user, bool value) external onlyOwner {
        _isExcludedFromFee[_user] = value;
    }

    function swapAndSendToMarketing(uint256 tokens) private lockTheSwap {
        uint256 initialBalance = address(this).balance;
        _swapTokensForEth(tokens);
        uint256 newBalance = address(this).balance - initialBalance;
        payable(developmentWallet).transfer(newBalance);
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            (block.timestamp + 300)
        );
    }

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

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            DEAD,
            block.timestamp
        );
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            balanceOf(from) >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        uint256 transferAmount;
        if (
            (from == uniswapV2Pair || to == uniswapV2Pair) && !inSwapAndLiquify
        ) {
            // DEX transaction
            if (
                from != uniswapV2Pair &&
                ((balanceOf(address(this))) >= _numTokensSellToAddToSwap)
            ) {
                uint256 totalfee = 2 *
                    (buySellLiquidityTax) +
                    sellDevelopmentTax;
                _numTokensSellToAddToSwap = balanceOf(address(this));

                uint256 marketingTokens = (_numTokensSellToAddToSwap *
                    sellDevelopmentTax) / totalfee;
                swapAndSendToMarketing(marketingTokens);

                uint256 liquidityTokens = _numTokensSellToAddToSwap -
                    marketingTokens;

                // sell transaction with threshold to swap
                _swapAndLiquify(liquidityTokens);
            }
            if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
                // no tax on excluded account
                transferAmount = amount;
            } else {
                // 1% buy tax to LP, 2% sell tax (1% to LP, 1% to dev wallet)
                uint256 liquidityAmount = ((amount * buySellLiquidityTax) /
                    100);
                if (from == uniswapV2Pair) {
                    // buy transaction
                    transferAmount = amount - liquidityAmount;
                } else {
                    // sell transaction
                    uint256 developmentAmount = ((amount * sellDevelopmentTax) /
                        100);

                    transferAmount =
                        amount -
                        liquidityAmount -
                        developmentAmount;
                    super._transfer(from, address(this), developmentAmount); // only on sell transaction
                }
                super._transfer(from, address(this), liquidityAmount); // on buy/sell both transactions
            }
        } else {
            // normal wallet transaction
            transferAmount = amount;
        }
        super._transfer(from, to, transferAmount);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_developmentWallet","type":"address"},{"internalType":"uint256","name":"_liquidityTax","type":"uint256"},{"internalType":"uint256","name":"_developmentTax","type":"uint256"},{"internalType":"address","name":"_routerAddress","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":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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buySellLiquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFee","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

60c0604052620000146200047760201b60201c565b600a620000229190620008dd565b620186a06200003291906200092e565b6006553480156200004257600080fd5b50604051620034c1380380620034c1833981810160405281019062000068919062000a2a565b6040518060400160405280600781526020017f536f6c69746f6e000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f534f4c49544f4e00000000000000000000000000000000000000000000000000815250620000f4620000e86200048060201b60201c565b6200048860201b60201c565b81600490805190602001906200010c92919062000693565b5080600590805190602001906200012592919062000693565b5050506200016a336200013d6200047760201b60201c565b600a6200014b9190620008dd565b6509184e72a0006200015e91906200092e565b6200054c60201b60201c565b83600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826008819055508160098190555060008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020557600080fd5b505afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000a9c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a357600080fd5b505afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000a9c565b6040518363ffffffff1660e01b8152600401620002fd92919062000adf565b602060405180830381600087803b1580156200031857600080fd5b505af11580156200032d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000353919062000a9c565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505062000c7f565b60006001905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620005bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005b69062000b6d565b60405180910390fd5b8060036000828254620005d3919062000b8f565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000687919062000bfd565b60405180910390a35050565b828054620006a19062000c49565b90600052602060002090601f016020900481019282620006c5576000855562000711565b82601f10620006e057805160ff191683800117855562000711565b8280016001018555821562000711579182015b8281111562000710578251825591602001919060010190620006f3565b5b50905062000720919062000724565b5090565b5b808211156200073f57600081600090555060010162000725565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007d157808604811115620007a957620007a862000743565b5b6001851615620007b95780820291505b8081029050620007c98562000772565b945062000789565b94509492505050565b600082620007ec5760019050620008bf565b81620007fc5760009050620008bf565b8160018114620008155760028114620008205762000856565b6001915050620008bf565b60ff84111562000835576200083462000743565b5b8360020a9150848211156200084f576200084e62000743565b5b50620008bf565b5060208310610133831016604e8410600b8410161715620008905782820a9050838111156200088a576200088962000743565b5b620008bf565b6200089f84848460016200077f565b92509050818404811115620008b957620008b862000743565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008ea82620008c6565b9150620008f783620008d0565b9250620009267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007da565b905092915050565b60006200093b82620008c6565b91506200094883620008c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000984576200098362000743565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009c18262000994565b9050919050565b620009d381620009b4565b8114620009df57600080fd5b50565b600081519050620009f381620009c8565b92915050565b62000a0481620008c6565b811462000a1057600080fd5b50565b60008151905062000a2481620009f9565b92915050565b6000806000806080858703121562000a475762000a466200098f565b5b600062000a5787828801620009e2565b945050602062000a6a8782880162000a13565b935050604062000a7d8782880162000a13565b925050606062000a9087828801620009e2565b91505092959194509250565b60006020828403121562000ab55762000ab46200098f565b5b600062000ac584828501620009e2565b91505092915050565b62000ad981620009b4565b82525050565b600060408201905062000af6600083018562000ace565b62000b05602083018462000ace565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000b55601f8362000b0c565b915062000b628262000b1d565b602082019050919050565b6000602082019050818103600083015262000b888162000b46565b9050919050565b600062000b9c82620008c6565b915062000ba983620008c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000be15762000be062000743565b5b828201905092915050565b62000bf781620008c6565b82525050565b600060208201905062000c14600083018462000bec565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c6257607f821691505b6020821081141562000c795762000c7862000c1a565b5b50919050565b60805160a0516127dd62000ce46000396000818161068101528181610edf01528181610f3401528181610fa2015261114f0152600081816105e40152818161176a0152818161185a015281816118810152818161192a015261195101526127dd6000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610405578063ad8052bb14610442578063c04a54141461046d578063dd62ed3e14610498578063df8408fe146104d5578063f2fde38b146104fe57610135565b8063715018a614610330578063739822b2146103475780638da5cb5b1461037257806395d89b411461039d578063a457c2d7146103c857610135565b806323b872dd116100f257806323b872dd14610223578063313ce56714610260578063395093511461028b57806349bd5a5e146102c857806370a08231146102f357610135565b806303fd2a451461013a57806306fdde0314610165578063095ea7b3146101905780631694505e146101cd57806318160ddd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610527565b60405161015c9190611a50565b60405180910390f35b34801561017157600080fd5b5061017a61052d565b6040516101879190611b04565b60405180910390f35b34801561019c57600080fd5b506101b760048036038101906101b29190611b8d565b6105bf565b6040516101c49190611be8565b60405180910390f35b3480156101d957600080fd5b506101e26105e2565b6040516101ef9190611c62565b60405180910390f35b34801561020457600080fd5b5061020d610606565b60405161021a9190611c8c565b60405180910390f35b34801561022f57600080fd5b5061024a60048036038101906102459190611ca7565b610610565b6040516102579190611be8565b60405180910390f35b34801561026c57600080fd5b5061027561063f565b6040516102829190611d16565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611b8d565b610648565b6040516102bf9190611be8565b60405180910390f35b3480156102d457600080fd5b506102dd61067f565b6040516102ea9190611a50565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190611d31565b6106a3565b6040516103279190611c8c565b60405180910390f35b34801561033c57600080fd5b506103456106ec565b005b34801561035357600080fd5b5061035c610774565b6040516103699190611c8c565b60405180910390f35b34801561037e57600080fd5b5061038761077a565b6040516103949190611a50565b60405180910390f35b3480156103a957600080fd5b506103b26107a3565b6040516103bf9190611b04565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190611b8d565b610835565b6040516103fc9190611be8565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190611b8d565b6108ac565b6040516104399190611be8565b60405180910390f35b34801561044e57600080fd5b506104576108cf565b6040516104649190611c8c565b60405180910390f35b34801561047957600080fd5b506104826108d5565b60405161048f9190611a50565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190611d5e565b6108fb565b6040516104cc9190611c8c565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f79190611dca565b610982565b005b34801561050a57600080fd5b5061052560048036038101906105209190611d31565b610a59565b005b61dead81565b60606004805461053c90611e39565b80601f016020809104026020016040519081016040528092919081815260200182805461056890611e39565b80156105b55780601f1061058a576101008083540402835291602001916105b5565b820191906000526020600020905b81548152906001019060200180831161059857829003601f168201915b5050505050905090565b6000806105ca610b51565b90506105d7818585610b59565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600354905090565b60008061061b610b51565b9050610628858285610d24565b610633858585610db0565b60019150509392505050565b60006001905090565b600080610653610b51565b905061067481858561066585896108fb565b61066f9190611e9a565b610b59565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106f4610b51565b73ffffffffffffffffffffffffffffffffffffffff1661071261077a565b73ffffffffffffffffffffffffffffffffffffffff1614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f90611f3c565b60405180910390fd5b610772600061121f565b565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107b290611e39565b80601f01602080910402602001604051908101604052809291908181526020018280546107de90611e39565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b600080610840610b51565b9050600061084e82866108fb565b905083811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a90611fce565b60405180910390fd5b6108a08286868403610b59565b60019250505092915050565b6000806108b7610b51565b90506108c4818585610db0565b600191505092915050565b60095481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61098a610b51565b73ffffffffffffffffffffffffffffffffffffffff166109a861077a565b73ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590611f3c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a61610b51565b73ffffffffffffffffffffffffffffffffffffffff16610a7f61077a565b73ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90611f3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90612060565b60405180910390fd5b610b4e8161121f565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc0906120f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090612184565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d179190611c8c565b60405180910390a3505050565b6000610d3084846108fb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610daa5781811015610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d93906121f0565b60405180910390fd5b610da98484848403610b59565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790612282565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790612314565b60405180910390fd5b80610e9a846106a3565b1015610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed2906123a6565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f8257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015610f9b5750600760009054906101000a900460ff16155b1561120a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156110065750600654611003306106a3565b10155b15611081576000600954600854600261101f91906123c6565b6110299190611e9a565b9050611034306106a3565b60068190555060008160095460065461104d91906123c6565b611057919061244f565b9050611062816112e3565b6000816006546110729190612480565b905061107d816113a5565b5050505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806111225750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561112f57819050611205565b600060646008548461114191906123c6565b61114b919061244f565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156111b45780836111ad9190612480565b91506111f8565b60006064600954856111c691906123c6565b6111d0919061244f565b90508082856111df9190612480565b6111e99190612480565b92506111f6863083611466565b505b611203853083611466565b505b61120e565b8190505b611219848483611466565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600760006101000a81548160ff021916908315150217905550600047905061130c826116cb565b6000814761131a9190612480565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611384573d6000803e3d6000fd5b5050506000600760006101000a81548160ff02191690831515021790555050565b6001600760006101000a81548160ff02191690831515021790555060006002826113cf919061244f565b9050600081836113df9190612480565b905060004790506113ef836116cb565b600081476113fd9190612480565b90506114098382611924565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161143c939291906124b4565b60405180910390a1505050506000600760006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90612282565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612314565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c4906123a6565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116bd9190611c8c565b60405180910390a350505050565b6000600267ffffffffffffffff8111156116e8576116e76124eb565b5b6040519080825280602002602001820160405280156117165781602001602082028036833780820191505090505b509050308160008151811061172e5761172d61251a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ce57600080fd5b505afa1580156117e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611806919061255e565b8160018151811061181a5761181961251a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061187f307f000000000000000000000000000000000000000000000000000000000000000084610b59565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c426118ce9190611e9a565b6040518663ffffffff1660e01b81526004016118ee959493929190612684565b600060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050505050565b61194f307f000000000000000000000000000000000000000000000000000000000000000084610b59565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016119b6969594939291906126de565b6060604051808303818588803b1580156119cf57600080fd5b505af11580156119e3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a089190612754565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a3a82611a0f565b9050919050565b611a4a81611a2f565b82525050565b6000602082019050611a656000830184611a41565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611aa5578082015181840152602081019050611a8a565b83811115611ab4576000848401525b50505050565b6000601f19601f8301169050919050565b6000611ad682611a6b565b611ae08185611a76565b9350611af0818560208601611a87565b611af981611aba565b840191505092915050565b60006020820190508181036000830152611b1e8184611acb565b905092915050565b600080fd5b611b3481611a2f565b8114611b3f57600080fd5b50565b600081359050611b5181611b2b565b92915050565b6000819050919050565b611b6a81611b57565b8114611b7557600080fd5b50565b600081359050611b8781611b61565b92915050565b60008060408385031215611ba457611ba3611b26565b5b6000611bb285828601611b42565b9250506020611bc385828601611b78565b9150509250929050565b60008115159050919050565b611be281611bcd565b82525050565b6000602082019050611bfd6000830184611bd9565b92915050565b6000819050919050565b6000611c28611c23611c1e84611a0f565b611c03565b611a0f565b9050919050565b6000611c3a82611c0d565b9050919050565b6000611c4c82611c2f565b9050919050565b611c5c81611c41565b82525050565b6000602082019050611c776000830184611c53565b92915050565b611c8681611b57565b82525050565b6000602082019050611ca16000830184611c7d565b92915050565b600080600060608486031215611cc057611cbf611b26565b5b6000611cce86828701611b42565b9350506020611cdf86828701611b42565b9250506040611cf086828701611b78565b9150509250925092565b600060ff82169050919050565b611d1081611cfa565b82525050565b6000602082019050611d2b6000830184611d07565b92915050565b600060208284031215611d4757611d46611b26565b5b6000611d5584828501611b42565b91505092915050565b60008060408385031215611d7557611d74611b26565b5b6000611d8385828601611b42565b9250506020611d9485828601611b42565b9150509250929050565b611da781611bcd565b8114611db257600080fd5b50565b600081359050611dc481611d9e565b92915050565b60008060408385031215611de157611de0611b26565b5b6000611def85828601611b42565b9250506020611e0085828601611db5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e5157607f821691505b60208210811415611e6557611e64611e0a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ea582611b57565b9150611eb083611b57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ee557611ee4611e6b565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611f26602083611a76565b9150611f3182611ef0565b602082019050919050565b60006020820190508181036000830152611f5581611f19565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611fb8602583611a76565b9150611fc382611f5c565b604082019050919050565b60006020820190508181036000830152611fe781611fab565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061204a602683611a76565b915061205582611fee565b604082019050919050565b600060208201905081810360008301526120798161203d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120dc602483611a76565b91506120e782612080565b604082019050919050565b6000602082019050818103600083015261210b816120cf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061216e602283611a76565b915061217982612112565b604082019050919050565b6000602082019050818103600083015261219d81612161565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006121da601d83611a76565b91506121e5826121a4565b602082019050919050565b60006020820190508181036000830152612209816121cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061226c602583611a76565b915061227782612210565b604082019050919050565b6000602082019050818103600083015261229b8161225f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122fe602383611a76565b9150612309826122a2565b604082019050919050565b6000602082019050818103600083015261232d816122f1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612390602683611a76565b915061239b82612334565b604082019050919050565b600060208201905081810360008301526123bf81612383565b9050919050565b60006123d182611b57565b91506123dc83611b57565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561241557612414611e6b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061245a82611b57565b915061246583611b57565b92508261247557612474612420565b5b828204905092915050565b600061248b82611b57565b915061249683611b57565b9250828210156124a9576124a8611e6b565b5b828203905092915050565b60006060820190506124c96000830186611c7d565b6124d66020830185611c7d565b6124e36040830184611c7d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061255881611b2b565b92915050565b60006020828403121561257457612573611b26565b5b600061258284828501612549565b91505092915050565b6000819050919050565b60006125b06125ab6125a68461258b565b611c03565b611b57565b9050919050565b6125c081612595565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125fb81611a2f565b82525050565b600061260d83836125f2565b60208301905092915050565b6000602082019050919050565b6000612631826125c6565b61263b81856125d1565b9350612646836125e2565b8060005b8381101561267757815161265e8882612601565b975061266983612619565b92505060018101905061264a565b5085935050505092915050565b600060a0820190506126996000830188611c7d565b6126a660208301876125b7565b81810360408301526126b88186612626565b90506126c76060830185611a41565b6126d46080830184611c7d565b9695505050505050565b600060c0820190506126f36000830189611a41565b6127006020830188611c7d565b61270d60408301876125b7565b61271a60608301866125b7565b6127276080830185611a41565b61273460a0830184611c7d565b979650505050505050565b60008151905061274e81611b61565b92915050565b60008060006060848603121561276d5761276c611b26565b5b600061277b8682870161273f565b935050602061278c8682870161273f565b925050604061279d8682870161273f565b915050925092509256fea2646970667358221220919dca0caf22d457a2dbc78d885b1fde90edd5e2c856a287adf953039701f97c64736f6c634300080900330000000000000000000000003d24fd24c7339249206cae2761c870206cd963e7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610405578063ad8052bb14610442578063c04a54141461046d578063dd62ed3e14610498578063df8408fe146104d5578063f2fde38b146104fe57610135565b8063715018a614610330578063739822b2146103475780638da5cb5b1461037257806395d89b411461039d578063a457c2d7146103c857610135565b806323b872dd116100f257806323b872dd14610223578063313ce56714610260578063395093511461028b57806349bd5a5e146102c857806370a08231146102f357610135565b806303fd2a451461013a57806306fdde0314610165578063095ea7b3146101905780631694505e146101cd57806318160ddd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610527565b60405161015c9190611a50565b60405180910390f35b34801561017157600080fd5b5061017a61052d565b6040516101879190611b04565b60405180910390f35b34801561019c57600080fd5b506101b760048036038101906101b29190611b8d565b6105bf565b6040516101c49190611be8565b60405180910390f35b3480156101d957600080fd5b506101e26105e2565b6040516101ef9190611c62565b60405180910390f35b34801561020457600080fd5b5061020d610606565b60405161021a9190611c8c565b60405180910390f35b34801561022f57600080fd5b5061024a60048036038101906102459190611ca7565b610610565b6040516102579190611be8565b60405180910390f35b34801561026c57600080fd5b5061027561063f565b6040516102829190611d16565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611b8d565b610648565b6040516102bf9190611be8565b60405180910390f35b3480156102d457600080fd5b506102dd61067f565b6040516102ea9190611a50565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190611d31565b6106a3565b6040516103279190611c8c565b60405180910390f35b34801561033c57600080fd5b506103456106ec565b005b34801561035357600080fd5b5061035c610774565b6040516103699190611c8c565b60405180910390f35b34801561037e57600080fd5b5061038761077a565b6040516103949190611a50565b60405180910390f35b3480156103a957600080fd5b506103b26107a3565b6040516103bf9190611b04565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190611b8d565b610835565b6040516103fc9190611be8565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190611b8d565b6108ac565b6040516104399190611be8565b60405180910390f35b34801561044e57600080fd5b506104576108cf565b6040516104649190611c8c565b60405180910390f35b34801561047957600080fd5b506104826108d5565b60405161048f9190611a50565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190611d5e565b6108fb565b6040516104cc9190611c8c565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f79190611dca565b610982565b005b34801561050a57600080fd5b5061052560048036038101906105209190611d31565b610a59565b005b61dead81565b60606004805461053c90611e39565b80601f016020809104026020016040519081016040528092919081815260200182805461056890611e39565b80156105b55780601f1061058a576101008083540402835291602001916105b5565b820191906000526020600020905b81548152906001019060200180831161059857829003601f168201915b5050505050905090565b6000806105ca610b51565b90506105d7818585610b59565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600354905090565b60008061061b610b51565b9050610628858285610d24565b610633858585610db0565b60019150509392505050565b60006001905090565b600080610653610b51565b905061067481858561066585896108fb565b61066f9190611e9a565b610b59565b600191505092915050565b7f0000000000000000000000009560b35bc1ebcc65f01805a9212881b44a3f1f8b81565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106f4610b51565b73ffffffffffffffffffffffffffffffffffffffff1661071261077a565b73ffffffffffffffffffffffffffffffffffffffff1614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f90611f3c565b60405180910390fd5b610772600061121f565b565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107b290611e39565b80601f01602080910402602001604051908101604052809291908181526020018280546107de90611e39565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b600080610840610b51565b9050600061084e82866108fb565b905083811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a90611fce565b60405180910390fd5b6108a08286868403610b59565b60019250505092915050565b6000806108b7610b51565b90506108c4818585610db0565b600191505092915050565b60095481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61098a610b51565b73ffffffffffffffffffffffffffffffffffffffff166109a861077a565b73ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590611f3c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a61610b51565b73ffffffffffffffffffffffffffffffffffffffff16610a7f61077a565b73ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90611f3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90612060565b60405180910390fd5b610b4e8161121f565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc0906120f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090612184565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d179190611c8c565b60405180910390a3505050565b6000610d3084846108fb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610daa5781811015610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d93906121f0565b60405180910390fd5b610da98484848403610b59565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790612282565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790612314565b60405180910390fd5b80610e9a846106a3565b1015610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed2906123a6565b60405180910390fd5b60007f0000000000000000000000009560b35bc1ebcc65f01805a9212881b44a3f1f8b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f8257507f0000000000000000000000009560b35bc1ebcc65f01805a9212881b44a3f1f8b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015610f9b5750600760009054906101000a900460ff16155b1561120a577f0000000000000000000000009560b35bc1ebcc65f01805a9212881b44a3f1f8b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156110065750600654611003306106a3565b10155b15611081576000600954600854600261101f91906123c6565b6110299190611e9a565b9050611034306106a3565b60068190555060008160095460065461104d91906123c6565b611057919061244f565b9050611062816112e3565b6000816006546110729190612480565b905061107d816113a5565b5050505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806111225750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561112f57819050611205565b600060646008548461114191906123c6565b61114b919061244f565b90507f0000000000000000000000009560b35bc1ebcc65f01805a9212881b44a3f1f8b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156111b45780836111ad9190612480565b91506111f8565b60006064600954856111c691906123c6565b6111d0919061244f565b90508082856111df9190612480565b6111e99190612480565b92506111f6863083611466565b505b611203853083611466565b505b61120e565b8190505b611219848483611466565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600760006101000a81548160ff021916908315150217905550600047905061130c826116cb565b6000814761131a9190612480565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611384573d6000803e3d6000fd5b5050506000600760006101000a81548160ff02191690831515021790555050565b6001600760006101000a81548160ff02191690831515021790555060006002826113cf919061244f565b9050600081836113df9190612480565b905060004790506113ef836116cb565b600081476113fd9190612480565b90506114098382611924565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161143c939291906124b4565b60405180910390a1505050506000600760006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90612282565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612314565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c4906123a6565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116bd9190611c8c565b60405180910390a350505050565b6000600267ffffffffffffffff8111156116e8576116e76124eb565b5b6040519080825280602002602001820160405280156117165781602001602082028036833780820191505090505b509050308160008151811061172e5761172d61251a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ce57600080fd5b505afa1580156117e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611806919061255e565b8160018151811061181a5761181961251a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061187f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b59565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c426118ce9190611e9a565b6040518663ffffffff1660e01b81526004016118ee959493929190612684565b600060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050505050565b61194f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b59565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016119b6969594939291906126de565b6060604051808303818588803b1580156119cf57600080fd5b505af11580156119e3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a089190612754565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a3a82611a0f565b9050919050565b611a4a81611a2f565b82525050565b6000602082019050611a656000830184611a41565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611aa5578082015181840152602081019050611a8a565b83811115611ab4576000848401525b50505050565b6000601f19601f8301169050919050565b6000611ad682611a6b565b611ae08185611a76565b9350611af0818560208601611a87565b611af981611aba565b840191505092915050565b60006020820190508181036000830152611b1e8184611acb565b905092915050565b600080fd5b611b3481611a2f565b8114611b3f57600080fd5b50565b600081359050611b5181611b2b565b92915050565b6000819050919050565b611b6a81611b57565b8114611b7557600080fd5b50565b600081359050611b8781611b61565b92915050565b60008060408385031215611ba457611ba3611b26565b5b6000611bb285828601611b42565b9250506020611bc385828601611b78565b9150509250929050565b60008115159050919050565b611be281611bcd565b82525050565b6000602082019050611bfd6000830184611bd9565b92915050565b6000819050919050565b6000611c28611c23611c1e84611a0f565b611c03565b611a0f565b9050919050565b6000611c3a82611c0d565b9050919050565b6000611c4c82611c2f565b9050919050565b611c5c81611c41565b82525050565b6000602082019050611c776000830184611c53565b92915050565b611c8681611b57565b82525050565b6000602082019050611ca16000830184611c7d565b92915050565b600080600060608486031215611cc057611cbf611b26565b5b6000611cce86828701611b42565b9350506020611cdf86828701611b42565b9250506040611cf086828701611b78565b9150509250925092565b600060ff82169050919050565b611d1081611cfa565b82525050565b6000602082019050611d2b6000830184611d07565b92915050565b600060208284031215611d4757611d46611b26565b5b6000611d5584828501611b42565b91505092915050565b60008060408385031215611d7557611d74611b26565b5b6000611d8385828601611b42565b9250506020611d9485828601611b42565b9150509250929050565b611da781611bcd565b8114611db257600080fd5b50565b600081359050611dc481611d9e565b92915050565b60008060408385031215611de157611de0611b26565b5b6000611def85828601611b42565b9250506020611e0085828601611db5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e5157607f821691505b60208210811415611e6557611e64611e0a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ea582611b57565b9150611eb083611b57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ee557611ee4611e6b565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611f26602083611a76565b9150611f3182611ef0565b602082019050919050565b60006020820190508181036000830152611f5581611f19565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611fb8602583611a76565b9150611fc382611f5c565b604082019050919050565b60006020820190508181036000830152611fe781611fab565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061204a602683611a76565b915061205582611fee565b604082019050919050565b600060208201905081810360008301526120798161203d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120dc602483611a76565b91506120e782612080565b604082019050919050565b6000602082019050818103600083015261210b816120cf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061216e602283611a76565b915061217982612112565b604082019050919050565b6000602082019050818103600083015261219d81612161565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006121da601d83611a76565b91506121e5826121a4565b602082019050919050565b60006020820190508181036000830152612209816121cd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061226c602583611a76565b915061227782612210565b604082019050919050565b6000602082019050818103600083015261229b8161225f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122fe602383611a76565b9150612309826122a2565b604082019050919050565b6000602082019050818103600083015261232d816122f1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612390602683611a76565b915061239b82612334565b604082019050919050565b600060208201905081810360008301526123bf81612383565b9050919050565b60006123d182611b57565b91506123dc83611b57565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561241557612414611e6b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061245a82611b57565b915061246583611b57565b92508261247557612474612420565b5b828204905092915050565b600061248b82611b57565b915061249683611b57565b9250828210156124a9576124a8611e6b565b5b828203905092915050565b60006060820190506124c96000830186611c7d565b6124d66020830185611c7d565b6124e36040830184611c7d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061255881611b2b565b92915050565b60006020828403121561257457612573611b26565b5b600061258284828501612549565b91505092915050565b6000819050919050565b60006125b06125ab6125a68461258b565b611c03565b611b57565b9050919050565b6125c081612595565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125fb81611a2f565b82525050565b600061260d83836125f2565b60208301905092915050565b6000602082019050919050565b6000612631826125c6565b61263b81856125d1565b9350612646836125e2565b8060005b8381101561267757815161265e8882612601565b975061266983612619565b92505060018101905061264a565b5085935050505092915050565b600060a0820190506126996000830188611c7d565b6126a660208301876125b7565b81810360408301526126b88186612626565b90506126c76060830185611a41565b6126d46080830184611c7d565b9695505050505050565b600060c0820190506126f36000830189611a41565b6127006020830188611c7d565b61270d60408301876125b7565b61271a60608301866125b7565b6127276080830185611a41565b61273460a0830184611c7d565b979650505050505050565b60008151905061274e81611b61565b92915050565b60008060006060848603121561276d5761276c611b26565b5b600061277b8682870161273f565b935050602061278c8682870161273f565b925050604061279d8682870161273f565b915050925092509256fea2646970667358221220919dca0caf22d457a2dbc78d885b1fde90edd5e2c856a287adf953039701f97c64736f6c63430008090033

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

0000000000000000000000003d24fd24c7339249206cae2761c870206cd963e7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _developmentWallet (address): 0x3d24FD24C7339249206cAE2761c870206cd963E7
Arg [1] : _liquidityTax (uint256): 0
Arg [2] : _developmentTax (uint256): 0
Arg [3] : _routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000003d24fd24c7339249206cae2761c870206cd963e7
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

26903:6797:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27195:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17917:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20116:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27277:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18084:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20924:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19039:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21630:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27335:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18257:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2657:103;;;;;;;;;;;;;:::i;:::-;;27075:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2006:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17741:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22398:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19576:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27116:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27156:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19194:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29294:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2915:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27195:46;27234:6;27195:46;:::o;17917:102::-;17973:13;18006:5;17999:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17917:102;:::o;20116:228::-;20226:4;20243:13;20259:12;:10;:12::i;:::-;20243:28;;20282:32;20291:5;20298:7;20307:6;20282:8;:32::i;:::-;20332:4;20325:11;;;20116:228;;;;:::o;27277:51::-;;;:::o;18084:110::-;18147:7;18174:12;;18167:19;;18084:110;:::o;20924:297::-;21057:4;21074:15;21092:12;:10;:12::i;:::-;21074:30;;21115:38;21131:4;21137:7;21146:6;21115:15;:38::i;:::-;21164:27;21174:4;21180:2;21184:6;21164:9;:27::i;:::-;21209:4;21202:11;;;20924:297;;;;;:::o;19039:92::-;19097:5;19122:1;19115:8;;19039:92;:::o;21630:265::-;21745:4;21762:13;21778:12;:10;:12::i;:::-;21762:28;;21801:64;21810:5;21817:7;21854:10;21826:25;21836:5;21843:7;21826:9;:25::i;:::-;:38;;;;:::i;:::-;21801:8;:64::i;:::-;21883:4;21876:11;;;21630:265;;;;:::o;27335:38::-;;;:::o;18257:143::-;18347:7;18374:9;:18;18384:7;18374:18;;;;;;;;;;;;;;;;18367:25;;18257:143;;;:::o;2657:103::-;2237:12;:10;:12::i;:::-;2226:23;;:7;:5;:7::i;:::-;:23;;;2218:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2722:30:::1;2749:1;2722:18;:30::i;:::-;2657:103::o:0;27075:34::-;;;;:::o;2006:87::-;2052:7;2079:6;;;;;;;;;;;2072:13;;2006:87;:::o;17741:106::-;17799:13;17832:7;17825:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17741:106;:::o;22398:500::-;22518:4;22535:13;22551:12;:10;:12::i;:::-;22535:28;;22574:24;22601:25;22611:5;22618:7;22601:9;:25::i;:::-;22574:52;;22679:15;22659:16;:35;;22637:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;22795:60;22804:5;22811:7;22839:15;22820:16;:34;22795:8;:60::i;:::-;22886:4;22879:11;;;;22398:500;;;;:::o;19576:220::-;19682:4;19699:13;19715:12;:10;:12::i;:::-;19699:28;;19738;19748:5;19755:2;19759:6;19738:9;:28::i;:::-;19784:4;19777:11;;;19576:220;;;;:::o;27116:33::-;;;;:::o;27156:32::-;;;;;;;;;;;;;:::o;19194:176::-;19308:7;19335:11;:18;19347:5;19335:18;;;;;;;;;;;;;;;:27;19354:7;19335:27;;;;;;;;;;;;;;;;19328:34;;19194:176;;;;:::o;29294:122::-;2237:12;:10;:12::i;:::-;2226:23;;:7;:5;:7::i;:::-;:23;;;2218:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29403:5:::1;29375:18;:25;29394:5;29375:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;29294:122:::0;;:::o;2915:238::-;2237:12;:10;:12::i;:::-;2226:23;;:7;:5;:7::i;:::-;:23;;;2218:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3038:1:::1;3018:22;;:8;:22;;;;2996:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3117:28;3136:8;3117:18;:28::i;:::-;2915:238:::0;:::o;709:98::-;762:7;789:10;782:17;;709:98;:::o;25732:380::-;25885:1;25868:19;;:5;:19;;;;25860:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25966:1;25947:21;;:7;:21;;;;25939:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26050:6;26020:11;:18;26032:5;26020:18;;;;;;;;;;;;;;;:27;26039:7;26020:27;;;;;;;;;;;;;;;:36;;;;26088:7;26072:32;;26081:5;26072:32;;;26097:6;26072:32;;;;;;:::i;:::-;;;;;;;;25732:380;;;:::o;24792:502::-;24927:24;24954:25;24964:5;24971:7;24954:9;:25::i;:::-;24927:52;;25014:17;24994:16;:37;24990:297;;25094:6;25074:16;:26;;25048:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;25209:51;25218:5;25225:7;25253:6;25234:16;:25;25209:8;:51::i;:::-;24990:297;24916:378;24792:502;;;:::o;31051:2609::-;31199:1;31183:18;;:4;:18;;;;31175:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31276:1;31262:16;;:2;:16;;;;31254:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31370:6;31351:15;31361:4;31351:9;:15::i;:::-;:25;;31329:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;31455:22;31515:13;31507:21;;:4;:21;;;:44;;;;31538:13;31532:19;;:2;:19;;;31507:44;31506:67;;;;;31557:16;;;;;;;;;;;31556:17;31506:67;31488:2113;;;31662:13;31654:21;;:4;:21;;;;:99;;;;;31727:25;;31698:24;31716:4;31698:9;:24::i;:::-;31697:55;;31654:99;31632:759;;;31788:16;31877:18;;31833:19;;31807:1;:46;;;;:::i;:::-;:88;;;;:::i;:::-;31788:107;;31942:24;31960:4;31942:9;:24::i;:::-;31914:25;:52;;;;31987:23;32085:8;32063:18;;32014:25;;:67;;;;:::i;:::-;32013:80;;;;:::i;:::-;31987:106;;32112:39;32135:15;32112:22;:39::i;:::-;32172:23;32247:15;32198:25;;:64;;;;:::i;:::-;32172:90;;32343:32;32359:15;32343;:32::i;:::-;31769:622;;;31632:759;32409:18;:24;32428:4;32409:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;32437:18;:22;32456:2;32437:22;;;;;;;;;;;;;;;;;;;;;;;;;32409:50;32405:1087;;;32544:6;32527:23;;32405:1087;;;32670:23;32751:3;32707:19;;32698:6;:28;;;;:::i;:::-;32697:57;;;;:::i;:::-;32670:85;;32786:13;32778:21;;:4;:21;;;32774:598;;;32890:15;32881:6;:24;;;;:::i;:::-;32864:41;;32774:598;;;32995:25;33081:3;33034:18;;33025:6;:27;;;;:::i;:::-;33024:60;;;;:::i;:::-;32995:90;;33229:17;33186:15;33152:6;:49;;;;:::i;:::-;:94;;;;:::i;:::-;33110:136;;33269:55;33285:4;33299;33306:17;33269:15;:55::i;:::-;32931:441;32774:598;33390:53;33406:4;33420;33427:15;33390;:53::i;:::-;32572:920;32405:1087;31488:2113;;;33583:6;33566:23;;31488:2113;33611:41;33627:4;33633:2;33637:14;33611:15;:41::i;:::-;31164:2496;31051:2609;;;:::o;3313:191::-;3387:16;3406:6;;;;;;;;;;;3387:25;;3432:8;3423:6;;:17;;;;;;;;;;;;;;;;;;3487:8;3456:40;;3477:8;3456:40;;;;;;;;;;;;3376:128;3313:191;:::o;29424:297::-;27628:4;27609:16;;:23;;;;;;;;;;;;;;;;;;29503:22:::1;29528:21;29503:46;;29560:25;29578:6;29560:17;:25::i;:::-;29596:18;29641:14;29617:21;:38;;;;:::i;:::-;29596:59;;29674:17;;;;;;;;;;;29666:35;;:47;29702:10;29666:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;29492:229;;27674:5:::0;27655:16;;:24;;;;;;;;;;;;;;;;;;29424:297;:::o;28812:474::-;27628:4;27609:16;;:23;;;;;;;;;;;;;;;;;;28898:12:::1;28937:1;28914:20;:24;;;;:::i;:::-;28898:41;;28950:17;28994:4;28971:20;:27;;;;:::i;:::-;28950:49;;29012:22;29037:21;29012:46;;29071:23;29089:4;29071:17;:23::i;:::-;29107:18;29153:14;29129:21;:38;;;;:::i;:::-;29107:61;;29181:36;29195:9;29206:10;29181:13;:36::i;:::-;29235:43;29250:4;29256:10;29268:9;29235:43;;;;;;;;:::i;:::-;;;;;;;;28887:399;;;;27674:5:::0;27655:16;;:24;;;;;;;;;;;;;;;;;;28812:474;:::o;26120:776::-;26267:1;26251:18;;:4;:18;;;;26243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26344:1;26330:16;;:2;:16;;;;26322:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26399:19;26421:9;:15;26431:4;26421:15;;;;;;;;;;;;;;;;26399:37;;26484:6;26469:11;:21;;26447:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;26624:6;26610:11;:20;26592:9;:15;26602:4;26592:15;;;;;;;;;;;;;;;:38;;;;26827:6;26810:9;:13;26820:2;26810:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26877:2;26862:26;;26871:4;26862:26;;;26881:6;26862:26;;;;;;:::i;:::-;;;;;;;;26232:664;26120:776;;;:::o;29729:484::-;29796:21;29834:1;29820:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29796:40;;29865:4;29847;29852:1;29847:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29891:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29881:4;29886:1;29881:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29926:62;29943:4;29958:15;29976:11;29926:8;:62::i;:::-;30001:15;:66;;;30082:11;30108:1;30124:4;30151;30190:3;30172:15;:21;;;;:::i;:::-;30001:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29785:428;29729:484;:::o;30221:360::-;30303:62;30320:4;30335:15;30353:11;30303:8;:62::i;:::-;30378:15;:31;;;30417:9;30450:4;30470:11;30496:1;30512;27234:6;30547:15;30378:195;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30221:360;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:152::-;4268:9;4301:37;4332:5;4301:37;:::i;:::-;4288:50;;4192:152;;;:::o;4350:183::-;4463:63;4520:5;4463:63;:::i;:::-;4458:3;4451:76;4350:183;;:::o;4539:274::-;4658:4;4696:2;4685:9;4681:18;4673:26;;4709:97;4803:1;4792:9;4788:17;4779:6;4709:97;:::i;:::-;4539:274;;;;:::o;4819:118::-;4906:24;4924:5;4906:24;:::i;:::-;4901:3;4894:37;4819:118;;:::o;4943:222::-;5036:4;5074:2;5063:9;5059:18;5051:26;;5087:71;5155:1;5144:9;5140:17;5131:6;5087:71;:::i;:::-;4943:222;;;;:::o;5171:619::-;5248:6;5256;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5694:2;5720:53;5765:7;5756:6;5745:9;5741:22;5720:53;:::i;:::-;5710:63;;5665:118;5171:619;;;;;:::o;5796:86::-;5831:7;5871:4;5864:5;5860:16;5849:27;;5796:86;;;:::o;5888:112::-;5971:22;5987:5;5971:22;:::i;:::-;5966:3;5959:35;5888:112;;:::o;6006:214::-;6095:4;6133:2;6122:9;6118:18;6110:26;;6146:67;6210:1;6199:9;6195:17;6186:6;6146:67;:::i;:::-;6006:214;;;;:::o;6226:329::-;6285:6;6334:2;6322:9;6313:7;6309:23;6305:32;6302:119;;;6340:79;;:::i;:::-;6302:119;6460:1;6485:53;6530:7;6521:6;6510:9;6506:22;6485:53;:::i;:::-;6475:63;;6431:117;6226:329;;;;:::o;6561:474::-;6629:6;6637;6686:2;6674:9;6665:7;6661:23;6657:32;6654:119;;;6692:79;;:::i;:::-;6654:119;6812:1;6837:53;6882:7;6873:6;6862:9;6858:22;6837:53;:::i;:::-;6827:63;;6783:117;6939:2;6965:53;7010:7;7001:6;6990:9;6986:22;6965:53;:::i;:::-;6955:63;;6910:118;6561:474;;;;;:::o;7041:116::-;7111:21;7126:5;7111:21;:::i;:::-;7104:5;7101:32;7091:60;;7147:1;7144;7137:12;7091:60;7041:116;:::o;7163:133::-;7206:5;7244:6;7231:20;7222:29;;7260:30;7284:5;7260:30;:::i;:::-;7163:133;;;;:::o;7302:468::-;7367:6;7375;7424:2;7412:9;7403:7;7399:23;7395:32;7392:119;;;7430:79;;:::i;:::-;7392:119;7550:1;7575:53;7620:7;7611:6;7600:9;7596:22;7575:53;:::i;:::-;7565:63;;7521:117;7677:2;7703:50;7745:7;7736:6;7725:9;7721:22;7703:50;:::i;:::-;7693:60;;7648:115;7302:468;;;;;:::o;7776:180::-;7824:77;7821:1;7814:88;7921:4;7918:1;7911:15;7945:4;7942:1;7935:15;7962:320;8006:6;8043:1;8037:4;8033:12;8023:22;;8090:1;8084:4;8080:12;8111:18;8101:81;;8167:4;8159:6;8155:17;8145:27;;8101:81;8229:2;8221:6;8218:14;8198:18;8195:38;8192:84;;;8248:18;;:::i;:::-;8192:84;8013:269;7962:320;;;:::o;8288:180::-;8336:77;8333:1;8326:88;8433:4;8430:1;8423:15;8457:4;8454:1;8447:15;8474:305;8514:3;8533:20;8551:1;8533:20;:::i;:::-;8528:25;;8567:20;8585:1;8567:20;:::i;:::-;8562:25;;8721:1;8653:66;8649:74;8646:1;8643:81;8640:107;;;8727:18;;:::i;:::-;8640:107;8771:1;8768;8764:9;8757:16;;8474:305;;;;:::o;8785:182::-;8925:34;8921:1;8913:6;8909:14;8902:58;8785:182;:::o;8973:366::-;9115:3;9136:67;9200:2;9195:3;9136:67;:::i;:::-;9129:74;;9212:93;9301:3;9212:93;:::i;:::-;9330:2;9325:3;9321:12;9314:19;;8973:366;;;:::o;9345:419::-;9511:4;9549:2;9538:9;9534:18;9526:26;;9598:9;9592:4;9588:20;9584:1;9573:9;9569:17;9562:47;9626:131;9752:4;9626:131;:::i;:::-;9618:139;;9345:419;;;:::o;9770:224::-;9910:34;9906:1;9898:6;9894:14;9887:58;9979:7;9974:2;9966:6;9962:15;9955:32;9770:224;:::o;10000:366::-;10142:3;10163:67;10227:2;10222:3;10163:67;:::i;:::-;10156:74;;10239:93;10328:3;10239:93;:::i;:::-;10357:2;10352:3;10348:12;10341:19;;10000:366;;;:::o;10372:419::-;10538:4;10576:2;10565:9;10561:18;10553:26;;10625:9;10619:4;10615:20;10611:1;10600:9;10596:17;10589:47;10653:131;10779:4;10653:131;:::i;:::-;10645:139;;10372:419;;;:::o;10797:225::-;10937:34;10933:1;10925:6;10921:14;10914:58;11006:8;11001:2;10993:6;10989:15;10982:33;10797:225;:::o;11028:366::-;11170:3;11191:67;11255:2;11250:3;11191:67;:::i;:::-;11184:74;;11267:93;11356:3;11267:93;:::i;:::-;11385:2;11380:3;11376:12;11369:19;;11028:366;;;:::o;11400:419::-;11566:4;11604:2;11593:9;11589:18;11581:26;;11653:9;11647:4;11643:20;11639:1;11628:9;11624:17;11617:47;11681:131;11807:4;11681:131;:::i;:::-;11673:139;;11400:419;;;:::o;11825:223::-;11965:34;11961:1;11953:6;11949:14;11942:58;12034:6;12029:2;12021:6;12017:15;12010:31;11825:223;:::o;12054:366::-;12196:3;12217:67;12281:2;12276:3;12217:67;:::i;:::-;12210:74;;12293:93;12382:3;12293:93;:::i;:::-;12411:2;12406:3;12402:12;12395:19;;12054:366;;;:::o;12426:419::-;12592:4;12630:2;12619:9;12615:18;12607:26;;12679:9;12673:4;12669:20;12665:1;12654:9;12650:17;12643:47;12707:131;12833:4;12707:131;:::i;:::-;12699:139;;12426:419;;;:::o;12851:221::-;12991:34;12987:1;12979:6;12975:14;12968:58;13060:4;13055:2;13047:6;13043:15;13036:29;12851:221;:::o;13078:366::-;13220:3;13241:67;13305:2;13300:3;13241:67;:::i;:::-;13234:74;;13317:93;13406:3;13317:93;:::i;:::-;13435:2;13430:3;13426:12;13419:19;;13078:366;;;:::o;13450:419::-;13616:4;13654:2;13643:9;13639:18;13631:26;;13703:9;13697:4;13693:20;13689:1;13678:9;13674:17;13667:47;13731:131;13857:4;13731:131;:::i;:::-;13723:139;;13450:419;;;:::o;13875:179::-;14015:31;14011:1;14003:6;13999:14;13992:55;13875:179;:::o;14060:366::-;14202:3;14223:67;14287:2;14282:3;14223:67;:::i;:::-;14216:74;;14299:93;14388:3;14299:93;:::i;:::-;14417:2;14412:3;14408:12;14401:19;;14060:366;;;:::o;14432:419::-;14598:4;14636:2;14625:9;14621:18;14613:26;;14685:9;14679:4;14675:20;14671:1;14660:9;14656:17;14649:47;14713:131;14839:4;14713:131;:::i;:::-;14705:139;;14432:419;;;:::o;14857:224::-;14997:34;14993:1;14985:6;14981:14;14974:58;15066:7;15061:2;15053:6;15049:15;15042:32;14857:224;:::o;15087:366::-;15229:3;15250:67;15314:2;15309:3;15250:67;:::i;:::-;15243:74;;15326:93;15415:3;15326:93;:::i;:::-;15444:2;15439:3;15435:12;15428:19;;15087:366;;;:::o;15459:419::-;15625:4;15663:2;15652:9;15648:18;15640:26;;15712:9;15706:4;15702:20;15698:1;15687:9;15683:17;15676:47;15740:131;15866:4;15740:131;:::i;:::-;15732:139;;15459:419;;;:::o;15884:222::-;16024:34;16020:1;16012:6;16008:14;16001:58;16093:5;16088:2;16080:6;16076:15;16069:30;15884:222;:::o;16112:366::-;16254:3;16275:67;16339:2;16334:3;16275:67;:::i;:::-;16268:74;;16351:93;16440:3;16351:93;:::i;:::-;16469:2;16464:3;16460:12;16453:19;;16112:366;;;:::o;16484:419::-;16650:4;16688:2;16677:9;16673:18;16665:26;;16737:9;16731:4;16727:20;16723:1;16712:9;16708:17;16701:47;16765:131;16891:4;16765:131;:::i;:::-;16757:139;;16484:419;;;:::o;16909:225::-;17049:34;17045:1;17037:6;17033:14;17026:58;17118:8;17113:2;17105:6;17101:15;17094:33;16909:225;:::o;17140:366::-;17282:3;17303:67;17367:2;17362:3;17303:67;:::i;:::-;17296:74;;17379:93;17468:3;17379:93;:::i;:::-;17497:2;17492:3;17488:12;17481:19;;17140:366;;;:::o;17512:419::-;17678:4;17716:2;17705:9;17701:18;17693:26;;17765:9;17759:4;17755:20;17751:1;17740:9;17736:17;17729:47;17793:131;17919:4;17793:131;:::i;:::-;17785:139;;17512:419;;;:::o;17937:348::-;17977:7;18000:20;18018:1;18000:20;:::i;:::-;17995:25;;18034:20;18052:1;18034:20;:::i;:::-;18029:25;;18222:1;18154:66;18150:74;18147:1;18144:81;18139:1;18132:9;18125:17;18121:105;18118:131;;;18229:18;;:::i;:::-;18118:131;18277:1;18274;18270:9;18259:20;;17937:348;;;;:::o;18291:180::-;18339:77;18336:1;18329:88;18436:4;18433:1;18426:15;18460:4;18457:1;18450:15;18477:185;18517:1;18534:20;18552:1;18534:20;:::i;:::-;18529:25;;18568:20;18586:1;18568:20;:::i;:::-;18563:25;;18607:1;18597:35;;18612:18;;:::i;:::-;18597:35;18654:1;18651;18647:9;18642:14;;18477:185;;;;:::o;18668:191::-;18708:4;18728:20;18746:1;18728:20;:::i;:::-;18723:25;;18762:20;18780:1;18762:20;:::i;:::-;18757:25;;18801:1;18798;18795:8;18792:34;;;18806:18;;:::i;:::-;18792:34;18851:1;18848;18844:9;18836:17;;18668:191;;;;:::o;18865:442::-;19014:4;19052:2;19041:9;19037:18;19029:26;;19065:71;19133:1;19122:9;19118:17;19109:6;19065:71;:::i;:::-;19146:72;19214:2;19203:9;19199:18;19190:6;19146:72;:::i;:::-;19228;19296:2;19285:9;19281:18;19272:6;19228:72;:::i;:::-;18865:442;;;;;;:::o;19313:180::-;19361:77;19358:1;19351:88;19458:4;19455:1;19448:15;19482:4;19479:1;19472:15;19499:180;19547:77;19544:1;19537:88;19644:4;19641:1;19634:15;19668:4;19665:1;19658:15;19685:143;19742:5;19773:6;19767:13;19758:22;;19789:33;19816:5;19789:33;:::i;:::-;19685:143;;;;:::o;19834:351::-;19904:6;19953:2;19941:9;19932:7;19928:23;19924:32;19921:119;;;19959:79;;:::i;:::-;19921:119;20079:1;20104:64;20160:7;20151:6;20140:9;20136:22;20104:64;:::i;:::-;20094:74;;20050:128;19834:351;;;;:::o;20191:85::-;20236:7;20265:5;20254:16;;20191:85;;;:::o;20282:158::-;20340:9;20373:61;20391:42;20400:32;20426:5;20400:32;:::i;:::-;20391:42;:::i;:::-;20373:61;:::i;:::-;20360:74;;20282:158;;;:::o;20446:147::-;20541:45;20580:5;20541:45;:::i;:::-;20536:3;20529:58;20446:147;;:::o;20599:114::-;20666:6;20700:5;20694:12;20684:22;;20599:114;;;:::o;20719:184::-;20818:11;20852:6;20847:3;20840:19;20892:4;20887:3;20883:14;20868:29;;20719:184;;;;:::o;20909:132::-;20976:4;20999:3;20991:11;;21029:4;21024:3;21020:14;21012:22;;20909:132;;;:::o;21047:108::-;21124:24;21142:5;21124:24;:::i;:::-;21119:3;21112:37;21047:108;;:::o;21161:179::-;21230:10;21251:46;21293:3;21285:6;21251:46;:::i;:::-;21329:4;21324:3;21320:14;21306:28;;21161:179;;;;:::o;21346:113::-;21416:4;21448;21443:3;21439:14;21431:22;;21346:113;;;:::o;21495:732::-;21614:3;21643:54;21691:5;21643:54;:::i;:::-;21713:86;21792:6;21787:3;21713:86;:::i;:::-;21706:93;;21823:56;21873:5;21823:56;:::i;:::-;21902:7;21933:1;21918:284;21943:6;21940:1;21937:13;21918:284;;;22019:6;22013:13;22046:63;22105:3;22090:13;22046:63;:::i;:::-;22039:70;;22132:60;22185:6;22132:60;:::i;:::-;22122:70;;21978:224;21965:1;21962;21958:9;21953:14;;21918:284;;;21922:14;22218:3;22211:10;;21619:608;;;21495:732;;;;:::o;22233:831::-;22496:4;22534:3;22523:9;22519:19;22511:27;;22548:71;22616:1;22605:9;22601:17;22592:6;22548:71;:::i;:::-;22629:80;22705:2;22694:9;22690:18;22681:6;22629:80;:::i;:::-;22756:9;22750:4;22746:20;22741:2;22730:9;22726:18;22719:48;22784:108;22887:4;22878:6;22784:108;:::i;:::-;22776:116;;22902:72;22970:2;22959:9;22955:18;22946:6;22902:72;:::i;:::-;22984:73;23052:3;23041:9;23037:19;23028:6;22984:73;:::i;:::-;22233:831;;;;;;;;:::o;23070:807::-;23319:4;23357:3;23346:9;23342:19;23334:27;;23371:71;23439:1;23428:9;23424:17;23415:6;23371:71;:::i;:::-;23452:72;23520:2;23509:9;23505:18;23496:6;23452:72;:::i;:::-;23534:80;23610:2;23599:9;23595:18;23586:6;23534:80;:::i;:::-;23624;23700:2;23689:9;23685:18;23676:6;23624:80;:::i;:::-;23714:73;23782:3;23771:9;23767:19;23758:6;23714:73;:::i;:::-;23797;23865:3;23854:9;23850:19;23841:6;23797:73;:::i;:::-;23070:807;;;;;;;;;:::o;23883:143::-;23940:5;23971:6;23965:13;23956:22;;23987:33;24014:5;23987:33;:::i;:::-;23883:143;;;;:::o;24032:663::-;24120:6;24128;24136;24185:2;24173:9;24164:7;24160:23;24156:32;24153:119;;;24191:79;;:::i;:::-;24153:119;24311:1;24336:64;24392:7;24383:6;24372:9;24368:22;24336:64;:::i;:::-;24326:74;;24282:128;24449:2;24475:64;24531:7;24522:6;24511:9;24507:22;24475:64;:::i;:::-;24465:74;;24420:129;24588:2;24614:64;24670:7;24661:6;24650:9;24646:22;24614:64;:::i;:::-;24604:74;;24559:129;24032:663;;;;;:::o

Swarm Source

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