ETH Price: $3,446.86 (+1.42%)

Token

AXIONEX (EX)
 

Overview

Max Total Supply

220,000,000 EX

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
605,499.033059275702616884 EX

Value
$0.00
0xb5c230623972477c1fe456564d1488757aa11fa4
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:
AXIONEX

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

t.me/Axionex

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

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

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

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

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

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

    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() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

contract AXIONEX is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping(address => bool) private _isExcludedFromFee;

    mapping(address => bool) private _isExcludedFromLimit;

    uint256 private _tTotal = 220000000 * 10**18;

    address payable private _marketingAddress = payable(address(0x834EAfEaBa8cD6C704d356Ad6ebF498a23393942));

    string private _name = "AXIONEX";
    string private _symbol = "EX";
    uint8 private _decimals = 18;

    struct BuyFee {
        uint8 liquidity;
        uint8 marketing;
    }

    struct SellFee {
        uint8 liquidity;
        uint8 marketing;
    }

    BuyFee public buyFee;
    SellFee public sellFee;

    uint8 private _liquidityFee;
    uint8 private _marketingFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxTxAmount = _tTotal.div(1000).mul(30); // 3%
    uint256 private numTokensSellToAddToLiquidity = _tTotal.div(1000).mul(3); //0.3%
    uint256 public _maxWalletSize = _tTotal.div(1000).mul(30); // 3%

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    bool public tradingOpen = false;

    mapping (address => uint256) _lastTrade;

    constructor() {
        _rOwned[_msgSender()] = _tTotal;

        buyFee.liquidity = 1;
        buyFee.marketing = 9;

        sellFee.liquidity = 1;
        sellFee.marketing = 19;

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

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        _isExcludedFromLimit[_marketingAddress] = true;
        _isExcludedFromLimit[owner()] = true;
        _isExcludedFromLimit[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

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

    function includeInLimit(address account) public onlyOwner {
    _isExcludedFromLimit[account] = false;
    
    }

    function includeInFee(address account) public onlyOwner {
    _isExcludedFromFee[account] = false;
    
    }


    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function excludeFromLimit(address account) public onlyOwner {
        _isExcludedFromLimit[account] = true;
    }

    function updateMarketingWallet(address payable newMarketingWallet) public onlyOwner {
    require(newMarketingWallet != address(0), "Invalid address: address cannot be the zero address");
    _marketingAddress = newMarketingWallet;
    
    }


    function setBothFees(
        uint8 buy_liquidity,
        uint8 buy_marketing,
        uint8 sell_liquidity,
        uint8 sell_marketing
    ) external onlyOwner {
        buyFee.marketing = buy_marketing;
        buyFee.liquidity = buy_liquidity;

        sellFee.marketing = sell_marketing;
        sellFee.liquidity = sell_liquidity;
    }

    function setNumTokensSellToAddToLiquidity(uint256 numTokens) external onlyOwner {
        numTokensSellToAddToLiquidity = numTokens;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    receive() external payable {}

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tWallet = calculateMarketingFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tLiquidity).sub(tWallet);

        return (tTransferAmount, tLiquidity, tWallet);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(tLiquidity);
    }

    function _takeWalletFee(uint256 tWallet) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(tWallet);
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(10**2);
    }

    function calculateMarketingFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_marketingFee).div(10**2);
    }

    function removeAllFee() private {
        _liquidityFee = 0;
        _marketingFee = 0;
    }

    function setBuy() private {
        _liquidityFee = buyFee.liquidity;
        _marketingFee = buyFee.marketing;
    }

    function setSell() private {
        _liquidityFee = sellFee.liquidity;
        _marketingFee = sellFee.marketing;
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (from != owner() && to != owner()) require(tradingOpen, "Trading not yet enabled.");

        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        if (takeFee) {
            if (!_isExcludedFromLimit[from] && !_isExcludedFromLimit[to]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                if (to != uniswapV2Pair) {
                    require(amount + balanceOf(to) <= _maxWalletSize, "Recipient exceeds max wallet size.");
                }
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 denominator = (buyFee.liquidity + sellFee.liquidity + buyFee.marketing + sellFee.marketing) * 2;
        uint256 tokensToAddLiquidityWith = (tokens * (buyFee.liquidity + sellFee.liquidity)) / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity));
        uint256 ethToAddLiquidityWith = unitBalance * (buyFee.liquidity + sellFee.liquidity);

        if (ethToAddLiquidityWith > 0) {
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * (buyFee.marketing + sellFee.marketing);
        if (marketingAmt > 0) {
            payable(_marketingAddress).transfer(marketingAmt);
        }
    }

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

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

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

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

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (takeFee) {
            removeAllFee();
            if (sender == uniswapV2Pair) {
                setBuy();
            }
            if (recipient == uniswapV2Pair) {
                setSell();
            }
        }

        _transferStandard(sender, recipient, amount);

        removeAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 tTransferAmount,
            uint256 tLiquidity,
            uint256 tWallet
        ) = _getTValues(tAmount);

        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeWalletFee(tWallet);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading is already open.");
        tradingOpen = true;
    }
}

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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy_liquidity","type":"uint8"},{"internalType":"uint8","name":"buy_marketing","type":"uint8"},{"internalType":"uint8","name":"sell_liquidity","type":"uint8"},{"internalType":"uint8","name":"sell_marketing","type":"uint8"}],"name":"setBothFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6ab5facfe5b81c365c000000600655600780546001600160a01b03191673834eafeaba8cd6c704d356ad6ebf498a2339394217815561010060405260c090815266082b0929e9c8ab60cb1b60e05260089061005a90826105af565b5060408051808201909152600281526108ab60f31b602082015260099061008190826105af565b50600a805460ff19166012179055600d805463ff000000191663010000001790556006546100be90601e906100b8906103e861040f565b9061045f565b600e556006546100d7906003906100b8906103e861040f565b600f556006546100f090601e906100b8906103e861040f565b6010556011805460ff19169055348015610108575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255600b805461ffff1990811661090117909155600c8054909116611301179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa1580156101cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ef9190610669565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561023a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025e9190610669565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102cc9190610669565b6001600160a01b0390811660a0528116608052600160045f6102f55f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526004845282812080548616600190811790915560078054841683528483208054881683179055549092168152600593849052918220805490941681179093556103755f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff1995861617905530815260059092529020805490911660011790556103bb3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405161040191815260200190565b60405180910390a350610706565b5f61045683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506104e260201b60201c565b90505b92915050565b5f825f0361046e57505f610459565b5f610479838561068f565b90508261048685836106b2565b146104565760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b5f81836105025760405162461bcd60e51b81526004016104d991906106d1565b505f61050e84866106b2565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061053f57607f821691505b60208210810361055d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105aa57805f5260205f20601f840160051c810160208510156105885750805b601f840160051c820191505b818110156105a7575f8155600101610594565b50505b505050565b81516001600160401b038111156105c8576105c8610517565b6105dc816105d6845461052b565b84610563565b6020601f82116001811461060e575f83156105f75750848201515b5f19600385901b1c1916600184901b1784556105a7565b5f84815260208120601f198516915b8281101561063d578785015182556020948501946001909201910161061d565b508482101561065a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610679575f80fd5b81516001600160a01b0381168114610456575f80fd5b808202811582820484141761045957634e487b7160e01b5f52601160045260245ffd5b5f826106cc57634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a051611cbd6107665f395f81816103b701528181610e3401528181610f89015281816112b6015261131c01525f8181610253015281816113f6015281816114ad015281816114e90152818161155501526115b00152611cbd5ff3fe6080604052600436106101bd575f3560e01c806370a08231116100f2578063a9059cbb11610092578063dd62ed3e11610062578063dd62ed3e1461052b578063ea2f0b371461056f578063f0f165af1461058e578063ffb54a99146105ad575f80fd5b8063a9059cbb146104ba578063aacebbe3146104d9578063c49b9a80146104f8578063c9567bf914610517575f80fd5b80638da5cb5b116100cd5780638da5cb5b146104565780638f9a55c01461047257806391d919a91461048757806395d89b41146104a6575f80fd5b806370a08231146103f9578063715018a61461042d5780637d1db4a514610441575f80fd5b8063313ce5671161015d578063437823ec11610138578063437823ec14610365578063470624021461038457806349bd5a5e146103a65780634a74bb02146103d9575f80fd5b8063313ce5671461030657806339509351146103275780633a17304a14610346575f80fd5b80631694505e116101985780631694505e1461024257806318160ddd1461028d57806323b872dd146102ab5780632b14ca56146102ca575f80fd5b806306fdde03146101c8578063095ea7b3146101f25780630bd3a7f914610221575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc6105c6565b6040516101e991906118da565b60405180910390f35b3480156101fd575f80fd5b5061021161020c366004611926565b610656565b60405190151581526020016101e9565b34801561022c575f80fd5b5061024061023b366004611950565b61066c565b005b34801561024d575f80fd5b506102757f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e9565b348015610298575f80fd5b506006545b6040519081526020016101e9565b3480156102b6575f80fd5b506102116102c536600461196b565b6106c1565b3480156102d5575f80fd5b50600c546102ec9060ff8082169161010090041682565b6040805160ff9384168152929091166020830152016101e9565b348015610311575f80fd5b50600a5460405160ff90911681526020016101e9565b348015610332575f80fd5b50610211610341366004611926565b610728565b348015610351575f80fd5b506102406103603660046119be565b61075d565b348015610370575f80fd5b5061024061037f366004611950565b6107c5565b34801561038f575f80fd5b50600b546102ec9060ff8082169161010090041682565b3480156103b1575f80fd5b506102757f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e4575f80fd5b50600d54610211906301000000900460ff1681565b348015610404575f80fd5b5061029d610413366004611950565b6001600160a01b03165f9081526002602052604090205490565b348015610438575f80fd5b50610240610811565b34801561044c575f80fd5b5061029d600e5481565b348015610461575f80fd5b505f546001600160a01b0316610275565b34801561047d575f80fd5b5061029d60105481565b348015610492575f80fd5b506102406104a1366004611950565b610882565b3480156104b1575f80fd5b506101dc6108cb565b3480156104c5575f80fd5b506102116104d4366004611926565b6108da565b3480156104e4575f80fd5b506102406104f3366004611950565b6108e6565b348015610503575f80fd5b50610240610512366004611a0f565b6109a3565b348015610522575f80fd5b50610240610a24565b348015610536575f80fd5b5061029d610545366004611a2e565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561057a575f80fd5b50610240610589366004611950565b610aaf565b348015610599575f80fd5b506102406105a8366004611a65565b610af8565b3480156105b8575f80fd5b506011546102119060ff1681565b6060600880546105d590611a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611a7c565b801561064c5780601f106106235761010080835404028352916020019161064c565b820191905f5260205f20905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b5f610662338484610b26565b5060015b92915050565b5f546001600160a01b0316331461069e5760405162461bcd60e51b815260040161069590611ab4565b60405180910390fd5b6001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f6106cd848484610c49565b61071e843361071985604051806060016040528060288152602001611c60602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611052565b610b26565b5060019392505050565b335f8181526003602090815260408083206001600160a01b03871684529091528120549091610662918590610719908661108a565b5f546001600160a01b031633146107865760405162461bcd60e51b815260040161069590611ab4565b600b805461ffff1990811661010060ff968716810260ff199081169290921797871697909717909255600c805490911692851690950216179116179055565b5f546001600160a01b031633146107ee5760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b0316331461083a5760405162461bcd60e51b815260040161069590611ab4565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108ab5760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b03165f908152600560205260409020805460ff19169055565b6060600980546105d590611a7c565b5f610662338484610c49565b5f546001600160a01b0316331461090f5760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b0381166109815760405162461bcd60e51b815260206004820152603360248201527f496e76616c696420616464726573733a20616464726573732063616e6e6f7420604482015272626520746865207a65726f206164647265737360681b6064820152608401610695565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109cc5760405162461bcd60e51b815260040161069590611ab4565b600d805482151563010000000263ff000000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610a1990831515815260200190565b60405180910390a150565b5f546001600160a01b03163314610a4d5760405162461bcd60e51b815260040161069590611ab4565b60115460ff1615610aa05760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2e00000000000000006044820152606401610695565b6011805460ff19166001179055565b5f546001600160a01b03163314610ad85760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314610b215760405162461bcd60e51b815260040161069590611ab4565b600f55565b6001600160a01b038316610b885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610695565b6001600160a01b038216610be95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610695565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610695565b6001600160a01b038216610d0f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610695565b5f8111610d705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610695565b5f546001600160a01b03848116911614801590610d9a57505f546001600160a01b03838116911614155b15610df15760115460ff16610df15760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610695565b305f90815260026020526040902054600e548110610e0e5750600e545b600f5481108015908190610e2b5750600d5462010000900460ff16155b8015610e6957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015610e7e5750600d546301000000900460ff165b15610e9157600f549150610e91826110ef565b6001600160a01b0385165f9081526004602052604090205460019060ff1680610ed157506001600160a01b0385165f9081526004602052604090205460ff165b15610ed957505f5b801561103e576001600160a01b0386165f9081526005602052604090205460ff16158015610f1f57506001600160a01b0385165f9081526005602052604090205460ff16155b1561103e57600e54841115610f875760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610695565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461103e576010546001600160a01b0386165f90815260026020526040902054610fe59086611afd565b111561103e5760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b6064820152608401610695565b61104a8686868461129e565b505050505050565b5f81848411156110755760405162461bcd60e51b815260040161069591906118da565b505f6110818486611b10565b95945050505050565b5f806110968385611afd565b9050838110156110e85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610695565b9392505050565b600d805462ff0000191662010000179055600c54600b545f9161010080820460ff90811693918204811692611128929082169116611b23565b6111329190611b23565b61113c9190611b23565b611147906002611b3c565b600c54600b5460ff92831693505f928492611166929082169116611b23565b6111739060ff1685611b5f565b61117d9190611b76565b90505f61118a8285611b10565b905047611196826113a1565b5f6111a18247611b10565b600c54600b549192505f916111bc9160ff9081169116611b23565b6111c99060ff1687611b10565b6111d39083611b76565b600c54600b549192505f916111ee9160ff9081169116611b23565b6111fb9060ff1683611b5f565b9050801561120d5761120d868261154f565b600c54600b545f9161122e9160ff6101009283900481169290910416611b23565b60ff1661123c846002611b5f565b6112469190611b5f565b90508015611287576007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611285573d5f803e3d5ffd5b505b5050600d805462ff00001916905550505050505050565b8015611380576112b4600d805461ffff19169055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361131a5761131a600b54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361138057611380600c54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b61138b84848461162c565b61139b600d805461ffff19169055565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113d4576113d4611b95565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611450573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114749190611ba9565b8160018151811061148757611487611b95565b60200260200101906001600160a01b031690816001600160a01b0316815250506114d2307f000000000000000000000000000000000000000000000000000000000000000084610b26565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906115269085905f90869030904290600401611bc4565b5f604051808303815f87803b15801561153d575f80fd5b505af115801561104a573d5f803e3d5ffd5b61157a307f000000000000000000000000000000000000000000000000000000000000000084610b26565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611600573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116259190611c34565b5050505050565b5f805f6116388461170f565b6001600160a01b0389165f908152600260205260409020549295509093509150611662908561174d565b6001600160a01b038088165f908152600260205260408082209390935590871681522054611690908461108a565b6001600160a01b0386165f908152600260205260409020556116b18261178e565b6116ba8161178e565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116ff91815260200190565b60405180910390a3505050505050565b5f805f8061171c856117b9565b90505f611728866117d9565b90505f61173f82611739898661174d565b9061174d565b979296509094509092505050565b5f6110e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611052565b305f908152600260205260409020546117a7908261108a565b305f9081526002602052604090205550565b600d545f90610666906064906117d390859060ff166117f4565b90611872565b600d545f90610666906064906117d3908590610100900460ff165b5f825f0361180357505f610666565b5f61180e8385611b5f565b90508261181b8583611b76565b146110e85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610695565b5f6110e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836118ce5760405162461bcd60e51b815260040161069591906118da565b505f6110818486611b76565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611923575f80fd5b50565b5f8060408385031215611937575f80fd5b82356119428161190f565b946020939093013593505050565b5f60208284031215611960575f80fd5b81356110e88161190f565b5f805f6060848603121561197d575f80fd5b83356119888161190f565b925060208401356119988161190f565b929592945050506040919091013590565b803560ff811681146119b9575f80fd5b919050565b5f805f80608085870312156119d1575f80fd5b6119da856119a9565b93506119e8602086016119a9565b92506119f6604086016119a9565b9150611a04606086016119a9565b905092959194509250565b5f60208284031215611a1f575f80fd5b813580151581146110e8575f80fd5b5f8060408385031215611a3f575f80fd5b8235611a4a8161190f565b91506020830135611a5a8161190f565b809150509250929050565b5f60208284031215611a75575f80fd5b5035919050565b600181811c90821680611a9057607f821691505b602082108103611aae57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561066657610666611ae9565b8181038181111561066657610666611ae9565b60ff818116838216019081111561066657610666611ae9565b60ff8181168382160290811690818114611b5857611b58611ae9565b5092915050565b808202811582820484141761066657610666611ae9565b5f82611b9057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611bb9575f80fd5b81516110e88161190f565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611c145783516001600160a01b0316835260209384019390920191600101611bed565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215611c46575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220836d3ba135689b4d1bbb312bd1c9df74135c620c5b677919a06c8f4624e2356d64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c806370a08231116100f2578063a9059cbb11610092578063dd62ed3e11610062578063dd62ed3e1461052b578063ea2f0b371461056f578063f0f165af1461058e578063ffb54a99146105ad575f80fd5b8063a9059cbb146104ba578063aacebbe3146104d9578063c49b9a80146104f8578063c9567bf914610517575f80fd5b80638da5cb5b116100cd5780638da5cb5b146104565780638f9a55c01461047257806391d919a91461048757806395d89b41146104a6575f80fd5b806370a08231146103f9578063715018a61461042d5780637d1db4a514610441575f80fd5b8063313ce5671161015d578063437823ec11610138578063437823ec14610365578063470624021461038457806349bd5a5e146103a65780634a74bb02146103d9575f80fd5b8063313ce5671461030657806339509351146103275780633a17304a14610346575f80fd5b80631694505e116101985780631694505e1461024257806318160ddd1461028d57806323b872dd146102ab5780632b14ca56146102ca575f80fd5b806306fdde03146101c8578063095ea7b3146101f25780630bd3a7f914610221575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc6105c6565b6040516101e991906118da565b60405180910390f35b3480156101fd575f80fd5b5061021161020c366004611926565b610656565b60405190151581526020016101e9565b34801561022c575f80fd5b5061024061023b366004611950565b61066c565b005b34801561024d575f80fd5b506102757f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101e9565b348015610298575f80fd5b506006545b6040519081526020016101e9565b3480156102b6575f80fd5b506102116102c536600461196b565b6106c1565b3480156102d5575f80fd5b50600c546102ec9060ff8082169161010090041682565b6040805160ff9384168152929091166020830152016101e9565b348015610311575f80fd5b50600a5460405160ff90911681526020016101e9565b348015610332575f80fd5b50610211610341366004611926565b610728565b348015610351575f80fd5b506102406103603660046119be565b61075d565b348015610370575f80fd5b5061024061037f366004611950565b6107c5565b34801561038f575f80fd5b50600b546102ec9060ff8082169161010090041682565b3480156103b1575f80fd5b506102757f000000000000000000000000a8b37eccec342f3f8e81a7f8e910e147aef8486481565b3480156103e4575f80fd5b50600d54610211906301000000900460ff1681565b348015610404575f80fd5b5061029d610413366004611950565b6001600160a01b03165f9081526002602052604090205490565b348015610438575f80fd5b50610240610811565b34801561044c575f80fd5b5061029d600e5481565b348015610461575f80fd5b505f546001600160a01b0316610275565b34801561047d575f80fd5b5061029d60105481565b348015610492575f80fd5b506102406104a1366004611950565b610882565b3480156104b1575f80fd5b506101dc6108cb565b3480156104c5575f80fd5b506102116104d4366004611926565b6108da565b3480156104e4575f80fd5b506102406104f3366004611950565b6108e6565b348015610503575f80fd5b50610240610512366004611a0f565b6109a3565b348015610522575f80fd5b50610240610a24565b348015610536575f80fd5b5061029d610545366004611a2e565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561057a575f80fd5b50610240610589366004611950565b610aaf565b348015610599575f80fd5b506102406105a8366004611a65565b610af8565b3480156105b8575f80fd5b506011546102119060ff1681565b6060600880546105d590611a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611a7c565b801561064c5780601f106106235761010080835404028352916020019161064c565b820191905f5260205f20905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b5f610662338484610b26565b5060015b92915050565b5f546001600160a01b0316331461069e5760405162461bcd60e51b815260040161069590611ab4565b60405180910390fd5b6001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f6106cd848484610c49565b61071e843361071985604051806060016040528060288152602001611c60602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611052565b610b26565b5060019392505050565b335f8181526003602090815260408083206001600160a01b03871684529091528120549091610662918590610719908661108a565b5f546001600160a01b031633146107865760405162461bcd60e51b815260040161069590611ab4565b600b805461ffff1990811661010060ff968716810260ff199081169290921797871697909717909255600c805490911692851690950216179116179055565b5f546001600160a01b031633146107ee5760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b0316331461083a5760405162461bcd60e51b815260040161069590611ab4565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108ab5760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b03165f908152600560205260409020805460ff19169055565b6060600980546105d590611a7c565b5f610662338484610c49565b5f546001600160a01b0316331461090f5760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b0381166109815760405162461bcd60e51b815260206004820152603360248201527f496e76616c696420616464726573733a20616464726573732063616e6e6f7420604482015272626520746865207a65726f206164647265737360681b6064820152608401610695565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109cc5760405162461bcd60e51b815260040161069590611ab4565b600d805482151563010000000263ff000000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610a1990831515815260200190565b60405180910390a150565b5f546001600160a01b03163314610a4d5760405162461bcd60e51b815260040161069590611ab4565b60115460ff1615610aa05760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2e00000000000000006044820152606401610695565b6011805460ff19166001179055565b5f546001600160a01b03163314610ad85760405162461bcd60e51b815260040161069590611ab4565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314610b215760405162461bcd60e51b815260040161069590611ab4565b600f55565b6001600160a01b038316610b885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610695565b6001600160a01b038216610be95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610695565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610695565b6001600160a01b038216610d0f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610695565b5f8111610d705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610695565b5f546001600160a01b03848116911614801590610d9a57505f546001600160a01b03838116911614155b15610df15760115460ff16610df15760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610695565b305f90815260026020526040902054600e548110610e0e5750600e545b600f5481108015908190610e2b5750600d5462010000900460ff16155b8015610e6957507f000000000000000000000000a8b37eccec342f3f8e81a7f8e910e147aef848646001600160a01b0316856001600160a01b031614155b8015610e7e5750600d546301000000900460ff165b15610e9157600f549150610e91826110ef565b6001600160a01b0385165f9081526004602052604090205460019060ff1680610ed157506001600160a01b0385165f9081526004602052604090205460ff165b15610ed957505f5b801561103e576001600160a01b0386165f9081526005602052604090205460ff16158015610f1f57506001600160a01b0385165f9081526005602052604090205460ff16155b1561103e57600e54841115610f875760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610695565b7f000000000000000000000000a8b37eccec342f3f8e81a7f8e910e147aef848646001600160a01b0316856001600160a01b03161461103e576010546001600160a01b0386165f90815260026020526040902054610fe59086611afd565b111561103e5760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b6064820152608401610695565b61104a8686868461129e565b505050505050565b5f81848411156110755760405162461bcd60e51b815260040161069591906118da565b505f6110818486611b10565b95945050505050565b5f806110968385611afd565b9050838110156110e85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610695565b9392505050565b600d805462ff0000191662010000179055600c54600b545f9161010080820460ff90811693918204811692611128929082169116611b23565b6111329190611b23565b61113c9190611b23565b611147906002611b3c565b600c54600b5460ff92831693505f928492611166929082169116611b23565b6111739060ff1685611b5f565b61117d9190611b76565b90505f61118a8285611b10565b905047611196826113a1565b5f6111a18247611b10565b600c54600b549192505f916111bc9160ff9081169116611b23565b6111c99060ff1687611b10565b6111d39083611b76565b600c54600b549192505f916111ee9160ff9081169116611b23565b6111fb9060ff1683611b5f565b9050801561120d5761120d868261154f565b600c54600b545f9161122e9160ff6101009283900481169290910416611b23565b60ff1661123c846002611b5f565b6112469190611b5f565b90508015611287576007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611285573d5f803e3d5ffd5b505b5050600d805462ff00001916905550505050505050565b8015611380576112b4600d805461ffff19169055565b7f000000000000000000000000a8b37eccec342f3f8e81a7f8e910e147aef848646001600160a01b0316846001600160a01b03160361131a5761131a600b54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b7f000000000000000000000000a8b37eccec342f3f8e81a7f8e910e147aef848646001600160a01b0316836001600160a01b03160361138057611380600c54600d805461010080840460ff90811690910261ffff19909216931692909217919091179055565b61138b84848461162c565b61139b600d805461ffff19169055565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113d4576113d4611b95565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611450573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114749190611ba9565b8160018151811061148757611487611b95565b60200260200101906001600160a01b031690816001600160a01b0316815250506114d2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b26565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906115269085905f90869030904290600401611bc4565b5f604051808303815f87803b15801561153d575f80fd5b505af115801561104a573d5f803e3d5ffd5b61157a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b26565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611600573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116259190611c34565b5050505050565b5f805f6116388461170f565b6001600160a01b0389165f908152600260205260409020549295509093509150611662908561174d565b6001600160a01b038088165f908152600260205260408082209390935590871681522054611690908461108a565b6001600160a01b0386165f908152600260205260409020556116b18261178e565b6116ba8161178e565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116ff91815260200190565b60405180910390a3505050505050565b5f805f8061171c856117b9565b90505f611728866117d9565b90505f61173f82611739898661174d565b9061174d565b979296509094509092505050565b5f6110e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611052565b305f908152600260205260409020546117a7908261108a565b305f9081526002602052604090205550565b600d545f90610666906064906117d390859060ff166117f4565b90611872565b600d545f90610666906064906117d3908590610100900460ff165b5f825f0361180357505f610666565b5f61180e8385611b5f565b90508261181b8583611b76565b146110e85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610695565b5f6110e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f81836118ce5760405162461bcd60e51b815260040161069591906118da565b505f6110818486611b76565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611923575f80fd5b50565b5f8060408385031215611937575f80fd5b82356119428161190f565b946020939093013593505050565b5f60208284031215611960575f80fd5b81356110e88161190f565b5f805f6060848603121561197d575f80fd5b83356119888161190f565b925060208401356119988161190f565b929592945050506040919091013590565b803560ff811681146119b9575f80fd5b919050565b5f805f80608085870312156119d1575f80fd5b6119da856119a9565b93506119e8602086016119a9565b92506119f6604086016119a9565b9150611a04606086016119a9565b905092959194509250565b5f60208284031215611a1f575f80fd5b813580151581146110e8575f80fd5b5f8060408385031215611a3f575f80fd5b8235611a4a8161190f565b91506020830135611a5a8161190f565b809150509250929050565b5f60208284031215611a75575f80fd5b5035919050565b600181811c90821680611a9057607f821691505b602082108103611aae57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561066657610666611ae9565b8181038181111561066657610666611ae9565b60ff818116838216019081111561066657610666611ae9565b60ff8181168382160290811690818114611b5857611b58611ae9565b5092915050565b808202811582820484141761066657610666611ae9565b5f82611b9057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611bb9575f80fd5b81516110e88161190f565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611c145783516001600160a01b0316835260209384019390920191600101611bed565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215611c46575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220836d3ba135689b4d1bbb312bd1c9df74135c620c5b677919a06c8f4624e2356d64736f6c634300081a0033

