ETH Price: $2,657.12 (+1.47%)

Token

Red Light ETH (RED)
 

Overview

Max Total Supply

690,690,690 RED

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
172,500 RED

Value
$0.00
0x079A56295850C525CdD7bdC96aB20177213f0160
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:
RED

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 2023-08-17
*/

// SPDX-License-Identifier: MIT

/* Smartcontract author: @TonyBoyDeFi

$RED - Red Light ETH project contract on Ethereum blockchain.

Erotic based longterm cryptoproject, selling tokens, NFT’S and real Arts from streetartists. 
All profits go to development. */

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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

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

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

    function initialize(address, address) external;
}

interface 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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

// Uniswap & Pancakeswap 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 RED is ERC20, Ownable {
    using SafeMath for uint256;

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

    address public marketingWallet;

    // By default the automatic buyback is set to false, turning on set variable as "true"
    uint256 public percentForMarketing = 100;
    bool public buyBackEnabled = false;

    uint256 public swapTokensAtAmount;

    uint256 private liquidityActiveBlock = 0;
    uint256 private tradingActiveBlock = 0;

    bool public tradingActive = true;
    bool public swapEnabled = true;

    address private presaleAddress;
    address private presaleRouterAddress;

    uint256 public feeDivisor = 100;

    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("Red Light ETH", "RED"){

        address newOwner = address(0xA9d258069Bde02025e42F19Ca1ffE3ea92299202);

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

        // Tokens for SwapAndLiquify and automated BuyBack | Set number in tokens
        swapTokensAtAmount = 69000 * (10**18);

        // Contracts Sell fees
        marketingSellFee = 2;
        totalSellFees = marketingSellFee;

        // Contracts Buy fees
        marketingBuyFee = 2;
        totalBuyFees = marketingBuyFee;


        // Contracts taxation options and wallets. Default there is 1 tax wallet, you can add more if necessary

        // Project Marketing Wallet | Updateable at a later point if necessary
        marketingWallet = address(0xB4406c6D5aF817af657b82Fa8e728523dce211A3);

        // Router settings for Binance Smart Chain:
        // Pancakeswap testnet: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
        // Pancakeswap mainnet: 0x10ED43C718714eb63d5aA57B78B54704E256024E

        // Router settings for Ethereum:
        // Uniswap V2 testnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        // Uniswap V2 mainnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

        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 {

      }

    // Change SwapAndLiquidy token swap amounts | Set number in exact tokens
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
          swapTokensAtAmount = newAmount * (10**18);
          return true;
      }


    // Exclude a wallet from all fees | Only for presale addresses, presale router and the deployer of the contract
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    // Exclude multiple wallets from all fees | Only for presale addresses, presale router and the deployer of the contract
    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 | Wallet name can be changed to whatever suites the best
    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;
        }

        if(!tradingActive || tradingActiveBlock + 2 >= block.number){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is always active after deployment");
        }

        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){

            // Assets selling process
            if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount.mul(totalSellFees).div(feeDivisor);
                tokensForMarketing += fees * marketingSellFee / totalSellFees;
            }
            // Assets buying process
            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
        );

    }

    // Automated buyback to fight sell pressure

    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

    // Function to recover stuck ETH from the contract address. Only callable by the owner
    function recoverContractETH() 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");
    }

    // Function to recover stuck or accidentaly sent ERC20 tokens from the contract
    function recoverERC20Token(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){
    return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    //Function for automated buyback settings. Set in percentages for example: 50% = 50% to buyback and 50% to marketing wallet
    function marketingBuyBackSettings(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":[],"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":[{"internalType":"bool","name":"_buyBackEnabled","type":"bool"},{"internalType":"uint256","name":"_percentForMarketing","type":"uint256"}],"name":"marketingBuyBackSettings","outputs":[],"stateMutability":"nonpayable","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":"recoverContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"recoverERC20Token","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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","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"}]

