ETH Price: $2,603.67 (+0.13%)
Gas: 1 Gwei

Token

OPTIMUS 2.0 (OPTIMUS2.0)
 

Overview

Max Total Supply

1,000,000,000 OPTIMUS2.0

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.989983032142839003 OPTIMUS2.0

Value
$0.00
0xc2CE750216214E66120bAFba77E3e16E52c766e0
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:
OPTIMUS20

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-06
*/

/**
 Web: https://optimus20erc.com/
 TW: https://twitter.com/OPTIMUS20_ERC
 TG: https://t.me/Optimus2_Entry
 
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

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

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

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

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

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

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(
        bytes memory returndata,
        string memory errorMessage
    ) private pure {
        if (returndata.length > 0) {
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

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

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

    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

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

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

    function totalSupply() external view returns (uint256);

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

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

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

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

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

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 oldAllowance = token.allowance(address(this), spender);
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                oldAllowance + value
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(
                oldAllowance >= value,
                "SafeERC20: decreased allowance below zero"
            );
            _callOptionalReturn(
                token,
                abi.encodeWithSelector(
                    token.approve.selector,
                    spender,
                    oldAllowance - value
                )
            );
        }
    }

    function forceApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        bytes memory approvalCall = abi.encodeWithSelector(
            token.approve.selector,
            spender,
            value
        );

        if (!_callOptionalReturnBool(token, approvalCall)) {
            _callOptionalReturn(
                token,
                abi.encodeWithSelector(token.approve.selector, spender, 0)
            );
            _callOptionalReturn(token, approvalCall);
        }
    }

    function safePermit(
        IERC20Permit token,
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal {
        uint256 nonceBefore = token.nonces(owner);
        token.permit(owner, spender, value, deadline, v, r, s);
        uint256 nonceAfter = token.nonces(owner);
        require(
            nonceAfter == nonceBefore + 1,
            "SafeERC20: permit did not succeed"
        );
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(
            data,
            "SafeERC20: low-level call failed"
        );
        require(
            returndata.length == 0 || abi.decode(returndata, (bool)),
            "SafeERC20: ERC20 operation did not succeed"
        );
    }

    function _callOptionalReturnBool(
        IERC20 token,
        bytes memory data
    ) private returns (bool) {
        (bool success, bytes memory returndata) = address(token).call(data);
        return
            success &&
            (returndata.length == 0 || abi.decode(returndata, (bool))) &&
            Address.isContract(address(token));
    }
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = _NOT_ENTERED;
    }

    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

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

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

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

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public 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;
    }

    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");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;

            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;

            _totalSupply -= amount;
        }

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract OPTIMUS20 is Ownable, ReentrancyGuard, ERC20 {
    using SafeERC20 for IERC20;

    uint256 private initialSupply;

    uint256 public liquidityTaxBuy;
    uint256 public liquidityTaxSell;

    uint256 public marketingTaxBuy;
    uint256 public marketingTaxSell;

    uint256 public maxWallet;

    uint256 public immutable denominator;

    uint256 public liquidityTokenAmount;
    uint256 public marketingTokenAmount;

    address public marketingWallet;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    bool public isSwapBackEnabled;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    mapping(address => bool) private _isAutomatedMarketMakerPair;
    mapping(address => bool) private _isExcludedFromFees;

    modifier inSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    event UpdateBuyTax(uint256 liquidityTaxBuy, uint256 marketingTaxBuy);
    event UpdateSellTax(uint256 liquidityTaxSell, uint256 marketingTaxSell);
    event UpdateMarketingWallet(address indexed marketingWallet);
    event UpdateSwapTokensAtAmount(uint256 swapTokensAtAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdateSwapBackStatus(bool status);
    event UpdateAutomatedMarketMakerPair(address indexed pair, bool status);
    event UpdateExcludeFromFees(address indexed account, bool isExcluded);

    constructor(string memory _tokenName,string memory _tokenSymbol,uint256 _supply) ERC20(_tokenName, _tokenSymbol) payable
    {
        initialSupply =_supply * (10**18);
        maxWallet = initialSupply * 2 / 100; 

        liquidityTaxBuy = 0;
        liquidityTaxSell = 0;

        marketingTaxBuy = 1000;
        marketingTaxSell = 1000;

        denominator = 10_000;

        marketingWallet = 0xd2B5dd95d03510A14D54E30a14f258Bd052A382e;

        swapTokensAtAmount = totalSupply() / 100_000;
        isSwapBackEnabled = true;

        address router = getRouterAddress();
        uniswapV2Router = IUniswapV2Router02(router);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _isAutomatedMarketMakerPair[address(uniswapV2Pair)] = true;

        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(owner())] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(uniswapV2Router)] = true;
        _mint(msg.sender, initialSupply);
        
    }

    receive() external payable {}

    fallback() external payable {}

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function getRouterAddress() public view returns (address) {
        if (block.chainid == 56) {
            return 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            return 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
        } else if (block.chainid == 1 || block.chainid == 5) {
            return 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else {
            revert("Cannot found router on this network");
        }
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");

        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.safeTransfer(msg.sender, balance);
    }

    function setBuyTax(
        uint256 _liquidityTaxBuy,
        uint256 _marketingTaxBuy
    ) external onlyOwner {
        require(
            liquidityTaxBuy != _liquidityTaxBuy ||
                marketingTaxBuy != _marketingTaxBuy,
            "Buy Tax already on that amount"
        );
        require(
            _liquidityTaxBuy + _marketingTaxBuy <= 1_000,
            "Buy Tax cannot be more than 10%"
        );

        liquidityTaxBuy = _liquidityTaxBuy;
        marketingTaxBuy = _marketingTaxBuy;

        emit UpdateBuyTax(_liquidityTaxBuy, _marketingTaxBuy);
    }

    
    function setMaxWallet (uint256 amount) external onlyOwner {
        require (amount > 10000, "NO rug pull");
        maxWallet = amount * 10**18;
    }

    function setSellTax(
        uint256 _liquidityTaxSell,
        uint256 _marketingTaxSell
    ) external onlyOwner {
        require(
            liquidityTaxSell != _liquidityTaxSell ||
                marketingTaxSell != _marketingTaxSell,
            "Sell Tax already on that amount"
        );
        require(
            _liquidityTaxSell + _marketingTaxSell <= 1_000,
            "Sell Tax cannot be more than 10%"
        );

        liquidityTaxSell = _liquidityTaxSell;
        marketingTaxSell = _marketingTaxSell;

        emit UpdateSellTax(_liquidityTaxSell, _marketingTaxSell);
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        require(
            _marketingWallet != marketingWallet,
            "Marketing wallet is already that address"
        );
        require(
            _marketingWallet != address(0),
            "Marketing wallet cannot be the zero address"
        );
        require(
            !isContract(_marketingWallet),
            "Marketing wallet cannot be a contract"
        );

        marketingWallet = _marketingWallet;
        emit UpdateMarketingWallet(_marketingWallet);
    }

    function setSwapTokensAtAmount(uint256 amount) external onlyOwner {
        require(
            swapTokensAtAmount != amount,
            "SwapTokensAtAmount already on that amount"
        );
        require(
            amount >= totalSupply() / 1_000_000,
            "Amount must be equal or greater than 0.000001% of Total Supply"
        );

        swapTokensAtAmount = amount;

        emit UpdateSwapTokensAtAmount(amount);
    }

    function toggleSwapBack(bool status) external onlyOwner {
        require(isSwapBackEnabled != status, "SwapBack already on status");

        isSwapBackEnabled = status;
        emit UpdateSwapBackStatus(status);
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool status
    ) external onlyOwner {
        require(
            _isAutomatedMarketMakerPair[pair] != status,
            "Pair address is already the value of 'status'"
        );
        require(pair != address(uniswapV2Pair), "Cannot set this pair");

        _isAutomatedMarketMakerPair[pair] = status;

        emit UpdateAutomatedMarketMakerPair(pair, status);
    }

    function isAutomatedMarketMakerPair(
        address pair
    ) external view returns (bool) {
        return _isAutomatedMarketMakerPair[pair];
    }

    function setExcludeFromFees(
        address account,
        bool excluded
    ) external onlyOwner {
        require(
            _isExcludedFromFees[account] != excluded,
            "Account is already the value of 'excluded'"
        );
        _isExcludedFromFees[account] = excluded;

        emit UpdateExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

    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");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

         

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !swapping &&
            !_isAutomatedMarketMakerPair[from] &&
            isSwapBackEnabled &&
            liquidityTokenAmount + marketingTokenAmount > 0
        ) {
            swapBack();
        }

        

        bool takeFee = true;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 tempLiquidityAmount;
            uint256 tempMarketingAmount;

            if (_isAutomatedMarketMakerPair[from]) {
                tempLiquidityAmount = (amount * liquidityTaxBuy) / denominator;
                tempMarketingAmount = (amount * marketingTaxBuy) / denominator;
            } else if (_isAutomatedMarketMakerPair[to]) {
                tempLiquidityAmount = (amount * liquidityTaxSell) / denominator;
                tempMarketingAmount = (amount * marketingTaxSell) / denominator;
            }

            liquidityTokenAmount += tempLiquidityAmount;
            marketingTokenAmount += tempMarketingAmount;

            uint256 fees = tempLiquidityAmount + tempMarketingAmount;

            if (fees > 0) {
                amount -= fees;
                super._transfer(from, address(this), fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function swapBack() internal inSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint256 contractTokenBalance = balanceOf(address(this));

        uint256 totalTax = liquidityTokenAmount + marketingTokenAmount;

        uint256 liquifyToken = (contractTokenBalance *
            (liquidityTokenAmount / 2)) / totalTax;

        uint256 swapBackAmount = contractTokenBalance - liquifyToken;

        totalTax -= (liquidityTokenAmount) / 2;

        try
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                swapBackAmount,
                0,
                path,
                address(this),
                block.timestamp
            )
        {} catch {
            return;
        }

        uint256 newBalance = address(this).balance;

        uint256 marketingBNB = (newBalance * marketingTokenAmount) / totalTax;
        uint256 liquifyBNB = newBalance - marketingBNB;

        if (liquifyToken > 0 && liquifyBNB > 0) {
            try
                uniswapV2Router.addLiquidityETH{value: liquifyBNB}(
                    address(this),
                    liquifyToken,
                    0,
                    0,
                    address(0xdead),
                    block.timestamp
                )
            {} catch {}
        }

        if (marketingBNB > 0) {
            sendBNB(marketingWallet, marketingBNB);
        }

        liquidityTokenAmount = 0;
        marketingTokenAmount = 0;
    }

    function sendBNB(
        address _to,
        uint256 amount
    ) internal nonReentrant returns (bool) {
        if (address(this).balance < amount) return false;

        (bool success, ) = payable(_to).call{value: amount}("");

        return success;
    }

    function manualSwapBack() external {
        uint256 contractTokenBalance = balanceOf(address(this));

        require(contractTokenBalance > 0, "Cant Swap Back 0 Token!");

        swapBack();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"stateMutability":"payable","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdateAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTaxBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingTaxBuy","type":"uint256"}],"name":"UpdateBuyTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"UpdateExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"UpdateMarketingWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTaxSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingTaxSell","type":"uint256"}],"name":"UpdateSellTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdateSwapBackStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"UpdateSwapTokensAtAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"isAutomatedMarketMakerPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingTaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityTaxBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingTaxBuy","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityTaxSell","type":"uint256"},{"internalType":"uint256","name":"_marketingTaxSell","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"toggleSwapBack","outputs":[],"stateMutability":"nonpayable","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"}]

60e060405260405162002fdc38038062002fdc83398101604081905262000026916200074e565b8282620000333362000379565b6001805560056200004583826200084f565b5060066200005482826200084f565b50505080670de0b6b3a76400006200006d919062000931565b60078190556064906200008290600262000931565b6200008e919062000951565b600c55600060088190556009556103e8600a819055600b55612710608052600f80546001600160a01b03191673d2b5dd95d03510a14d54e30a14f258bd052a382e179055620186a0620000e060045490565b620000ec919062000951565b6010556011805460ff19166001179055600062000108620003c9565b9050806001600160a01b031660a0816001600160a01b03168152505060a0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018b919062000974565b6001600160a01b031663c9c653963060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000201919062000974565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062000974565b6001600160a01b031660c05260a0516200029490309060001962000497565b60c0516001600160a01b0316600090815260126020908152604082208054600160ff19918216811790925561dead84526013928390527f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c80549091168217905591620003086000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601390935281832080548516600190811790915560a0519091168352912080549092161790556007546200036f903390620005bf565b50505050620009bc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600046603803620003ed57507310ed43c718714eb63d5aa57b78b54704e256024e90565b466061036200040f575073d99d1c33f9fc3444f8101754abc46c52416550d190565b46600114806200041f5750466005145b156200043e5750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b60405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420666f756e6420726f75746572206f6e2074686973206e6574776044820152626f726b60e81b60648201526084015b60405180910390fd5b6001600160a01b038316620004fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016200048e565b6001600160a01b0382166200055e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200048e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006175760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200048e565b80600460008282546200062b9190620009a6565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620006b157600080fd5b81516001600160401b0380821115620006ce57620006ce62000689565b604051601f8301601f19908116603f01168101908282118183101715620006f957620006f962000689565b816040528381526020925086838588010111156200071657600080fd5b600091505b838210156200073a57858201830151818301840152908201906200071b565b600093810190920192909252949350505050565b6000806000606084860312156200076457600080fd5b83516001600160401b03808211156200077c57600080fd5b6200078a878388016200069f565b94506020860151915080821115620007a157600080fd5b50620007b0868287016200069f565b925050604084015190509250925092565b600181811c90821680620007d657607f821691505b602082108103620007f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068457600081815260208120601f850160051c81016020861015620008265750805b601f850160051c820191505b81811015620008475782815560010162000832565b505050505050565b81516001600160401b038111156200086b576200086b62000689565b62000883816200087c8454620007c1565b84620007fd565b602080601f831160018114620008bb5760008415620008a25750858301515b600019600386901b1c1916600185901b17855562000847565b600085815260208120601f198616915b82811015620008ec57888601518255948401946001909101908401620008cb565b50858210156200090b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200094b576200094b6200091b565b92915050565b6000826200096f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200098757600080fd5b81516001600160a01b03811681146200099f57600080fd5b9392505050565b808201808211156200094b576200094b6200091b565b60805160a05160c0516125b862000a246000396000818161040a0152610e1a0152600081816102e10152818161196d01528181611aa60152611b980152600081816105ff0152818161177f015281816117ba0152818161181b015261185601526125b86000f3fe6080604052600436106102275760003560e01c8063715018a611610122578063a457c2d7116100a5578063dd62ed3e1161006c578063dd62ed3e146106d6578063e2f45605146106f6578063f2fde38b1461070c578063f8b45b051461072c578063f9d0831a1461074257005b8063a457c2d714610641578063a9059cbb14610661578063afa4f3b214610681578063d54f7d5e146106a1578063d63cad22146106b657005b80638123bdc8116100e95780638123bdc8146105a45780638da5cb5b146105ba57806395d89b41146105d857806396ce0795146105ed5780639a7a23d61461062157005b8063715018a61461050a57806371afc7131461051f578063721e62331461053557806375f0a8741461054b5780637949a4031461056b57005b8063313ce567116101aa57806352dfc8d01161017157806352dfc8d0146104655780635d0044ca1461047f5780635d098b381461049f57806366eb3785146104bf57806370a08231146104d457005b8063313ce567146103a657806339509351146103c257806342d0b0bc146103e257806349bd5a5e146103f85780634fbee1931461042c57005b806318160ddd116101ee57806318160ddd1461031b5780631f88a23e1461033057806323b872dd14610350578063247b912d14610370578063248ba7ed1461039057005b806305a1f36d1461023057806306fdde0314610250578063095ea7b31461027b5780630abc8e7b146102ab5780631694505e146102cf57005b3661022e57005b005b34801561023c57600080fd5b5061022e61024b36600461215d565b610762565b34801561025c57600080fd5b50610265610871565b60405161027291906121a3565b60405180910390f35b34801561028757600080fd5b5061029b6102963660046121eb565b610903565b6040519015158152602001610272565b3480156102b757600080fd5b506102c160085481565b604051908152602001610272565b3480156102db57600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610272565b34801561032757600080fd5b506004546102c1565b34801561033c57600080fd5b5061022e61034b366004612225565b61091d565b34801561035c57600080fd5b5061029b61036b366004612249565b6109c7565b34801561037c57600080fd5b5061022e61038b36600461215d565b6109eb565b34801561039c57600080fd5b506102c160095481565b3480156103b257600080fd5b5060405160128152602001610272565b3480156103ce57600080fd5b5061029b6103dd3660046121eb565b610aed565b3480156103ee57600080fd5b506102c1600b5481565b34801561040457600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b34801561043857600080fd5b5061029b61044736600461228a565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561047157600080fd5b5060115461029b9060ff1681565b34801561048b57600080fd5b5061022e61049a3660046122a7565b610b0f565b3480156104ab57600080fd5b5061022e6104ba36600461228a565b610b6e565b3480156104cb57600080fd5b5061022e610cff565b3480156104e057600080fd5b506102c16104ef36600461228a565b6001600160a01b031660009081526002602052604090205490565b34801561051657600080fd5b5061022e610d67565b34801561052b57600080fd5b506102c1600e5481565b34801561054157600080fd5b506102c1600a5481565b34801561055757600080fd5b50600f54610303906001600160a01b031681565b34801561057757600080fd5b5061029b61058636600461228a565b6001600160a01b031660009081526012602052604090205460ff1690565b3480156105b057600080fd5b506102c1600d5481565b3480156105c657600080fd5b506000546001600160a01b0316610303565b3480156105e457600080fd5b50610265610d7b565b3480156105f957600080fd5b506102c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561062d57600080fd5b5061022e61063c3660046122c0565b610d8a565b34801561064d57600080fd5b5061029b61065c3660046121eb565b610ef0565b34801561066d57600080fd5b5061029b61067c3660046121eb565b610f6b565b34801561068d57600080fd5b5061022e61069c3660046122a7565b610f79565b3480156106ad57600080fd5b506103036110a5565b3480156106c257600080fd5b5061022e6106d13660046122c0565b61116a565b3480156106e257600080fd5b506102c16106f13660046122f9565b61124d565b34801561070257600080fd5b506102c160105481565b34801561071857600080fd5b5061022e61072736600461228a565b611278565b34801561073857600080fd5b506102c1600c5481565b34801561074e57600080fd5b5061022e61075d36600461228a565b6112ee565b61076a611414565b8160085414158061077d575080600a5414155b6107ce5760405162461bcd60e51b815260206004820152601e60248201527f4275792054617820616c7265616479206f6e207468617420616d6f756e74000060448201526064015b60405180910390fd5b6103e86107db828461233d565b11156108295760405162461bcd60e51b815260206004820152601f60248201527f427579205461782063616e6e6f74206265206d6f7265207468616e203130250060448201526064016107c5565b6008829055600a81905560408051838152602081018390527f4350dcfc5e910c40b6d16fdf94cbbc788c1f4ac51a7dc561b081157d4b8ed4ec91015b60405180910390a15050565b60606005805461088090612350565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac90612350565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b5050505050905090565b60003361091181858561146e565b60019150505b92915050565b610925611414565b60115481151560ff90911615150361097f5760405162461bcd60e51b815260206004820152601a60248201527f537761704261636b20616c7265616479206f6e2073746174757300000000000060448201526064016107c5565b6011805460ff19168215159081179091556040519081527fc2385a9c5843e4cd7e987e979b22e4d4748ec5dbbfc325ee4023a8c1914809b7906020015b60405180910390a150565b6000336109d5858285611592565b6109e085858561160c565b506001949350505050565b6109f3611414565b81600954141580610a06575080600b5414155b610a525760405162461bcd60e51b815260206004820152601f60248201527f53656c6c2054617820616c7265616479206f6e207468617420616d6f756e740060448201526064016107c5565b6103e8610a5f828461233d565b1115610aad5760405162461bcd60e51b815260206004820181905260248201527f53656c6c205461782063616e6e6f74206265206d6f7265207468616e2031302560448201526064016107c5565b6009829055600b81905560408051838152602081018390527fb67587dc52452dfa7b987911428a2b47c610929d62284cda9f4aafb90435ad4e9101610865565b600033610911818585610b00838361124d565b610b0a919061233d565b61146e565b610b17611414565b6127108111610b565760405162461bcd60e51b815260206004820152600b60248201526a1393c81c9d59c81c1d5b1b60aa1b60448201526064016107c5565b610b6881670de0b6b3a764000061238a565b600c5550565b610b76611414565b600f546001600160a01b0390811690821603610be55760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016107c5565b6001600160a01b038116610c4f5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016107c5565b6001600160a01b0381163b15610cb55760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e6044820152641d1c9858dd60da1b60648201526084016107c5565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f335aad0eda24dacfa324b3d651daa091864338cf7d4af9d5087ba1c5ee1174f090600090a250565b3060009081526002602052604090205480610d5c5760405162461bcd60e51b815260206004820152601760248201527f43616e742053776170204261636b203020546f6b656e2100000000000000000060448201526064016107c5565b610d64611903565b50565b610d6f611414565b610d796000611c50565b565b60606006805461088090612350565b610d92611414565b6001600160a01b03821660009081526012602052604090205481151560ff909116151503610e185760405162461bcd60e51b815260206004820152602d60248201527f50616972206164647265737320697320616c7265616479207468652076616c7560448201526c65206f6620277374617475732760981b60648201526084016107c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e905760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba103a3434b9903830b4b960611b60448201526064016107c5565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527fb6f1aed3b1ced30ce666a8b7f2e12b02aed514cdab677738640be9937f13320591015b60405180910390a25050565b60003381610efe828661124d565b905083811015610f5e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107c5565b6109e0828686840361146e565b60003361091181858561160c565b610f81611414565b8060105403610fe45760405162461bcd60e51b815260206004820152602960248201527f53776170546f6b656e734174416d6f756e7420616c7265616479206f6e207468604482015268185d08185b5bdd5b9d60ba1b60648201526084016107c5565b620f4240610ff160045490565b610ffb91906123a1565b8110156110705760405162461bcd60e51b815260206004820152603e60248201527f416d6f756e74206d75737420626520657175616c206f7220677265617465722060448201527f7468616e20302e30303030303125206f6620546f74616c20537570706c79000060648201526084016107c5565b60108190556040518181527fe82283d0f679a15d3811ecbaa8b6a8afb1b110e22daa33b359c37bcae5a11e48906020016109bc565b6000466038036110c857507310ed43c718714eb63d5aa57b78b54704e256024e90565b466061036110e9575073d99d1c33f9fc3444f8101754abc46c52416550d190565b46600114806110f85750466005145b156111165750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b60405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420666f756e6420726f75746572206f6e2074686973206e6574776044820152626f726b60e81b60648201526084016107c5565b611172611414565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036111f55760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016107c5565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527fee48373bc01f03d5728ce4cf0b4e1c35d75d7da201d5b5d5013a94e50941efe19101610ee4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b611280611414565b6001600160a01b0381166112e55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c5565b610d6481611c50565b6112f6611414565b306001600160a01b0382160361134e5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e7360448201526064016107c5565b6001600160a01b03811661138c5760405133904780156108fc02916000818181858888f19350505050158015611388573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f991906123c3565b905061140f6001600160a01b0383163383611ca0565b505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c5565b6001600160a01b0383166114d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107c5565b6001600160a01b0382166115315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107c5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061159e848461124d565b9050600019811461160657818110156115f95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c5565b611606848484840361146e565b50505050565b6001600160a01b0383166116325760405162461bcd60e51b81526004016107c5906123dc565b6001600160a01b0382166116585760405162461bcd60e51b81526004016107c590612421565b8060000361166c5761140f83836000611cf2565b306000908152600260205260409020546010548110801590819061169a5750600f54600160a01b900460ff16155b80156116bf57506001600160a01b03851660009081526012602052604090205460ff16155b80156116cd575060115460ff165b80156116e857506000600e54600d546116e6919061233d565b115b156116f5576116f5611903565b6001600160a01b03851660009081526013602052604090205460019060ff168061173757506001600160a01b03851660009081526013602052604090205460ff165b8061174b5750600f54600160a01b900460ff165b15611754575060005b80156118f0576001600160a01b038616600090815260126020526040812054819060ff16156117f8577f0000000000000000000000000000000000000000000000000000000000000000600854876117ac919061238a565b6117b691906123a1565b91507f0000000000000000000000000000000000000000000000000000000000000000600a54876117e7919061238a565b6117f191906123a1565b9050611890565b6001600160a01b03871660009081526012602052604090205460ff1615611890577f000000000000000000000000000000000000000000000000000000000000000060095487611848919061238a565b61185291906123a1565b91507f0000000000000000000000000000000000000000000000000000000000000000600b5487611883919061238a565b61188d91906123a1565b90505b81600d60008282546118a2919061233d565b9250508190555080600e60008282546118bb919061233d565b90915550600090506118cd828461233d565b905080156118ec576118df8188612464565b96506118ec893083611cf2565b5050505b6118fb868686611cf2565b505050505050565b600f805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061194b5761194b612477565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed919061248d565b81600181518110611a0057611a00612477565b6001600160a01b039092166020928302919091018201523060009081526002909152604081205490506000600e54600d54611a3b919061233d565b90506000816002600d54611a4f91906123a1565b611a59908561238a565b611a6391906123a1565b90506000611a718285612464565b90506002600d54611a8291906123a1565b611a8c9084612464565b60405163791ac94760e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611ae49084906000908a90309042906004016124aa565b600060405180830381600087803b158015611afe57600080fd5b505af1925050508015611b0f575060015b611b1d575050505050611c41565b600e5447906000908590611b31908461238a565b611b3b91906123a1565b90506000611b498284612464565b9050600085118015611b5b5750600081115b15611c105760405163f305d71960e01b815230600482015260248101869052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015611c07575060408051601f3d908101601f19168201909252611c049181019061251b565b60015b15611c10575050505b8115611c2e57600f54611c2c906001600160a01b031683611e23565b505b50506000600d819055600e555050505050505b600f805460ff60a01b19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261140f908490611e9f565b6001600160a01b038316611d185760405162461bcd60e51b81526004016107c5906123dc565b6001600160a01b038216611d3e5760405162461bcd60e51b81526004016107c590612421565b6001600160a01b03831660009081526002602052604090205481811015611db65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107c5565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e169086815260200190565b60405180910390a3611606565b6000611e2d611f74565b81471015611e3d57506000611e96565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611e8a576040519150601f19603f3d011682016040523d82523d6000602084013e611e8f565b606091505b5090925050505b61091760018055565b6000611ef4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fcd9092919063ffffffff16565b9050805160001480611f15575080806020019051810190611f159190612549565b61140f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107c5565b600260015403611fc65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107c5565b6002600155565b6060611fdc8484600085611fe4565b949350505050565b6060824710156120455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107c5565b600080866001600160a01b031685876040516120619190612566565b60006040518083038185875af1925050503d806000811461209e576040519150601f19603f3d011682016040523d82523d6000602084013e6120a3565b606091505b50915091506120b4878383876120bf565b979650505050505050565b6060831561212e578251600003612127576001600160a01b0385163b6121275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107c5565b5081611fdc565b611fdc83838151156121435781518083602001fd5b8060405162461bcd60e51b81526004016107c591906121a3565b6000806040838503121561217057600080fd5b50508035926020909101359150565b60005b8381101561219a578181015183820152602001612182565b50506000910152565b60208152600082518060208401526121c281604085016020870161217f565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610d6457600080fd5b600080604083850312156121fe57600080fd5b8235612209816121d6565b946020939093013593505050565b8015158114610d6457600080fd5b60006020828403121561223757600080fd5b813561224281612217565b9392505050565b60008060006060848603121561225e57600080fd5b8335612269816121d6565b92506020840135612279816121d6565b929592945050506040919091013590565b60006020828403121561229c57600080fd5b8135612242816121d6565b6000602082840312156122b957600080fd5b5035919050565b600080604083850312156122d357600080fd5b82356122de816121d6565b915060208301356122ee81612217565b809150509250929050565b6000806040838503121561230c57600080fd5b8235612317816121d6565b915060208301356122ee816121d6565b634e487b7160e01b600052601160045260246000fd5b8082018082111561091757610917612327565b600181811c9082168061236457607f821691505b60208210810361238457634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761091757610917612327565b6000826123be57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156123d557600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561091757610917612327565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561249f57600080fd5b8151612242816121d6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124fa5784516001600160a01b0316835293830193918301916001016124d5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561253057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561255b57600080fd5b815161224281612217565b6000825161257881846020870161217f565b919091019291505056fea26469706673582212209dc5e0a8364cddef0296a458cc5e0059db831b4753dc61698bd52057f5a0dfd264736f6c63430008130033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000000b4f5054494d555320322e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f5054494d5553322e3000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102275760003560e01c8063715018a611610122578063a457c2d7116100a5578063dd62ed3e1161006c578063dd62ed3e146106d6578063e2f45605146106f6578063f2fde38b1461070c578063f8b45b051461072c578063f9d0831a1461074257005b8063a457c2d714610641578063a9059cbb14610661578063afa4f3b214610681578063d54f7d5e146106a1578063d63cad22146106b657005b80638123bdc8116100e95780638123bdc8146105a45780638da5cb5b146105ba57806395d89b41146105d857806396ce0795146105ed5780639a7a23d61461062157005b8063715018a61461050a57806371afc7131461051f578063721e62331461053557806375f0a8741461054b5780637949a4031461056b57005b8063313ce567116101aa57806352dfc8d01161017157806352dfc8d0146104655780635d0044ca1461047f5780635d098b381461049f57806366eb3785146104bf57806370a08231146104d457005b8063313ce567146103a657806339509351146103c257806342d0b0bc146103e257806349bd5a5e146103f85780634fbee1931461042c57005b806318160ddd116101ee57806318160ddd1461031b5780631f88a23e1461033057806323b872dd14610350578063247b912d14610370578063248ba7ed1461039057005b806305a1f36d1461023057806306fdde0314610250578063095ea7b31461027b5780630abc8e7b146102ab5780631694505e146102cf57005b3661022e57005b005b34801561023c57600080fd5b5061022e61024b36600461215d565b610762565b34801561025c57600080fd5b50610265610871565b60405161027291906121a3565b60405180910390f35b34801561028757600080fd5b5061029b6102963660046121eb565b610903565b6040519015158152602001610272565b3480156102b757600080fd5b506102c160085481565b604051908152602001610272565b3480156102db57600080fd5b506103037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610272565b34801561032757600080fd5b506004546102c1565b34801561033c57600080fd5b5061022e61034b366004612225565b61091d565b34801561035c57600080fd5b5061029b61036b366004612249565b6109c7565b34801561037c57600080fd5b5061022e61038b36600461215d565b6109eb565b34801561039c57600080fd5b506102c160095481565b3480156103b257600080fd5b5060405160128152602001610272565b3480156103ce57600080fd5b5061029b6103dd3660046121eb565b610aed565b3480156103ee57600080fd5b506102c1600b5481565b34801561040457600080fd5b506103037f0000000000000000000000008821280ed375cf2130e94c37371e49c38149d56181565b34801561043857600080fd5b5061029b61044736600461228a565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561047157600080fd5b5060115461029b9060ff1681565b34801561048b57600080fd5b5061022e61049a3660046122a7565b610b0f565b3480156104ab57600080fd5b5061022e6104ba36600461228a565b610b6e565b3480156104cb57600080fd5b5061022e610cff565b3480156104e057600080fd5b506102c16104ef36600461228a565b6001600160a01b031660009081526002602052604090205490565b34801561051657600080fd5b5061022e610d67565b34801561052b57600080fd5b506102c1600e5481565b34801561054157600080fd5b506102c1600a5481565b34801561055757600080fd5b50600f54610303906001600160a01b031681565b34801561057757600080fd5b5061029b61058636600461228a565b6001600160a01b031660009081526012602052604090205460ff1690565b3480156105b057600080fd5b506102c1600d5481565b3480156105c657600080fd5b506000546001600160a01b0316610303565b3480156105e457600080fd5b50610265610d7b565b3480156105f957600080fd5b506102c17f000000000000000000000000000000000000000000000000000000000000271081565b34801561062d57600080fd5b5061022e61063c3660046122c0565b610d8a565b34801561064d57600080fd5b5061029b61065c3660046121eb565b610ef0565b34801561066d57600080fd5b5061029b61067c3660046121eb565b610f6b565b34801561068d57600080fd5b5061022e61069c3660046122a7565b610f79565b3480156106ad57600080fd5b506103036110a5565b3480156106c257600080fd5b5061022e6106d13660046122c0565b61116a565b3480156106e257600080fd5b506102c16106f13660046122f9565b61124d565b34801561070257600080fd5b506102c160105481565b34801561071857600080fd5b5061022e61072736600461228a565b611278565b34801561073857600080fd5b506102c1600c5481565b34801561074e57600080fd5b5061022e61075d36600461228a565b6112ee565b61076a611414565b8160085414158061077d575080600a5414155b6107ce5760405162461bcd60e51b815260206004820152601e60248201527f4275792054617820616c7265616479206f6e207468617420616d6f756e74000060448201526064015b60405180910390fd5b6103e86107db828461233d565b11156108295760405162461bcd60e51b815260206004820152601f60248201527f427579205461782063616e6e6f74206265206d6f7265207468616e203130250060448201526064016107c5565b6008829055600a81905560408051838152602081018390527f4350dcfc5e910c40b6d16fdf94cbbc788c1f4ac51a7dc561b081157d4b8ed4ec91015b60405180910390a15050565b60606005805461088090612350565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac90612350565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b5050505050905090565b60003361091181858561146e565b60019150505b92915050565b610925611414565b60115481151560ff90911615150361097f5760405162461bcd60e51b815260206004820152601a60248201527f537761704261636b20616c7265616479206f6e2073746174757300000000000060448201526064016107c5565b6011805460ff19168215159081179091556040519081527fc2385a9c5843e4cd7e987e979b22e4d4748ec5dbbfc325ee4023a8c1914809b7906020015b60405180910390a150565b6000336109d5858285611592565b6109e085858561160c565b506001949350505050565b6109f3611414565b81600954141580610a06575080600b5414155b610a525760405162461bcd60e51b815260206004820152601f60248201527f53656c6c2054617820616c7265616479206f6e207468617420616d6f756e740060448201526064016107c5565b6103e8610a5f828461233d565b1115610aad5760405162461bcd60e51b815260206004820181905260248201527f53656c6c205461782063616e6e6f74206265206d6f7265207468616e2031302560448201526064016107c5565b6009829055600b81905560408051838152602081018390527fb67587dc52452dfa7b987911428a2b47c610929d62284cda9f4aafb90435ad4e9101610865565b600033610911818585610b00838361124d565b610b0a919061233d565b61146e565b610b17611414565b6127108111610b565760405162461bcd60e51b815260206004820152600b60248201526a1393c81c9d59c81c1d5b1b60aa1b60448201526064016107c5565b610b6881670de0b6b3a764000061238a565b600c5550565b610b76611414565b600f546001600160a01b0390811690821603610be55760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016107c5565b6001600160a01b038116610c4f5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016107c5565b6001600160a01b0381163b15610cb55760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e6044820152641d1c9858dd60da1b60648201526084016107c5565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f335aad0eda24dacfa324b3d651daa091864338cf7d4af9d5087ba1c5ee1174f090600090a250565b3060009081526002602052604090205480610d5c5760405162461bcd60e51b815260206004820152601760248201527f43616e742053776170204261636b203020546f6b656e2100000000000000000060448201526064016107c5565b610d64611903565b50565b610d6f611414565b610d796000611c50565b565b60606006805461088090612350565b610d92611414565b6001600160a01b03821660009081526012602052604090205481151560ff909116151503610e185760405162461bcd60e51b815260206004820152602d60248201527f50616972206164647265737320697320616c7265616479207468652076616c7560448201526c65206f6620277374617475732760981b60648201526084016107c5565b7f0000000000000000000000008821280ed375cf2130e94c37371e49c38149d5616001600160a01b0316826001600160a01b031603610e905760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba103a3434b9903830b4b960611b60448201526064016107c5565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527fb6f1aed3b1ced30ce666a8b7f2e12b02aed514cdab677738640be9937f13320591015b60405180910390a25050565b60003381610efe828661124d565b905083811015610f5e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107c5565b6109e0828686840361146e565b60003361091181858561160c565b610f81611414565b8060105403610fe45760405162461bcd60e51b815260206004820152602960248201527f53776170546f6b656e734174416d6f756e7420616c7265616479206f6e207468604482015268185d08185b5bdd5b9d60ba1b60648201526084016107c5565b620f4240610ff160045490565b610ffb91906123a1565b8110156110705760405162461bcd60e51b815260206004820152603e60248201527f416d6f756e74206d75737420626520657175616c206f7220677265617465722060448201527f7468616e20302e30303030303125206f6620546f74616c20537570706c79000060648201526084016107c5565b60108190556040518181527fe82283d0f679a15d3811ecbaa8b6a8afb1b110e22daa33b359c37bcae5a11e48906020016109bc565b6000466038036110c857507310ed43c718714eb63d5aa57b78b54704e256024e90565b466061036110e9575073d99d1c33f9fc3444f8101754abc46c52416550d190565b46600114806110f85750466005145b156111165750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b60405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420666f756e6420726f75746572206f6e2074686973206e6574776044820152626f726b60e81b60648201526084016107c5565b611172611414565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036111f55760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016107c5565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527fee48373bc01f03d5728ce4cf0b4e1c35d75d7da201d5b5d5013a94e50941efe19101610ee4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b611280611414565b6001600160a01b0381166112e55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c5565b610d6481611c50565b6112f6611414565b306001600160a01b0382160361134e5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e7360448201526064016107c5565b6001600160a01b03811661138c5760405133904780156108fc02916000818181858888f19350505050158015611388573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f991906123c3565b905061140f6001600160a01b0383163383611ca0565b505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c5565b6001600160a01b0383166114d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107c5565b6001600160a01b0382166115315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107c5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061159e848461124d565b9050600019811461160657818110156115f95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c5565b611606848484840361146e565b50505050565b6001600160a01b0383166116325760405162461bcd60e51b81526004016107c5906123dc565b6001600160a01b0382166116585760405162461bcd60e51b81526004016107c590612421565b8060000361166c5761140f83836000611cf2565b306000908152600260205260409020546010548110801590819061169a5750600f54600160a01b900460ff16155b80156116bf57506001600160a01b03851660009081526012602052604090205460ff16155b80156116cd575060115460ff165b80156116e857506000600e54600d546116e6919061233d565b115b156116f5576116f5611903565b6001600160a01b03851660009081526013602052604090205460019060ff168061173757506001600160a01b03851660009081526013602052604090205460ff165b8061174b5750600f54600160a01b900460ff165b15611754575060005b80156118f0576001600160a01b038616600090815260126020526040812054819060ff16156117f8577f0000000000000000000000000000000000000000000000000000000000002710600854876117ac919061238a565b6117b691906123a1565b91507f0000000000000000000000000000000000000000000000000000000000002710600a54876117e7919061238a565b6117f191906123a1565b9050611890565b6001600160a01b03871660009081526012602052604090205460ff1615611890577f000000000000000000000000000000000000000000000000000000000000271060095487611848919061238a565b61185291906123a1565b91507f0000000000000000000000000000000000000000000000000000000000002710600b5487611883919061238a565b61188d91906123a1565b90505b81600d60008282546118a2919061233d565b9250508190555080600e60008282546118bb919061233d565b90915550600090506118cd828461233d565b905080156118ec576118df8188612464565b96506118ec893083611cf2565b5050505b6118fb868686611cf2565b505050505050565b600f805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061194b5761194b612477565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed919061248d565b81600181518110611a0057611a00612477565b6001600160a01b039092166020928302919091018201523060009081526002909152604081205490506000600e54600d54611a3b919061233d565b90506000816002600d54611a4f91906123a1565b611a59908561238a565b611a6391906123a1565b90506000611a718285612464565b90506002600d54611a8291906123a1565b611a8c9084612464565b60405163791ac94760e01b81529093506001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611ae49084906000908a90309042906004016124aa565b600060405180830381600087803b158015611afe57600080fd5b505af1925050508015611b0f575060015b611b1d575050505050611c41565b600e5447906000908590611b31908461238a565b611b3b91906123a1565b90506000611b498284612464565b9050600085118015611b5b5750600081115b15611c105760405163f305d71960e01b815230600482015260248101869052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015611c07575060408051601f3d908101601f19168201909252611c049181019061251b565b60015b15611c10575050505b8115611c2e57600f54611c2c906001600160a01b031683611e23565b505b50506000600d819055600e555050505050505b600f805460ff60a01b19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261140f908490611e9f565b6001600160a01b038316611d185760405162461bcd60e51b81526004016107c5906123dc565b6001600160a01b038216611d3e5760405162461bcd60e51b81526004016107c590612421565b6001600160a01b03831660009081526002602052604090205481811015611db65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107c5565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e169086815260200190565b60405180910390a3611606565b6000611e2d611f74565b81471015611e3d57506000611e96565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611e8a576040519150601f19603f3d011682016040523d82523d6000602084013e611e8f565b606091505b5090925050505b61091760018055565b6000611ef4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fcd9092919063ffffffff16565b9050805160001480611f15575080806020019051810190611f159190612549565b61140f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107c5565b600260015403611fc65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107c5565b6002600155565b6060611fdc8484600085611fe4565b949350505050565b6060824710156120455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107c5565b600080866001600160a01b031685876040516120619190612566565b60006040518083038185875af1925050503d806000811461209e576040519150601f19603f3d011682016040523d82523d6000602084013e6120a3565b606091505b50915091506120b4878383876120bf565b979650505050505050565b6060831561212e578251600003612127576001600160a01b0385163b6121275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107c5565b5081611fdc565b611fdc83838151156121435781518083602001fd5b8060405162461bcd60e51b81526004016107c591906121a3565b6000806040838503121561217057600080fd5b50508035926020909101359150565b60005b8381101561219a578181015183820152602001612182565b50506000910152565b60208152600082518060208401526121c281604085016020870161217f565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610d6457600080fd5b600080604083850312156121fe57600080fd5b8235612209816121d6565b946020939093013593505050565b8015158114610d6457600080fd5b60006020828403121561223757600080fd5b813561224281612217565b9392505050565b60008060006060848603121561225e57600080fd5b8335612269816121d6565b92506020840135612279816121d6565b929592945050506040919091013590565b60006020828403121561229c57600080fd5b8135612242816121d6565b6000602082840312156122b957600080fd5b5035919050565b600080604083850312156122d357600080fd5b82356122de816121d6565b915060208301356122ee81612217565b809150509250929050565b6000806040838503121561230c57600080fd5b8235612317816121d6565b915060208301356122ee816121d6565b634e487b7160e01b600052601160045260246000fd5b8082018082111561091757610917612327565b600181811c9082168061236457607f821691505b60208210810361238457634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761091757610917612327565b6000826123be57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156123d557600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561091757610917612327565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561249f57600080fd5b8151612242816121d6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124fa5784516001600160a01b0316835293830193918301916001016124d5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561253057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561255b57600080fd5b815161224281612217565b6000825161257881846020870161217f565b919091019291505056fea26469706673582212209dc5e0a8364cddef0296a458cc5e0059db831b4753dc61698bd52057f5a0dfd264736f6c63430008130033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000000b4f5054494d555320322e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f5054494d5553322e3000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenName (string): OPTIMUS 2.0
Arg [1] : _tokenSymbol (string): OPTIMUS2.0
Arg [2] : _supply (uint256): 1000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [4] : 4f5054494d555320322e30000000000000000000000000000000000000000000
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [6] : 4f5054494d5553322e3000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24076:11712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27952:599;;;;;;;;;;-1:-1:-1;27952:599:0;;;;;:::i;:::-;;:::i;17704:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18702:226;;;;;;;;;;-1:-1:-1;18702:226:0;;;;;:::i;:::-;;:::i;:::-;;;1544:14:1;;1537:22;1519:41;;1507:2;1492:18;18702:226:0;1379:187:1;24210:30:0;;;;;;;;;;;;;;;;;;;1717:25:1;;;1705:2;1690:18;24210:30:0;1571:177:1;24673:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1943:32:1;;;1925:51;;1913:2;1898:18;24673:51:0;1753:229:1;18025:108:0;;;;;;;;;;-1:-1:-1;18113:12:0;;18025:108;;30400:224;;;;;;;;;;-1:-1:-1;30400:224:0;;;;;:::i;:::-;;:::i;18936:295::-;;;;;;;;;;-1:-1:-1;18936:295:0;;;;;:::i;:::-;;:::i;28727:617::-;;;;;;;;;;-1:-1:-1;28727:617:0;;;;;:::i;:::-;;:::i;24247:31::-;;;;;;;;;;;;;;;;17924:93;;;;;;;;;;-1:-1:-1;17924:93:0;;18007:2;2959:36:1;;2947:2;2932:18;17924:93:0;2817:184:1;19239:263:0;;;;;;;;;;-1:-1:-1;19239:263:0;;;;;:::i;:::-;;:::i;24324:31::-;;;;;;;;;;;;;;;;24731:38;;;;;;;;;;;;;;;31629:128;;;;;;;;;;-1:-1:-1;31629:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;31721:28:0;31697:4;31721:28;;;:19;:28;;;;;;;;;31629:128;24635:29;;;;;;;;;;-1:-1:-1;24635:29:0;;;;;;;;28565:154;;;;;;;;;;-1:-1:-1;28565:154:0;;;;;:::i;:::-;;:::i;29352:580::-;;;;;;;;;;-1:-1:-1;29352:580:0;;;;;:::i;:::-;;:::i;35580:205::-;;;;;;;;;;;;;:::i;18141:143::-;;;;;;;;;;-1:-1:-1;18141:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18258:18:0;18231:7;18258:18;;;:9;:18;;;;;;;18141:143;23521:103;;;;;;;;;;;;;:::i;24484:35::-;;;;;;;;;;;;;;;;24287:30;;;;;;;;;;;;;;;;24528;;;;;;;;;;-1:-1:-1;24528:30:0;;;;-1:-1:-1;;;;;24528:30:0;;;31096:154;;;;;;;;;;-1:-1:-1;31096:154:0;;;;;:::i;:::-;-1:-1:-1;;;;;31209:33:0;31185:4;31209:33;;;:27;:33;;;;;;;;;31096:154;24442:35;;;;;;;;;;;;;;;;23286:87;;;;;;;;;;-1:-1:-1;23332:7:0;23359:6;-1:-1:-1;;;;;23359:6:0;23286:87;;17812:104;;;;;;;;;;;;;:::i;24397:36::-;;;;;;;;;;;;;;;30632:456;;;;;;;;;;-1:-1:-1;30632:456:0;;;;;:::i;:::-;;:::i;19510:498::-;;;;;;;;;;-1:-1:-1;19510:498:0;;;;;:::i;:::-;;:::i;18292:218::-;;;;;;;;;;-1:-1:-1;18292:218:0;;;;;:::i;:::-;;:::i;29940:452::-;;;;;;;;;;-1:-1:-1;29940:452:0;;;;;:::i;:::-;;:::i;26999:490::-;;;;;;;;;;;;;:::i;31258:363::-;;;;;;;;;;-1:-1:-1;31258:363:0;;;;;:::i;:::-;;:::i;18518:176::-;;;;;;;;;;-1:-1:-1;18518:176:0;;;;;:::i;:::-;;:::i;24595:33::-;;;;;;;;;;;;;;;;23632:238;;;;;;;;;;-1:-1:-1;23632:238:0;;;;;:::i;:::-;;:::i;24364:24::-;;;;;;;;;;;;;;;;27497:447;;;;;;;;;;-1:-1:-1;27497:447:0;;;;;:::i;:::-;;:::i;27952:599::-;23245:13;:11;:13::i;:::-;28119:16:::1;28100:15;;:35;;:91;;;;28175:16;28156:15;;:35;;28100:91;28078:171;;;::::0;-1:-1:-1;;;28078:171:0;;4633:2:1;28078:171:0::1;::::0;::::1;4615:21:1::0;4672:2;4652:18;;;4645:30;4711:32;4691:18;;;4684:60;4761:18;;28078:171:0::1;;;;;;;;;28321:5;28282:35;28301:16:::0;28282;:35:::1;:::i;:::-;:44;;28260:125;;;::::0;-1:-1:-1;;;28260:125:0;;5254:2:1;28260:125:0::1;::::0;::::1;5236:21:1::0;5293:2;5273:18;;;5266:30;5332:33;5312:18;;;5305:61;5383:18;;28260:125:0::1;5052:355:1::0;28260:125:0::1;28398:15;:34:::0;;;28443:15:::1;:34:::0;;;28495:48:::1;::::0;;5586:25:1;;;5642:2;5627:18;;5620:34;;;28495:48:0::1;::::0;5559:18:1;28495:48:0::1;;;;;;;;27952:599:::0;;:::o;17704:100::-;17758:13;17791:5;17784:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17704:100;:::o;18702:226::-;18810:4;17164:10;18866:32;17164:10;18882:7;18891:6;18866:8;:32::i;:::-;18916:4;18909:11;;;18702:226;;;;;:::o;30400:224::-;23245:13;:11;:13::i;:::-;30475:17:::1;::::0;:27;::::1;;:17;::::0;;::::1;:27;;::::0;30467:66:::1;;;::::0;-1:-1:-1;;;30467:66:0;;6252:2:1;30467:66:0::1;::::0;::::1;6234:21:1::0;6291:2;6271:18;;;6264:30;6330:28;6310:18;;;6303:56;6376:18;;30467:66:0::1;6050:350:1::0;30467:66:0::1;30546:17;:26:::0;;-1:-1:-1;;30546:26:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30588:28:::1;::::0;1519:41:1;;;30588:28:0::1;::::0;1507:2:1;1492:18;30588:28:0::1;;;;;;;;30400:224:::0;:::o;18936:295::-;19067:4;17164:10;19125:38;19141:4;17164:10;19156:6;19125:15;:38::i;:::-;19174:27;19184:4;19190:2;19194:6;19174:9;:27::i;:::-;-1:-1:-1;19219:4:0;;18936:295;-1:-1:-1;;;;18936:295:0:o;28727:617::-;23245:13;:11;:13::i;:::-;28898:17:::1;28878:16;;:37;;:95;;;;28956:17;28936:16;;:37;;28878:95;28856:176;;;::::0;-1:-1:-1;;;28856:176:0;;6607:2:1;28856:176:0::1;::::0;::::1;6589:21:1::0;6646:2;6626:18;;;6619:30;6685:33;6665:18;;;6658:61;6736:18;;28856:176:0::1;6405:355:1::0;28856:176:0::1;29106:5;29065:37;29085:17:::0;29065;:37:::1;:::i;:::-;:46;;29043:128;;;::::0;-1:-1:-1;;;29043:128:0;;6967:2:1;29043:128:0::1;::::0;::::1;6949:21:1::0;;;6986:18;;;6979:30;7045:34;7025:18;;;7018:62;7097:18;;29043:128:0::1;6765:356:1::0;29043:128:0::1;29184:16;:36:::0;;;29231:16:::1;:36:::0;;;29285:51:::1;::::0;;5586:25:1;;;5642:2;5627:18;;5620:34;;;29285:51:0::1;::::0;5559:18:1;29285:51:0::1;5412:248:1::0;19239:263:0;19352:4;17164:10;19408:64;17164:10;19424:7;19461:10;19433:25;17164:10;19424:7;19433:9;:25::i;:::-;:38;;;;:::i;:::-;19408:8;:64::i;28565:154::-;23245:13;:11;:13::i;:::-;28652:5:::1;28643:6;:14;28634:39;;;::::0;-1:-1:-1;;;28634:39:0;;7328:2:1;28634:39:0::1;::::0;::::1;7310:21:1::0;7367:2;7347:18;;;7340:30;-1:-1:-1;;;7386:18:1;;;7379:41;7437:18;;28634:39:0::1;7126:335:1::0;28634:39:0::1;28696:15;:6:::0;28705::::1;28696:15;:::i;:::-;28684:9;:27:::0;-1:-1:-1;28565:154:0:o;29352:580::-;23245:13;:11;:13::i;:::-;29478:15:::1;::::0;-1:-1:-1;;;;;29478:15:0;;::::1;29458:35:::0;;::::1;::::0;29436:125:::1;;;::::0;-1:-1:-1;;;29436:125:0;;7841:2:1;29436:125:0::1;::::0;::::1;7823:21:1::0;7880:2;7860:18;;;7853:30;7919:34;7899:18;;;7892:62;-1:-1:-1;;;7970:18:1;;;7963:38;8018:19;;29436:125:0::1;7639:404:1::0;29436:125:0::1;-1:-1:-1::0;;;;;29594:30:0;::::1;29572:123;;;::::0;-1:-1:-1;;;29572:123:0;;8250:2:1;29572:123:0::1;::::0;::::1;8232:21:1::0;8289:2;8269:18;;;8262:30;8328:34;8308:18;;;8301:62;-1:-1:-1;;;8379:18:1;;;8372:41;8430:19;;29572:123:0::1;8048:407:1::0;29572:123:0::1;-1:-1:-1::0;;;;;26960:19:0;;;:23;29706:116:::1;;;::::0;-1:-1:-1;;;29706:116:0;;8662:2:1;29706:116:0::1;::::0;::::1;8644:21:1::0;8701:2;8681:18;;;8674:30;8740:34;8720:18;;;8713:62;-1:-1:-1;;;8791:18:1;;;8784:35;8836:19;;29706:116:0::1;8460:401:1::0;29706:116:0::1;29835:15;:34:::0;;-1:-1:-1;;;;;;29835:34:0::1;-1:-1:-1::0;;;;;29835:34:0;::::1;::::0;;::::1;::::0;;;29885:39:::1;::::0;::::1;::::0;-1:-1:-1;;29885:39:0::1;29352:580:::0;:::o;35580:205::-;35675:4;35626:28;18258:18;;;:9;:18;;;;;;35702:24;35694:60;;;;-1:-1:-1;;;35694:60:0;;9068:2:1;35694:60:0;;;9050:21:1;9107:2;9087:18;;;9080:30;9146:25;9126:18;;;9119:53;9189:18;;35694:60:0;8866:347:1;35694:60:0;35767:10;:8;:10::i;:::-;35615:170;35580:205::o;23521:103::-;23245:13;:11;:13::i;:::-;23586:30:::1;23613:1;23586:18;:30::i;:::-;23521:103::o:0;17812:104::-;17868:13;17901:7;17894:14;;;;;:::i;30632:456::-;23245:13;:11;:13::i;:::-;-1:-1:-1;;;;;30773:33:0;::::1;;::::0;;;:27:::1;:33;::::0;;;;;:43;::::1;;:33;::::0;;::::1;:43;;::::0;30751:138:::1;;;::::0;-1:-1:-1;;;30751:138:0;;9420:2:1;30751:138:0::1;::::0;::::1;9402:21:1::0;9459:2;9439:18;;;9432:30;9498:34;9478:18;;;9471:62;-1:-1:-1;;;9549:18:1;;;9542:43;9602:19;;30751:138:0::1;9218:409:1::0;30751:138:0::1;30924:13;-1:-1:-1::0;;;;;30908:30:0::1;:4;-1:-1:-1::0;;;;;30908:30:0::1;::::0;30900:63:::1;;;::::0;-1:-1:-1;;;30900:63:0;;9834:2:1;30900:63:0::1;::::0;::::1;9816:21:1::0;9873:2;9853:18;;;9846:30;-1:-1:-1;;;9892:18:1;;;9885:50;9952:18;;30900:63:0::1;9632:344:1::0;30900:63:0::1;-1:-1:-1::0;;;;;30976:33:0;::::1;;::::0;;;:27:::1;:33;::::0;;;;;;;;:42;;-1:-1:-1;;30976:42:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31036:44;;1519:41:1;;;31036:44:0::1;::::0;1492:18:1;31036:44:0::1;;;;;;;;30632:456:::0;;:::o;19510:498::-;19628:4;17164:10;19628:4;19711:25;17164:10;19728:7;19711:9;:25::i;:::-;19684:52;;19789:15;19769:16;:35;;19747:122;;;;-1:-1:-1;;;19747:122:0;;10183:2:1;19747:122:0;;;10165:21:1;10222:2;10202:18;;;10195:30;10261:34;10241:18;;;10234:62;-1:-1:-1;;;10312:18:1;;;10305:35;10357:19;;19747:122:0;9981:401:1;19747:122:0;19905:60;19914:5;19921:7;19949:15;19930:16;:34;19905:8;:60::i;18292:218::-;18396:4;17164:10;18452:28;17164:10;18469:2;18473:6;18452:9;:28::i;29940:452::-;23245:13;:11;:13::i;:::-;30061:6:::1;30039:18;;:28:::0;30017:119:::1;;;::::0;-1:-1:-1;;;30017:119:0;;10589:2:1;30017:119:0::1;::::0;::::1;10571:21:1::0;10628:2;10608:18;;;10601:30;10667:34;10647:18;;;10640:62;-1:-1:-1;;;10718:18:1;;;10711:39;10767:19;;30017:119:0::1;10387:405:1::0;30017:119:0::1;30195:9;30179:13;18113:12:::0;;;18025:108;30179:13:::1;:25;;;;:::i;:::-;30169:6;:35;;30147:147;;;::::0;-1:-1:-1;;;30147:147:0;;11221:2:1;30147:147:0::1;::::0;::::1;11203:21:1::0;11260:2;11240:18;;;11233:30;11299:34;11279:18;;;11272:62;11370:32;11350:18;;;11343:60;11420:19;;30147:147:0::1;11019:426:1::0;30147:147:0::1;30307:18;:27:::0;;;30352:32:::1;::::0;1717:25:1;;;30352:32:0::1;::::0;1705:2:1;1690:18;30352:32:0::1;1571:177:1::0;26999:490:0;27048:7;27072:13;27089:2;27072:19;27068:414;;-1:-1:-1;27115:42:0;;26999:490::o;27068:414::-;27179:13;27196:2;27179:19;27175:307;;-1:-1:-1;27222:42:0;;26999:490::o;27175:307::-;27286:13;27303:1;27286:18;:40;;;;27308:13;27325:1;27308:18;27286:40;27282:200;;;-1:-1:-1;27350:42:0;;26999:490::o;27282:200::-;27425:45;;-1:-1:-1;;;27425:45:0;;11652:2:1;27425:45:0;;;11634:21:1;11691:2;11671:18;;;11664:30;11730:34;11710:18;;;11703:62;-1:-1:-1;;;11781:18:1;;;11774:33;11824:19;;27425:45:0;11450:399:1;31258:363:0;23245:13;:11;:13::i;:::-;-1:-1:-1;;;;;31395:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;31373:132:::1;;;::::0;-1:-1:-1;;;31373:132:0;;12056:2:1;31373:132:0::1;::::0;::::1;12038:21:1::0;12095:2;12075:18;;;12068:30;12134:34;12114:18;;;12107:62;-1:-1:-1;;;12185:18:1;;;12178:40;12235:19;;31373:132:0::1;11854:406:1::0;31373:132:0::1;-1:-1:-1::0;;;;;31516:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;31516:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31573:40;;1519:41:1;;;31573:40:0::1;::::0;1492:18:1;31573:40:0::1;1379:187:1::0;18518:176:0;-1:-1:-1;;;;;18659:18:0;;;18632:7;18659:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18518:176::o;23632:238::-;23245:13;:11;:13::i;:::-;-1:-1:-1;;;;;23735:22:0;::::1;23713:110;;;::::0;-1:-1:-1;;;23713:110:0;;12467:2:1;23713:110:0::1;::::0;::::1;12449:21:1::0;12506:2;12486:18;;;12479:30;12545:34;12525:18;;;12518:62;-1:-1:-1;;;12596:18:1;;;12589:36;12642:19;;23713:110:0::1;12265:402:1::0;23713:110:0::1;23834:28;23853:8;23834:18;:28::i;27497:447::-:0;23245:13;:11;:13::i;:::-;27593:4:::1;-1:-1:-1::0;;;;;27576:22:0;::::1;::::0;27568:67:::1;;;::::0;-1:-1:-1;;;27568:67:0;;12874:2:1;27568:67:0::1;::::0;::::1;12856:21:1::0;;;12893:18;;;12886:30;12952:34;12932:18;;;12925:62;13004:18;;27568:67:0::1;12672:356:1::0;27568:67:0::1;-1:-1:-1::0;;;;;27652:21:0;::::1;27648:126;;27690:51;::::0;27698:10:::1;::::0;27719:21:::1;27690:51:::0;::::1;;;::::0;::::1;::::0;;;27719:21;27698:10;27690:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;35615:170:::0;35580:205::o;27648:126::-:1;27846:35;::::0;-1:-1:-1;;;27846:35:0;;27875:4:::1;27846:35;::::0;::::1;1925:51:1::0;27811:5:0;;27784:17:::1;::::0;-1:-1:-1;;;;;27846:20:0;::::1;::::0;::::1;::::0;1898:18:1;;27846:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27828:53:::0;-1:-1:-1;27892:44:0::1;-1:-1:-1::0;;;;;27892:23:0;::::1;27916:10;27828:53:::0;27892:23:::1;:44::i;:::-;27557:387;;27497:447:::0;:::o;23381:132::-;23332:7;23359:6;-1:-1:-1;;;;;23359:6:0;17164:10;23445:23;23437:68;;;;-1:-1:-1;;;23437:68:0;;13424:2:1;23437:68:0;;;13406:21:1;;;13443:18;;;13436:30;13502:34;13482:18;;;13475:62;13554:18;;23437:68:0;13222:356:1;21786:380:0;-1:-1:-1;;;;;21922:19:0;;21914:68;;;;-1:-1:-1;;;21914:68:0;;13785:2:1;21914:68:0;;;13767:21:1;13824:2;13804:18;;;13797:30;13863:34;13843:18;;;13836:62;-1:-1:-1;;;13914:18:1;;;13907:34;13958:19;;21914:68:0;13583:400:1;21914:68:0;-1:-1:-1;;;;;22001:21:0;;21993:68;;;;-1:-1:-1;;;21993:68:0;;14190:2:1;21993:68:0;;;14172:21:1;14229:2;14209:18;;;14202:30;14268:34;14248:18;;;14241:62;-1:-1:-1;;;14319:18:1;;;14312:32;14361:19;;21993:68:0;13988:398:1;21993:68:0;-1:-1:-1;;;;;22074:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22126:32;;1717:25:1;;;22126:32:0;;1690:18:1;22126:32:0;;;;;;;21786:380;;;:::o;22174:502::-;22309:24;22336:25;22346:5;22353:7;22336:9;:25::i;:::-;22309:52;;-1:-1:-1;;22376:16:0;:37;22372:297;;22476:6;22456:16;:26;;22430:117;;;;-1:-1:-1;;;22430:117:0;;14593:2:1;22430:117:0;;;14575:21:1;14632:2;14612:18;;;14605:30;14671:31;14651:18;;;14644:59;14720:18;;22430:117:0;14391:353:1;22430:117:0;22591:51;22600:5;22607:7;22635:6;22616:16;:25;22591:8;:51::i;:::-;22298:378;22174:502;;;:::o;31765:1914::-;-1:-1:-1;;;;;31897:18:0;;31889:68;;;;-1:-1:-1;;;31889:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31976:16:0;;31968:64;;;;-1:-1:-1;;;31968:64:0;;;;;;;:::i;:::-;32049:6;32059:1;32049:11;32045:93;;32077:28;32093:4;32099:2;32103:1;32077:15;:28::i;32045:93::-;32212:4;32163:28;18258:18;;;:9;:18;;;;;;32270;;32246:42;;;;;;;32319:33;;-1:-1:-1;32344:8:0;;-1:-1:-1;;;32344:8:0;;;;32343:9;32319:33;:84;;;;-1:-1:-1;;;;;;32370:33:0;;;;;;:27;:33;;;;;;;;32369:34;32319:84;:118;;;;-1:-1:-1;32420:17:0;;;;32319:118;:182;;;;;32500:1;32477:20;;32454;;:43;;;;:::i;:::-;:47;32319:182;32301:249;;;32528:10;:8;:10::i;:::-;-1:-1:-1;;;;;32610:25:0;;32574:12;32610:25;;;:19;:25;;;;;;32589:4;;32610:25;;;:52;;-1:-1:-1;;;;;;32639:23:0;;;;;;:19;:23;;;;;;;;32610:52;:64;;;-1:-1:-1;32666:8:0;;-1:-1:-1;;;32666:8:0;;;;32610:64;32606:112;;;-1:-1:-1;32701:5:0;32606:112;32734:7;32730:896;;;-1:-1:-1;;;;;32848:33:0;;32758:27;32848:33;;;:27;:33;;;;;;32758:27;;32848:33;;32844:440;;;32953:11;32934:15;;32925:6;:24;;;;:::i;:::-;32924:40;;;;:::i;:::-;32902:62;;33034:11;33015:15;;33006:6;:24;;;;:::i;:::-;33005:40;;;;:::i;:::-;32983:62;;32844:440;;;-1:-1:-1;;;;;33071:31:0;;;;;;:27;:31;;;;;;;;33067:217;;;33175:11;33155:16;;33146:6;:25;;;;:::i;:::-;33145:41;;;;:::i;:::-;33123:63;;33257:11;33237:16;;33228:6;:25;;;;:::i;:::-;33227:41;;;;:::i;:::-;33205:63;;33067:217;33324:19;33300:20;;:43;;;;;;;:::i;:::-;;;;;;;;33382:19;33358:20;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;33418:12:0;;-1:-1:-1;33433:41:0;33455:19;33433;:41;:::i;:::-;33418:56;-1:-1:-1;33495:8:0;;33491:124;;33524:14;33534:4;33524:14;;:::i;:::-;;;33557:42;33573:4;33587;33594;33557:15;:42::i;:::-;32743:883;;;32730:896;33638:33;33654:4;33660:2;33664:6;33638:15;:33::i;:::-;31878:1801;;;31765:1914;;;:::o;33687:1607::-;24935:8;:15;;-1:-1:-1;;;;24935:15:0;-1:-1:-1;;;24935:15:0;;;33758:16:::1;::::0;;33772:1:::1;33758:16:::0;;;;;::::1;::::0;;-1:-1:-1;;33758:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;33758:16:0::1;33734:40;;33803:4;33785;33790:1;33785:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;33785:23:0::1;;;-1:-1:-1::0;;;;;33785:23:0::1;;;::::0;::::1;33829:15;-1:-1:-1::0;;;;;33829:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33819:4;33824:1;33819:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;33819:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:32;33913:4:::1;33864:28;18258:18:::0;;;:9;:18;;;;;;;33864:55:::1;;33932:16;33974:20;;33951;;:43;;;;:::i;:::-;33932:62;;34007:20;34097:8;34091:1;34068:20;;:24;;;;:::i;:::-;34031:62;::::0;:20;:62:::1;:::i;:::-;34030:75;;;;:::i;:::-;34007:98:::0;-1:-1:-1;34118:22:0::1;34143:35;34007:98:::0;34143:20;:35:::1;:::i;:::-;34118:60;;34228:1;34204:20;;34203:26;;;;:::i;:::-;34191:38;::::0;;::::1;:::i;:::-;34259:223;::::0;-1:-1:-1;;;34259:223:0;;34191:38;;-1:-1:-1;;;;;;34259:15:0::1;:66;::::0;::::1;::::0;:223:::1;::::0;34344:14;;34377:1:::1;::::0;34397:4;;34428::::1;::::0;34452:15:::1;::::0;34259:223:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;34242:292;;34516:7;;;;;;;34242:292;34638:20;::::0;34567:21:::1;::::0;34546:18:::1;::::0;34662:8;;34625:33:::1;::::0;34567:21;34625:33:::1;:::i;:::-;34624:46;;;;:::i;:::-;34601:69:::0;-1:-1:-1;34681:18:0::1;34702:25;34601:69:::0;34702:10;:25:::1;:::i;:::-;34681:46;;34759:1;34744:12;:16;:34;;;;;34777:1;34764:10;:14;34744:34;34740:376;;;34816:264;::::0;-1:-1:-1;;;34816:264:0;;34897:4:::1;34816:264;::::0;::::1;17538:34:1::0;17588:18;;;17581:34;;;34960:1:0::1;17631:18:1::0;;;17624:34;;;17674:18;;;17667:34;35016:6:0::1;17717:19:1::0;;;17710:44;35046:15:0::1;17770:19:1::0;;;17763:35;34816:15:0::1;-1:-1:-1::0;;;;;34816:31:0::1;::::0;::::1;::::0;34855:10;;17472:19:1;;34816:264:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;34816:264:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;34816:264:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;34795:310:::0;::::1;;;;;;35132:16:::0;;35128:87:::1;;35173:15;::::0;35165:38:::1;::::0;-1:-1:-1;;;;;35173:15:0::1;35190:12:::0;35165:7:::1;:38::i;:::-;;35128:87;-1:-1:-1::0;;35250:1:0::1;35227:20;:24:::0;;;35262:20:::1;:24:::0;-1:-1:-1;;;;;;24961:1:0::1;24973:8:::0;:16;;-1:-1:-1;;;;24973:16:0;;;33687:1607::o;23878:191::-;23952:16;23971:6;;-1:-1:-1;;;;;23988:17:0;;;-1:-1:-1;;;;;;23988:17:0;;;;;;24021:40;;23971:6;;;;;;;24021:40;;23952:16;24021:40;23941:128;23878:191;:::o;12251:214::-;12388:58;;;-1:-1:-1;;;;;18312:32:1;;12388:58:0;;;18294:51:1;18361:18;;;;18354:34;;;12388:58:0;;;;;;;;;;18267:18:1;;;;12388:58:0;;;;;;;;-1:-1:-1;;;;;12388:58:0;-1:-1:-1;;;12388:58:0;;;12334:123;;12368:5;;12334:19;:123::i;20016:714::-;-1:-1:-1;;;;;20147:18:0;;20139:68;;;;-1:-1:-1;;;20139:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20226:16:0;;20218:64;;;;-1:-1:-1;;;20218:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20368:15:0;;20346:19;20368:15;;;:9;:15;;;;;;20416:21;;;;20394:109;;;;-1:-1:-1;;;20394:109:0;;18601:2:1;20394:109:0;;;18583:21:1;18640:2;18620:18;;;18613:30;18679:34;18659:18;;;18652:62;-1:-1:-1;;;18730:18:1;;;18723:36;18776:19;;20394:109:0;18399:402:1;20394:109:0;-1:-1:-1;;;;;20539:15:0;;;;;;;:9;:15;;;;;;20557:20;;;20539:38;;20594:13;;;;;;;;;;:23;;;;;;20646:26;;;;;;20571:6;1717:25:1;;1705:2;1690:18;;1571:177;20646:26:0;;;;;;;;20685:37;27497:447;35302:270;35404:4;16608:21;:19;:21::i;:::-;35449:6:::1;35425:21;:30;35421:48;;;-1:-1:-1::0;35464:5:0::1;35457:12;;35421:48;35483:12;35509:3;-1:-1:-1::0;;;;;35501:17:0::1;35526:6;35501:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;35482:55:0;;-1:-1:-1;;;16640:1:0::1;16652:20:::0;16424:1;16897:22;;16848:79;15359:380;15440:23;15466:106;15508:4;15466:106;;;;;;;;;;;;;;;;;15474:5;-1:-1:-1;;;;;15466:27:0;;;:106;;;;;:::i;:::-;15440:132;;15605:10;:17;15626:1;15605:22;:56;;;;15642:10;15631:30;;;;;;;;;;;;:::i;:::-;15583:148;;;;-1:-1:-1;;;15583:148:0;;19468:2:1;15583:148:0;;;19450:21:1;19507:2;19487:18;;;19480:30;19546:34;19526:18;;;19519:62;-1:-1:-1;;;19597:18:1;;;19590:40;19647:19;;15583:148:0;19266:406:1;16688:152:0;16468:1;16746:7;;:19;16738:63;;;;-1:-1:-1;;;16738:63:0;;19879:2:1;16738:63:0;;;19861:21:1;19918:2;19898:18;;;19891:30;19957:33;19937:18;;;19930:61;20008:18;;16738:63:0;19677:355:1;16738:63:0;16468:1;16814:7;:18;16688:152::o;7056:229::-;7193:12;7225:52;7247:6;7255:4;7261:1;7264:12;7225:21;:52::i;:::-;7218:59;7056:229;-1:-1:-1;;;;7056:229:0:o;7657:612::-;7827:12;7899:5;7874:21;:30;;7852:118;;;;-1:-1:-1;;;7852:118:0;;20239:2:1;7852:118:0;;;20221:21:1;20278:2;20258:18;;;20251:30;20317:34;20297:18;;;20290:62;-1:-1:-1;;;20368:18:1;;;20361:36;20414:19;;7852:118:0;20037:402:1;7852:118:0;7982:12;7996:23;8023:6;-1:-1:-1;;;;;8023:11:0;8042:5;8063:4;8023:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7981:97;;;;8109:152;8154:6;8179:7;8205:10;8234:12;8109:26;:152::i;:::-;8089:172;7657:612;-1:-1:-1;;;;;;;7657:612:0:o;9773:477::-;9958:12;9987:7;9983:260;;;10015:10;:17;10036:1;10015:22;10011:123;;-1:-1:-1;;;;;26960:19:0;;;10058:60;;;;-1:-1:-1;;;10058:60:0;;20938:2:1;10058:60:0;;;20920:21:1;20977:2;20957:18;;;20950:30;21016:31;20996:18;;;20989:59;21065:18;;10058:60:0;20736:353:1;10058:60:0;-1:-1:-1;10155:10:0;10148:17;;9983:260;10198:33;10206:10;10218:12;10694:17;;:21;10690:299;;10837:10;10831:17;10894:15;10881:10;10877:2;10873:19;10866:44;10690:299;10964:12;10957:20;;-1:-1:-1;;;10957:20:0;;;;;;;;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:250::-;352:1;362:113;376:6;373:1;370:13;362:113;;;452:11;;;446:18;433:11;;;426:39;398:2;391:10;362:113;;;-1:-1:-1;;509:1:1;491:16;;484:27;267:250::o;522:396::-;671:2;660:9;653:21;634:4;703:6;697:13;746:6;741:2;730:9;726:18;719:34;762:79;834:6;829:2;818:9;814:18;809:2;801:6;797:15;762:79;:::i;:::-;902:2;881:15;-1:-1:-1;;877:29:1;862:45;;;;909:2;858:54;;522:396;-1:-1:-1;;522:396:1:o;923:131::-;-1:-1:-1;;;;;998:31:1;;988:42;;978:70;;1044:1;1041;1034:12;1059:315;1127:6;1135;1188:2;1176:9;1167:7;1163:23;1159:32;1156:52;;;1204:1;1201;1194:12;1156:52;1243:9;1230:23;1262:31;1287:5;1262:31;:::i;:::-;1312:5;1364:2;1349:18;;;;1336:32;;-1:-1:-1;;;1059:315:1:o;1987:118::-;2073:5;2066:13;2059:21;2052:5;2049:32;2039:60;;2095:1;2092;2085:12;2110:241;2166:6;2219:2;2207:9;2198:7;2194:23;2190:32;2187:52;;;2235:1;2232;2225:12;2187:52;2274:9;2261:23;2293:28;2315:5;2293:28;:::i;:::-;2340:5;2110:241;-1:-1:-1;;;2110:241:1:o;2356:456::-;2433:6;2441;2449;2502:2;2490:9;2481:7;2477:23;2473:32;2470:52;;;2518:1;2515;2508:12;2470:52;2557:9;2544:23;2576:31;2601:5;2576:31;:::i;:::-;2626:5;-1:-1:-1;2683:2:1;2668:18;;2655:32;2696:33;2655:32;2696:33;:::i;:::-;2356:456;;2748:7;;-1:-1:-1;;;2802:2:1;2787:18;;;;2774:32;;2356:456::o;3214:247::-;3273:6;3326:2;3314:9;3305:7;3301:23;3297:32;3294:52;;;3342:1;3339;3332:12;3294:52;3381:9;3368:23;3400:31;3425:5;3400:31;:::i;3466:180::-;3525:6;3578:2;3566:9;3557:7;3553:23;3549:32;3546:52;;;3594:1;3591;3584:12;3546:52;-1:-1:-1;3617:23:1;;3466:180;-1:-1:-1;3466:180:1:o;3651:382::-;3716:6;3724;3777:2;3765:9;3756:7;3752:23;3748:32;3745:52;;;3793:1;3790;3783:12;3745:52;3832:9;3819:23;3851:31;3876:5;3851:31;:::i;:::-;3901:5;-1:-1:-1;3958:2:1;3943:18;;3930:32;3971:30;3930:32;3971:30;:::i;:::-;4020:7;4010:17;;;3651:382;;;;;:::o;4038:388::-;4106:6;4114;4167:2;4155:9;4146:7;4142:23;4138:32;4135:52;;;4183:1;4180;4173:12;4135:52;4222:9;4209:23;4241:31;4266:5;4241:31;:::i;:::-;4291:5;-1:-1:-1;4348:2:1;4333:18;;4320:32;4361:33;4320:32;4361:33;:::i;4790:127::-;4851:10;4846:3;4842:20;4839:1;4832:31;4882:4;4879:1;4872:15;4906:4;4903:1;4896:15;4922:125;4987:9;;;5008:10;;;5005:36;;;5021:18;;:::i;5665:380::-;5744:1;5740:12;;;;5787;;;5808:61;;5862:4;5854:6;5850:17;5840:27;;5808:61;5915:2;5907:6;5904:14;5884:18;5881:38;5878:161;;5961:10;5956:3;5952:20;5949:1;5942:31;5996:4;5993:1;5986:15;6024:4;6021:1;6014:15;5878:161;;5665:380;;;:::o;7466:168::-;7539:9;;;7570;;7587:15;;;7581:22;;7567:37;7557:71;;7608:18;;:::i;10797:217::-;10837:1;10863;10853:132;;10907:10;10902:3;10898:20;10895:1;10888:31;10942:4;10939:1;10932:15;10970:4;10967:1;10960:15;10853:132;-1:-1:-1;10999:9:1;;10797:217::o;13033:184::-;13103:6;13156:2;13144:9;13135:7;13131:23;13127:32;13124:52;;;13172:1;13169;13162:12;13124:52;-1:-1:-1;13195:16:1;;13033:184;-1:-1:-1;13033:184:1:o;14749:401::-;14951:2;14933:21;;;14990:2;14970:18;;;14963:30;15029:34;15024:2;15009:18;;15002:62;-1:-1:-1;;;15095:2:1;15080:18;;15073:35;15140:3;15125:19;;14749:401::o;15155:399::-;15357:2;15339:21;;;15396:2;15376:18;;;15369:30;15435:34;15430:2;15415:18;;15408:62;-1:-1:-1;;;15501:2:1;15486:18;;15479:33;15544:3;15529:19;;15155:399::o;15559:128::-;15626:9;;;15647:11;;;15644:37;;;15661:18;;:::i;15824:127::-;15885:10;15880:3;15876:20;15873:1;15866:31;15916:4;15913:1;15906:15;15940:4;15937:1;15930:15;15956:251;16026:6;16079:2;16067:9;16058:7;16054:23;16050:32;16047:52;;;16095:1;16092;16085:12;16047:52;16127:9;16121:16;16146:31;16171:5;16146:31;:::i;16212:980::-;16474:4;16522:3;16511:9;16507:19;16553:6;16542:9;16535:25;16579:2;16617:6;16612:2;16601:9;16597:18;16590:34;16660:3;16655:2;16644:9;16640:18;16633:31;16684:6;16719;16713:13;16750:6;16742;16735:22;16788:3;16777:9;16773:19;16766:26;;16827:2;16819:6;16815:15;16801:29;;16848:1;16858:195;16872:6;16869:1;16866:13;16858:195;;;16937:13;;-1:-1:-1;;;;;16933:39:1;16921:52;;17028:15;;;;16993:12;;;;16969:1;16887:9;16858:195;;;-1:-1:-1;;;;;;;17109:32:1;;;;17104:2;17089:18;;17082:60;-1:-1:-1;;;17173:3:1;17158:19;17151:35;17070:3;16212:980;-1:-1:-1;;;16212:980:1:o;17809:306::-;17897:6;17905;17913;17966:2;17954:9;17945:7;17941:23;17937:32;17934:52;;;17982:1;17979;17972:12;17934:52;18011:9;18005:16;17995:26;;18061:2;18050:9;18046:18;18040:25;18030:35;;18105:2;18094:9;18090:18;18084:25;18074:35;;17809:306;;;;;:::o;19016:245::-;19083:6;19136:2;19124:9;19115:7;19111:23;19107:32;19104:52;;;19152:1;19149;19142:12;19104:52;19184:9;19178:16;19203:28;19225:5;19203:28;:::i;20444:287::-;20573:3;20611:6;20605:13;20627:66;20686:6;20681:3;20674:4;20666:6;20662:17;20627:66;:::i;:::-;20709:16;;;;;20444:287;-1:-1:-1;;20444:287:1:o

Swarm Source

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