ETH Price: $3,686.66 (+2.65%)

Token

ERC-20: Tits4Trump (TITS4T)
 

Overview

Max Total Supply

47,000,000,000 TITS4T

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 TITS4T

Value
$0.00
0x6db06a5337a0acf2d726ff006d25373682184f0f
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:
Tits4Trump

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-11-05
*/

// SPDX-License-Identifier: MIT

/* 
Generic taxable token with native currency and custom token recovery features.

Contract created by: Service Bridge https://serbridge.com/
SerBridge LinkTree with project updates https://linktr.ee/serbridge
*/

pragma solidity 0.8.17;

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

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

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

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

    function initialize(address, address) external;
}

interface IUniswapV3Factory {
    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;
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

}


contract ERC20 is Context, IERC20, IERC20Metadata {
    
    using SafeMath for uint256;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    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 recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, 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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

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

        return c;
    }


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

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

        return c;
    }


    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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


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

// Interface for Uniswap Router

interface IUniswapV3Router01 {
    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 IUniswapV3Router02 is IUniswapV3Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

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

    IUniswapV3Router02 public uniswapV3Router;
    address public uniswapV3Pair;
    bool private swapping;

    address public marketingWallet;

    uint256 public percentForMarketing = 100;
    bool public buyBackEnabled = false;

    uint256 public swapTokensAtAmount;

    bool public swapEnabled = true;

    uint256 public feeDivisor = 1000;

    uint256 public totalSellFees;
    uint256 public marketingSellFee;

    uint256 public totalBuyFees;
    uint256 public marketingBuyFee;

    uint256 private tokensForMarketing;

    mapping (address => bool) private _isExcludedFromFees;

    mapping (address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);


    constructor() ERC20("Tits4Trump", "TITS4T"){

        address newOwner = address(0xb18FA2F07F134231BE4aF981aAE368D83ec19388);

        // Total Supply minted once during deployment and never minted again | Set number in exact tokens
        uint256 totalSupply = 47000000000 * (10**18);

        // Tokens threshold for conversion event | Set number in exact tokens
        swapTokensAtAmount = 100000 * (10**18);

        // Contracts Sell fees in percents | Static values
        marketingSellFee = 30;
        totalSellFees = marketingSellFee;

        // Contracts Buy fees in percents | Static values
        marketingBuyFee = 30;
        totalBuyFees = marketingBuyFee;

        // Project Marketing Wallet | In case of compromise, updateable
        marketingWallet = address(0x9aDB7935B59920e691FAcB165bA1988337E6b292);

        IUniswapV3Router02 _uniswapV3Router = IUniswapV3Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        address _uniswapV3Pair = IUniswapV3Factory(_uniswapV3Router.factory())
            .createPair(address(this), _uniswapV3Router.WETH());

        uniswapV3Router = _uniswapV3Router;
        uniswapV3Pair = _uniswapV3Pair;

        _setAutomatedMarketMakerPair(_uniswapV3Pair, true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(address(newOwner), totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {

      }

    // Update contracts buy fees | Example percentages: 5 = 0.5% | 10 = 1% | 100 = 10%
    function updateBuyFees(uint256 _marketingFee) external onlyOwner {
        marketingBuyFee = _marketingFee;
        totalBuyFees = marketingBuyFee;
        require(totalBuyFees <= 350, "Must be equal or lower 35%");
    }

    // Update contracts sell fees | Example percentages: 5 = 0.5% | 10 = 1% | 100 = 10%
    function updateSellFees(uint256 _marketingFee) external onlyOwner {
        marketingSellFee = _marketingFee;
        totalSellFees = marketingSellFee;
        require(totalSellFees <= 350, "Must be equal or lower 35%");
    }

    // Change S.A.L token swap amounts | Set number in exact tokens to be swapped to native currency
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
          swapTokensAtAmount = newAmount * (10**18);
          return true;
      }


    // Exclude a wallet from fees | Not to be abused and only to be used for project wallets
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    // Exclude multiple wallets from fees | Not to be abused and only to be used for project wallets
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV3Pair, "The UniSwap pair cannot be removed from AutomatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    // Set a new project marketing wallet | In case of compromise | Security measurements
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        require(newMarketingWallet != address(0), "cannot set to 0 address");
        excludeFromFees(newMarketingWallet, true);
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function isExcludedFromFees(address account) public 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 &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;


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

        uint256 fees = 0;


        if(takeFee){

            if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount.mul(totalSellFees).div(feeDivisor);
                tokensForMarketing += fees * marketingSellFee / totalSellFees;
            }

            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
                fees = amount.mul(totalBuyFees).div(feeDivisor);
                tokensForMarketing += fees * marketingBuyFee / totalBuyFees;

                }


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

            amount -= fees;
        }