608060405260646009819055600a805460ff191690556000600c819055600d55600e805461ffff19166101011790556010553480156200003e57600080fd5b506040518060400160405280600d81526020016c0a4cac84098d2ced0e8408aa89609b1b8152506040518060400160405280600381526020016214915160ea1b815250816003908162000092919062000760565b506004620000a1828262000760565b5050506000620000b66200034c60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002a42833981519152908290a350690e9c7f5bd65501200000600b556002601281905560118190556014819055601355600880546001600160a01b03191673b4406c6d5af817af657b82fa8e728523dce211a31790556040805163c45a015560e01b8152905173a9d258069bde02025e42f19ca1ffe3ea92299202916b023b537154a7280728c8000091737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048083019260209291908290030181865afa158015620001b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001db91906200082c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f91906200082c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c391906200082c565b600680546001600160a01b038086166001600160a01b031992831617909255600780549284169290911691909117905590506200030281600162000350565b6200030f846001620003a4565b6200031c306001620003a4565b6200032b61dead6001620003a4565b62000337848462000452565b62000342846200054e565b5050505062000879565b3390565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620003f35760405162461bcd60e51b8152602060048201819052602482015260008051602062002a2283398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003ea565b620004c6816002546200065060201b62000fd61790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620004f991839062000fd662000650821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005995760405162461bcd60e51b8152602060048201819052602482015260008051602062002a228339815191526044820152606401620003ea565b6001600160a01b038116620006005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620003ea565b6005546040516001600160a01b0380841692169060008051602062002a4283398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b6000806200065f838562000857565b905083811015620006b35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620003ea565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006e757607f821691505b6020821081036200070857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200064b57600081815260208120601f850160051c81016020861015620007375750805b601f850160051c820191505b81811015620007585782815560010162000743565b505050505050565b81516001600160401b038111156200077c576200077c620006bc565b62000794816200078d8454620006d2565b846200070e565b602080601f831160018114620007cc5760008415620007b35750858301515b600019600386901b1c1916600185901b17855562000758565b600085815260208120601f198616915b82811015620007fd57888601518255948401946001909101908401620007dc565b50858210156200081c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200083f57600080fd5b81516001600160a01b0381168114620006b357600080fd5b80820180821115620006b657634e487b7160e01b600052601160045260246000fd5b61219980620008896000396000f3fe60806040526004361061021e5760003560e01c80638da5cb5b11610123578063b9e93700116100ab578063d257b34f1161006f578063d257b34f14610637578063dd62ed3e14610657578063e2f456051461069d578063e7f444b3146106b3578063f2fde38b146106c957600080fd5b8063b9e93700146105b1578063bbc0c742146105c7578063c0246668146105e1578063c492f04614610601578063d0a398141461062157600080fd5b80639a7a23d6116100f25780639a7a23d614610501578063a457c2d714610521578063a9059cbb14610541578063aacebbe314610561578063b62496f51461058157600080fd5b80638da5cb5b146104a257806395d89b41146104c0578063984f02d3146104d55780639a36f932146104eb57600080fd5b80636053a0e3116101a657806370a082311161017557806370a0823114610402578063715018a61461043857806375f0a8741461044d5780638519517a1461046d578063885229981461048257600080fd5b80636053a0e3146103915780636598d2d1146103ab57806368078952146103cd5780636ddd1713146103e357600080fd5b80632c76d7a6116101ed5780632c76d7a6146102c4578063313ce567146102fc57806333f5b15f1461031857806339509351146103385780634fbee1931461035857600080fd5b806306fdde031461022a578063095ea7b31461025557806318160ddd1461028557806323b872dd146102a457600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106e9565b60405161024c9190611bee565b60405180910390f35b34801561026157600080fd5b50610275610270366004611c51565b61077b565b604051901515815260200161024c565b34801561029157600080fd5b506002545b60405190815260200161024c565b3480156102b057600080fd5b506102756102bf366004611c7d565b610792565b3480156102d057600080fd5b506006546102e4906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b34801561030857600080fd5b506040516012815260200161024c565b34801561032457600080fd5b50610275610333366004611c51565b6107fb565b34801561034457600080fd5b50610275610353366004611c51565b6108a9565b34801561036457600080fd5b50610275610373366004611cbe565b6001600160a01b031660009081526016602052604090205460ff1690565b34801561039d57600080fd5b50600a546102759060ff1681565b3480156103b757600080fd5b506103cb6103c6366004611ce9565b6108df565b005b3480156103d957600080fd5b5061029660145481565b3480156103ef57600080fd5b50600e5461027590610100900460ff1681565b34801561040e57600080fd5b5061029661041d366004611cbe565b6001600160a01b031660009081526020819052604090205490565b34801561044457600080fd5b506103cb610969565b34801561045957600080fd5b506008546102e4906001600160a01b031681565b34801561047957600080fd5b506103cb6109dd565b34801561048e57600080fd5b506007546102e4906001600160a01b031681565b3480156104ae57600080fd5b506005546001600160a01b03166102e4565b3480156104cc57600080fd5b5061023f610b23565b3480156104e157600080fd5b5061029660095481565b3480156104f757600080fd5b5061029660105481565b34801561050d57600080fd5b506103cb61051c366004611d07565b610b32565b34801561052d57600080fd5b5061027561053c366004611c51565b610bf8565b34801561054d57600080fd5b5061027561055c366004611c51565b610c47565b34801561056d57600080fd5b506103cb61057c366004611cbe565b610c54565b34801561058d57600080fd5b5061027561059c366004611cbe565b60176020526000908152604090205460ff1681565b3480156105bd57600080fd5b5061029660135481565b3480156105d357600080fd5b50600e546102759060ff1681565b3480156105ed57600080fd5b506103cb6105fc366004611d07565b610d3c565b34801561060d57600080fd5b506103cb61061c366004611d40565b610dc5565b34801561062d57600080fd5b5061029660115481565b34801561064357600080fd5b50610275610652366004611dc6565b610ea1565b34801561066357600080fd5b50610296610672366004611ddf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106a957600080fd5b50610296600b5481565b3480156106bf57600080fd5b5061029660125481565b3480156106d557600080fd5b506103cb6106e4366004611cbe565b610eeb565b6060600380546106f890611e0d565b80601f016020809104026020016040519081016040528092919081815260200182805461072490611e0d565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b6000610788338484611035565b5060015b92915050565b600061079f84848461115a565b6107f184336107ec85604051806060016040528060288152602001612117602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906114f7565b611035565b5060019392505050565b6005546000906001600160a01b031633146108315760405162461bcd60e51b815260040161082890611e47565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190611e7c565b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107889185906107ec9086610fd6565b6005546001600160a01b031633146109095760405162461bcd60e51b815260040161082890611e47565b60648111156109535760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610828565b600955600a805460ff1916911515919091179055565b6005546001600160a01b031633146109935760405162461bcd60e51b815260040161082890611e47565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a075760405162461bcd60e51b815260040161082890611e47565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610a8e576040519150601f19603f3d011682016040523d82523d6000602084013e610a93565b606091505b5050905080610b205760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610828565b50565b6060600480546106f890611e0d565b6005546001600160a01b03163314610b5c5760405162461bcd60e51b815260040161082890611e47565b6007546001600160a01b0390811690831603610bea5760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610828565b610bf48282611531565b5050565b600061078833846107ec8560405180606001604052806025815260200161213f602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906114f7565b600061078833848461115a565b6005546001600160a01b03163314610c7e5760405162461bcd60e51b815260040161082890611e47565b6001600160a01b038116610cd45760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610828565b610cdf816001610d3c565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d665760405162461bcd60e51b815260040161082890611e47565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610def5760405162461bcd60e51b815260040161082890611e47565b60005b82811015610e60578160166000868685818110610e1157610e11611e99565b9050602002016020810190610e269190611cbe565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e5881611ec5565b915050610df2565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610e9493929190611ede565b60405180910390a1505050565b6005546000906001600160a01b03163314610ece5760405162461bcd60e51b815260040161082890611e47565b610ee082670de0b6b3a7640000611f37565b600b55506001919050565b6005546001600160a01b03163314610f155760405162461bcd60e51b815260040161082890611e47565b6001600160a01b038116610f7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610828565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080610fe38385611f4e565b9050838110156108a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610828565b6001600160a01b0383166110975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610828565b6001600160a01b0382166110f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610828565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111805760405162461bcd60e51b815260040161082890611f61565b6001600160a01b0382166111a65760405162461bcd60e51b815260040161082890611fa6565b806000036111bf576111ba83836000611585565b505050565b600e5460ff1615806111df575043600d5460026111dc9190611f4e565b10155b15611281576001600160a01b03831660009081526016602052604090205460ff168061122357506001600160a01b03821660009081526016602052604090205460ff165b6112815760405162461bcd60e51b815260206004820152602960248201527f54726164696e6720697320616c77617973206163746976652061667465722064604482015268195c1b1bde5b595b9d60ba1b6064820152608401610828565b30600090815260208190526040902054600b54811080159081906112ac5750600e54610100900460ff165b80156112c25750600754600160a01b900460ff16155b80156112e757506001600160a01b03851660009081526017602052604090205460ff16155b801561130c57506001600160a01b03851660009081526016602052604090205460ff16155b801561133157506001600160a01b03841660009081526016602052604090205460ff16155b1561135f576007805460ff60a01b1916600160a01b17905561135161168e565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526016602052604090205460ff600160a01b9092048216159116806113ad57506001600160a01b03851660009081526016602052604090205460ff165b156113b6575060005b600081156114e3576001600160a01b03861660009081526017602052604090205460ff1680156113e857506000601154115b156114475761140e6010546114086011548861181490919063ffffffff16565b90611896565b9050601154601254826114219190611f37565b61142b9190611fe9565b6015600082825461143c9190611f4e565b909155506114c59050565b6001600160a01b03871660009081526017602052604090205460ff16801561147157506000601354115b156114c5576114916010546114086013548861181490919063ffffffff16565b9050601354601454826114a49190611f37565b6114ae9190611fe9565b601560008282546114bf9190611f4e565b90915550505b80156114d6576114d6873083611585565b6114e0818661200b565b94505b6114ee878787611585565b50505050505050565b6000818484111561151b5760405162461bcd60e51b81526004016108289190611bee565b506000611528848661200b565b95945050505050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166115ab5760405162461bcd60e51b815260040161082890611f61565b6001600160a01b0382166115d15760405162461bcd60e51b815260040161082890611fa6565b61160e816040518060600160405280602681526020016120f1602691396001600160a01b03861660009081526020819052604090205491906114f7565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461163d9082610fd6565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161114d565b306000908152602081905260409020546015548115806116ac575080155b156116b5575050565b6000476116c1846118d8565b60006116cd4783611a2a565b905060006116ea856114086015548561181490919063ffffffff16565b600a5490915060ff16156117a0576008546009546001600160a01b03909116906064906117179084611f37565b6117219190611fe9565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611787576040519150601f19603f3d011682016040523d82523d6000602084013e61178c565b606091505b50508094505061179b47611a6c565b61180c565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611801576040519150601f19603f3d011682016040523d82523d6000602084013e611806565b606091505b50909450505b505050505050565b6000826000036118265750600061078c565b60006118328385611f37565b90508261183f8583611fe9565b146108a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610828565b60006108a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bc0565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061190d5761190d611e99565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198a919061201e565b8160018151811061199d5761199d611e99565b6001600160a01b0392831660209182029290920101526006546119c39130911684611035565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119fc90859060009086903090429060040161207f565b600060405180830381600087803b158015611a1657600080fd5b505af115801561180c573d6000803e3d6000fd5b60006108a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114f7565b8015610b20576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b00919061201e565b81600081518110611b1357611b13611e99565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611b4757611b47611e99565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611b939260009288929091169042906004016120bb565b6000604051808303818588803b158015611bac57600080fd5b505af11580156114ee573d6000803e3d6000fd5b60008183611be15760405162461bcd60e51b81526004016108289190611bee565b5060006115288486611fe9565b600060208083528351808285015260005b81811015611c1b57858101830151858201604001528201611bff565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b2057600080fd5b60008060408385031215611c6457600080fd5b8235611c6f81611c3c565b946020939093013593505050565b600080600060608486031215611c9257600080fd5b8335611c9d81611c3c565b92506020840135611cad81611c3c565b929592945050506040919091013590565b600060208284031215611cd057600080fd5b81356108a281611c3c565b8015158114610b2057600080fd5b60008060408385031215611cfc57600080fd5b8235611c6f81611cdb565b60008060408385031215611d1a57600080fd5b8235611d2581611c3c565b91506020830135611d3581611cdb565b809150509250929050565b600080600060408486031215611d5557600080fd5b833567ffffffffffffffff80821115611d6d57600080fd5b818601915086601f830112611d8157600080fd5b813581811115611d9057600080fd5b8760208260051b8501011115611da557600080fd5b60209283019550935050840135611dbb81611cdb565b809150509250925092565b600060208284031215611dd857600080fd5b5035919050565b60008060408385031215611df257600080fd5b8235611dfd81611c3c565b91506020830135611d3581611c3c565b600181811c90821680611e2157607f821691505b602082108103611e4157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611e8e57600080fd5b81516108a281611cdb565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ed757611ed7611eaf565b5060010190565b6040808252810183905260008460608301825b86811015611f21578235611f0481611c3c565b6001600160a01b0316825260209283019290910190600101611ef1565b5080925050508215156020830152949350505050565b808202811582820484141761078c5761078c611eaf565b8082018082111561078c5761078c611eaf565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008261200657634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561078c5761078c611eaf565b60006020828403121561203057600080fd5b81516108a281611c3c565b600081518084526020808501945080840160005b838110156120745781516001600160a01b03168752958201959082019060010161204f565b509495945050505050565b85815284602082015260a06040820152600061209e60a083018661203b565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006120d4608083018661203b565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074d221a23460bfcf26bb440b4b3f78fd8b7fb534d20f40f5755690d0edf6e57564736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80638da5cb5b11610123578063b9e93700116100ab578063d257b34f1161006f578063d257b34f14610637578063dd62ed3e14610657578063e2f456051461069d578063e7f444b3146106b3578063f2fde38b146106c957600080fd5b8063b9e93700146105b1578063bbc0c742146105c7578063c0246668146105e1578063c492f04614610601578063d0a398141461062157600080fd5b80639a7a23d6116100f25780639a7a23d614610501578063a457c2d714610521578063a9059cbb14610541578063aacebbe314610561578063b62496f51461058157600080fd5b80638da5cb5b146104a257806395d89b41146104c0578063984f02d3146104d55780639a36f932146104eb57600080fd5b80636053a0e3116101a657806370a082311161017557806370a0823114610402578063715018a61461043857806375f0a8741461044d5780638519517a1461046d578063885229981461048257600080fd5b80636053a0e3146103915780636598d2d1146103ab57806368078952146103cd5780636ddd1713146103e357600080fd5b80632c76d7a6116101ed5780632c76d7a6146102c4578063313ce567146102fc57806333f5b15f1461031857806339509351146103385780634fbee1931461035857600080fd5b806306fdde031461022a578063095ea7b31461025557806318160ddd1461028557806323b872dd146102a457600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f6106e9565b60405161024c9190611bee565b60405180910390f35b34801561026157600080fd5b50610275610270366004611c51565b61077b565b604051901515815260200161024c565b34801561029157600080fd5b506002545b60405190815260200161024c565b3480156102b057600080fd5b506102756102bf366004611c7d565b610792565b3480156102d057600080fd5b506006546102e4906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b34801561030857600080fd5b506040516012815260200161024c565b34801561032457600080fd5b50610275610333366004611c51565b6107fb565b34801561034457600080fd5b50610275610353366004611c51565b6108a9565b34801561036457600080fd5b50610275610373366004611cbe565b6001600160a01b031660009081526016602052604090205460ff1690565b34801561039d57600080fd5b50600a546102759060ff1681565b3480156103b757600080fd5b506103cb6103c6366004611ce9565b6108df565b005b3480156103d957600080fd5b5061029660145481565b3480156103ef57600080fd5b50600e5461027590610100900460ff1681565b34801561040e57600080fd5b5061029661041d366004611cbe565b6001600160a01b031660009081526020819052604090205490565b34801561044457600080fd5b506103cb610969565b34801561045957600080fd5b506008546102e4906001600160a01b031681565b34801561047957600080fd5b506103cb6109dd565b34801561048e57600080fd5b506007546102e4906001600160a01b031681565b3480156104ae57600080fd5b506005546001600160a01b03166102e4565b3480156104cc57600080fd5b5061023f610b23565b3480156104e157600080fd5b5061029660095481565b3480156104f757600080fd5b5061029660105481565b34801561050d57600080fd5b506103cb61051c366004611d07565b610b32565b34801561052d57600080fd5b5061027561053c366004611c51565b610bf8565b34801561054d57600080fd5b5061027561055c366004611c51565b610c47565b34801561056d57600080fd5b506103cb61057c366004611cbe565b610c54565b34801561058d57600080fd5b5061027561059c366004611cbe565b60176020526000908152604090205460ff1681565b3480156105bd57600080fd5b5061029660135481565b3480156105d357600080fd5b50600e546102759060ff1681565b3480156105ed57600080fd5b506103cb6105fc366004611d07565b610d3c565b34801561060d57600080fd5b506103cb61061c366004611d40565b610dc5565b34801561062d57600080fd5b5061029660115481565b34801561064357600080fd5b50610275610652366004611dc6565b610ea1565b34801561066357600080fd5b50610296610672366004611ddf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106a957600080fd5b50610296600b5481565b3480156106bf57600080fd5b5061029660125481565b3480156106d557600080fd5b506103cb6106e4366004611cbe565b610eeb565b6060600380546106f890611e0d565b80601f016020809104026020016040519081016040528092919081815260200182805461072490611e0d565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b6000610788338484611035565b5060015b92915050565b600061079f84848461115a565b6107f184336107ec85604051806060016040528060288152602001612117602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906114f7565b611035565b5060019392505050565b6005546000906001600160a01b031633146108315760405162461bcd60e51b815260040161082890611e47565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190611e7c565b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107889185906107ec9086610fd6565b6005546001600160a01b031633146109095760405162461bcd60e51b815260040161082890611e47565b60648111156109535760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610828565b600955600a805460ff1916911515919091179055565b6005546001600160a01b031633146109935760405162461bcd60e51b815260040161082890611e47565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a075760405162461bcd60e51b815260040161082890611e47565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610a8e576040519150601f19603f3d011682016040523d82523d6000602084013e610a93565b606091505b5050905080610b205760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610828565b50565b6060600480546106f890611e0d565b6005546001600160a01b03163314610b5c5760405162461bcd60e51b815260040161082890611e47565b6007546001600160a01b0390811690831603610bea5760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610828565b610bf48282611531565b5050565b600061078833846107ec8560405180606001604052806025815260200161213f602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906114f7565b600061078833848461115a565b6005546001600160a01b03163314610c7e5760405162461bcd60e51b815260040161082890611e47565b6001600160a01b038116610cd45760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610828565b610cdf816001610d3c565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d665760405162461bcd60e51b815260040161082890611e47565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610def5760405162461bcd60e51b815260040161082890611e47565b60005b82811015610e60578160166000868685818110610e1157610e11611e99565b9050602002016020810190610e269190611cbe565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e5881611ec5565b915050610df2565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610e9493929190611ede565b60405180910390a1505050565b6005546000906001600160a01b03163314610ece5760405162461bcd60e51b815260040161082890611e47565b610ee082670de0b6b3a7640000611f37565b600b55506001919050565b6005546001600160a01b03163314610f155760405162461bcd60e51b815260040161082890611e47565b6001600160a01b038116610f7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610828565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080610fe38385611f4e565b9050838110156108a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610828565b6001600160a01b0383166110975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610828565b6001600160a01b0382166110f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610828565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111805760405162461bcd60e51b815260040161082890611f61565b6001600160a01b0382166111a65760405162461bcd60e51b815260040161082890611fa6565b806000036111bf576111ba83836000611585565b505050565b600e5460ff1615806111df575043600d5460026111dc9190611f4e565b10155b15611281576001600160a01b03831660009081526016602052604090205460ff168061122357506001600160a01b03821660009081526016602052604090205460ff165b6112815760405162461bcd60e51b815260206004820152602960248201527f54726164696e6720697320616c77617973206163746976652061667465722064604482015268195c1b1bde5b595b9d60ba1b6064820152608401610828565b30600090815260208190526040902054600b54811080159081906112ac5750600e54610100900460ff165b80156112c25750600754600160a01b900460ff16155b80156112e757506001600160a01b03851660009081526017602052604090205460ff16155b801561130c57506001600160a01b03851660009081526016602052604090205460ff16155b801561133157506001600160a01b03841660009081526016602052604090205460ff16155b1561135f576007805460ff60a01b1916600160a01b17905561135161168e565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526016602052604090205460ff600160a01b9092048216159116806113ad57506001600160a01b03851660009081526016602052604090205460ff165b156113b6575060005b600081156114e3576001600160a01b03861660009081526017602052604090205460ff1680156113e857506000601154115b156114475761140e6010546114086011548861181490919063ffffffff16565b90611896565b9050601154601254826114219190611f37565b61142b9190611fe9565b6015600082825461143c9190611f4e565b909155506114c59050565b6001600160a01b03871660009081526017602052604090205460ff16801561147157506000601354115b156114c5576114916010546114086013548861181490919063ffffffff16565b9050601354601454826114a49190611f37565b6114ae9190611fe9565b601560008282546114bf9190611f4e565b90915550505b80156114d6576114d6873083611585565b6114e0818661200b565b94505b6114ee878787611585565b50505050505050565b6000818484111561151b5760405162461bcd60e51b81526004016108289190611bee565b506000611528848661200b565b95945050505050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166115ab5760405162461bcd60e51b815260040161082890611f61565b6001600160a01b0382166115d15760405162461bcd60e51b815260040161082890611fa6565b61160e816040518060600160405280602681526020016120f1602691396001600160a01b03861660009081526020819052604090205491906114f7565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461163d9082610fd6565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161114d565b306000908152602081905260409020546015548115806116ac575080155b156116b5575050565b6000476116c1846118d8565b60006116cd4783611a2a565b905060006116ea856114086015548561181490919063ffffffff16565b600a5490915060ff16156117a0576008546009546001600160a01b03909116906064906117179084611f37565b6117219190611fe9565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611787576040519150601f19603f3d011682016040523d82523d6000602084013e61178c565b606091505b50508094505061179b47611a6c565b61180c565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611801576040519150601f19603f3d011682016040523d82523d6000602084013e611806565b606091505b50909450505b505050505050565b6000826000036118265750600061078c565b60006118328385611f37565b90508261183f8583611fe9565b146108a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610828565b60006108a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bc0565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061190d5761190d611e99565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198a919061201e565b8160018151811061199d5761199d611e99565b6001600160a01b0392831660209182029290920101526006546119c39130911684611035565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119fc90859060009086903090429060040161207f565b600060405180830381600087803b158015611a1657600080fd5b505af115801561180c573d6000803e3d6000fd5b60006108a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114f7565b8015610b20576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b00919061201e565b81600081518110611b1357611b13611e99565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611b4757611b47611e99565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611b939260009288929091169042906004016120bb565b6000604051808303818588803b158015611bac57600080fd5b505af11580156114ee573d6000803e3d6000fd5b60008183611be15760405162461bcd60e51b81526004016108289190611bee565b5060006115288486611fe9565b600060208083528351808285015260005b81811015611c1b57858101830151858201604001528201611bff565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b2057600080fd5b60008060408385031215611c6457600080fd5b8235611c6f81611c3c565b946020939093013593505050565b600080600060608486031215611c9257600080fd5b8335611c9d81611c3c565b92506020840135611cad81611c3c565b929592945050506040919091013590565b600060208284031215611cd057600080fd5b81356108a281611c3c565b8015158114610b2057600080fd5b60008060408385031215611cfc57600080fd5b8235611c6f81611cdb565b60008060408385031215611d1a57600080fd5b8235611d2581611c3c565b91506020830135611d3581611cdb565b809150509250929050565b600080600060408486031215611d5557600080fd5b833567ffffffffffffffff80821115611d6d57600080fd5b818601915086601f830112611d8157600080fd5b813581811115611d9057600080fd5b8760208260051b8501011115611da557600080fd5b60209283019550935050840135611dbb81611cdb565b809150509250925092565b600060208284031215611dd857600080fd5b5035919050565b60008060408385031215611df257600080fd5b8235611dfd81611c3c565b91506020830135611d3581611c3c565b600181811c90821680611e2157607f821691505b602082108103611e4157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611e8e57600080fd5b81516108a281611cdb565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ed757611ed7611eaf565b5060010190565b6040808252810183905260008460608301825b86811015611f21578235611f0481611c3c565b6001600160a01b0316825260209283019290910190600101611ef1565b5080925050508215156020830152949350505050565b808202811582820484141761078c5761078c611eaf565b8082018082111561078c5761078c611eaf565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008261200657634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561078c5761078c611eaf565b60006020828403121561203057600080fd5b81516108a281611c3c565b600081518084526020808501945080840160005b838110156120745781516001600160a01b03168752958201959082019060010161204f565b509495945050505050565b85815284602082015260a06040820152600061209e60a083018661203b565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006120d4608083018661203b565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074d221a23460bfcf26bb440b4b3f78fd8b7fb534d20f40f5755690d0edf6e57564736f6c63430008110033