Deployed Bytecode Sourcemap

14038:12156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16709:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17540:161;;;;;;;;;;-1:-1:-1;17540:161:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;17540:161:0;945:187:1;18804:115:0;;;;;;;;;;-1:-1:-1;18804:115:0;;;;;:::i;:::-;;:::i;:::-;;14976:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1580:32:1;;;1562:51;;1550:2;1535:18;14976:51:0;1389:230:1;16986:95:0;;;;;;;;;;-1:-1:-1;17066:7:0;;16986:95;;;1770:25:1;;;1758:2;1743:18;16986:95:0;1624:177:1;17709:446:0;;;;;;;;;;-1:-1:-1;17709:446:0;;;;;:::i;:::-;;:::i;14875:22::-;;;;;;;;;;-1:-1:-1;14875:22:0;;;;;;;;;;;;;;;;;;;2515:4:1;2503:17;;;2485:36;;2557:17;;;;2552:2;2537:18;;2530:45;2458:18;14875:22:0;2319:262:1;16895:83:0;;;;;;;;;;-1:-1:-1;16961:9:0;;16895:83;;16961:9;;;;2728:36:1;;2716:2;2701:18;16895:83:0;2586:184:1;18163:268:0;;;;;;;;;;-1:-1:-1;18163:268:0;;;;;:::i;:::-;;:::i;19183:355::-;;;;;;;;;;-1:-1:-1;19183:355:0;;;;;:::i;:::-;;:::i;18685:111::-;;;;;;;;;;-1:-1:-1;18685:111:0;;;;;:::i;:::-;;:::i;14848:20::-;;;;;;;;;;-1:-1:-1;14848:20:0;;;;;;;;;;;;;;;15034:38;;;;;;;;;;;;;;;15109:40;;;;;;;;;;-1:-1:-1;15109:40:0;;;;;;;;;;;17089:117;;;;;;;;;;-1:-1:-1;17089:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;17182:16:0;17155:7;17182:16;;;:7;:16;;;;;;;17089:117;5547:148;;;;;;;;;;;;;:::i;15158:55::-;;;;;;;;;;;;;;;;5333:79;;;;;;;;;;-1:-1:-1;5371:7:0;5398:6;-1:-1:-1;;;;;5398:6:0;5333:79;;15312:57;;;;;;;;;;;;;;;;18439:116;;;;;;;;;;-1:-1:-1;18439:116:0;;;;;:::i;:::-;;:::i;16800:87::-;;;;;;;;;;;;;:::i;17214:167::-;;;;;;;;;;-1:-1:-1;17214:167:0;;;;;:::i;:::-;;:::i;18927:246::-;;;;;;;;;;-1:-1:-1;18927:246:0;;;;;:::i;:::-;;:::i;19694:171::-;;;;;;;;;;-1:-1:-1;19694:171:0;;;;;:::i;:::-;;:::i;26050:141::-;;;;;;;;;;;;;:::i;17389:143::-;;;;;;;;;;-1:-1:-1;17389:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17497:18:0;;;17470:7;17497:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17389:143;18563:112;;;;;;;;;;-1:-1:-1;18563:112:0;;;;;:::i;:::-;;:::i;19546:140::-;;;;;;;;;;-1:-1:-1;19546:140:0;;;;;:::i;:::-;;:::i;15762:31::-;;;;;;;;;;-1:-1:-1;15762:31:0;;;;;;;;16709:83;16746:13;16779:5;16772:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16709:83;:::o;17540:161::-;17615:4;17632:39;2373:10;17655:7;17664:6;17632:8;:39::i;:::-;-1:-1:-1;17689:4:0;17540:161;;;;;:::o;18804:115::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18875:29:0::1;;::::0;;;:20:::1;:29;::::0;;;;:36;;-1:-1:-1;;18875:36:0::1;18907:4;18875:36;::::0;;18804:115::o;17709:446::-;17841:4;17858:36;17868:6;17876:9;17887:6;17858:9;:36::i;:::-;17905:220;17928:6;2373:10;17976:138;18032:6;17976:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17976:19:0;;;;;;:11;:19;;;;;;;;2373:10;17976:33;;;;;;;;;;:37;:138::i;:::-;17905:8;:220::i;:::-;-1:-1:-1;18143:4:0;17709:446;;;;;:::o;18163:268::-;2373:10;18251:4;18340:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18340:34:0;;;;;;;;;;18251:4;;18268:133;;18318:7;;18340:50;;18379:10;18340:38;:50::i;19183:355::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;19363:6:::1;:32:::0;;-1:-1:-1;;19406:32:0;;;19363::::1;;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;19406:32:0;;;;;;;;;::::1;::::0;;;::::1;::::0;;;19451:7:::1;:34:::0;;19496;;;19451;;::::1;::::0;;::::1;19496::::0;;;::::1;;::::0;;19183:355::o;18685:111::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18754:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;18754:34:0::1;18784:4;18754:34;::::0;;18685:111::o;5547:148::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;5654:1:::1;5638:6:::0;;5617:40:::1;::::0;-1:-1:-1;;;;;5638:6:0;;::::1;::::0;5617:40:::1;::::0;5654:1;;5617:40:::1;5685:1;5668:19:::0;;-1:-1:-1;;;;;;5668:19:0::1;::::0;;5547:148::o;18439:116::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18504:29:0::1;18536:5;18504:29:::0;;;:20:::1;:29;::::0;;;;:37;;-1:-1:-1;;18504:37:0::1;::::0;;18439:116::o;16800:87::-;16839:13;16872:7;16865:14;;;;;:::i;17214:167::-;17292:4;17309:42;2373:10;17333:9;17344:6;17309:9;:42::i;18927:246::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19026:32:0;::::1;19018:96;;;::::0;-1:-1:-1;;;19018:96:0;;5652:2:1;19018:96:0::1;::::0;::::1;5634:21:1::0;5691:2;5671:18;;;5664:30;5730:34;5710:18;;;5703:62;-1:-1:-1;;;5781:18:1;;;5774:49;5840:19;;19018:96:0::1;5450:415:1::0;19018:96:0::1;19121:17;:38:::0;;-1:-1:-1;;;;;;19121:38:0::1;-1:-1:-1::0;;;;;19121:38:0;;;::::1;::::0;;;::::1;::::0;;18927:246::o;19694:171::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;19771:21:::1;:32:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;19771:32:0;;::::1;;::::0;;19819:38:::1;::::0;::::1;::::0;::::1;::::0;19795:8;1110:14:1;1103:22;1085:41;;1073:2;1058:18;;945:187;19819:38:0::1;;;;;;;;19694:171:::0;:::o;26050:141::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;26114:11:::1;::::0;::::1;;26113:12;26105:49;;;::::0;-1:-1:-1;;;26105:49:0;;6072:2:1;26105:49:0::1;::::0;::::1;6054:21:1::0;6111:2;6091:18;;;6084:30;6150:26;6130:18;;;6123:54;6194:18;;26105:49:0::1;5870:348:1::0;26105:49:0::1;26165:11;:18:::0;;-1:-1:-1;;26165:18:0::1;26179:4;26165:18;::::0;;26050:141::o;18563:112::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18626:27:0::1;18656:5;18626:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;18626:35:0::1;::::0;;18563:112::o;19546:140::-;5460:6;;-1:-1:-1;;;;;5460:6:0;2373:10;5460:22;5452:67;;;;-1:-1:-1;;;5452:67:0;;;;;;;:::i;:::-;19637:29:::1;:41:::0;19546:140::o;21206:337::-;-1:-1:-1;;;;;21299:19:0;;21291:68;;;;-1:-1:-1;;;21291:68:0;;6425:2:1;21291:68:0;;;6407:21:1;6464:2;6444:18;;;6437:30;6503:34;6483:18;;;6476:62;-1:-1:-1;;;6554:18:1;;;6547:34;6598:19;;21291:68:0;6223:400:1;21291:68:0;-1:-1:-1;;;;;21378:21:0;;21370:68;;;;-1:-1:-1;;;21370:68:0;;6830:2:1;21370:68:0;;;6812:21:1;6869:2;6849:18;;;6842:30;6908:34;6888:18;;;6881:62;-1:-1:-1;;;6959:18:1;;;6952:32;7001:19;;21370:68:0;6628:398:1;21370:68:0;-1:-1:-1;;;;;21451:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21503:32;;1770:25:1;;;21503:32:0;;1743:18:1;21503:32:0;;;;;;;21206:337;;;:::o;21551:1550::-;-1:-1:-1;;;;;21673:18:0;;21665:68;;;;-1:-1:-1;;;21665:68:0;;7233:2:1;21665:68:0;;;7215:21:1;7272:2;7252:18;;;7245:30;7311:34;7291:18;;;7284:62;-1:-1:-1;;;7362:18:1;;;7355:35;7407:19;;21665:68:0;7031:401:1;21665:68:0;-1:-1:-1;;;;;21752:16:0;;21744:64;;;;-1:-1:-1;;;21744:64:0;;7639:2:1;21744:64:0;;;7621:21:1;7678:2;7658:18;;;7651:30;7717:34;7697:18;;;7690:62;-1:-1:-1;;;7768:18:1;;;7761:33;7811:19;;21744:64:0;7437:399:1;21744:64:0;21836:1;21827:6;:10;21819:64;;;;-1:-1:-1;;;21819:64:0;;8043:2:1;21819:64:0;;;8025:21:1;8082:2;8062:18;;;8055:30;8121:34;8101:18;;;8094:62;-1:-1:-1;;;8172:18:1;;;8165:39;8221:19;;21819:64:0;7841:405:1;21819:64:0;5371:7;5398:6;-1:-1:-1;;;;;21908:15:0;;;5398:6;;21908:15;;;;:32;;-1:-1:-1;5371:7:0;5398:6;-1:-1:-1;;;;;21927:13:0;;;5398:6;;21927:13;;21908:32;21904:86;;;21950:11;;;;21942:48;;;;-1:-1:-1;;;21942:48:0;;8453:2:1;21942:48:0;;;8435:21:1;8492:2;8472:18;;;8465:30;8531:26;8511:18;;;8504:54;8575:18;;21942:48:0;8251:348:1;21942:48:0;22052:4;22003:28;17182:16;;;:7;:16;;;;;;22099:12;;22075:36;;22071:104;;-1:-1:-1;22151:12:0;;22071:104;22238:29;;22214:53;;;;;;;22282:40;;-1:-1:-1;22306:16:0;;;;;;;22305:17;22282:40;:65;;;;;22334:13;-1:-1:-1;;;;;22326:21:0;:4;-1:-1:-1;;;;;22326:21:0;;;22282:65;:90;;;;-1:-1:-1;22351:21:0;;;;;;;22282:90;22278:226;;;22412:29;;22389:52;;22456:36;22471:20;22456:14;:36::i;:::-;-1:-1:-1;;;;;22552:24:0;;22516:12;22552:24;;;:18;:24;;;;;;22531:4;;22552:24;;;:50;;-1:-1:-1;;;;;;22580:22:0;;;;;;:18;:22;;;;;;;;22552:50;22548:98;;;-1:-1:-1;22629:5:0;22548:98;22660:7;22656:384;;;-1:-1:-1;;;;;22689:26:0;;;;;;:20;:26;;;;;;;;22688:27;:56;;;;-1:-1:-1;;;;;;22720:24:0;;;;;;:20;:24;;;;;;;;22719:25;22688:56;22684:345;;;22783:12;;22773:6;:22;;22765:75;;;;-1:-1:-1;;;22765:75:0;;8806:2:1;22765:75:0;;;8788:21:1;8845:2;8825:18;;;8818:30;8884:34;8864:18;;;8857:62;-1:-1:-1;;;8935:18:1;;;8928:38;8983:19;;22765:75:0;8604:404:1;22765:75:0;22869:13;-1:-1:-1;;;;;22863:19:0;:2;-1:-1:-1;;;;;22863:19:0;;22859:155;;22941:14;;-1:-1:-1;;;;;17182:16:0;;17155:7;17182:16;;;:7;:16;;;;;;22915:22;;:6;:22;:::i;:::-;:40;;22907:87;;;;-1:-1:-1;;;22907:87:0;;9477:2:1;22907:87:0;;;9459:21:1;9516:2;9496:18;;;9489:30;9555:34;9535:18;;;9528:62;-1:-1:-1;;;9606:18:1;;;9599:32;9648:19;;22907:87:0;9275:398:1;22907:87:0;23052:41;23067:4;23073:2;23077:6;23085:7;23052:14;:41::i;:::-;21654:1447;;;21551:1550;;;:::o;1136:192::-;1222:7;1258:12;1250:6;;;;1242:29;;;;-1:-1:-1;;;1242:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1282:9:0;1294:5;1298:1;1294;:5;:::i;:::-;1282:17;1136:192;-1:-1:-1;;;;;1136:192:0:o;803:181::-;861:7;;893:5;897:1;893;:5;:::i;:::-;881:17;;922:1;917;:6;;909:46;;;;-1:-1:-1;;;909:46:0;;10013:2:1;909:46:0;;;9995:21:1;10052:2;10032:18;;;10025:30;10091:29;10071:18;;;10064:57;10138:18;;909:46:0;9811:351:1;909:46:0;975:1;803:181;-1:-1:-1;;;803:181:0:o;23109:1050::-;15676:16;:23;;-1:-1:-1;;15676:23:0;;;;;23261:7:::1;:17:::0;23242:6:::1;:16:::0;15676:23;;;23261:17;;::::1;15676:23:::0;23261:17;;::::1;::::0;23242:16;;::::1;::::0;::::1;::::0;23203:36:::1;::::0;23222:17;;::::1;::::0;23203:16:::1;:36;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;23202:81;::::0;23282:1:::1;23202:81;:::i;:::-;23359:7;:17:::0;23340:6:::1;:16:::0;23180:103:::1;::::0;;::::1;::::0;-1:-1:-1;23294:32:0::1;::::0;23180:103;;23340:36:::1;::::0;23359:17;;::::1;::::0;23340:16:::1;:36;:::i;:::-;23330:47;::::0;::::1;;:6:::0;:47:::1;:::i;:::-;23329:63;;;;:::i;:::-;23294:98:::0;-1:-1:-1;23403:14:0::1;23420:33;23294:98:::0;23420:6;:33:::1;:::i;:::-;23403:50:::0;-1:-1:-1;23491:21:0::1;23525:24;23403:50:::0;23525:16:::1;:24::i;:::-;23562:20;23585:38;23609:14:::0;23585:21:::1;:38;:::i;:::-;23706:7;:17:::0;23687:6:::1;:16:::0;23562:61;;-1:-1:-1;23634:19:0::1;::::0;23687:36:::1;::::0;23706:17:::1;::::0;;::::1;::::0;23687:16:::1;:36;:::i;:::-;23672:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;23656:69;::::0;:12;:69:::1;:::i;:::-;23802:7;:17:::0;23783:6:::1;:16:::0;23634:91;;-1:-1:-1;23736:29:0::1;::::0;23783:36:::1;::::0;23802:17:::1;::::0;;::::1;::::0;23783:16:::1;:36;:::i;:::-;23768:52;::::0;::::1;;:11:::0;:52:::1;:::i;:::-;23736:84:::0;-1:-1:-1;23837:25:0;;23833:119:::1;;23879:61;23892:24;23918:21;23879:12;:61::i;:::-;24025:7;:17:::0;24006:6:::1;:16:::0;23964:20:::1;::::0;24006:36:::1;::::0;24025:17:::1;;::::0;;;::::1;::::0;::::1;::::0;24006:16;;::::1;;:36;:::i;:::-;23987:56;;:15;:11:::0;24001:1:::1;23987:15;:::i;:::-;:56;;;;:::i;:::-;23964:79:::0;-1:-1:-1;24058:16:0;;24054:98:::1;;24099:17;::::0;24091:49:::1;::::0;-1:-1:-1;;;;;24099:17:0;;::::1;::::0;24091:49;::::1;;;::::0;24127:12;;24099:17:::1;24091:49:::0;24099:17;24091:49;24127:12;24099:17;24091:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24054:98;-1:-1:-1::0;;15722:16:0;:24;;-1:-1:-1;;15722:24:0;;;-1:-1:-1;;;;;;;23109:1050:0:o;25026:472::-;25181:7;25177:230;;;25205:14;20886:13;:17;;-1:-1:-1;;20914:17:0;;;20843:96;25205:14;25248:13;-1:-1:-1;;;;;25238:23:0;:6;-1:-1:-1;;;;;25238:23:0;;25234:72;;25282:8;21000:6;:16;20984:13;:32;;21000:16;21043;;;21000;21043;;;21027:32;;;-1:-1:-1;;21027:32:0;;;21000:16;;21027:32;;;;;;;;;;20947:120;25282:8;25337:13;-1:-1:-1;;;;;25324:26:0;:9;-1:-1:-1;;;;;25324:26:0;;25320:76;;25371:9;21129:7;:17;21113:13;:33;;21129:17;21173;;;21129;21173;;;21157:33;;;-1:-1:-1;;21157:33:0;;;21129:17;;21157:33;;;;;;;;;;21075:123;25371:9;25419:44;25437:6;25445:9;25456:6;25419:17;:44::i;:::-;25476:14;20886:13;:17;;-1:-1:-1;;20914:17:0;;;20843:96;25476:14;25026:472;;;;:::o;24167:475::-;24257:16;;;24271:1;24257:16;;;;;;;;24233:21;;24257:16;;;;;;;;;;-1:-1:-1;24257:16:0;24233:40;;24302:4;24284;24289:1;24284:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24284:23:0;;;-1:-1:-1;;;;;24284:23:0;;;;;24328:15;-1:-1:-1;;;;;24328:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24318:4;24323:1;24318:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24318:32:0;;;-1:-1:-1;;;;;24318:32:0;;;;;24363:62;24380:4;24395:15;24413:11;24363:8;:62::i;:::-;24438:196;;-1:-1:-1;;;24438:196:0;;-1:-1:-1;;;;;24438:15:0;:66;;;;:196;;24519:11;;24545:1;;24561:4;;24588;;24608:15;;24438:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24650:368;24731:62;24748:4;24763:15;24781:11;24731:8;:62::i;:::-;24806:204;;-1:-1:-1;;;24806:204:0;;24878:4;24806:204;;;12732:51:1;;;12799:18;;;12792:34;;;24924:1:0;12842:18:1;;;12835:34;;;12885:18;;;12878:34;12928:19;;;12921:61;24984:15:0;12998:19:1;;;12991:35;24806:15:0;-1:-1:-1;;;;;24806:31:0;;;;24845:9;;12704:19:1;;24806:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24650:368;;:::o;25506:536::-;25653:23;25691:18;25724:15;25753:20;25765:7;25753:11;:20::i;:::-;-1:-1:-1;;;;;25804:15:0;;;;;;:7;:15;;;;;;25638:135;;-1:-1:-1;25638:135:0;;-1:-1:-1;25638:135:0;-1:-1:-1;25804:28:0;;25824:7;25804:19;:28::i;:::-;-1:-1:-1;;;;;25786:15:0;;;;;;;:7;:15;;;;;;:46;;;;25864:18;;;;;;;:39;;25887:15;25864:22;:39::i;:::-;-1:-1:-1;;;;;25843:18:0;;;;;;:7;:18;;;;;:60;25914:26;25929:10;25914:14;:26::i;:::-;25951:23;25966:7;25951:14;:23::i;:::-;26007:9;-1:-1:-1;;;;;25990:44:0;25999:6;-1:-1:-1;;;;;25990:44:0;;26018:15;25990:44;;;;1770:25:1;;1758:2;1743:18;;1624:177;25990:44:0;;;;;;;;25627:415;;;25506:536;;;:::o;19910:347::-;19970:7;19979;19988;20008:18;20029:30;20051:7;20029:21;:30::i;:::-;20008:51;;20070:15;20088:30;20110:7;20088:21;:30::i;:::-;20070:48;-1:-1:-1;20129:23:0;20155:36;20070:48;20155:23;:7;20167:10;20155:11;:23::i;:::-;:27;;:36::i;:::-;20129:62;20229:10;;-1:-1:-1;20241:7:0;;-1:-1:-1;19910:347:0;;-1:-1:-1;;;19910:347:0:o;992:136::-;1050:7;1077:43;1081:1;1084;1077:43;;;;;;;;;;;;;;;;;:3;:43::i;20265:134::-;20369:4;20353:22;;;;:7;:22;;;;;;:38;;20380:10;20353:26;:38::i;:::-;20344:4;20328:22;;;;:7;:22;;;;;:63;-1:-1:-1;20265:134:0:o;20543:142::-;20652:13;;20613:7;;20640:37;;20671:5;;20640:26;;:7;;20652:13;;20640:11;:26::i;:::-;:30;;:37::i;20693:142::-;20802:13;;20763:7;;20790:37;;20821:5;;20790:26;;:7;;20802:13;;;;;1336:250;1394:7;1418:1;1423;1418:6;1414:47;;-1:-1:-1;1448:1:0;1441:8;;1414:47;1473:9;1485:5;1489:1;1485;:5;:::i;:::-;1473:17;-1:-1:-1;1518:1:0;1509:5;1513:1;1473:17;1509:5;:::i;:::-;:10;1501:56;;;;-1:-1:-1;;;1501:56:0;;13700:2:1;1501:56:0;;;13682:21:1;13739:2;13719:18;;;13712:30;13778:34;13758:18;;;13751:62;-1:-1:-1;;;13829:18:1;;;13822:31;13870:19;;1501:56:0;13498:397:1;1594:132:0;1652:7;1679:39;1683:1;1686;1679:39;;;;;;;;;;;;;;;;;1820:7;1855:12;1848:5;1840:28;;;;-1:-1:-1;;;1840:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1879:9:0;1891:5;1895:1;1891;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1137:247::-;1196:6;1249:2;1237:9;1228:7;1224:23;1220:32;1217:52;;;1265:1;1262;1255:12;1217:52;1304:9;1291:23;1323:31;1348:5;1323:31;:::i;1806:508::-;1883:6;1891;1899;1952:2;1940:9;1931:7;1927:23;1923:32;1920:52;;;1968:1;1965;1958:12;1920:52;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;-1:-1:-1;2133:2:1;2118:18;;2105:32;2146:33;2105:32;2146:33;:::i;:::-;1806:508;;2198:7;;-1:-1:-1;;;2278:2:1;2263:18;;;;2250:32;;1806:508::o;2775:156::-;2841:20;;2901:4;2890:16;;2880:27;;2870:55;;2921:1;2918;2911:12;2870:55;2775:156;;;:::o;2936:393::-;3014:6;3022;3030;3038;3091:3;3079:9;3070:7;3066:23;3062:33;3059:53;;;3108:1;3105;3098:12;3059:53;3131:27;3148:9;3131:27;:::i;:::-;3121:37;;3177:36;3209:2;3198:9;3194:18;3177:36;:::i;:::-;3167:46;;3232:36;3264:2;3253:9;3249:18;3232:36;:::i;:::-;3222:46;;3287:36;3319:2;3308:9;3304:18;3287:36;:::i;:::-;3277:46;;2936:393;;;;;;;:::o;3802:273::-;3858:6;3911:2;3899:9;3890:7;3886:23;3882:32;3879:52;;;3927:1;3924;3917:12;3879:52;3966:9;3953:23;4019:5;4012:13;4005:21;3998:5;3995:32;3985:60;;4041:1;4038;4031:12;4080:388;4148:6;4156;4209:2;4197:9;4188:7;4184:23;4180:32;4177:52;;;4225:1;4222;4215:12;4177:52;4264:9;4251:23;4283:31;4308:5;4283:31;:::i;:::-;4333:5;-1:-1:-1;4390:2:1;4375:18;;4362:32;4403:33;4362:32;4403:33;:::i;:::-;4455:7;4445:17;;;4080:388;;;;;:::o;4473:226::-;4532:6;4585:2;4573:9;4564:7;4560:23;4556:32;4553:52;;;4601:1;4598;4591:12;4553:52;-1:-1:-1;4646:23:1;;4473:226;-1:-1:-1;4473:226:1:o;4704:380::-;4783:1;4779:12;;;;4826;;;4847:61;;4901:4;4893:6;4889:17;4879:27;;4847:61;4954:2;4946:6;4943:14;4923:18;4920:38;4917:161;;5000:10;4995:3;4991:20;4988:1;4981:31;5035:4;5032:1;5025:15;5063:4;5060:1;5053:15;4917:161;;4704:380;;;:::o;5089:356::-;5291:2;5273:21;;;5310:18;;;5303:30;5369:34;5364:2;5349:18;;5342:62;5436:2;5421:18;;5089:356::o;9013:127::-;9074:10;9069:3;9065:20;9062:1;9055:31;9105:4;9102:1;9095:15;9129:4;9126:1;9119:15;9145:125;9210:9;;;9231:10;;;9228:36;;;9244:18;;:::i;9678:128::-;9745:9;;;9766:11;;;9763:37;;;9780:18;;:::i;10167:148::-;10255:4;10234:12;;;10248;;;10230:31;;10273:13;;10270:39;;;10289:18;;:::i;10320:225::-;10424:4;10403:12;;;10417;;;10399:31;10450:22;;;;10491:24;;;10481:58;;10519:18;;:::i;:::-;10481:58;10320:225;;;;:::o;10550:168::-;10623:9;;;10654;;10671:15;;;10665:22;;10651:37;10641:71;;10692:18;;:::i;10723:217::-;10763:1;10789;10779:132;;10833:10;10828:3;10824:20;10821:1;10814:31;10868:4;10865:1;10858:15;10896:4;10893:1;10886:15;10779:132;-1:-1:-1;10925:9:1;;10723:217::o;11077:127::-;11138:10;11133:3;11129:20;11126:1;11119:31;11169:4;11166:1;11159:15;11193:4;11190:1;11183:15;11209:251;11279:6;11332:2;11320:9;11311:7;11307:23;11303:32;11300:52;;;11348:1;11345;11338:12;11300:52;11380:9;11374:16;11399:31;11424:5;11399:31;:::i;11465:959::-;11727:4;11775:3;11764:9;11760:19;11806:6;11795:9;11788:25;11849:6;11844:2;11833:9;11829:18;11822:34;11892:3;11887:2;11876:9;11872:18;11865:31;11916:6;11951;11945:13;11982:6;11974;11967:22;12020:3;12009:9;12005:19;11998:26;;12059:2;12051:6;12047:15;12033:29;;12080:1;12090:195;12104:6;12101:1;12098:13;12090:195;;;12169:13;;-1:-1:-1;;;;;12165:39:1;12153:52;;12234:2;12260:15;;;;12225:12;;;;12201:1;12119:9;12090:195;;;-1:-1:-1;;;;;;;12341:32:1;;;;12336:2;12321:18;;12314:60;-1:-1:-1;;12405:3:1;12390:19;12383:35;12302:3;11465:959;-1:-1:-1;;;11465:959:1:o;13037:456::-;13125:6;13133;13141;13194:2;13182:9;13173:7;13169:23;13165:32;13162:52;;;13210:1;13207;13200:12;13162:52;-1:-1:-1;;13255:16:1;;13361:2;13346:18;;13340:25;13457:2;13442:18;;;13436:25;13255:16;;13340:25;;-1:-1:-1;13436:25:1;13037:456;-1:-1:-1;13037:456:1:o

Swarm Source

ipfs://836d3ba135689b4d1bbb312bd1c9df74135c620c5b677919a06c8f4624e2356d
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.