        super._transfer(from, to, amount);

    }

    function swapEthForNativeToken(uint256 ethAmount) private {
        if(ethAmount > 0){
            address[] memory path = new address[](2);
            path[0] = uniswapV3Router.WETH();
            path[1] = address(this);

            uniswapV3Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
                0,
                path,
                address(marketingWallet),
                block.timestamp
            );
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV3Router.WETH();

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

        uniswapV3Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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


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

    }

    // Sell pressure cancelation | Performs automatic purchases between sells

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        bool success;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

        if(buyBackEnabled){
            (success,) = address(marketingWallet).call{value: ethForMarketing * percentForMarketing / 100}("Automated BuyBack completed");
            swapEthForNativeToken(address(this).balance);
        } else {
            (success,) = address(marketingWallet).call{value: address(this).balance}("Success");
        }
    }

    // Recovery functions for stuck native balances and accidentally sent ERC20 tokens

    // Recover possible stuck ETH or other native currency from the contract
    function recoverStuckETH() external onlyOwner {
        (bool success,) = address(msg.sender).call{value: address(this).balance}("Stuck ETH balance from contract address recovered");
        require(success, "Failed. Either caller is not the owner or address is not the contract address");
    }

    // Recover possible stuck ERC20 tokens from the contract
    function recoverStuckTokens(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){
    return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    //Function for automated buyback settings if in use | Set in numbers. Higher the number, lower the buyback amount
    function changeBuyBackSettings(bool _buyBackEnabled, uint256 _percentForMarketing) external onlyOwner {
        require(_percentForMarketing <= 100, "Must be set below 100%");
        percentForMarketing = _percentForMarketing;
        buyBackEnabled = _buyBackEnabled;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_buyBackEnabled","type":"bool"},{"internalType":"uint256","name":"_percentForMarketing","type":"uint256"}],"name":"changeBuyBackSettings","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","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":"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":"percentForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"recoverStuckTokens","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV3Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV3Router","outputs":[{"internalType":"contract IUniswapV3Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526064600955600a805460ff19908116909155600c805490911660011790556103e8600d553480156200003557600080fd5b506040518060400160405280600a815260200169054697473345472756d760b41b8152506040518060400160405280600681526020016515125514cd1560d21b815250816003908162000089919062000757565b50600462000098828262000757565b5050506000620000ad6200034360201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002aaa833981519152908290a35069152d02c7e14af6800000600b55601e600f819055600e8190556011819055601055600880546001600160a01b031916739adb7935b59920e691facb165ba1988337e6b2921790556040805163c45a015560e01b8152905173b18fa2f07f134231be4af981aae368d83ec19388916b97dd7d2157478b2e9800000091737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048083019260209291908290030181865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d2919062000823565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000246919062000823565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba919062000823565b600680546001600160a01b038086166001600160a01b03199283161790925560078054928416929091169190911790559050620002f981600162000347565b620003068460016200039b565b620003133060016200039b565b6200032261dead60016200039b565b6200032e848462000449565b620003398462000545565b5050505062000870565b3390565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620003ea5760405162461bcd60e51b8152602060048201819052602482015260008051602062002a8a83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004a15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003e1565b620004bd816002546200064760201b6200110e1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620004f09183906200110e62000647821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005905760405162461bcd60e51b8152602060048201819052602482015260008051602062002a8a8339815191526044820152606401620003e1565b6001600160a01b038116620005f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620003e1565b6005546040516001600160a01b0380841692169060008051602062002aaa83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b6000806200065683856200084e565b905083811015620006aa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620003e1565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006de57607f821691505b602082108103620006ff57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200064257600081815260208120601f850160051c810160208610156200072e5750805b601f850160051c820191505b818110156200074f578281556001016200073a565b505050505050565b81516001600160401b03811115620007735762000773620006b3565b6200078b81620007848454620006c9565b8462000705565b602080601f831160018114620007c35760008415620007aa5750858301515b600019600386901b1c1916600185901b1785556200074f565b600085815260208120601f198616915b82811015620007f457888601518255948401946001909101908401620007d3565b5085821015620008135787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200083657600080fd5b81516001600160a01b0381168114620006aa57600080fd5b80820180821115620006ad57634e487b7160e01b600052601160045260246000fd5b61220a80620008806000396000f3fe6080604052600436106102295760003560e01c806395d89b4111610123578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e14610663578063e2f45605146106a9578063e7f444b3146106bf578063eba4c333146106d5578063f2fde38b146106f557600080fd5b8063c0246668146105cd578063c492f046146105ed578063c596f3fe1461060d578063d0a398141461062d578063d257b34f1461064357600080fd5b8063a457c2d7116100f2578063a457c2d714610527578063a9059cbb14610547578063aacebbe314610567578063b62496f514610587578063b9e93700146105b757600080fd5b806395d89b41146104c6578063984f02d3146104db5780639a36f932146104f15780639a7a23d61461050757600080fd5b80636053a0e3116101b157806371fc46881161017557806371fc46881461043357806375f0a8741461045357806381a164451461047357806388522998146104885780638da5cb5b146104a857600080fd5b80636053a0e31461039e57806368078952146103b85780636ddd1713146103ce57806370a08231146103e8578063715018a61461041e57600080fd5b80632c76d7a6116101f85780632c76d7a6146102cf578063313ce5671461030757806339509351146103235780633a919b6c146103435780634fbee1931461036557600080fd5b806306fdde0314610235578063095ea7b31461026057806318160ddd1461029057806323b872dd146102af57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610715565b6040516102579190611c5f565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611cc2565b6107a7565b6040519015158152602001610257565b34801561029c57600080fd5b506002545b604051908152602001610257565b3480156102bb57600080fd5b506102806102ca366004611cee565b6107be565b3480156102db57600080fd5b506006546102ef906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b34801561031357600080fd5b5060405160128152602001610257565b34801561032f57600080fd5b5061028061033e366004611cc2565b610827565b34801561034f57600080fd5b5061036361035e366004611d3d565b61085d565b005b34801561037157600080fd5b50610280610380366004611d5b565b6001600160a01b031660009081526013602052604090205460ff1690565b3480156103aa57600080fd5b50600a546102809060ff1681565b3480156103c457600080fd5b506102a160115481565b3480156103da57600080fd5b50600c546102809060ff1681565b3480156103f457600080fd5b506102a1610403366004611d5b565b6001600160a01b031660009081526020819052604090205490565b34801561042a57600080fd5b506103636108f0565b34801561043f57600080fd5b5061036361044e366004611d78565b610964565b34801561045f57600080fd5b506008546102ef906001600160a01b031681565b34801561047f57600080fd5b506103636109ed565b34801561049457600080fd5b506007546102ef906001600160a01b031681565b3480156104b457600080fd5b506005546001600160a01b03166102ef565b3480156104d257600080fd5b5061024a610b30565b3480156104e757600080fd5b506102a160095481565b3480156104fd57600080fd5b506102a1600d5481565b34801561051357600080fd5b50610363610522366004611d91565b610b3f565b34801561053357600080fd5b50610280610542366004611cc2565b610c05565b34801561055357600080fd5b50610280610562366004611cc2565b610c54565b34801561057357600080fd5b50610363610582366004611d5b565b610c61565b34801561059357600080fd5b506102806105a2366004611d5b565b60146020526000908152604090205460ff1681565b3480156105c357600080fd5b506102a160105481565b3480156105d957600080fd5b506103636105e8366004611d91565b610d49565b3480156105f957600080fd5b50610363610608366004611dca565b610dd2565b34801561061957600080fd5b50610280610628366004611cc2565b610eae565b34801561063957600080fd5b506102a1600e5481565b34801561064f57600080fd5b5061028061065e366004611d78565b610f53565b34801561066f57600080fd5b506102a161067e366004611e50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102a1600b5481565b3480156106cb57600080fd5b506102a1600f5481565b3480156106e157600080fd5b506103636106f0366004611d78565b610f9d565b34801561070157600080fd5b50610363610710366004611d5b565b611023565b60606003805461072490611e7e565b80601f016020809104026020016040519081016040528092919081815260200182805461075090611e7e565b801561079d5780601f106107725761010080835404028352916020019161079d565b820191906000526020600020905b81548152906001019060200180831161078057829003601f168201915b5050505050905090565b60006107b433848461116d565b5060015b92915050565b60006107cb848484611292565b61081d843361081885604051806060016040528060288152602001612188602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611568565b61116d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b4918590610818908661110e565b6005546001600160a01b031633146108905760405162461bcd60e51b815260040161088790611eb8565b60405180910390fd5b60648111156108da5760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610887565b600955600a805460ff1916911515919091179055565b6005546001600160a01b0316331461091a5760405162461bcd60e51b815260040161088790611eb8565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b815260040161088790611eb8565b6011819055601081905561015e8111156109ea5760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610887565b50565b6005546001600160a01b03163314610a175760405162461bcd60e51b815260040161088790611eb8565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610a9e576040519150601f19603f3d011682016040523d82523d6000602084013e610aa3565b606091505b50509050806109ea5760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610887565b60606004805461072490611e7e565b6005546001600160a01b03163314610b695760405162461bcd60e51b815260040161088790611eb8565b6007546001600160a01b0390811690831603610bf75760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610887565b610c0182826115a2565b5050565b60006107b43384610818856040518060600160405280602581526020016121b0602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611568565b60006107b4338484611292565b6005546001600160a01b03163314610c8b5760405162461bcd60e51b815260040161088790611eb8565b6001600160a01b038116610ce15760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610887565b610cec816001610d49565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d735760405162461bcd60e51b815260040161088790611eb8565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161088790611eb8565b60005b82811015610e6d578160136000868685818110610e1e57610e1e611eed565b9050602002016020810190610e339190611d5b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e6581611f19565b915050610dff565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610ea193929190611f32565b60405180910390a1505050565b6005546000906001600160a01b03163314610edb5760405162461bcd60e51b815260040161088790611eb8565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c9190611f8b565b9392505050565b6005546000906001600160a01b03163314610f805760405162461bcd60e51b815260040161088790611eb8565b610f9282670de0b6b3a7640000611fa8565b600b55506001919050565b6005546001600160a01b03163314610fc75760405162461bcd60e51b815260040161088790611eb8565b600f819055600e81905561015e8111156109ea5760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610887565b6005546001600160a01b0316331461104d5760405162461bcd60e51b815260040161088790611eb8565b6001600160a01b0381166110b25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610887565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061111b8385611fbf565b905083811015610f4c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610887565b6001600160a01b0383166111cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610887565b6001600160a01b0382166112305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610887565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112b85760405162461bcd60e51b815260040161088790611fd2565b6001600160a01b0382166112de5760405162461bcd60e51b815260040161088790612017565b806000036112f7576112f2838360006115f6565b505050565b30600090815260208190526040902054600b548110801590819061131d5750600c5460ff165b80156113335750600754600160a01b900460ff16155b801561135857506001600160a01b03851660009081526014602052604090205460ff16155b801561137d57506001600160a01b03851660009081526013602052604090205460ff16155b80156113a257506001600160a01b03841660009081526013602052604090205460ff16155b156113d0576007805460ff60a01b1916600160a01b1790556113c26116ff565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526013602052604090205460ff600160a01b90920482161591168061141e57506001600160a01b03851660009081526013602052604090205460ff165b15611427575060005b60008115611554576001600160a01b03861660009081526014602052604090205460ff16801561145957506000600e54115b156114b85761147f600d54611479600e548861188590919063ffffffff16565b90611907565b9050600e54600f54826114929190611fa8565b61149c919061205a565b601260008282546114ad9190611fbf565b909155506115369050565b6001600160a01b03871660009081526014602052604090205460ff1680156114e257506000601054115b1561153657611502600d546114796010548861188590919063ffffffff16565b9050601054601154826115159190611fa8565b61151f919061205a565b601260008282546115309190611fbf565b90915550505b8015611547576115478730836115f6565b611551818661207c565b94505b61155f8787876115f6565b50505050505050565b6000818484111561158c5760405162461bcd60e51b81526004016108879190611c5f565b506000611599848661207c565b95945050505050565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661161c5760405162461bcd60e51b815260040161088790611fd2565b6001600160a01b0382166116425760405162461bcd60e51b815260040161088790612017565b61167f81604051806060016040528060268152602001612162602691396001600160a01b0386166000908152602081905260409020549190611568565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546116ae908261110e565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611285565b3060009081526020819052604090205460125481158061171d575080155b15611726575050565b60004761173284611949565b600061173e4783611a9b565b9050600061175b856114796012548561188590919063ffffffff16565b600a5490915060ff1615611811576008546009546001600160a01b03909116906064906117889084611fa8565b611792919061205a565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d80600081146117f8576040519150601f19603f3d011682016040523d82523d6000602084013e6117fd565b606091505b50508094505061180c47611add565b61187d565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611872576040519150601f19603f3d011682016040523d82523d6000602084013e611877565b606091505b50909450505b505050505050565b600082600003611897575060006107b8565b60006118a38385611fa8565b9050826118b0858361205a565b14610f4c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610887565b6000610f4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c31565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061197e5761197e611eed565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb919061208f565b81600181518110611a0e57611a0e611eed565b6001600160a01b039283166020918202929092010152600654611a34913091168461116d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a6d9085906000908690309042906004016120f0565b600060405180830381600087803b158015611a8757600080fd5b505af115801561187d573d6000803e3d6000fd5b6000610f4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611568565b80156109ea576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b71919061208f565b81600081518110611b8457611b84611eed565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bb857611bb8611eed565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611c0492600092889290911690429060040161212c565b6000604051808303818588803b158015611c1d57600080fd5b505af115801561155f573d6000803e3d6000fd5b60008183611c525760405162461bcd60e51b81526004016108879190611c5f565b506000611599848661205a565b600060208083528351808285015260005b81811015611c8c57858101830151858201604001528201611c70565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109ea57600080fd5b60008060408385031215611cd557600080fd5b8235611ce081611cad565b946020939093013593505050565b600080600060608486031215611d0357600080fd5b8335611d0e81611cad565b92506020840135611d1e81611cad565b929592945050506040919091013590565b80151581146109ea57600080fd5b60008060408385031215611d5057600080fd5b8235611ce081611d2f565b600060208284031215611d6d57600080fd5b8135610f4c81611cad565b600060208284031215611d8a57600080fd5b5035919050565b60008060408385031215611da457600080fd5b8235611daf81611cad565b91506020830135611dbf81611d2f565b809150509250929050565b600080600060408486031215611ddf57600080fd5b833567ffffffffffffffff80821115611df757600080fd5b818601915086601f830112611e0b57600080fd5b813581811115611e1a57600080fd5b8760208260051b8501011115611e2f57600080fd5b60209283019550935050840135611e4581611d2f565b809150509250925092565b60008060408385031215611e6357600080fd5b8235611e6e81611cad565b91506020830135611dbf81611cad565b600181811c90821680611e9257607f821691505b602082108103611eb257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611f2b57611f2b611f03565b5060010190565b6040808252810183905260008460608301825b86811015611f75578235611f5881611cad565b6001600160a01b0316825260209283019290910190600101611f45565b5080925050508215156020830152949350505050565b600060208284031215611f9d57600080fd5b8151610f4c81611d2f565b80820281158282048414176107b8576107b8611f03565b808201808211156107b8576107b8611f03565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008261207757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107b8576107b8611f03565b6000602082840312156120a157600080fd5b8151610f4c81611cad565b600081518084526020808501945080840160005b838110156120e55781516001600160a01b0316875295820195908201906001016120c0565b509495945050505050565b85815284602082015260a06040820152600061210f60a08301866120ac565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600061214560808301866120ac565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220148a70d36208cf111f2e9c41d644e41762045e34928d8bda16795e2c9be7003464736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102295760003560e01c806395d89b4111610123578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e14610663578063e2f45605146106a9578063e7f444b3146106bf578063eba4c333146106d5578063f2fde38b146106f557600080fd5b8063c0246668146105cd578063c492f046146105ed578063c596f3fe1461060d578063d0a398141461062d578063d257b34f1461064357600080fd5b8063a457c2d7116100f2578063a457c2d714610527578063a9059cbb14610547578063aacebbe314610567578063b62496f514610587578063b9e93700146105b757600080fd5b806395d89b41146104c6578063984f02d3146104db5780639a36f932146104f15780639a7a23d61461050757600080fd5b80636053a0e3116101b157806371fc46881161017557806371fc46881461043357806375f0a8741461045357806381a164451461047357806388522998146104885780638da5cb5b146104a857600080fd5b80636053a0e31461039e57806368078952146103b85780636ddd1713146103ce57806370a08231146103e8578063715018a61461041e57600080fd5b80632c76d7a6116101f85780632c76d7a6146102cf578063313ce5671461030757806339509351146103235780633a919b6c146103435780634fbee1931461036557600080fd5b806306fdde0314610235578063095ea7b31461026057806318160ddd1461029057806323b872dd146102af57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610715565b6040516102579190611c5f565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611cc2565b6107a7565b6040519015158152602001610257565b34801561029c57600080fd5b506002545b604051908152602001610257565b3480156102bb57600080fd5b506102806102ca366004611cee565b6107be565b3480156102db57600080fd5b506006546102ef906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b34801561031357600080fd5b5060405160128152602001610257565b34801561032f57600080fd5b5061028061033e366004611cc2565b610827565b34801561034f57600080fd5b5061036361035e366004611d3d565b61085d565b005b34801561037157600080fd5b50610280610380366004611d5b565b6001600160a01b031660009081526013602052604090205460ff1690565b3480156103aa57600080fd5b50600a546102809060ff1681565b3480156103c457600080fd5b506102a160115481565b3480156103da57600080fd5b50600c546102809060ff1681565b3480156103f457600080fd5b506102a1610403366004611d5b565b6001600160a01b031660009081526020819052604090205490565b34801561042a57600080fd5b506103636108f0565b34801561043f57600080fd5b5061036361044e366004611d78565b610964565b34801561045f57600080fd5b506008546102ef906001600160a01b031681565b34801561047f57600080fd5b506103636109ed565b34801561049457600080fd5b506007546102ef906001600160a01b031681565b3480156104b457600080fd5b506005546001600160a01b03166102ef565b3480156104d257600080fd5b5061024a610b30565b3480156104e757600080fd5b506102a160095481565b3480156104fd57600080fd5b506102a1600d5481565b34801561051357600080fd5b50610363610522366004611d91565b610b3f565b34801561053357600080fd5b50610280610542366004611cc2565b610c05565b34801561055357600080fd5b50610280610562366004611cc2565b610c54565b34801561057357600080fd5b50610363610582366004611d5b565b610c61565b34801561059357600080fd5b506102806105a2366004611d5b565b60146020526000908152604090205460ff1681565b3480156105c357600080fd5b506102a160105481565b3480156105d957600080fd5b506103636105e8366004611d91565b610d49565b3480156105f957600080fd5b50610363610608366004611dca565b610dd2565b34801561061957600080fd5b50610280610628366004611cc2565b610eae565b34801561063957600080fd5b506102a1600e5481565b34801561064f57600080fd5b5061028061065e366004611d78565b610f53565b34801561066f57600080fd5b506102a161067e366004611e50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102a1600b5481565b3480156106cb57600080fd5b506102a1600f5481565b3480156106e157600080fd5b506103636106f0366004611d78565b610f9d565b34801561070157600080fd5b50610363610710366004611d5b565b611023565b60606003805461072490611e7e565b80601f016020809104026020016040519081016040528092919081815260200182805461075090611e7e565b801561079d5780601f106107725761010080835404028352916020019161079d565b820191906000526020600020905b81548152906001019060200180831161078057829003601f168201915b5050505050905090565b60006107b433848461116d565b5060015b92915050565b60006107cb848484611292565b61081d843361081885604051806060016040528060288152602001612188602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611568565b61116d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b4918590610818908661110e565b6005546001600160a01b031633146108905760405162461bcd60e51b815260040161088790611eb8565b60405180910390fd5b60648111156108da5760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610887565b600955600a805460ff1916911515919091179055565b6005546001600160a01b0316331461091a5760405162461bcd60e51b815260040161088790611eb8565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b815260040161088790611eb8565b6011819055601081905561015e8111156109ea5760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610887565b50565b6005546001600160a01b03163314610a175760405162461bcd60e51b815260040161088790611eb8565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610a9e576040519150601f19603f3d011682016040523d82523d6000602084013e610aa3565b606091505b50509050806109ea5760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610887565b60606004805461072490611e7e565b6005546001600160a01b03163314610b695760405162461bcd60e51b815260040161088790611eb8565b6007546001600160a01b0390811690831603610bf75760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610887565b610c0182826115a2565b5050565b60006107b43384610818856040518060600160405280602581526020016121b0602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611568565b60006107b4338484611292565b6005546001600160a01b03163314610c8b5760405162461bcd60e51b815260040161088790611eb8565b6001600160a01b038116610ce15760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610887565b610cec816001610d49565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d735760405162461bcd60e51b815260040161088790611eb8565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610dfc5760405162461bcd60e51b815260040161088790611eb8565b60005b82811015610e6d578160136000868685818110610e1e57610e1e611eed565b9050602002016020810190610e339190611d5b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e6581611f19565b915050610dff565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610ea193929190611f32565b60405180910390a1505050565b6005546000906001600160a01b03163314610edb5760405162461bcd60e51b815260040161088790611eb8565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c9190611f8b565b9392505050565b6005546000906001600160a01b03163314610f805760405162461bcd60e51b815260040161088790611eb8565b610f9282670de0b6b3a7640000611fa8565b600b55506001919050565b6005546001600160a01b03163314610fc75760405162461bcd60e51b815260040161088790611eb8565b600f819055600e81905561015e8111156109ea5760405162461bcd60e51b815260206004820152601a60248201527f4d75737420626520657175616c206f72206c6f776572203335250000000000006044820152606401610887565b6005546001600160a01b0316331461104d5760405162461bcd60e51b815260040161088790611eb8565b6001600160a01b0381166110b25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610887565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061111b8385611fbf565b905083811015610f4c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610887565b6001600160a01b0383166111cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610887565b6001600160a01b0382166112305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610887565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112b85760405162461bcd60e51b815260040161088790611fd2565b6001600160a01b0382166112de5760405162461bcd60e51b815260040161088790612017565b806000036112f7576112f2838360006115f6565b505050565b30600090815260208190526040902054600b548110801590819061131d5750600c5460ff165b80156113335750600754600160a01b900460ff16155b801561135857506001600160a01b03851660009081526014602052604090205460ff16155b801561137d57506001600160a01b03851660009081526013602052604090205460ff16155b80156113a257506001600160a01b03841660009081526013602052604090205460ff16155b156113d0576007805460ff60a01b1916600160a01b1790556113c26116ff565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526013602052604090205460ff600160a01b90920482161591168061141e57506001600160a01b03851660009081526013602052604090205460ff165b15611427575060005b60008115611554576001600160a01b03861660009081526014602052604090205460ff16801561145957506000600e54115b156114b85761147f600d54611479600e548861188590919063ffffffff16565b90611907565b9050600e54600f54826114929190611fa8565b61149c919061205a565b601260008282546114ad9190611fbf565b909155506115369050565b6001600160a01b03871660009081526014602052604090205460ff1680156114e257506000601054115b1561153657611502600d546114796010548861188590919063ffffffff16565b9050601054601154826115159190611fa8565b61151f919061205a565b601260008282546115309190611fbf565b90915550505b8015611547576115478730836115f6565b611551818661207c565b94505b61155f8787876115f6565b50505050505050565b6000818484111561158c5760405162461bcd60e51b81526004016108879190611c5f565b506000611599848661207c565b95945050505050565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661161c5760405162461bcd60e51b815260040161088790611fd2565b6001600160a01b0382166116425760405162461bcd60e51b815260040161088790612017565b61167f81604051806060016040528060268152602001612162602691396001600160a01b0386166000908152602081905260409020549190611568565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546116ae908261110e565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611285565b3060009081526020819052604090205460125481158061171d575080155b15611726575050565b60004761173284611949565b600061173e4783611a9b565b9050600061175b856114796012548561188590919063ffffffff16565b600a5490915060ff1615611811576008546009546001600160a01b03909116906064906117889084611fa8565b611792919061205a565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d80600081146117f8576040519150601f19603f3d011682016040523d82523d6000602084013e6117fd565b606091505b50508094505061180c47611add565b61187d565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611872576040519150601f19603f3d011682016040523d82523d6000602084013e611877565b606091505b50909450505b505050505050565b600082600003611897575060006107b8565b60006118a38385611fa8565b9050826118b0858361205a565b14610f4c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610887565b6000610f4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c31565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061197e5761197e611eed565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb919061208f565b81600181518110611a0e57611a0e611eed565b6001600160a01b039283166020918202929092010152600654611a34913091168461116d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a6d9085906000908690309042906004016120f0565b600060405180830381600087803b158015611a8757600080fd5b505af115801561187d573d6000803e3d6000fd5b6000610f4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611568565b80156109ea576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b71919061208f565b81600081518110611b8457611b84611eed565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bb857611bb8611eed565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611c0492600092889290911690429060040161212c565b6000604051808303818588803b158015611c1d57600080fd5b505af115801561155f573d6000803e3d6000fd5b60008183611c525760405162461bcd60e51b81526004016108879190611c5f565b506000611599848661205a565b600060208083528351808285015260005b81811015611c8c57858101830151858201604001528201611c70565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109ea57600080fd5b60008060408385031215611cd557600080fd5b8235611ce081611cad565b946020939093013593505050565b600080600060608486031215611d0357600080fd5b8335611d0e81611cad565b92506020840135611d1e81611cad565b929592945050506040919091013590565b80151581146109ea57600080fd5b60008060408385031215611d5057600080fd5b8235611ce081611d2f565b600060208284031215611d6d57600080fd5b8135610f4c81611cad565b600060208284031215611d8a57600080fd5b5035919050565b60008060408385031215611da457600080fd5b8235611daf81611cad565b91506020830135611dbf81611d2f565b809150509250929050565b600080600060408486031215611ddf57600080fd5b833567ffffffffffffffff80821115611df757600080fd5b818601915086601f830112611e0b57600080fd5b813581811115611e1a57600080fd5b8760208260051b8501011115611e2f57600080fd5b60209283019550935050840135611e4581611d2f565b809150509250925092565b60008060408385031215611e6357600080fd5b8235611e6e81611cad565b91506020830135611dbf81611cad565b600181811c90821680611e9257607f821691505b602082108103611eb257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611f2b57611f2b611f03565b5060010190565b6040808252810183905260008460608301825b86811015611f75578235611f5881611cad565b6001600160a01b0316825260209283019290910190600101611f45565b5080925050508215156020830152949350505050565b600060208284031215611f9d57600080fd5b8151610f4c81611d2f565b80820281158282048414176107b8576107b8611f03565b808201808211156107b8576107b8611f03565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008261207757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107b8576107b8611f03565b6000602082840312156120a157600080fd5b8151610f4c81611cad565b600081518084526020808501945080840160005b838110156120e55781516001600160a01b0316875295820195908201906001016120c0565b509495945050505050565b85815284602082015260a06040820152600061210f60a08301866120ac565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600061214560808301866120ac565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220148a70d36208cf111f2e9c41d644e41762045e34928d8bda16795e2c9be7003464736f6c63430008110033

Deployed Bytecode Sourcemap

15653:10515:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4880:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5794:169;;;;;;;;;;-1:-1:-1;5794:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5794:169:0;1023:187:1;5201:108:0;;;;;;;;;;-1:-1:-1;5289:12:0;;5201:108;;;1361:25:1;;;1349:2;1334:18;5201:108:0;1215:177:1;5971:355:0;;;;;;;;;;-1:-1:-1;5971:355:0;;;;;:::i;:::-;;:::i;15733:41::-;;;;;;;;;;-1:-1:-1;15733:41:0;;;;-1:-1:-1;;;;;15733:41:0;;;;;;-1:-1:-1;;;;;2049:32:1;;;2031:51;;2019:2;2004:18;15733:41:0;1858:230:1;5100:93:0;;;;;;;;;;-1:-1:-1;5100:93:0;;5183:2;2235:36:1;;2223:2;2208:18;5100:93:0;2093:184:1;6334:218:0;;;;;;;;;;-1:-1:-1;6334:218:0;;;;;:::i;:::-;;:::i;25886:279::-;;;;;;;;;;-1:-1:-1;25886:279:0;;;;;:::i;:::-;;:::i;:::-;;20836:125;;;;;;;;;;-1:-1:-1;20836:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;20925:28:0;20901:4;20925:28;;;:19;:28;;;;;;;;;20836:125;15932:34;;;;;;;;;;-1:-1:-1;15932:34:0;;;;;;;;16206:30;;;;;;;;;;;;;;;;16017;;;;;;;;;;-1:-1:-1;16017:30:0;;;;;;;;5317:127;;;;;;;;;;-1:-1:-1;5317:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5418:18:0;5391:7;5418:18;;;;;;;;;;;;5317:127;10346:150;;;;;;;;;;;;;:::i;18398:225::-;;;;;;;;;;-1:-1:-1;18398:225:0;;;;;:::i;:::-;;:::i;15846:30::-;;;;;;;;;;-1:-1:-1;15846:30:0;;;;-1:-1:-1;;;;;15846:30:0;;;25214:298;;;;;;;;;;;;;:::i;15781:28::-;;;;;;;;;;-1:-1:-1;15781:28:0;;;;-1:-1:-1;;;;;15781:28:0;;;10132:79;;;;;;;;;;-1:-1:-1;10197:6:0;;-1:-1:-1;;;;;10197:6:0;10132:79;;4988:104;;;;;;;;;;;;;:::i;15885:40::-;;;;;;;;;;;;;;;;16056:32;;;;;;;;;;;;;;;;19946:250;;;;;;;;;;-1:-1:-1;19946:250:0;;;;;:::i;:::-;;:::i;6560:269::-;;;;;;;;;;-1:-1:-1;6560:269:0;;;;;:::i;:::-;;:::i;5452:175::-;;;;;;;;;;-1:-1:-1;5452:175:0;;;;;:::i;:::-;;:::i;20489:339::-;;;;;;;;;;-1:-1:-1;20489:339:0;;;;;:::i;:::-;;:::i;16350:58::-;;;;;;;;;;-1:-1:-1;16350:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16172:27;;;;;;;;;;;;;;;;19338:184;;;;;;;;;;-1:-1:-1;19338:184:0;;;;;:::i;:::-;;:::i;19632:306::-;;;;;;;;;;-1:-1:-1;19632:306:0;;;;;:::i;:::-;;:::i;25582:177::-;;;;;;;;;;-1:-1:-1;25582:177:0;;;;;:::i;:::-;;:::i;16097:28::-;;;;;;;;;;;;;;;;19060:174;;;;;;;;;;-1:-1:-1;19060:174:0;;;;;:::i;:::-;;:::i;5635:151::-;;;;;;;;;;-1:-1:-1;5635:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5751:18:0;;;5724:7;5751:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5635:151;15975:33;;;;;;;;;;;;;;;;16132:31;;;;;;;;;;;;;;;;18720:230;;;;;;;;;;-1:-1:-1;18720:230:0;;;;;:::i;:::-;;:::i;10506:244::-;;;;;;;;;;-1:-1:-1;10506:244:0;;;;;:::i;:::-;;:::i;4880:100::-;4934:13;4967:5;4960:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4880:100;:::o;5794:169::-;5877:4;5894:39;397:10;5917:7;5926:6;5894:8;:39::i;:::-;-1:-1:-1;5951:4:0;5794:169;;;;;:::o;5971:355::-;6111:4;6128:36;6138:6;6146:9;6157:6;6128:9;:36::i;:::-;6175:121;6184:6;397:10;6206:89;6244:6;6206:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6206:19:0;;;;;;:11;:19;;;;;;;;397:10;6206:33;;;;;;;;;;:37;:89::i;:::-;6175:8;:121::i;:::-;-1:-1:-1;6314:4:0;5971:355;;;;;:::o;6334:218::-;397:10;6422:4;6471:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6471:34:0;;;;;;;;;;6422:4;;6439:83;;6462:7;;6471:50;;6510:10;6471:38;:50::i;25886:279::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;;;;;;;;;26031:3:::1;26007:20;:27;;25999:62;;;::::0;-1:-1:-1;;;25999:62:0;;5847:2:1;25999:62:0::1;::::0;::::1;5829:21:1::0;5886:2;5866:18;;;5859:30;-1:-1:-1;;;5905:18:1;;;5898:52;5967:18;;25999:62:0::1;5645:346:1::0;25999:62:0::1;26072:19;:42:::0;26125:14:::1;:32:::0;;-1:-1:-1;;26125:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25886:279::o;10346:150::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;10439:6:::1;::::0;10418:40:::1;::::0;10455:1:::1;::::0;-1:-1:-1;;;;;10439:6:0::1;::::0;10418:40:::1;::::0;10455:1;;10418:40:::1;10469:6;:19:::0;;-1:-1:-1;;;;;;10469:19:0::1;::::0;;10346:150::o;18398:225::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;18474:15:::1;:31:::0;;;18516:12:::1;:30:::0;;;18581:3:::1;18565:19:::0;::::1;;18557:58;;;::::0;-1:-1:-1;;;18557:58:0;;6198:2:1;18557:58:0::1;::::0;::::1;6180:21:1::0;6237:2;6217:18;;;6210:30;6276:28;6256:18;;;6249:56;6322:18;;18557:58:0::1;5996:350:1::0;18557:58:0::1;18398:225:::0;:::o;25214:298::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;25289:107:::1;::::0;6564:34:1;6552:47;;-1:-1:-1;;;6624:2:1;6615:12;;6608:41;25272:12:0::1;::::0;25297:10:::1;::::0;25321:21:::1;::::0;6674:2:1;6665:12;25289:107:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25271:125;;;25415:7;25407:97;;;::::0;-1:-1:-1;;;25407:97:0;;6890:2:1;25407:97:0::1;::::0;::::1;6872:21:1::0;6929:2;6909:18;;;6902:30;6968:34;6948:18;;;6941:62;7039:34;7019:18;;;7012:62;-1:-1:-1;;;7090:19:1;;;7083:44;7144:19;;25407:97:0::1;6688:481:1::0;4988:104:0;5044:13;5077:7;5070:14;;;;;:::i;19946:250::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;20053:13:::1;::::0;-1:-1:-1;;;;;20053:13:0;;::::1;20045:21:::0;;::::1;::::0;20037:99:::1;;;::::0;-1:-1:-1;;;20037:99:0;;7376:2:1;20037:99:0::1;::::0;::::1;7358:21:1::0;7415:2;7395:18;;;7388:30;7454:34;7434:18;;;7427:62;7525:34;7505:18;;;7498:62;-1:-1:-1;;;7576:19:1;;;7569:32;7618:19;;20037:99:0::1;7174:469:1::0;20037:99:0::1;20147:41;20176:4;20182:5;20147:28;:41::i;:::-;19946:250:::0;;:::o;6560:269::-;6653:4;6670:129;397:10;6693:7;6702:96;6741:15;6702:96;;;;;;;;;;;;;;;;;397:10;6702:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6702:34:0;;;;;;;;;;;;:38;:96::i;5452:175::-;5538:4;5555:42;397:10;5579:9;5590:6;5555:9;:42::i;20489:339::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20586:32:0;::::1;20578:68;;;::::0;-1:-1:-1;;;20578:68:0;;7850:2:1;20578:68:0::1;::::0;::::1;7832:21:1::0;7889:2;7869:18;;;7862:30;7928:25;7908:18;;;7901:53;7971:18;;20578:68:0::1;7648:347:1::0;20578:68:0::1;20657:41;20673:18;20693:4;20657:15;:41::i;:::-;20757:15;::::0;20714:59:::1;::::0;-1:-1:-1;;;;;20757:15:0;;::::1;::::0;20714:59;::::1;::::0;::::1;::::0;20757:15:::1;::::0;20714:59:::1;20784:15;:36:::0;;-1:-1:-1;;;;;;20784:36:0::1;-1:-1:-1::0;;;;;20784:36:0;;;::::1;::::0;;;::::1;::::0;;20489:339::o;19338:184::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19423:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19423:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19480:34;;1163:41:1;;;19480:34:0::1;::::0;1136:18:1;19480:34:0::1;;;;;;;19338:184:::0;;:::o;19632:306::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;19751:9:::1;19747:115;19766:19:::0;;::::1;19747:115;;;19842:8;19807:19;:32;19827:8;;19836:1;19827:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19807:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19807:32:0;:43;;-1:-1:-1;;19807:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19787:3;::::1;::::0;::::1;:::i;:::-;;;;19747:115;;;;19879:51;19911:8;;19921;19879:51;;;;;;;;:::i;:::-;;;;;;;;19632:306:::0;;;:::o;25582:177::-;10259:6;;25676:12;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;25703:48:::1;::::0;-1:-1:-1;;;25703:48:0;;25732:10:::1;25703:48;::::0;::::1;9377:51:1::0;9444:18;;;9437:34;;;-1:-1:-1;;;;;25703:28:0;::::1;::::0;::::1;::::0;9350:18:1;;25703:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25696:55:::0;25582:177;-1:-1:-1;;;25582:177:0:o;19060:174::-;10259:6;;19141:4;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;19180:20:::1;:9:::0;19193:6:::1;19180:20;:::i;:::-;19159:18;:41:::0;-1:-1:-1;19220:4:0::1;19060:174:::0;;;:::o;18720:230::-;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;18797:16:::1;:32:::0;;;18840:13:::1;:32:::0;;;18908:3:::1;18891:20:::0;::::1;;18883:59;;;::::0;-1:-1:-1;;;18883:59:0;;6198:2:1;18883:59:0::1;::::0;::::1;6180:21:1::0;6237:2;6217:18;;;6210:30;6276:28;6256:18;;;6249:56;6322:18;;18883:59:0::1;5996:350:1::0;10506:244:0;10259:6;;-1:-1:-1;;;;;10259:6:0;397:10;10259:22;10251:67;;;;-1:-1:-1;;;10251:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10595:22:0;::::1;10587:73;;;::::0;-1:-1:-1;;;10587:73:0;;10107:2:1;10587:73:0::1;::::0;::::1;10089:21:1::0;10146:2;10126:18;;;10119:30;10185:34;10165:18;;;10158:62;-1:-1:-1;;;10236:18:1;;;10229:36;10282:19;;10587:73:0::1;9905:402:1::0;10587:73:0::1;10697:6;::::0;10676:38:::1;::::0;-1:-1:-1;;;;;10676:38:0;;::::1;::::0;10697:6:::1;::::0;10676:38:::1;::::0;10697:6:::1;::::0;10676:38:::1;10725:6;:17:::0;;-1:-1:-1;;;;;;10725:17:0::1;-1:-1:-1::0;;;;;10725:17:0;;;::::1;::::0;;;::::1;::::0;;10506:244::o;8365:181::-;8423:7;;8455:5;8459:1;8455;:5;:::i;:::-;8443:17;;8484:1;8479;:6;;8471:46;;;;-1:-1:-1;;;8471:46:0;;10644:2:1;8471:46:0;;;10626:21:1;10683:2;10663:18;;;10656:30;10722:29;10702:18;;;10695:57;10769:18;;8471:46:0;10442:351:1;7819:380:0;-1:-1:-1;;;;;7955:19:0;;7947:68;;;;-1:-1:-1;;;7947:68:0;;11000:2:1;7947:68:0;;;10982:21:1;11039:2;11019:18;;;11012:30;11078:34;11058:18;;;11051:62;-1:-1:-1;;;11129:18:1;;;11122:34;11173:19;;7947:68:0;10798:400:1;7947:68:0;-1:-1:-1;;;;;8034:21:0;;8026:68;;;;-1:-1:-1;;;8026:68:0;;11405:2:1;8026:68:0;;;11387:21:1;11444:2;11424:18;;;11417:30;11483:34;11463:18;;;11456:62;-1:-1:-1;;;11534:18:1;;;11527:32;11576:19;;8026:68:0;11203:398:1;8026:68:0;-1:-1:-1;;;;;8107:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8159:32;;1361:25:1;;;8159:32:0;;1334:18:1;8159:32:0;;;;;;;;7819:380;;;:::o;20969:1730::-;-1:-1:-1;;;;;21101:18:0;;21093:68;;;;-1:-1:-1;;;21093:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21180:16:0;;21172:64;;;;-1:-1:-1;;;21172:64:0;;;;;;;:::i;:::-;21253:6;21263:1;21253:11;21250:92;;21281:28;21297:4;21303:2;21307:1;21281:15;:28::i;:::-;20969:1730;;;:::o;21250:92::-;21403:4;21354:28;5418:18;;;;;;;;;;;21461;;21437:42;;;;;;;21509:35;;-1:-1:-1;21533:11:0;;;;21509:35;:61;;;;-1:-1:-1;21562:8:0;;-1:-1:-1;;;21562:8:0;;;;21561:9;21509:61;:110;;;;-1:-1:-1;;;;;;21588:31:0;;;;;;:25;:31;;;;;;;;21587:32;21509:110;:153;;;;-1:-1:-1;;;;;;21637:25:0;;;;;;:19;:25;;;;;;;;21636:26;21509:153;:194;;;;-1:-1:-1;;;;;;21680:23:0;;;;;;:19;:23;;;;;;;;21679:24;21509:194;21492:321;;;21730:8;:15;;-1:-1:-1;;;;21730:15:0;-1:-1:-1;;;21730:15:0;;;21760:10;:8;:10::i;:::-;21785:8;:16;;-1:-1:-1;;;;21785:16:0;;;21492:321;21841:8;;-1:-1:-1;;;;;21867:25:0;;21825:12;21867:25;;;:19;:25;;;;;;21841:8;-1:-1:-1;;;21841:8:0;;;;;21840:9;;21867:25;;:52;;-1:-1:-1;;;;;;21896:23:0;;;;;;:19;:23;;;;;;;;21867:52;21864:99;;;-1:-1:-1;21946:5:0;21864:99;21975:12;22009:7;22006:638;;;-1:-1:-1;;;;;22038:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22087:1;22071:13;;:17;22038:50;22034:461;;;22115:41;22145:10;;22115:25;22126:13;;22115:6;:10;;:25;;;;:::i;:::-;:29;;:41::i;:::-;22108:48;;22223:13;;22204:16;;22197:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22175:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;22034:461:0;;-1:-1:-1;22034:461:0;;-1:-1:-1;;;;;22276:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22326:1;22311:12;;:16;22276:51;22273:222;;;22355:40;22384:10;;22355:24;22366:12;;22355:6;:10;;:24;;;;:::i;:40::-;22348:47;;22461:12;;22443:15;;22436:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22414:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22273:222:0;22516:8;;22513:89;;22544:42;22560:4;22574;22581;22544:15;:42::i;:::-;22618:14;22628:4;22618:14;;:::i;:::-;;;22006:638;22656:33;22672:4;22678:2;22682:6;22656:15;:33::i;:::-;21082:1617;;;;20969:1730;;;:::o;8700:192::-;8786:7;8822:12;8814:6;;;;8806:29;;;;-1:-1:-1;;;8806:29:0;;;;;;;;:::i;:::-;-1:-1:-1;8846:9:0;8858:5;8862:1;8858;:5;:::i;:::-;8846:17;8700:192;-1:-1:-1;;;;;8700:192:0:o;20204:186::-;-1:-1:-1;;;;;20287:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20287:39:0;;;;;;;;;;20342:40;;20287:39;;:31;20342:40;;;20204:186;;:::o;6837:573::-;-1:-1:-1;;;;;6977:20:0;;6969:70;;;;-1:-1:-1;;;6969:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7058:23:0;;7050:71;;;;-1:-1:-1;;;7050:71:0;;;;;;;:::i;:::-;7214;7236:6;7214:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7214:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7194:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7319:20;;;;;;;:32;;7344:6;7319:24;:32::i;:::-;-1:-1:-1;;;;;7296:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7367:35;1361:25:1;;;7296:20:0;;7367:35;;;;;;1334:18:1;7367:35:0;1215:177:1;24148:890:0;24231:4;24187:23;5418:18;;;;;;;;;;;24276;;24310:20;;;:46;;-1:-1:-1;24334:22:0;;24310:46;24307:60;;;24359:7;;24148:890::o;24307:60::-;24379:12;24432:21;24466:33;24483:15;24466:16;:33::i;:::-;24512:18;24533:44;:21;24559:17;24533:25;:44::i;:::-;24512:65;;24590:23;24616:57;24655:17;24616:34;24631:18;;24616:10;:14;;:34;;;;:::i;:57::-;24689:14;;24590:83;;-1:-1:-1;24689:14:0;;24686:345;;;24740:15;;24787:19;;-1:-1:-1;;;;;24740:15:0;;;;24809:3;;24769:37;;:15;:37;:::i;:::-;:43;;;;:::i;:::-;24732:112;;12984:29:1;12972:42;;13039:2;13030:12;24732:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24719:125;;;;;24859:44;24881:21;24859;:44::i;:::-;24686:345;;;24957:15;;24949:70;;-1:-1:-1;;;13254:22:1;;-1:-1:-1;;;;;24957:15:0;;;;24986:21;;13301:1:1;13292:11;24949:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24936:83:0;;-1:-1:-1;;24686:345:0;24176:862;;;;;;24148:890::o;8902:252::-;8960:7;8986:1;8991;8986:6;8982:47;;-1:-1:-1;9016:1:0;9009:8;;8982:47;9041:9;9053:5;9057:1;9053;:5;:::i;:::-;9041:17;-1:-1:-1;9086:1:0;9077:5;9081:1;9041:17;9077:5;:::i;:::-;:10;9069:56;;;;-1:-1:-1;;;9069:56:0;;13516:2:1;9069:56:0;;;13498:21:1;13555:2;13535:18;;;13528:30;13594:34;13574:18;;;13567:62;-1:-1:-1;;;13645:18:1;;;13638:31;13686:19;;9069:56:0;13314:397:1;9162:132:0;9220:7;9247:39;9251:1;9254;9247:39;;;;;;;;;;;;;;;;;:3;:39::i;23196:479::-;23288:16;;;23302:1;23288:16;;;;;;;;23264:21;;23288:16;;;;;;;;;;-1:-1:-1;23288:16:0;23264:40;;23333:4;23315;23320:1;23315:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23315:23:0;;;:7;;;;;;;;;;:23;;;;23359:15;;:22;;;-1:-1:-1;;;23359:22:0;;;;:15;;;;;:20;;:22;;;;;23315:7;;23359:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23349:4;23354:1;23349:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23349:32:0;;;:7;;;;;;;;;:32;23426:15;;23394:62;;23411:4;;23426:15;23444:11;23394:8;:62::i;:::-;23469:15;;:196;;-1:-1:-1;;;23469:196:0;;-1:-1:-1;;;;;23469:15:0;;;;:66;;:196;;23550:11;;23469:15;;23592:4;;23619;;23639:15;;23469:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8556:136;8614:7;8641:43;8645:1;8648;8641:43;;;;;;;;;;;;;;;;;:3;:43::i;22707:481::-;22779:13;;22776:405;;22832:16;;;22846:1;22832:16;;;;;;;;22808:21;;22832:16;;;;;;;;-1:-1:-1;;22873:15:0;;:22;;;-1:-1:-1;;;22873:22:0;;;;22808:40;;-1:-1:-1;;;;;;22873:15:0;;;;:20;;-1:-1:-1;22873:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22863:4;22868:1;22863:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;22863:32:0;;;-1:-1:-1;;;;;22863:32:0;;;;;22928:4;22910;22915:1;22910:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22910:23:0;;;:7;;;;;;;;;:23;22950:15;;23104;;22950:219;;-1:-1:-1;;;22950:219:0;;:15;;;;:66;;23024:9;;22950:219;;:15;;23073:4;;23104:15;;;;23139;;22950:219;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9302:191;9388:7;9423:12;9416:5;9408:28;;;;-1:-1:-1;;;9408:28:0;;;;;;;;:::i;:::-;-1:-1:-1;9447:9:0;9459:5;9463:1;9459;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2282:118::-;2368:5;2361:13;2354:21;2347:5;2344:32;2334:60;;2390:1;2387;2380:12;2405:309;2470:6;2478;2531:2;2519:9;2510:7;2506:23;2502:32;2499:52;;;2547:1;2544;2537:12;2499:52;2586:9;2573:23;2605:28;2627:5;2605:28;:::i;2719:247::-;2778:6;2831:2;2819:9;2810:7;2806:23;2802:32;2799:52;;;2847:1;2844;2837:12;2799:52;2886:9;2873:23;2905:31;2930:5;2905:31;:::i;2971:180::-;3030:6;3083:2;3071:9;3062:7;3058:23;3054:32;3051:52;;;3099:1;3096;3089:12;3051:52;-1:-1:-1;3122:23:1;;2971:180;-1:-1:-1;2971:180:1:o;3364:382::-;3429:6;3437;3490:2;3478:9;3469:7;3465:23;3461:32;3458:52;;;3506:1;3503;3496:12;3458:52;3545:9;3532:23;3564:31;3589:5;3564:31;:::i;:::-;3614:5;-1:-1:-1;3671:2:1;3656:18;;3643:32;3684:30;3643:32;3684:30;:::i;:::-;3733:7;3723:17;;;3364:382;;;;;:::o;3751:750::-;3843:6;3851;3859;3912:2;3900:9;3891:7;3887:23;3883:32;3880:52;;;3928:1;3925;3918:12;3880:52;3968:9;3955:23;3997:18;4038:2;4030:6;4027:14;4024:34;;;4054:1;4051;4044:12;4024:34;4092:6;4081:9;4077:22;4067:32;;4137:7;4130:4;4126:2;4122:13;4118:27;4108:55;;4159:1;4156;4149:12;4108:55;4199:2;4186:16;4225:2;4217:6;4214:14;4211:34;;;4241:1;4238;4231:12;4211:34;4296:7;4289:4;4279:6;4276:1;4272:14;4268:2;4264:23;4260:34;4257:47;4254:67;;;4317:1;4314;4307:12;4254:67;4348:4;4340:13;;;;-1:-1:-1;4372:6:1;-1:-1:-1;;4413:20:1;;4400:34;4443:28;4400:34;4443:28;:::i;:::-;4490:5;4480:15;;;3751:750;;;;;:::o;4506:388::-;4574:6;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4690:9;4677:23;4709:31;4734:5;4709:31;:::i;:::-;4759:5;-1:-1:-1;4816:2:1;4801:18;;4788:32;4829:33;4788:32;4829:33;:::i;4899:380::-;4978:1;4974:12;;;;5021;;;5042:61;;5096:4;5088:6;5084:17;5074:27;;5042:61;5149:2;5141:6;5138:14;5118:18;5115:38;5112:161;;5195:10;5190:3;5186:20;5183:1;5176:31;5230:4;5227:1;5220:15;5258:4;5255:1;5248:15;5112:161;;4899:380;;;:::o;5284:356::-;5486:2;5468:21;;;5505:18;;;5498:30;5564:34;5559:2;5544:18;;5537:62;5631:2;5616:18;;5284:356::o;8000:127::-;8061:10;8056:3;8052:20;8049:1;8042:31;8092:4;8089:1;8082:15;8116:4;8113:1;8106:15;8132:127;8193:10;8188:3;8184:20;8181:1;8174:31;8224:4;8221:1;8214:15;8248:4;8245:1;8238:15;8264:135;8303:3;8324:17;;;8321:43;;8344:18;;:::i;:::-;-1:-1:-1;8391:1:1;8380:13;;8264:135::o;8404:794::-;8626:2;8638:21;;;8611:18;;8694:22;;;8578:4;8773:6;8747:2;8732:18;;8578:4;8807:304;8821:6;8818:1;8815:13;8807:304;;;8896:6;8883:20;8916:31;8941:5;8916:31;:::i;:::-;-1:-1:-1;;;;;8972:31:1;8960:44;;9027:4;9086:15;;;;9051:12;;;;9000:1;8836:9;8807:304;;;8811:3;9128;9120:11;;;;9183:6;9176:14;9169:22;9162:4;9151:9;9147:20;9140:52;8404:794;;;;;;:::o;9482:245::-;9549:6;9602:2;9590:9;9581:7;9577:23;9573:32;9570:52;;;9618:1;9615;9608:12;9570:52;9650:9;9644:16;9669:28;9691:5;9669:28;:::i;9732:168::-;9805:9;;;9836;;9853:15;;;9847:22;;9833:37;9823:71;;9874:18;;:::i;10312:125::-;10377:9;;;10398:10;;;10395:36;;;10411:18;;:::i;11606:401::-;11808:2;11790:21;;;11847:2;11827:18;;;11820:30;11886:34;11881:2;11866:18;;11859:62;-1:-1:-1;;;11952:2:1;11937:18;;11930:35;11997:3;11982:19;;11606:401::o;12012:399::-;12214:2;12196:21;;;12253:2;12233:18;;;12226:30;12292:34;12287:2;12272:18;;12265:62;-1:-1:-1;;;12358:2:1;12343:18;;12336:33;12401:3;12386:19;;12012:399::o;12416:217::-;12456:1;12482;12472:132;;12526:10;12521:3;12517:20;12514:1;12507:31;12561:4;12558:1;12551:15;12589:4;12586:1;12579:15;12472:132;-1:-1:-1;12618:9:1;;12416:217::o;12638:128::-;12705:9;;;12726:11;;;12723:37;;;12740:18;;:::i;13848:251::-;13918:6;13971:2;13959:9;13950:7;13946:23;13942:32;13939:52;;;13987:1;13984;13977:12;13939:52;14019:9;14013:16;14038:31;14063:5;14038:31;:::i;14104:461::-;14157:3;14195:5;14189:12;14222:6;14217:3;14210:19;14248:4;14277:2;14272:3;14268:12;14261:19;;14314:2;14307:5;14303:14;14335:1;14345:195;14359:6;14356:1;14353:13;14345:195;;;14424:13;;-1:-1:-1;;;;;14420:39:1;14408:52;;14480:12;;;;14515:15;;;;14456:1;14374:9;14345:195;;;-1:-1:-1;14556:3:1;;14104:461;-1:-1:-1;;;;;14104:461:1:o;14570:582::-;14869:6;14858:9;14851:25;14912:6;14907:2;14896:9;14892:18;14885:34;14955:3;14950:2;14939:9;14935:18;14928:31;14832:4;14976:57;15028:3;15017:9;15013:19;15005:6;14976:57;:::i;:::-;-1:-1:-1;;;;;15069:32:1;;;;15064:2;15049:18;;15042:60;-1:-1:-1;15133:3:1;15118:19;15111:35;14968:65;14570:582;-1:-1:-1;;;14570:582:1:o;15157:510::-;15428:6;15417:9;15410:25;15471:3;15466:2;15455:9;15451:18;15444:31;15391:4;15492:57;15544:3;15533:9;15529:19;15521:6;15492:57;:::i;:::-;-1:-1:-1;;;;;15585:32:1;;;;15580:2;15565:18;;15558:60;-1:-1:-1;15649:2:1;15634:18;15627:34;15484:65;15157:510;-1:-1:-1;;15157:510:1:o

Swarm Source

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