Deployed Bytecode Sourcemap

16269:10959:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5065:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5979:169;;;;;;;;;;-1:-1:-1;5979:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5979:169:0;1023:187:1;5386:108:0;;;;;;;;;;-1:-1:-1;5474:12:0;;5386:108;;;1361:25:1;;;1349:2;1334:18;5386:108:0;1215:177:1;6156:355:0;;;;;;;;;;-1:-1:-1;6156:355:0;;;;;:::i;:::-;;:::i;16342:41::-;;;;;;;;;;-1:-1:-1;16342:41:0;;;;-1:-1:-1;;;;;16342:41:0;;;;;;-1:-1:-1;;;;;2049:32:1;;;2031:51;;2019:2;2004:18;16342:41:0;1858:230:1;5285:93:0;;;;;;;;;;-1:-1:-1;5285:93:0;;5368:2;2235:36:1;;2223:2;2208:18;5285:93:0;2093:184:1;26630:176:0;;;;;;;;;;-1:-1:-1;26630:176:0;;;;;:::i;:::-;;:::i;6519:218::-;;;;;;;;;;-1:-1:-1;6519:218:0;;;;;:::i;:::-;;:::i;21594:125::-;;;;;;;;;;-1:-1:-1;21594:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;21683:28:0;21659:4;21683:28;;;:19;:28;;;;;;;;;21594:125;16633:34;;;;;;;;;;-1:-1:-1;16633:34:0;;;;;;;;26943:282;;;;;;;;;;-1:-1:-1;26943:282:0;;;;;:::i;:::-;;:::i;:::-;;17121:30;;;;;;;;;;;;;;;;16851;;;;;;;;;;-1:-1:-1;16851:30:0;;;;;;;;;;;5502:127;;;;;;;;;;-1:-1:-1;5502:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5603:18:0;5576:7;5603:18;;;;;;;;;;;;5502:127;10962:150;;;;;;;;;;;;;:::i;16455:30::-;;;;;;;;;;-1:-1:-1;16455:30:0;;;;-1:-1:-1;;;;;16455:30:0;;;26236:301;;;;;;;;;;;;;:::i;16390:28::-;;;;;;;;;;-1:-1:-1;16390:28:0;;;;-1:-1:-1;;;;;16390:28:0;;;10748:79;;;;;;;;;;-1:-1:-1;10813:6:0;;-1:-1:-1;;;;;10813:6:0;10748:79;;5173:104;;;;;;;;;;;;;:::i;16586:40::-;;;;;;;;;;;;;;;;16972:31;;;;;;;;;;;;;;;;20695:250;;;;;;;;;;-1:-1:-1;20695:250:0;;;;;:::i;:::-;;:::i;6745:269::-;;;;;;;;;;-1:-1:-1;6745:269:0;;;;;:::i;:::-;;:::i;5637:175::-;;;;;;;;;;-1:-1:-1;5637:175:0;;;;;:::i;:::-;;:::i;21247:339::-;;;;;;;;;;-1:-1:-1;21247:339:0;;;;;:::i;:::-;;:::i;17265:58::-;;;;;;;;;;-1:-1:-1;17265:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17087:27;;;;;;;;;;;;;;;;16812:32;;;;;;;;;;-1:-1:-1;16812:32:0;;;;;;;;20064:184;;;;;;;;;;-1:-1:-1;20064:184:0;;;;;:::i;:::-;;:::i;20381:306::-;;;;;;;;;;-1:-1:-1;20381:306:0;;;;;:::i;:::-;;:::i;17012:28::-;;;;;;;;;;;;;;;;19763:174;;;;;;;;;;-1:-1:-1;19763:174:0;;;;;:::i;:::-;;:::i;5820:151::-;;;;;;;;;;-1:-1:-1;5820:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5936:18:0;;;5909:7;5936:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5820:151;16676:33;;;;;;;;;;;;;;;;17047:31;;;;;;;;;;;;;;;;11122:244;;;;;;;;;;-1:-1:-1;11122:244:0;;;;;:::i;:::-;;:::i;5065:100::-;5119:13;5152:5;5145:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5065:100;:::o;5979:169::-;6062:4;6079:39;415:10;6102:7;6111:6;6079:8;:39::i;:::-;-1:-1:-1;6136:4:0;5979:169;;;;;:::o;6156:355::-;6296:4;6313:36;6323:6;6331:9;6342:6;6313:9;:36::i;:::-;6360:121;6369:6;415:10;6391:89;6429:6;6391:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6391:19:0;;;;;;:11;:19;;;;;;;;415:10;6391:33;;;;;;;;;;:37;:89::i;:::-;6360:8;:121::i;:::-;-1:-1:-1;6499:4:0;6156:355;;;;;:::o;26630:176::-;10875:6;;26723:12;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;;;;;;;;;26750:48:::1;::::0;-1:-1:-1;;;26750:48:0;;26779:10:::1;26750:48;::::0;::::1;5819:51:1::0;5886:18;;;5879:34;;;-1:-1:-1;;;;;26750:28:0;::::1;::::0;::::1;::::0;5792:18:1;;26750:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26743:55:::0;26630:176;-1:-1:-1;;;26630:176:0:o;6519:218::-;415:10;6607:4;6656:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6656:34:0;;;;;;;;;;6607:4;;6624:83;;6647:7;;6656:50;;6695:10;6656:38;:50::i;26943:282::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;27091:3:::1;27067:20;:27;;27059:62;;;::::0;-1:-1:-1;;;27059:62:0;;6376:2:1;27059:62:0::1;::::0;::::1;6358:21:1::0;6415:2;6395:18;;;6388:30;-1:-1:-1;;;6434:18:1;;;6427:52;6496:18;;27059:62:0::1;6174:346:1::0;27059:62:0::1;27132:19;:42:::0;27185:14:::1;:32:::0;;-1:-1:-1;;27185:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26943:282::o;10962:150::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;11055:6:::1;::::0;11034:40:::1;::::0;11071:1:::1;::::0;-1:-1:-1;;;;;11055:6:0::1;::::0;11034:40:::1;::::0;11071:1;;11034:40:::1;11085:6;:19:::0;;-1:-1:-1;;;;;;11085:19:0::1;::::0;;10962:150::o;26236:301::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;26314:107:::1;::::0;6738:34:1;6726:47;;-1:-1:-1;;;6798:2:1;6789:12;;6782:41;26297:12:0::1;::::0;26322:10:::1;::::0;26346:21:::1;::::0;6848:2:1;6839:12;26314:107:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26296:125;;;26440:7;26432:97;;;::::0;-1:-1:-1;;;26432:97:0;;7064:2:1;26432:97:0::1;::::0;::::1;7046:21:1::0;7103:2;7083:18;;;7076:30;7142:34;7122:18;;;7115:62;7213:34;7193:18;;;7186:62;-1:-1:-1;;;7264:19:1;;;7257:44;7318:19;;26432:97:0::1;6862:481:1::0;26432:97:0::1;26285:252;26236:301::o:0;5173:104::-;5229:13;5262:7;5255:14;;;;;:::i;20695:250::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;20802:13:::1;::::0;-1:-1:-1;;;;;20802:13:0;;::::1;20794:21:::0;;::::1;::::0;20786:99:::1;;;::::0;-1:-1:-1;;;20786:99:0;;7550:2:1;20786:99:0::1;::::0;::::1;7532:21:1::0;7589:2;7569:18;;;7562:30;7628:34;7608:18;;;7601:62;7699:34;7679:18;;;7672:62;-1:-1:-1;;;7750:19:1;;;7743:32;7792:19;;20786:99:0::1;7348:469:1::0;20786:99:0::1;20896:41;20925:4;20931:5;20896:28;:41::i;:::-;20695:250:::0;;:::o;6745:269::-;6838:4;6855:129;415:10;6878:7;6887:96;6926:15;6887:96;;;;;;;;;;;;;;;;;415:10;6887:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6887:34:0;;;;;;;;;;;;:38;:96::i;5637:175::-;5723:4;5740:42;415:10;5764:9;5775:6;5740:9;:42::i;21247:339::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21344:32:0;::::1;21336:68;;;::::0;-1:-1:-1;;;21336:68:0;;8024:2:1;21336:68:0::1;::::0;::::1;8006:21:1::0;8063:2;8043:18;;;8036:30;8102:25;8082:18;;;8075:53;8145:18;;21336:68:0::1;7822:347:1::0;21336:68:0::1;21415:41;21431:18;21451:4;21415:15;:41::i;:::-;21515:15;::::0;21472:59:::1;::::0;-1:-1:-1;;;;;21515:15:0;;::::1;::::0;21472:59;::::1;::::0;::::1;::::0;21515:15:::1;::::0;21472:59:::1;21542:15;:36:::0;;-1:-1:-1;;;;;;21542:36:0::1;-1:-1:-1::0;;;;;21542:36:0;;;::::1;::::0;;;::::1;::::0;;21247:339::o;20064:184::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20149:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20149:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20206:34;;1163:41:1;;;20206:34:0::1;::::0;1136:18:1;20206:34:0::1;;;;;;;20064:184:::0;;:::o;20381:306::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;20500:9:::1;20496:115;20515:19:::0;;::::1;20496:115;;;20591:8;20556:19;:32;20576:8;;20585:1;20576:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20556:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20556:32:0;:43;;-1:-1:-1;;20556:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20536:3;::::1;::::0;::::1;:::i;:::-;;;;20496:115;;;;20628:51;20660:8;;20670;20628:51;;;;;;;;:::i;:::-;;;;;;;;20381:306:::0;;;:::o;19763:174::-;10875:6;;19844:4;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;19883:20:::1;:9:::0;19896:6:::1;19883:20;:::i;:::-;19862:18;:41:::0;-1:-1:-1;19923:4:0::1;19763:174:::0;;;:::o;11122:244::-;10875:6;;-1:-1:-1;;;;;10875:6:0;415:10;10875:22;10867:67;;;;-1:-1:-1;;;10867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11211:22:0;::::1;11203:73;;;::::0;-1:-1:-1;;;11203:73:0;;9752:2:1;11203:73:0::1;::::0;::::1;9734:21:1::0;9791:2;9771:18;;;9764:30;9830:34;9810:18;;;9803:62;-1:-1:-1;;;9881:18:1;;;9874:36;9927:19;;11203:73:0::1;9550:402:1::0;11203:73:0::1;11313:6;::::0;11292:38:::1;::::0;-1:-1:-1;;;;;11292:38:0;;::::1;::::0;11313:6:::1;::::0;11292:38:::1;::::0;11313:6:::1;::::0;11292:38:::1;11341:6;:17:::0;;-1:-1:-1;;;;;;11341:17:0::1;-1:-1:-1::0;;;;;11341:17:0;;;::::1;::::0;;;::::1;::::0;;11122:244::o;8981:181::-;9039:7;;9071:5;9075:1;9071;:5;:::i;:::-;9059:17;;9100:1;9095;:6;;9087:46;;;;-1:-1:-1;;;9087:46:0;;10289:2:1;9087:46:0;;;10271:21:1;10328:2;10308:18;;;10301:30;10367:29;10347:18;;;10340:57;10414:18;;9087:46:0;10087:351:1;8435:380:0;-1:-1:-1;;;;;8571:19:0;;8563:68;;;;-1:-1:-1;;;8563:68:0;;10645:2:1;8563:68:0;;;10627:21:1;10684:2;10664:18;;;10657:30;10723:34;10703:18;;;10696:62;-1:-1:-1;;;10774:18:1;;;10767:34;10818:19;;8563:68:0;10443:400:1;8563:68:0;-1:-1:-1;;;;;8650:21:0;;8642:68;;;;-1:-1:-1;;;8642:68:0;;11050:2:1;8642:68:0;;;11032:21:1;11089:2;11069:18;;;11062:30;11128:34;11108:18;;;11101:62;-1:-1:-1;;;11179:18:1;;;11172:32;11221:19;;8642:68:0;10848:398:1;8642:68:0;-1:-1:-1;;;;;8723:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8775:32;;1361:25:1;;;8775:32:0;;1334:18:1;8775:32:0;;;;;;;;8435:380;;;:::o;21727:2010::-;-1:-1:-1;;;;;21859:18:0;;21851:68;;;;-1:-1:-1;;;21851:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21938:16:0;;21930:64;;;;-1:-1:-1;;;21930:64:0;;;;;;;:::i;:::-;22011:6;22021:1;22011:11;22008:92;;22039:28;22055:4;22061:2;22065:1;22039:15;:28::i;:::-;21727:2010;;;:::o;22008:92::-;22116:13;;;;22115:14;;:56;;;22159:12;22133:18;;22154:1;22133:22;;;;:::i;:::-;:38;;22115:56;22112:193;;;-1:-1:-1;;;;;22195:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22224:23:0;;;;;;:19;:23;;;;;;;;22195:52;22187:106;;;;-1:-1:-1;;;22187:106:0;;12263:2:1;22187:106:0;;;12245:21:1;12302:2;12282:18;;;12275:30;12341:34;12321:18;;;12314:62;-1:-1:-1;;;12392:18:1;;;12385:39;12441:19;;22187:106:0;12061:405:1;22187:106:0;22366:4;22317:28;5603:18;;;;;;;;;;;22424;;22400:42;;;;;;;22472:35;;-1:-1:-1;22496:11:0;;;;;;;22472:35;:61;;;;-1:-1:-1;22525:8:0;;-1:-1:-1;;;22525:8:0;;;;22524:9;22472:61;:110;;;;-1:-1:-1;;;;;;22551:31:0;;;;;;:25;:31;;;;;;;;22550:32;22472:110;:153;;;;-1:-1:-1;;;;;;22600:25:0;;;;;;:19;:25;;;;;;;;22599:26;22472:153;:194;;;;-1:-1:-1;;;;;;22643:23:0;;;;;;:19;:23;;;;;;;;22642:24;22472:194;22455:321;;;22693:8;:15;;-1:-1:-1;;;;22693:15:0;-1:-1:-1;;;22693:15:0;;;22723:10;:8;:10::i;:::-;22748:8;:16;;-1:-1:-1;;;;22748:16:0;;;22455:321;22804:8;;-1:-1:-1;;;;;22830:25:0;;22788:12;22830:25;;;:19;:25;;;;;;22804:8;-1:-1:-1;;;22804:8:0;;;;;22803:9;;22830:25;;:52;;-1:-1:-1;;;;;;22859:23:0;;;;;;:19;:23;;;;;;;;22830:52;22827:99;;;-1:-1:-1;22909:5:0;22827:99;22938:12;22972:7;22969:713;;;-1:-1:-1;;;;;23040:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23089:1;23073:13;;:17;23040:50;23036:497;;;23117:41;23147:10;;23117:25;23128:13;;23117:6;:10;;:25;;;;:::i;:::-;:29;;:41::i;:::-;23110:48;;23225:13;;23206:16;;23199:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23177:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;23036:497:0;;-1:-1:-1;23036:497:0;;-1:-1:-1;;;;;23314:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;23364:1;23349:12;;:16;23314:51;23311:222;;;23393:40;23422:10;;23393:24;23404:12;;23393:6;:10;;:24;;;;:::i;:40::-;23386:47;;23499:12;;23481:15;;23474:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23452:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;23311:222:0;23554:8;;23551:89;;23582:42;23598:4;23612;23619;23582:15;:42::i;:::-;23656:14;23666:4;23656:14;;:::i;:::-;;;22969:713;23694:33;23710:4;23716:2;23720:6;23694:15;:33::i;:::-;21840:1897;;;;21727:2010;;;:::o;9316:192::-;9402:7;9438:12;9430:6;;;;9422:29;;;;-1:-1:-1;;;9422:29:0;;;;;;;;:::i;:::-;-1:-1:-1;9462:9:0;9474:5;9478:1;9474;:5;:::i;:::-;9462:17;9316:192;-1:-1:-1;;;;;9316:192:0:o;20953:186::-;-1:-1:-1;;;;;21036:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21036:39:0;;;;;;;;;;21091:40;;21036:39;;:31;21091:40;;;20953:186;;:::o;7022:573::-;-1:-1:-1;;;;;7162:20:0;;7154:70;;;;-1:-1:-1;;;7154:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7243:23:0;;7235:71;;;;-1:-1:-1;;;7235:71:0;;;;;;;:::i;:::-;7399;7421:6;7399:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7399:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7379:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7504:20;;;;;;;:32;;7529:6;7504:24;:32::i;:::-;-1:-1:-1;;;;;7481:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7552:35;1361:25:1;;;7481:20:0;;7552:35;;;;;;1334:18:1;7552:35:0;1215:177:1;25156:890:0;25239:4;25195:23;5603:18;;;;;;;;;;;25284;;25318:20;;;:46;;-1:-1:-1;25342:22:0;;25318:46;25315:60;;;25367:7;;25156:890::o;25315:60::-;25387:12;25440:21;25474:33;25491:15;25474:16;:33::i;:::-;25520:18;25541:44;:21;25567:17;25541:25;:44::i;:::-;25520:65;;25598:23;25624:57;25663:17;25624:34;25639:18;;25624:10;:14;;:34;;;;:::i;:57::-;25697:14;;25598:83;;-1:-1:-1;25697:14:0;;25694:345;;;25748:15;;25795:19;;-1:-1:-1;;;;;25748:15:0;;;;25817:3;;25777:37;;:15;:37;:::i;:::-;:43;;;;:::i;:::-;25740:112;;13039:29:1;13027:42;;13094:2;13085:12;25740:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25727:125;;;;;25867:44;25889:21;25867;:44::i;:::-;25694:345;;;25965:15;;25957:70;;-1:-1:-1;;;13309:22:1;;-1:-1:-1;;;;;25965:15:0;;;;25994:21;;13356:1:1;13347:11;25957:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25944:83:0;;-1:-1:-1;;25694:345:0;25184:862;;;;;;25156:890::o;9518:252::-;9576:7;9602:1;9607;9602:6;9598:47;;-1:-1:-1;9632:1:0;9625:8;;9598:47;9657:9;9669:5;9673:1;9669;:5;:::i;:::-;9657:17;-1:-1:-1;9702:1:0;9693:5;9697:1;9657:17;9693:5;:::i;:::-;:10;9685:56;;;;-1:-1:-1;;;9685:56:0;;13571:2:1;9685:56:0;;;13553:21:1;13610:2;13590:18;;;13583:30;13649:34;13629:18;;;13622:62;-1:-1:-1;;;13700:18:1;;;13693:31;13741:19;;9685:56:0;13369:397:1;9778:132:0;9836:7;9863:39;9867:1;9870;9863:39;;;;;;;;;;;;;;;;;:3;:39::i;24234:479::-;24326:16;;;24340:1;24326:16;;;;;;;;24302:21;;24326:16;;;;;;;;;;-1:-1:-1;24326:16:0;24302:40;;24371:4;24353;24358:1;24353:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24353:23:0;;;:7;;;;;;;;;;:23;;;;24397:15;;:22;;;-1:-1:-1;;;24397:22:0;;;;:15;;;;;:20;;:22;;;;;24353:7;;24397:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24387:4;24392:1;24387:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24387:32:0;;;:7;;;;;;;;;:32;24464:15;;24432:62;;24449:4;;24464:15;24482:11;24432:8;:62::i;:::-;24507:15;;:196;;-1:-1:-1;;;24507:196:0;;-1:-1:-1;;;;;24507:15:0;;;;:66;;:196;;24588:11;;24507:15;;24630:4;;24657;;24677:15;;24507:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9172:136;9230:7;9257:43;9261:1;9264;9257:43;;;;;;;;;;;;;;;;;:3;:43::i;23745:481::-;23817:13;;23814:405;;23870:16;;;23884:1;23870:16;;;;;;;;23846:21;;23870:16;;;;;;;;-1:-1:-1;;23911:15:0;;:22;;;-1:-1:-1;;;23911:22:0;;;;23846:40;;-1:-1:-1;;;;;;23911:15:0;;;;:20;;-1:-1:-1;23911:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23901:4;23906:1;23901:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;23901:32:0;;;-1:-1:-1;;;;;23901:32:0;;;;;23966:4;23948;23953:1;23948:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23948:23:0;;;:7;;;;;;;;;:23;23988:15;;24142;;23988:219;;-1:-1:-1;;;23988:219:0;;:15;;;;:66;;24062:9;;23988:219;;:15;;24111:4;;24142:15;;;;24177;;23988:219;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9918:191;10004:7;10039:12;10032:5;10024:28;;;;-1:-1:-1;;;10024:28:0;;;;;;;;:::i;:::-;-1:-1:-1;10063:9:0;10075:5;10079:1;10075;: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:247::-;2341:6;2394:2;2382:9;2373:7;2369:23;2365:32;2362:52;;;2410:1;2407;2400:12;2362:52;2449:9;2436:23;2468:31;2493:5;2468:31;:::i;2534:118::-;2620:5;2613:13;2606:21;2599:5;2596:32;2586:60;;2642:1;2639;2632:12;2657:309;2722:6;2730;2783:2;2771:9;2762:7;2758:23;2754:32;2751:52;;;2799:1;2796;2789:12;2751:52;2838:9;2825:23;2857:28;2879:5;2857:28;:::i;3179:382::-;3244:6;3252;3305:2;3293:9;3284:7;3280:23;3276:32;3273:52;;;3321:1;3318;3311:12;3273:52;3360:9;3347:23;3379:31;3404:5;3379:31;:::i;:::-;3429:5;-1:-1:-1;3486:2:1;3471:18;;3458:32;3499:30;3458:32;3499:30;:::i;:::-;3548:7;3538:17;;;3179:382;;;;;:::o;3566:750::-;3658:6;3666;3674;3727:2;3715:9;3706:7;3702:23;3698:32;3695:52;;;3743:1;3740;3733:12;3695:52;3783:9;3770:23;3812:18;3853:2;3845:6;3842:14;3839:34;;;3869:1;3866;3859:12;3839:34;3907:6;3896:9;3892:22;3882:32;;3952:7;3945:4;3941:2;3937:13;3933:27;3923:55;;3974:1;3971;3964:12;3923:55;4014:2;4001:16;4040:2;4032:6;4029:14;4026:34;;;4056:1;4053;4046:12;4026:34;4111:7;4104:4;4094:6;4091:1;4087:14;4083:2;4079:23;4075:34;4072:47;4069:67;;;4132:1;4129;4122:12;4069:67;4163:4;4155:13;;;;-1:-1:-1;4187:6:1;-1:-1:-1;;4228:20:1;;4215:34;4258:28;4215:34;4258:28;:::i;:::-;4305:5;4295:15;;;3566:750;;;;;:::o;4321:180::-;4380:6;4433:2;4421:9;4412:7;4408:23;4404:32;4401:52;;;4449:1;4446;4439:12;4401:52;-1:-1:-1;4472:23:1;;4321:180;-1:-1:-1;4321:180:1: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;5924:245::-;5991:6;6044:2;6032:9;6023:7;6019:23;6015:32;6012:52;;;6060:1;6057;6050:12;6012:52;6092:9;6086:16;6111:28;6133:5;6111:28;:::i;8174:127::-;8235:10;8230:3;8226:20;8223:1;8216:31;8266:4;8263:1;8256:15;8290:4;8287:1;8280:15;8306:127;8367:10;8362:3;8358:20;8355:1;8348:31;8398:4;8395:1;8388:15;8422:4;8419:1;8412:15;8438:135;8477:3;8498:17;;;8495:43;;8518:18;;:::i;:::-;-1:-1:-1;8565:1:1;8554:13;;8438:135::o;8578:794::-;8800:2;8812:21;;;8785:18;;8868:22;;;8752:4;8947:6;8921:2;8906:18;;8752:4;8981:304;8995:6;8992:1;8989:13;8981:304;;;9070:6;9057:20;9090:31;9115:5;9090:31;:::i;:::-;-1:-1:-1;;;;;9146:31:1;9134:44;;9201:4;9260:15;;;;9225:12;;;;9174:1;9010:9;8981:304;;;8985:3;9302;9294:11;;;;9357:6;9350:14;9343:22;9336:4;9325:9;9321:20;9314:52;8578:794;;;;;;:::o;9377:168::-;9450:9;;;9481;;9498:15;;;9492:22;;9478:37;9468:71;;9519:18;;:::i;9957:125::-;10022:9;;;10043:10;;;10040:36;;;10056:18;;:::i;11251:401::-;11453:2;11435:21;;;11492:2;11472:18;;;11465:30;11531:34;11526:2;11511:18;;11504:62;-1:-1:-1;;;11597:2:1;11582:18;;11575:35;11642:3;11627:19;;11251:401::o;11657:399::-;11859:2;11841:21;;;11898:2;11878:18;;;11871:30;11937:34;11932:2;11917:18;;11910:62;-1:-1:-1;;;12003:2:1;11988:18;;11981:33;12046:3;12031:19;;11657:399::o;12471:217::-;12511:1;12537;12527:132;;12581:10;12576:3;12572:20;12569:1;12562:31;12616:4;12613:1;12606:15;12644:4;12641:1;12634:15;12527:132;-1:-1:-1;12673:9:1;;12471:217::o;12693:128::-;12760:9;;;12781:11;;;12778:37;;;12795:18;;:::i;13903:251::-;13973:6;14026:2;14014:9;14005:7;14001:23;13997:32;13994:52;;;14042:1;14039;14032:12;13994:52;14074:9;14068:16;14093:31;14118:5;14093:31;:::i;14159:461::-;14212:3;14250:5;14244:12;14277:6;14272:3;14265:19;14303:4;14332:2;14327:3;14323:12;14316:19;;14369:2;14362:5;14358:14;14390:1;14400:195;14414:6;14411:1;14408:13;14400:195;;;14479:13;;-1:-1:-1;;;;;14475:39:1;14463:52;;14535:12;;;;14570:15;;;;14511:1;14429:9;14400:195;;;-1:-1:-1;14611:3:1;;14159:461;-1:-1:-1;;;;;14159:461:1:o;14625:582::-;14924:6;14913:9;14906:25;14967:6;14962:2;14951:9;14947:18;14940:34;15010:3;15005:2;14994:9;14990:18;14983:31;14887:4;15031:57;15083:3;15072:9;15068:19;15060:6;15031:57;:::i;:::-;-1:-1:-1;;;;;15124:32:1;;;;15119:2;15104:18;;15097:60;-1:-1:-1;15188:3:1;15173:19;15166:35;15023:65;14625:582;-1:-1:-1;;;14625:582:1:o;15212:510::-;15483:6;15472:9;15465:25;15526:3;15521:2;15510:9;15506:18;15499:31;15446:4;15547:57;15599:3;15588:9;15584:19;15576:6;15547:57;:::i;:::-;-1:-1:-1;;;;;15640:32:1;;;;15635:2;15620:18;;15613:60;-1:-1:-1;15704:2:1;15689:18;15682:34;15539:65;15212:510;-1:-1:-1;;15212:510:1:o

Swarm Source

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