ETH Price: $3,168.90 (-8.43%)
Gas: 3 Gwei

Token

Destro Credit (DESC)
 

Overview

Max Total Supply

10,000,000 DESC

Holders

135

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,130.364757832003184847 DESC

Value
$0.00
0x19c171010a962b636e3191a3ebf36cee22439e86
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:
DestroCredit

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 1 : clearwater.sol
/*
Destro Credit - Redefining the Essence of Financial Interactions

WEBSITE      | https://destrocredit.cash
TELEGRAM     | https://t.me/DestroCredit_portal
TWITTER      | https://twitter.com/DestroCredit
dAPP         | https://t.me/DestroCreditbot
DOC          | https://docs.destrocredit.cash/
*/


// SPDX-License-Identifier: MIT

pragma solidity >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

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

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

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 IUniswapV2Router02 {
    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 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 DestroCredit is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address private marketingWallet;
    address private developmentWallet;

    uint256 public percentForLPBurn = 0;
    bool public lpBurnEnabled = false;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;

    struct FeeSet {
        uint8 buyTotalFees;
        uint8 buyMarketingFee;
        uint8 buyLiquidityFee;
        uint8 buyDevelopmentFee;
        //
        uint8 sellTotalFees;
        uint8 sellMarketingFee;
        uint8 sellLiquidityFee;
        uint8 sellDevelopmentFee;
        //
        uint8 finalBuyingFees;
        uint8 finalBuyMarketingFee;
        uint8 finalBuyLiquidityFee;
        uint8 finalBuyDevelopmentFee;
        //
        uint8 finalSellingFees;
        uint8 finalSellMarketingFee;
        uint8 finalSellLiquidityFee;
        uint8 finalSellDevelopmentFee;
    }

    FeeSet public feeSet;

    uint256 public maxSwapToFinal;

    uint16 public swapCount = 0;
    bool public stopCount = false;

    uint256 public lastTaxSaleHeight = 0;
    uint256 public lastTaxSaleAmount = 0;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

    event AutoNukeLP();

    event ManualNukeLP();

    constructor() ERC20("Destro Credit", "DESC") {
    

        uint8 _buyMarketingFee = 2;
        uint8 _buyLiquidityFee = 0;
        uint8 _buyDevelopmentFee = 1;

        uint8 _sellMarketingFee = 2;
        uint8 _sellLiquidityFee = 0;
        uint8 _sellDevelopmentFee = 1;

        uint8 _finalBuyMarketingFee = 2;
        uint8 _finalBuyLiquidityFee = 0;
        uint8 _finalBuyDevelopmentFee = 1;

        uint8 _finalSellMarketingFee = 2;
        uint8 _finalSellLiquidityFee = 0;
        uint8 _finalSellDevelopmentFee = 1; 

        uint256 _maxSwapToFinal = 200;

        uint256 totalSupply = 10000000 * 1e18;

        maxTransactionAmount = 160000 * 1e18;
        maxWallet = 160000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        marketingWallet = address(0x08c8b2f723315AB83b8f86B718f18EaA00206bDa);
        developmentWallet = address(0xB538070bA7CF78b928de41C623BDc0598Fd069AE);

        maxSwapToFinal = _maxSwapToFinal;

        feeSet.buyMarketingFee = _buyMarketingFee;
        feeSet.buyLiquidityFee = _buyLiquidityFee;
        feeSet.buyDevelopmentFee = _buyDevelopmentFee;
        feeSet.buyTotalFees =
            feeSet.buyMarketingFee +
            feeSet.buyLiquidityFee +
            feeSet.buyDevelopmentFee;

        feeSet.sellMarketingFee = _sellMarketingFee;
        feeSet.sellLiquidityFee = _sellLiquidityFee;
        feeSet.sellDevelopmentFee = _sellDevelopmentFee;
        feeSet.sellTotalFees =
            feeSet.sellMarketingFee +
            feeSet.sellLiquidityFee +
            feeSet.sellDevelopmentFee;

        feeSet.finalBuyMarketingFee = _finalBuyMarketingFee;
        feeSet.finalBuyLiquidityFee = _finalBuyLiquidityFee;
        feeSet.finalBuyDevelopmentFee = _finalBuyDevelopmentFee;
        feeSet.finalBuyingFees =
            feeSet.finalBuyMarketingFee +
            feeSet.finalBuyLiquidityFee +
            feeSet.finalBuyDevelopmentFee;

        feeSet.finalSellMarketingFee = _finalSellMarketingFee;
        feeSet.finalSellLiquidityFee = _finalSellLiquidityFee;
        feeSet.finalSellDevelopmentFee = _finalSellDevelopmentFee;
        feeSet.finalSellingFees =
            feeSet.finalSellMarketingFee +
            feeSet.finalSellLiquidityFee +
            feeSet.finalSellDevelopmentFee;

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

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function createPair() external onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
    }

    function enableTrade() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10 ** 18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10 ** 18);
    }

    function excludeFromMaxTransaction(
        address updAds,
        bool isEx
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint8 _marketingFee,
        uint8 _liquidityFee,
        uint8 _developmentFee
    ) external onlyOwner {
        feeSet.buyMarketingFee = _marketingFee;
        feeSet.buyLiquidityFee = _liquidityFee;
        feeSet.buyDevelopmentFee = _developmentFee;
        uint256 newBuyTotalFees = feeSet.buyMarketingFee +
            feeSet.buyLiquidityFee +
            feeSet.buyDevelopmentFee;
        require(!stopCount, "Final fees are already set");
        require(newBuyTotalFees <= 100, "Total fees cannot exceed 100%");
        feeSet.buyTotalFees = uint8(newBuyTotalFees);
        // override the fees if the stopCount is true
        if (stopCount) {
            updateFeesToFinal();
        }
    }

    function updateFeesToFinal() private {
        feeSet.buyMarketingFee = feeSet.finalBuyMarketingFee;
        feeSet.buyLiquidityFee = feeSet.finalBuyLiquidityFee;
        feeSet.buyDevelopmentFee = feeSet.finalBuyDevelopmentFee;
        feeSet.buyTotalFees = feeSet.finalBuyingFees;

        feeSet.sellMarketingFee = feeSet.finalSellMarketingFee;
        feeSet.sellLiquidityFee = feeSet.finalSellLiquidityFee;
        feeSet.sellDevelopmentFee = feeSet.finalSellDevelopmentFee;
        feeSet.sellTotalFees = feeSet.finalSellingFees;
    }

    function updateSellFees(
        uint8 _marketingFee,
        uint8 _liquidityFee,
        uint8 _developmentFee
    ) external onlyOwner {
        feeSet.sellMarketingFee = _marketingFee;
        feeSet.sellLiquidityFee = _liquidityFee;
        feeSet.sellDevelopmentFee = _developmentFee;
        uint256 newSellTotalFees = feeSet.sellMarketingFee +
            feeSet.sellLiquidityFee +
            feeSet.sellDevelopmentFee;
        require(newSellTotalFees <= 100, "Total fees cannot exceed 100%");
        feeSet.sellTotalFees = uint8(newSellTotalFees);
        // override the fees if the stopCount is true
        if (stopCount) {
            updateFeesToFinal();
        }
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWalletInfo(
        address newMarketingWallet
    ) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevelopmentWalletInfo(address newWallet) external onlyOwner {
        emit developmentWalletUpdated(newWallet, developmentWallet);
        developmentWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

    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 (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        bool isSell = false;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            if (!stopCount) {
                swapCount += 1;
                if (swapCount > maxSwapToFinal) {
                    stopCount = true;
                    updateFeesToFinal();
                }
            }
            // on sell
            if (automatedMarketMakerPairs[to] && feeSet.sellTotalFees > 0) {
                isSell = true;
                fees = amount.mul(feeSet.sellTotalFees).div(100);
            }
            // on buy
            else if (
                automatedMarketMakerPairs[from] && feeSet.buyTotalFees > 0
            ) {
                fees = amount.mul(feeSet.buyTotalFees).div(100);
            }

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

            amount -= fees;
        }

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

    function swapBeforeSell(uint256 amount) private {
        uint256 twoPercent = (totalSupply() * 2) / 100;
        if (lastTaxSaleHeight == block.number) {
            // same block
            if (lastTaxSaleAmount >= twoPercent) {
                return;
            } else {
                // lastTaxSaleAmount < 2% && amount + lastTaxSaleAmount < 2%
                amount = amount < (twoPercent - lastTaxSaleAmount)
                    ? amount
                    : (twoPercent - lastTaxSaleAmount);
                // amount < tokenBalance
                uint256 tokenBalance = balanceOf(address(this));
                amount = tokenBalance < amount ? tokenBalance : amount;

                lastTaxSaleAmount += amount;
            }
        } else {
            // new block
            // amount <= 2% of totalSupply
            amount = amount < twoPercent ? amount : twoPercent;
            // amount <= balance
            uint256 tokenBalance = balanceOf(address(this));
            amount = tokenBalance < amount ? tokenBalance : amount;

            // reset lastTaxSaleHeight to now height
            lastTaxSaleHeight = block.number;
            lastTaxSaleAmount = amount;
        }
        if (amount > 0) {
            swapTokensForEth(amount);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

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

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(developmentWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function manualswap() external {
        require(
            _msgSender() == developmentWallet || _msgSender() == marketingWallet
        );
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(
            _msgSender() == developmentWallet || _msgSender() == marketingWallet
        );
        bool success;
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(
        uint256 percent
    ) external onlyOwner returns (bool) {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "viaIR": true,
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "remappings": []
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","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":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","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":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSet","outputs":[{"internalType":"uint8","name":"buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"buyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"sellTotalFees","type":"uint8"},{"internalType":"uint8","name":"sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"sellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"sellDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyingFees","type":"uint8"},{"internalType":"uint8","name":"finalBuyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"finalSellingFees","type":"uint8"},{"internalType":"uint8","name":"finalSellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"finalSellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"finalSellDevelopmentFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxSaleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxSaleHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwapToFinal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","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":"stopCount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"uint8","name":"_marketingFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_developmentFee","type":"uint8"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_marketingFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_developmentFee","type":"uint8"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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"}]

60803462000736576001600160401b03906040908082018381118282101762000722578252600d81526020906c11195cdd1c9bc810dc99591a5d609a1b828201528251938385018581108282111762000722578452600491828652634445534360e01b848701528051918083116200070f5760038054936001938486811c9616801562000704575b88871014620006f1578190601f968781116200069e575b5088908783116001146200063b575f926200062f575b50505f1982841b1c191690841b1781555b87519182116200061c5784548381811c9116801562000611575b87821014620005fe57848111620005b6575b50858483116001146200054f57829394959697985f9362000543575b505082841b925f19911b1c19161783555b60058054336001600160a01b03198083168217845593926001600160a01b039262000481929084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35f600a5573b538070ba7cf78b928de41c623bdc0598fd069ae60ff199586600b5416600b55610e10600c5562ffffff196201000181601154161760115561070860125586886015541617601555601854166018555f6019555f601a556921e19e0c9bab2400000080600e5560105569010f0cf064dd59200000600f557308c8b2f723315ab83b8f86b718f18eaa00206bda816008541617600855600954161760095560c86017556200026f6d0200010000000000000000000000690200010000000000000065020001000200601654630100020063ffffff001982161760ff9581876200026381809560101c16828460081c166200073a565b9160181c16906200073a565b169065ff00ffffffff1916171764ff00000000620002bf67010000000000000067ffff0000000000001984161786620002b3818360301c16828460281c166200073a565b9160381c16906200073a565b8d1b169069ff00ffff00ff000000001916171768ff0000000000000000620003216b0100000000000000000000006bffff00000000000000000000198416178562000315818360501c16828460481c166200073a565b9160581c16906200073a565b8d1b16906dff00ffff00ff0000000000000000191617176cff0000000000000000000000006200037e600160781b938461ffff60701b198516179062000372818360701c16828460681c166200073a565b9160781c16906200073a565b60601b16906fffff00ff00000000000000000000000019161717601655335f52601e8852885f2084868254161790558851928484527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df793848a3392a2620003ea33828454161462000763565b305f52601e8952895f2085878254161790558951858152848a3092a26200041633828454161462000763565b61dead8094815f52601e8b528b5f2087898254161790558a8c51888152a2808254166200044533821462000763565b5f52868952895f2085878254161790556200046533828454161462000763565b305f52868952895f208587825416179055339154161462000763565b5f52828552855f2091825416179055331562000504575050620004a6600254620007af565b600255335f525f8152815f20620004be8154620007af565b90555f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8351926a084595161401484a00000084523393a351612e8a9081620007c98239f35b60649284519262461bcd60e51b845283015260248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b015191505f806200010d565b90601f19831691865f52875f20925f5b818110620005a057509984869798999a9b1062000586575b50505050811b0183556200011e565b01519060f8845f19921b161c191690555f80808062000577565b8b8301518555938601939189019189016200055f565b855f52865f208580850160051c820192898610620005f4575b0160051c019084905b828110620005e8575050620000f1565b5f8155018490620005d8565b92508192620005cf565b602286634e487b7160e01b5f525260245ffd5b90607f1690620000df565b604185634e487b7160e01b5f525260245ffd5b015190505f80620000b4565b90869350601f19831691855f528a5f20925f5b8c8282106200068757505084116200066f575b505050811b018155620000c5565b01515f1983861b60f8161c191690555f808062000661565b8385015186558a979095019493840193016200064e565b909150835f52885f208780850160051c8201928b8610620006e7575b918891869594930160051c01915b828110620006d85750506200009e565b5f8155859450889101620006c8565b92508192620006ba565b602287634e487b7160e01b5f525260245ffd5b95607f169562000087565b604184634e487b7160e01b5f525260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b9060ff8091169116019060ff82116200074f57565b634e487b7160e01b5f52601160045260245ffd5b156200076b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b906a084595161401484a00000082018092116200074f5756fe6040608081526004908136101561001f575b5050361561001d575f80fd5b005b5f905f3560e01c806299d38614611b8e578063057f202e14611b7057806306fdde0314611a7b578063095ea7b314611a5257806310d5de5314611a165780631694505e146119ee57806318160ddd146119d0578063184c16c5146119b2578063199ffc72146119945780631a8145bb146119765780631d003eb61461186c5780631f3fed8f1461184e578063203e727e1461178957806323b872dd146116cd57806327c8f835146116b15780632c3e486c146116935780632e82f1a0146116705780632eff0d9e1461164e578063313674dd14611630578063313ce5671461161557806338b2c461146115f757806339509351146115ab578063404bc41b146115855780634487c29f146114a657806349bd5a5e1461147e5780634a62bb651461145b5780634fbee1931461141f578063535e02d8146113ae5780636ddd1713146113885780636fc3eaec146113395780637040eb8b1461126c57806370a0823114611236578063715018a6146111d8578063730c1888146110a5578063751039fc1461106b5780637571336a1461100f5780637d831a8b14610f9e5780638da5cb5b14610f76578063924de9b714610f2957806395d89b4114610e265780639a7a23d614610d345780639e78fb4f14610b4b5780639ec22c0e14610b2d5780639fccce3214610b0f578063a457c2d714610a6a578063a4c82a0014610a4c578063a9059cbb14610a1c578063b62496f5146109e1578063bbc0c742146109bb578063c024666814610932578063c18bc1951461084e578063c3c8cd80146107fe578063c876d0b9146107db578063c8c8ebe4146107bd578063d257b34f14610665578063dd62ed3e1461061c578063e2f45605146105fe578063e884f260146105c4578063f2fde38b146104fc578063f8b45b05146104de5763fe72b27a146102c95750610011565b346103fa57602092836003193601126103fa576005546001600160a01b03908235906102f89083163314611c7c565b61030760135460125490611db6565b42111561049d576103e88111610447574260135581600754169084516370a0823160e01b815282858201528781602481305afa90811561043d575f9161040e575b506127109161035691611d85565b04806103fe575b50506007541690813b156103fa57825160016209351760e01b03198152915f918391829084905af180156103f0576103bd575b507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb90519180a160018152f35b6103c8919250611cc7565b5f907f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb610390565b82513d5f823e3d90fd5b5f80fd5b61040791612a29565b5f8061035d565b90508781813d8311610436575b6104258183611cef565b810103126103fa5751612710610348565b503d61041b565b86513d5f823e3d90fd5b835162461bcd60e51b8152808401879052602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608490fd5b606483878087519262461bcd60e51b845283015260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152fd5b50346103fa575f3660031901126103fa576020906010549051908152f35b5082346103fa5760203660031901126103fa57610517611c11565b6005546001600160a01b03808216939192610533338614611c7c565b169384156105725750506001600160a01b03191682176005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b50346103fa575f3660031901126103fa576020906105ed60018060a01b03600554163314611c7c565b60ff19601554166015555160018152f35b50346103fa575f3660031901126103fa57602090600f549051908152f35b50346103fa57806003193601126103fa57602090610638611c11565b610640611c27565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b8382346103fa5760203660031901126103fa57813561068f60018060a01b03600554163314611c7c565b60025480158180046001148117156107aa57620186a08204831061074957600582029182046005141715610736576103e8900481116106d65760209250600f555160018152f35b815162461bcd60e51b8152602081850152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608490fd5b601184634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081870152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b601185634e487b7160e01b5f525260245ffd5b50346103fa575f3660031901126103fa57602090600e549051908152f35b50346103fa575f3660031901126103fa5760209060ff6015541690519015158152f35b50346103fa575f3660031901126103fa57600954336001600160a01b0391821614908115610840575b50156103fa5761001d90305f525f6020525f20546128bd565b905060085416331482610827565b5082346103fa5760203660031901126103fa57803561087860018060a01b03600554163314611c7c565b6002549260058402938085046005149015171561091f576103e893670de0b6b3a7640000948591040482106108d157508281029281840414901517156108be5750601055005b601190634e487b7160e01b5f525260245ffd5b5162461bcd60e51b81526020818401526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608490fd5b601183634e487b7160e01b5f525260245ffd5b50346103fa57806003193601126103fa577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7602061096e611c11565b610976611c6d565b60055490916001600160a01b03916109919083163314611c7c565b1693845f52601e83526109b282825f209060ff801983541691151516179055565b519015158152a2005b50346103fa575f3660031901126103fa5760209060ff60115460081c1690519015158152f35b50346103fa5760203660031901126103fa576020906001600160a01b03610a06611c11565b165f5281805260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45610a3b611c11565b60243590336120f9565b5160018152f35b50346103fa575f3660031901126103fa57602090600d549051908152f35b5082346103fa57816003193601126103fa57610a84611c11565b9060243590335f526001602052835f2060018060a01b0384165f52602052835f205490828210610abe57602085610a458585038733611e21565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50346103fa575f3660031901126103fa57602090601d549051908152f35b50346103fa575f3660031901126103fa576020906013549051908152f35b5082346103fa575f3660031901126103fa576005546001600160a01b039190610b809083163314610b7b81611c7c565b611c7c565b737a250d5630b4cf539739df2c5dacb4c659f2488d91825f52602092601f8452845f209260ff19936001858254161790556bffffffffffffffffffffffff60a01b9180836006541617600655865163c45a015560e01b815286818481855afa908115610d0b57839288915f93610d15575b5089516315ab88c960e31b815293849182905afa8015610d0b5785938489945f93610ce7575b505f90604493948c5197889687956364e329cb60e11b87523090870152166024850152165af190811561043d57918360019793928895935f91610cba575b501680916007541617600755610c7033836005541614611c7c565b5f52601f8552815f2083858254161790556007541693845f5280525f20918254161790557fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b610cda9150883d8a11610ce0575b610cd28183611cef565b810190611e02565b89610c55565b503d610cc8565b6044935090610d035f92873d8911610ce057610cd28183611cef565b935090610c17565b88513d5f823e3d90fd5b610d2d919350823d8411610ce057610cd28183611cef565b918a610bf1565b5082346103fa57816003193601126103fa57610d4e611c11565b91610d57611c6d565b9160018060a01b03610d6e81600554163314611c7c565b80600754169416938414610dbe57505f8381526020805220805460ff191660ff831515161790551515907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346103fa575f3660031901126103fa578051905f9280549060018260011c9160018416938415610f1f575b6020948585108114610f0c57848852908115610eea5750600114610e91575b610e8d8686610e83828b0383611cef565b5191829182611bca565b0390f35b5f9081529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ed75750505082610e8d94610e83928201019486610e72565b8054868501880152928601928101610eba565b60ff191687860152505050151560051b8301019250610e8382610e8d86610e72565b602283634e487b7160e01b5f525260245ffd5b92607f1692610e53565b83346103fa5760203660031901126103fa57358015158091036103fa57610f5b60018060a01b03600554163314611c7c565b62ff00006011549160101b169062ff00001916176011555f80f35b50346103fa575f3660031901126103fa5760055490516001600160a01b039091168152602090f35b346103fa5760203660031901126103fa57610fb7611c11565b6005546001600160a01b039190610fd19083163314611c7c565b816008549116918116827fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b056745f80a36001600160a01b03191617600855005b50346103fa57806003193601126103fa5761001d9061102c611c11565b90611035611c6d565b60055490926001600160a01b03916110509083163314611c7c565b165f52601f6020525f209060ff801983541691151516179055565b50346103fa575f3660031901126103fa5760209061109460018060a01b03600554163314611c7c565b60ff19601154166011555160018152f35b5082346103fa5760603660031901126103fa57803560243591604435938415158095036103fa576110e160018060a01b03600554163314611c7c565b6102588310611179576103e884111580611171575b15611115575050600c55600a5560ff8019600b5416911617600b555f80f35b906020608492519162461bcd60e51b8352820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152fd5b5060016110f6565b906020608492519162461bcd60e51b8352820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152fd5b346103fa575f3660031901126103fa576005545f906001600160a01b03811690611203338314611c7c565b6001600160a01b0319166005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346103fa5760203660031901126103fa576020906001600160a01b0361125b611c11565b165f525f8252805f20549051908152f35b50346103fa575f3660031901126103fa576102009060165460ff9081818451948282168652828260081c166020870152828260101c1681870152828260181c166060870152828260201c166080870152828260281c1660a0870152828260301c1660c0870152828260381c1660e08701521c16610100840152818160481c16610120840152818160501c16610140840152818160581c16610160840152818160601c16610180840152818160681c166101a0840152818160701c166101c084015260781c166101e0820152f35b346103fa575f3660031901126103fa576009546001600160a01b039081163314801561137b575b156103fa575f808080936008541647905af15061001d611dc3565b5080600854163314611360565b50346103fa575f3660031901126103fa5760209060ff60115460101c1690519015158152f35b346103fa5760203660031901126103fa576113c7611c11565b6005546001600160a01b0391906113e19083163314611c7c565b816009549116918116827ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df87039655f80a36001600160a01b03191617600955005b50346103fa5760203660031901126103fa576020906001600160a01b03611444611c11565b165f52601e825260ff815f20541690519015158152f35b50346103fa575f3660031901126103fa5760209060ff6011541690519015158152f35b50346103fa575f3660031901126103fa5760075490516001600160a01b039091168152602090f35b346103fa5760603660031901126103fa576114bf611c3d565b6114c7611c4d565b6114cf611c5d565b6114e460018060a01b03600554163314611c7c565b60ff60381b66ff00000000000065ff00000000006016549560281b169360301b169160381b169164ff00000000611547848367ffffff00000000001988161785171760ff61153c818360301c16828460281c16611d11565b9160381c1690611d11565b611557606460ff83161115611d39565b60201b169367ffffffff0000000019161717171760165560ff60185460101c1661157d57005b61001d611f1f565b50346103fa575f3660031901126103fa5760209060ff60185460101c1690519015158152f35b50346103fa57806003193601126103fa57602090610a456115ca611c11565b335f5260018452825f2060018060a01b0382165f5284526115f0602435845f2054611db6565b9033611e21565b50346103fa575f3660031901126103fa576020906017549051908152f35b50346103fa575f3660031901126103fa576020905160128152f35b50346103fa575f3660031901126103fa57602090601a549051908152f35b50346103fa575f3660031901126103fa5760209061ffff601854169051908152f35b50346103fa575f3660031901126103fa5760209060ff600b541690519015158152f35b50346103fa575f3660031901126103fa57602090600c549051908152f35b50346103fa575f3660031901126103fa576020905161dead8152f35b5082346103fa5760603660031901126103fa576116e8611c11565b906116f1611c27565b906117006044358093856120f9565b60018060a01b0383165f526001602052835f20335f52602052835f20549082821061173557602085610a458585033388611e21565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b5082346103fa5760203660031901126103fa5780356117b360018060a01b03600554163314611c7c565b600254928380046001148415171561091f576103e893670de0b6b3a7640000948591040482106117f457508281029281840414901517156108be5750600e55005b5162461bcd60e51b8152602081840152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608490fd5b50346103fa575f3660031901126103fa57602090601b549051908152f35b5082346103fa5760603660031901126103fa57611887611c3d565b61188f611c4d565b611897611c5d565b906118ad60018060a01b03600554163314611c7c565b63ff00000062ff000061ff006016549560081b169260101b169260181b169260ff6118ff858463ffffff0019851617861717826118f4818360101c16828460081c16611d11565b9160181c1690611d11565b169460ff60185460101c16968761193357505061191f6064861115611d39565b63ffffffff19161717171760165561157d57005b906020606492519162461bcd60e51b8352820152601a60248201527f46696e616c20666565732061726520616c7265616479207365740000000000006044820152fd5b50346103fa575f3660031901126103fa57602090601c549051908152f35b50346103fa575f3660031901126103fa57602090600a549051908152f35b50346103fa575f3660031901126103fa576020906012549051908152f35b50346103fa575f3660031901126103fa576020906002549051908152f35b50346103fa575f3660031901126103fa5760065490516001600160a01b039091168152602090f35b50346103fa5760203660031901126103fa576020906001600160a01b03611a3b611c11565b165f52601f825260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45611a71611c11565b6024359033611e21565b8382346103fa575f3660031901126103fa578051905f9260035460018160011c91600181168015611b66575b6020948585108214611b535750838752908115611b335750600114611ad9575b505050610e8382610e8d940383611cef565b60035f9081529295507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611b205750505082610e8d94610e839282010194611ac7565b8054868501880152928601928101611b04565b60ff1916868501525050151560051b8301019250610e8382610e8d611ac7565b602290634e487b7160e01b5f525260245ffd5b92607f1692611aa7565b50346103fa575f3660031901126103fa576020906019549051908152f35b346103fa575f3660031901126103fa57611bb360018060a01b03600554163314611c7c565b6011805462ffff0019166201010017905542600d55005b602080825282518183018190529093925f5b828110611bfd57505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611bdc565b600435906001600160a01b03821682036103fa57565b602435906001600160a01b03821682036103fa57565b6004359060ff821682036103fa57565b6024359060ff821682036103fa57565b6044359060ff821682036103fa57565b6024359081151582036103fa57565b15611c8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111611cdb57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611cdb57604052565b9060ff8091169116019060ff8211611d2557565b634e487b7160e01b5f52601160045260245ffd5b15611d4057565b60405162461bcd60e51b815260206004820152601d60248201527f546f74616c20666565732063616e6e6f742065786365656420313030250000006044820152606490fd5b81810292918115918404141715611d2557565b8115611da2570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611d2557565b3d15611dfd573d9067ffffffffffffffff8211611cdb5760405191611df2601f8201601f191660200184611cef565b82523d5f602084013e565b606090565b908160209103126103fa57516001600160a01b03811681036103fa5790565b6001600160a01b03908116918215611ece5716918215611e7e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b601654604061ff0082821c1662ff00008161ff0019851617831c1663ff000000818362ffff001987161717841c1660ff818463ffffff0019881617841717851c169065ff0000000000828563ffffffff198916178517831717861c169266ff000000000000848665ff00ffffffff198a161783178417851717871c169464ff0000000060ff60381b878366ffff00ffffffff198c1617851786178717881717891c1697888367ffffff00ffffffff198c16178517861787178817891717901c169767ffffffffffffffff19161717171717171717601655565b15611fff57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561205957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156120b157565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b91908203918211611d2557565b5f939291906001600160a01b038082168015159061211682611ff8565b828516908115159261212784612052565b871561286e57506011549260ff848180961661252c575b505050305f526020935f8552604090815f2054600f5411158061251e575b8061250f575b806124fc575b806124e8575b806124d4575b6124aa575b600754858160a01c161580612498575b8061248d575b80612475575b80612461575b612363575b50508360075460a01c161591808b52601e865284828c2054168015612354575b61234c575b8a938b936121e2575b505050505050506121e0939450612af7565b565b60189996979954868160101c16156122ca575b509a612245979695949392916121e09b9c8252878052858383205416806122bb575b15612277575050505050612236606491600194601654901c1683611d85565b04915b82612253575b506120ec565b9184935f80808080806121ce565b61225e833088612af7565b612269575b5f61223f565b61227281612d7f565b612263565b8152205491945091908116806122ae575b612293575b50612239565b60649193506122a6906016541683611d85565b04915f61228d565b5080601654161515612288565b5085601654891c161515612217565b61ffff60018183160181811161233857916121e09d9e93916122459b9a999897969593168061ffff19831617601855601754818684161711612319575b5050919c9b50919293949596976121f5565b620100009162ffffff19161717601855612331611f1f565b5f80612307565b634e487b7160e01b8f52601160045260248ffd5b8a92506121c5565b50838b5284828c2054166121c0565b819042600d551682516370a0823160e01b81528160048201528781602481305afa908115612457575f91612428575b506123a361271091600a5490611d85565b0480612418575b505060075416803b156103fa575f8091600484518094819363fff6cae960e01b83525af180156103f057612405575b507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d8a80a15f806121a0565b612410919a50611cc7565b5f985f6123d9565b61242191612a29565b5f806123aa565b90508781813d8311612450575b61243f8183611cef565b810103126103fa57516123a3612392565b503d612435565b84513d5f823e3d90fd5b50835f52601e875285835f2054161561219b565b50612485600d54600c5490611db6565b421015612195565b5085600b541661218f565b50845f5286805285835f205416612189565b6007805460ff60a01b19908116600160a01b179091556124c8612b72565b60075416600755612179565b50835f52601e865284825f20541615612174565b50825f52601e865284825f2054161561216e565b50825f5285805284825f20541615612168565b508460075460a01c1615612162565b508460115460101c1661215c565b866005541692838514159081612863575b8161285b575b508061284f575b80612840575b1561213e5760081c16156127d8575b83601554166126fe575b50805f52602080805260409084825f205416806126ea575b1561261757600e5489116125b7576125af915f6125a592868252525f205489611db6565b60105410156120aa565b5f838161213e565b608491519062461bcd60e51b82526004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152fd5b90835f5281805284815f205416806126d6575b156126a157600e54891161263f5750506125af565b60849250519062461bcd60e51b82526004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152fd5b90835f52601f815284825f205416156126bc575b50506125af565b6126cf915f6125a592525f205489611db6565b5f806126b5565b50825f52601f825284815f2054161561262a565b50835f52601f815284825f20541615612581565b821415806127ca575b806127bc575b612718575b5f612569565b325f52601460205260405f205443111561273f57325f5260146020524360405f2055612712565b60405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a490fd5b50836007541682141561270d565b508360065416821415612707565b815f52601e6020528360405f2054168015612830575b61255f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50825f528360405f2054166127ee565b508160075460a01c1615612550565b5061dead85141561254a565b90505f612543565b86851415915061253d565b929450955095965061288a93506128859150611ff8565b612052565b5f602052815f527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206040515f8152a3565b60408051916060830183811067ffffffffffffffff821117611cdb57825260028352602080840190833683378451156129ec5730825260065484516315ab88c960e31b81526001600160a01b03949092909185168184600481845afa938415612a1f575f94612a00575b50875193600194600110156129ec576129489187859216898b015230611e21565b846006541694853b156103fa57918697949391975197889563791ac94760e01b875260a487019260048801525f602488015260a060448801525180925260c4860194935f905b8382106129d25750505050505091815f81819530606483015242608483015203925af19081156129c957506129c05750565b6121e090611cc7565b513d5f823e3d90fd5b8551811687528a975095820195948201949084019061298e565b634e487b7160e01b5f52603260045260245ffd5b612a18919450823d8411610ce057610cd28183611cef565b925f612927565b87513d5f823e3d90fd5b6001600160a01b0316612a3d811515611ff8565b805f525f60205260405f2054828110612aa3578290825f525f6020520360405f20557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602061dead93845f5260405f20612a98828254611db6565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b6001600160a01b0390811691612b0e831515611ff8565b1691612b1b831515612052565b815f525f60205260405f2054818110612aa357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20612a98828254611db6565b305f525f60205260405f2054601c54612b99612b90601b5483611db6565b601d5490611db6565b9082158015612d77575b612d7257600f54601481029080820460141490151715611d2557808411612d68575b50612bdc82612bd7612be69386611d85565b611d98565b60011c80936120ec565b612c2c612bfc47612bf6846128bd565b476120ec565b612c27612c1f612c1286612bd7601b5486611d85565b95612bd7601d5485611d85565b9485926120ec565b6120ec565b925f601c555f601b555f601d555f80808060018060a01b039687600954165af150612c55611dc3565b5080151580612d5f575b612c81575b50505f8080935080926008541647905af150612c7e611dc3565b50565b606081612c948693866006541630611e21565b60c4856006541691604051948593849263f305d71960e01b845230600485015260248401525f60448401525f606484015261dead60848401524260a48401525af18015612d5457612d29575b505f8093927f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56160608395948495601c549060405192835260208301526040820152a19250612c64565b606090813d8311612d4d575b612d3f8183611cef565b810103126103fa575f612ce0565b503d612d35565b6040513d5f823e3d90fd5b50831515612c5f565b9250612bdc612bc5565b505050565b508115612ba3565b6002548060011b9080820460021490151715611d25576064900460195443145f14612e1757601a5491818310612db457505050565b8282612dc382612dec956120ec565b831015612e085750505b305f525f60205260405f2054908082105f14612e0157505b8092611db6565b601a555b80612df85750565b6121e0906128bd565b9050612de5565b612e1292506120ec565b612dcd565b80821015612e4d57505b305f525f60205260405f2054908082105f14612e4657505b8043601955601a55612df0565b9050612e39565b9050612e2156fea264697066735822122020e6f33b6e74ccb59099106efc97be57363968d9f02b9a2dbfb2e3f93a13dbd264736f6c63430008180033

Deployed Bytecode

0x6040608081526004908136101561001f575b5050361561001d575f80fd5b005b5f905f3560e01c806299d38614611b8e578063057f202e14611b7057806306fdde0314611a7b578063095ea7b314611a5257806310d5de5314611a165780631694505e146119ee57806318160ddd146119d0578063184c16c5146119b2578063199ffc72146119945780631a8145bb146119765780631d003eb61461186c5780631f3fed8f1461184e578063203e727e1461178957806323b872dd146116cd57806327c8f835146116b15780632c3e486c146116935780632e82f1a0146116705780632eff0d9e1461164e578063313674dd14611630578063313ce5671461161557806338b2c461146115f757806339509351146115ab578063404bc41b146115855780634487c29f146114a657806349bd5a5e1461147e5780634a62bb651461145b5780634fbee1931461141f578063535e02d8146113ae5780636ddd1713146113885780636fc3eaec146113395780637040eb8b1461126c57806370a0823114611236578063715018a6146111d8578063730c1888146110a5578063751039fc1461106b5780637571336a1461100f5780637d831a8b14610f9e5780638da5cb5b14610f76578063924de9b714610f2957806395d89b4114610e265780639a7a23d614610d345780639e78fb4f14610b4b5780639ec22c0e14610b2d5780639fccce3214610b0f578063a457c2d714610a6a578063a4c82a0014610a4c578063a9059cbb14610a1c578063b62496f5146109e1578063bbc0c742146109bb578063c024666814610932578063c18bc1951461084e578063c3c8cd80146107fe578063c876d0b9146107db578063c8c8ebe4146107bd578063d257b34f14610665578063dd62ed3e1461061c578063e2f45605146105fe578063e884f260146105c4578063f2fde38b146104fc578063f8b45b05146104de5763fe72b27a146102c95750610011565b346103fa57602092836003193601126103fa576005546001600160a01b03908235906102f89083163314611c7c565b61030760135460125490611db6565b42111561049d576103e88111610447574260135581600754169084516370a0823160e01b815282858201528781602481305afa90811561043d575f9161040e575b506127109161035691611d85565b04806103fe575b50506007541690813b156103fa57825160016209351760e01b03198152915f918391829084905af180156103f0576103bd575b507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb90519180a160018152f35b6103c8919250611cc7565b5f907f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb610390565b82513d5f823e3d90fd5b5f80fd5b61040791612a29565b5f8061035d565b90508781813d8311610436575b6104258183611cef565b810103126103fa5751612710610348565b503d61041b565b86513d5f823e3d90fd5b835162461bcd60e51b8152808401879052602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608490fd5b606483878087519262461bcd60e51b845283015260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152fd5b50346103fa575f3660031901126103fa576020906010549051908152f35b5082346103fa5760203660031901126103fa57610517611c11565b6005546001600160a01b03808216939192610533338614611c7c565b169384156105725750506001600160a01b03191682176005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b50346103fa575f3660031901126103fa576020906105ed60018060a01b03600554163314611c7c565b60ff19601554166015555160018152f35b50346103fa575f3660031901126103fa57602090600f549051908152f35b50346103fa57806003193601126103fa57602090610638611c11565b610640611c27565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b8382346103fa5760203660031901126103fa57813561068f60018060a01b03600554163314611c7c565b60025480158180046001148117156107aa57620186a08204831061074957600582029182046005141715610736576103e8900481116106d65760209250600f555160018152f35b815162461bcd60e51b8152602081850152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608490fd5b601184634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081870152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b601185634e487b7160e01b5f525260245ffd5b50346103fa575f3660031901126103fa57602090600e549051908152f35b50346103fa575f3660031901126103fa5760209060ff6015541690519015158152f35b50346103fa575f3660031901126103fa57600954336001600160a01b0391821614908115610840575b50156103fa5761001d90305f525f6020525f20546128bd565b905060085416331482610827565b5082346103fa5760203660031901126103fa57803561087860018060a01b03600554163314611c7c565b6002549260058402938085046005149015171561091f576103e893670de0b6b3a7640000948591040482106108d157508281029281840414901517156108be5750601055005b601190634e487b7160e01b5f525260245ffd5b5162461bcd60e51b81526020818401526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608490fd5b601183634e487b7160e01b5f525260245ffd5b50346103fa57806003193601126103fa577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7602061096e611c11565b610976611c6d565b60055490916001600160a01b03916109919083163314611c7c565b1693845f52601e83526109b282825f209060ff801983541691151516179055565b519015158152a2005b50346103fa575f3660031901126103fa5760209060ff60115460081c1690519015158152f35b50346103fa5760203660031901126103fa576020906001600160a01b03610a06611c11565b165f5281805260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45610a3b611c11565b60243590336120f9565b5160018152f35b50346103fa575f3660031901126103fa57602090600d549051908152f35b5082346103fa57816003193601126103fa57610a84611c11565b9060243590335f526001602052835f2060018060a01b0384165f52602052835f205490828210610abe57602085610a458585038733611e21565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50346103fa575f3660031901126103fa57602090601d549051908152f35b50346103fa575f3660031901126103fa576020906013549051908152f35b5082346103fa575f3660031901126103fa576005546001600160a01b039190610b809083163314610b7b81611c7c565b611c7c565b737a250d5630b4cf539739df2c5dacb4c659f2488d91825f52602092601f8452845f209260ff19936001858254161790556bffffffffffffffffffffffff60a01b9180836006541617600655865163c45a015560e01b815286818481855afa908115610d0b57839288915f93610d15575b5089516315ab88c960e31b815293849182905afa8015610d0b5785938489945f93610ce7575b505f90604493948c5197889687956364e329cb60e11b87523090870152166024850152165af190811561043d57918360019793928895935f91610cba575b501680916007541617600755610c7033836005541614611c7c565b5f52601f8552815f2083858254161790556007541693845f5280525f20918254161790557fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b610cda9150883d8a11610ce0575b610cd28183611cef565b810190611e02565b89610c55565b503d610cc8565b6044935090610d035f92873d8911610ce057610cd28183611cef565b935090610c17565b88513d5f823e3d90fd5b610d2d919350823d8411610ce057610cd28183611cef565b918a610bf1565b5082346103fa57816003193601126103fa57610d4e611c11565b91610d57611c6d565b9160018060a01b03610d6e81600554163314611c7c565b80600754169416938414610dbe57505f8381526020805220805460ff191660ff831515161790551515907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346103fa575f3660031901126103fa578051905f9280549060018260011c9160018416938415610f1f575b6020948585108114610f0c57848852908115610eea5750600114610e91575b610e8d8686610e83828b0383611cef565b5191829182611bca565b0390f35b5f9081529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ed75750505082610e8d94610e83928201019486610e72565b8054868501880152928601928101610eba565b60ff191687860152505050151560051b8301019250610e8382610e8d86610e72565b602283634e487b7160e01b5f525260245ffd5b92607f1692610e53565b83346103fa5760203660031901126103fa57358015158091036103fa57610f5b60018060a01b03600554163314611c7c565b62ff00006011549160101b169062ff00001916176011555f80f35b50346103fa575f3660031901126103fa5760055490516001600160a01b039091168152602090f35b346103fa5760203660031901126103fa57610fb7611c11565b6005546001600160a01b039190610fd19083163314611c7c565b816008549116918116827fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b056745f80a36001600160a01b03191617600855005b50346103fa57806003193601126103fa5761001d9061102c611c11565b90611035611c6d565b60055490926001600160a01b03916110509083163314611c7c565b165f52601f6020525f209060ff801983541691151516179055565b50346103fa575f3660031901126103fa5760209061109460018060a01b03600554163314611c7c565b60ff19601154166011555160018152f35b5082346103fa5760603660031901126103fa57803560243591604435938415158095036103fa576110e160018060a01b03600554163314611c7c565b6102588310611179576103e884111580611171575b15611115575050600c55600a5560ff8019600b5416911617600b555f80f35b906020608492519162461bcd60e51b8352820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152fd5b5060016110f6565b906020608492519162461bcd60e51b8352820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152fd5b346103fa575f3660031901126103fa576005545f906001600160a01b03811690611203338314611c7c565b6001600160a01b0319166005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346103fa5760203660031901126103fa576020906001600160a01b0361125b611c11565b165f525f8252805f20549051908152f35b50346103fa575f3660031901126103fa576102009060165460ff9081818451948282168652828260081c166020870152828260101c1681870152828260181c166060870152828260201c166080870152828260281c1660a0870152828260301c1660c0870152828260381c1660e08701521c16610100840152818160481c16610120840152818160501c16610140840152818160581c16610160840152818160601c16610180840152818160681c166101a0840152818160701c166101c084015260781c166101e0820152f35b346103fa575f3660031901126103fa576009546001600160a01b039081163314801561137b575b156103fa575f808080936008541647905af15061001d611dc3565b5080600854163314611360565b50346103fa575f3660031901126103fa5760209060ff60115460101c1690519015158152f35b346103fa5760203660031901126103fa576113c7611c11565b6005546001600160a01b0391906113e19083163314611c7c565b816009549116918116827ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df87039655f80a36001600160a01b03191617600955005b50346103fa5760203660031901126103fa576020906001600160a01b03611444611c11565b165f52601e825260ff815f20541690519015158152f35b50346103fa575f3660031901126103fa5760209060ff6011541690519015158152f35b50346103fa575f3660031901126103fa5760075490516001600160a01b039091168152602090f35b346103fa5760603660031901126103fa576114bf611c3d565b6114c7611c4d565b6114cf611c5d565b6114e460018060a01b03600554163314611c7c565b60ff60381b66ff00000000000065ff00000000006016549560281b169360301b169160381b169164ff00000000611547848367ffffff00000000001988161785171760ff61153c818360301c16828460281c16611d11565b9160381c1690611d11565b611557606460ff83161115611d39565b60201b169367ffffffff0000000019161717171760165560ff60185460101c1661157d57005b61001d611f1f565b50346103fa575f3660031901126103fa5760209060ff60185460101c1690519015158152f35b50346103fa57806003193601126103fa57602090610a456115ca611c11565b335f5260018452825f2060018060a01b0382165f5284526115f0602435845f2054611db6565b9033611e21565b50346103fa575f3660031901126103fa576020906017549051908152f35b50346103fa575f3660031901126103fa576020905160128152f35b50346103fa575f3660031901126103fa57602090601a549051908152f35b50346103fa575f3660031901126103fa5760209061ffff601854169051908152f35b50346103fa575f3660031901126103fa5760209060ff600b541690519015158152f35b50346103fa575f3660031901126103fa57602090600c549051908152f35b50346103fa575f3660031901126103fa576020905161dead8152f35b5082346103fa5760603660031901126103fa576116e8611c11565b906116f1611c27565b906117006044358093856120f9565b60018060a01b0383165f526001602052835f20335f52602052835f20549082821061173557602085610a458585033388611e21565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b5082346103fa5760203660031901126103fa5780356117b360018060a01b03600554163314611c7c565b600254928380046001148415171561091f576103e893670de0b6b3a7640000948591040482106117f457508281029281840414901517156108be5750600e55005b5162461bcd60e51b8152602081840152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608490fd5b50346103fa575f3660031901126103fa57602090601b549051908152f35b5082346103fa5760603660031901126103fa57611887611c3d565b61188f611c4d565b611897611c5d565b906118ad60018060a01b03600554163314611c7c565b63ff00000062ff000061ff006016549560081b169260101b169260181b169260ff6118ff858463ffffff0019851617861717826118f4818360101c16828460081c16611d11565b9160181c1690611d11565b169460ff60185460101c16968761193357505061191f6064861115611d39565b63ffffffff19161717171760165561157d57005b906020606492519162461bcd60e51b8352820152601a60248201527f46696e616c20666565732061726520616c7265616479207365740000000000006044820152fd5b50346103fa575f3660031901126103fa57602090601c549051908152f35b50346103fa575f3660031901126103fa57602090600a549051908152f35b50346103fa575f3660031901126103fa576020906012549051908152f35b50346103fa575f3660031901126103fa576020906002549051908152f35b50346103fa575f3660031901126103fa5760065490516001600160a01b039091168152602090f35b50346103fa5760203660031901126103fa576020906001600160a01b03611a3b611c11565b165f52601f825260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45611a71611c11565b6024359033611e21565b8382346103fa575f3660031901126103fa578051905f9260035460018160011c91600181168015611b66575b6020948585108214611b535750838752908115611b335750600114611ad9575b505050610e8382610e8d940383611cef565b60035f9081529295507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611b205750505082610e8d94610e839282010194611ac7565b8054868501880152928601928101611b04565b60ff1916868501525050151560051b8301019250610e8382610e8d611ac7565b602290634e487b7160e01b5f525260245ffd5b92607f1692611aa7565b50346103fa575f3660031901126103fa576020906019549051908152f35b346103fa575f3660031901126103fa57611bb360018060a01b03600554163314611c7c565b6011805462ffff0019166201010017905542600d55005b602080825282518183018190529093925f5b828110611bfd57505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611bdc565b600435906001600160a01b03821682036103fa57565b602435906001600160a01b03821682036103fa57565b6004359060ff821682036103fa57565b6024359060ff821682036103fa57565b6044359060ff821682036103fa57565b6024359081151582036103fa57565b15611c8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111611cdb57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611cdb57604052565b9060ff8091169116019060ff8211611d2557565b634e487b7160e01b5f52601160045260245ffd5b15611d4057565b60405162461bcd60e51b815260206004820152601d60248201527f546f74616c20666565732063616e6e6f742065786365656420313030250000006044820152606490fd5b81810292918115918404141715611d2557565b8115611da2570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611d2557565b3d15611dfd573d9067ffffffffffffffff8211611cdb5760405191611df2601f8201601f191660200184611cef565b82523d5f602084013e565b606090565b908160209103126103fa57516001600160a01b03811681036103fa5790565b6001600160a01b03908116918215611ece5716918215611e7e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b601654604061ff0082821c1662ff00008161ff0019851617831c1663ff000000818362ffff001987161717841c1660ff818463ffffff0019881617841717851c169065ff0000000000828563ffffffff198916178517831717861c169266ff000000000000848665ff00ffffffff198a161783178417851717871c169464ff0000000060ff60381b878366ffff00ffffffff198c1617851786178717881717891c1697888367ffffff00ffffffff198c16178517861787178817891717901c169767ffffffffffffffff19161717171717171717601655565b15611fff57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561205957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156120b157565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b91908203918211611d2557565b5f939291906001600160a01b038082168015159061211682611ff8565b828516908115159261212784612052565b871561286e57506011549260ff848180961661252c575b505050305f526020935f8552604090815f2054600f5411158061251e575b8061250f575b806124fc575b806124e8575b806124d4575b6124aa575b600754858160a01c161580612498575b8061248d575b80612475575b80612461575b612363575b50508360075460a01c161591808b52601e865284828c2054168015612354575b61234c575b8a938b936121e2575b505050505050506121e0939450612af7565b565b60189996979954868160101c16156122ca575b509a612245979695949392916121e09b9c8252878052858383205416806122bb575b15612277575050505050612236606491600194601654901c1683611d85565b04915b82612253575b506120ec565b9184935f80808080806121ce565b61225e833088612af7565b612269575b5f61223f565b61227281612d7f565b612263565b8152205491945091908116806122ae575b612293575b50612239565b60649193506122a6906016541683611d85565b04915f61228d565b5080601654161515612288565b5085601654891c161515612217565b61ffff60018183160181811161233857916121e09d9e93916122459b9a999897969593168061ffff19831617601855601754818684161711612319575b5050919c9b50919293949596976121f5565b620100009162ffffff19161717601855612331611f1f565b5f80612307565b634e487b7160e01b8f52601160045260248ffd5b8a92506121c5565b50838b5284828c2054166121c0565b819042600d551682516370a0823160e01b81528160048201528781602481305afa908115612457575f91612428575b506123a361271091600a5490611d85565b0480612418575b505060075416803b156103fa575f8091600484518094819363fff6cae960e01b83525af180156103f057612405575b507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d8a80a15f806121a0565b612410919a50611cc7565b5f985f6123d9565b61242191612a29565b5f806123aa565b90508781813d8311612450575b61243f8183611cef565b810103126103fa57516123a3612392565b503d612435565b84513d5f823e3d90fd5b50835f52601e875285835f2054161561219b565b50612485600d54600c5490611db6565b421015612195565b5085600b541661218f565b50845f5286805285835f205416612189565b6007805460ff60a01b19908116600160a01b179091556124c8612b72565b60075416600755612179565b50835f52601e865284825f20541615612174565b50825f52601e865284825f2054161561216e565b50825f5285805284825f20541615612168565b508460075460a01c1615612162565b508460115460101c1661215c565b866005541692838514159081612863575b8161285b575b508061284f575b80612840575b1561213e5760081c16156127d8575b83601554166126fe575b50805f52602080805260409084825f205416806126ea575b1561261757600e5489116125b7576125af915f6125a592868252525f205489611db6565b60105410156120aa565b5f838161213e565b608491519062461bcd60e51b82526004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152fd5b90835f5281805284815f205416806126d6575b156126a157600e54891161263f5750506125af565b60849250519062461bcd60e51b82526004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152fd5b90835f52601f815284825f205416156126bc575b50506125af565b6126cf915f6125a592525f205489611db6565b5f806126b5565b50825f52601f825284815f2054161561262a565b50835f52601f815284825f20541615612581565b821415806127ca575b806127bc575b612718575b5f612569565b325f52601460205260405f205443111561273f57325f5260146020524360405f2055612712565b60405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a490fd5b50836007541682141561270d565b508360065416821415612707565b815f52601e6020528360405f2054168015612830575b61255f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50825f528360405f2054166127ee565b508160075460a01c1615612550565b5061dead85141561254a565b90505f612543565b86851415915061253d565b929450955095965061288a93506128859150611ff8565b612052565b5f602052815f527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206040515f8152a3565b60408051916060830183811067ffffffffffffffff821117611cdb57825260028352602080840190833683378451156129ec5730825260065484516315ab88c960e31b81526001600160a01b03949092909185168184600481845afa938415612a1f575f94612a00575b50875193600194600110156129ec576129489187859216898b015230611e21565b846006541694853b156103fa57918697949391975197889563791ac94760e01b875260a487019260048801525f602488015260a060448801525180925260c4860194935f905b8382106129d25750505050505091815f81819530606483015242608483015203925af19081156129c957506129c05750565b6121e090611cc7565b513d5f823e3d90fd5b8551811687528a975095820195948201949084019061298e565b634e487b7160e01b5f52603260045260245ffd5b612a18919450823d8411610ce057610cd28183611cef565b925f612927565b87513d5f823e3d90fd5b6001600160a01b0316612a3d811515611ff8565b805f525f60205260405f2054828110612aa3578290825f525f6020520360405f20557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602061dead93845f5260405f20612a98828254611db6565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b6001600160a01b0390811691612b0e831515611ff8565b1691612b1b831515612052565b815f525f60205260405f2054818110612aa357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20612a98828254611db6565b305f525f60205260405f2054601c54612b99612b90601b5483611db6565b601d5490611db6565b9082158015612d77575b612d7257600f54601481029080820460141490151715611d2557808411612d68575b50612bdc82612bd7612be69386611d85565b611d98565b60011c80936120ec565b612c2c612bfc47612bf6846128bd565b476120ec565b612c27612c1f612c1286612bd7601b5486611d85565b95612bd7601d5485611d85565b9485926120ec565b6120ec565b925f601c555f601b555f601d555f80808060018060a01b039687600954165af150612c55611dc3565b5080151580612d5f575b612c81575b50505f8080935080926008541647905af150612c7e611dc3565b50565b606081612c948693866006541630611e21565b60c4856006541691604051948593849263f305d71960e01b845230600485015260248401525f60448401525f606484015261dead60848401524260a48401525af18015612d5457612d29575b505f8093927f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56160608395948495601c549060405192835260208301526040820152a19250612c64565b606090813d8311612d4d575b612d3f8183611cef565b810103126103fa575f612ce0565b503d612d35565b6040513d5f823e3d90fd5b50831515612c5f565b9250612bdc612bc5565b505050565b508115612ba3565b6002548060011b9080820460021490151715611d25576064900460195443145f14612e1757601a5491818310612db457505050565b8282612dc382612dec956120ec565b831015612e085750505b305f525f60205260405f2054908082105f14612e0157505b8092611db6565b601a555b80612df85750565b6121e0906128bd565b9050612de5565b612e1292506120ec565b612dcd565b80821015612e4d57505b305f525f60205260405f2054908082105f14612e4657505b8043601955601a55612df0565b9050612e39565b9050612e2156fea264697066735822122020e6f33b6e74ccb59099106efc97be57363968d9f02b9a2dbfb2e3f93a13dbd264736f6c63430008180033

Deployed Bytecode Sourcemap

15130:22736:0:-:0;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;;;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;37003:42;:20;15130:22736;37026:19;15130:22736;37003:42;;:::i;:::-;36985:15;:60;15130:22736;;;37132:4;37121:15;;15130:22736;;36985:15;37003:20;15130:22736;;37329:13;15130:22736;;;;;;;;37314:29;;;;;;15130:22736;37314:4;;15130:22736;37314:4;;:29;;;;;;;15130:22736;37314:29;;;15130:22736;9300:5;37451;9300;;;;:::i;:::-;15130:22736;37559:16;37555:108;;15130:22736;;;37329:13;15130:22736;;37796:11;;;;;;15130:22736;;-1:-1:-1;;;;;;37796:11:0;;15130:22736;;;;;;;;;37796:11;;;;;;;;15130:22736;;37822:14;15130:22736;;37822:14;;;15130:22736;;;;37796:11;;;;;;:::i;:::-;15130:22736;;37822:14;37796:11;;;15130:22736;;;;;;;;;37796:11;15130:22736;;;37555:108;37639:12;;;:::i;:::-;37555:108;;;;37314:29;;;;;;;;;;;;;;;;:::i;:::-;;;15130:22736;;;;;37451:5;37314:29;;;;;;;;15130:22736;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15702:24;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;;;;;1023:68;522:10;1031:23;;1023:68;:::i;:::-;15130:22736;1323:22;;;15130:22736;;-1:-1:-1;;;;;;;;15130:22736:0;;;973:6;15130:22736;1600:40;15130:22736;;1600:40;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;21433:28;15130:22736;;21433:28;15130:22736;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15663:33;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3939:11;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;3432:12;15130:22736;;;;;;;;;;;;;21662:6;15130:22736;;21627:41;;15130:22736;;973:6;15130:22736;;;;;973:6;15130:22736;;;;;21813:4;15130:22736;;21778:39;;15130:22736;;;;;21905:30;15130:22736;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15622:35;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;16013:39;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;35070:17;15130:22736;522:10;-1:-1:-1;;;;;15130:22736:0;;;35054:33;;:68;;;;15130:22736;;;;;35219:15;35186:4;;15130:22736;;;;;;;;35219:15;:::i;35054:68::-;15130:22736;;35107:15;15130:22736;;522:10;35091:31;35054:68;;;15130:22736;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;3432:12;15130:22736;;973:6;15130:22736;;;;;;973:6;15130:22736;;;;;;;22376:4;22384;;15130:22736;;;;;22343:45;;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;22460:31:0;15130:22736;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24897:34;15130:22736;;;:::i;:::-;;;:::i;:::-;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;;;;24843:19;15130:22736;;24843:39;15130:22736;;;;;;;;;;;;;;;;;;;24843:39;15130:22736;;;;;;24897:34;15130:22736;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15772:33;15130:22736;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3761:6;15130:22736;;:::i;:::-;;;522:10;;3761:6;:::i;:::-;15130:22736;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15586:29;15130:22736;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;522:10;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;5200:35;;;;15130:22736;;;;5364:34;15130:22736;;;;522:10;5364:34;:::i;15130:22736::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16950:27;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15901:35;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;1023:68;;15130:22736;;522:10;1031:23;1023:68;1031:23;1023:68;:::i;:::-;;:::i;:::-;20633:42;15130:22736;;;;;;22615:31;15130:22736;;;;;;;;;20748:4;15130:22736;;;;;;;;;;;;;20763:34;15130:22736;;;20763:34;15130:22736;;;;;;20841:26;;;;;;;;;;;;;;;;;;15130:22736;20841:26;;;15130:22736;-1:-1:-1;15130:22736:0;;-1:-1:-1;;;20908:23:0;;15130:22736;;;;;20908:23;;;;;;;;;;;15130:22736;20908:23;;;15130:22736;;;;;;;;;;;;;;;;;20823:109;;20901:4;20823:109;;;15130:22736;;;;;;;20823:109;;;;;;;;;20748:4;20823:109;;;;;;15130:22736;20823:109;;;15130:22736;;;;;20807:125;15130:22736;;;20807:125;15130:22736;1023:68;522:10;15130:22736;973:6;15130:22736;;1031:23;1023:68;:::i;:::-;15130:22736;;22615:31;15130:22736;;;;;;;;;;;;;20807:125;15130:22736;;;;;;;;;;;;;;;;;25383:40;15130:22736;25383:40;;15130:22736;20823:109;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;20908:23;15130:22736;20908:23;;;;15130:22736;20908:23;;;;;;;;;;;:::i;:::-;;;;;;;15130:22736;;;;;;;;;20841:26;;;;;;;;;;;;;;;:::i;:::-;;;;;15130:22736;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;1023:68;15130:22736;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;25085:13;15130:22736;;;;25077:21;;;15130:22736;;-1:-1:-1;15130:22736:0;;;;25328:25;15130:22736;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;25383:40;;15130:22736;25383:40;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;22744:21;15130:22736;;;;;;;;;;22744:21;15130:22736;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;25590:15;15130:22736;;;;;;25547:59;;15130:22736;25547:59;;-1:-1:-1;;;;;;15130:22736:0;;25590:15;15130:22736;;;;;;;;;;;;;;;22615:46;15130:22736;;;:::i;:::-;;;;:::i;:::-;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;;22615:31;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;21301:22;15130:22736;;21301:22;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;;;;;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;35728:3;35705:26;;15130:22736;;35851:4;35839:16;;;:33;;;15130:22736;;;;;;35956:37;15130:22736;36003:27;15130:22736;;;;36040:24;15130:22736;;;;;36040:24;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;35839:33;;15130:22736;35839:33;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;1023:68;522:10;1031:23;;1023:68;:::i;:::-;-1:-1:-1;;;;;;15130:22736:0;973:6;15130:22736;1600:40;;;;15130:22736;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16655:20;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;35326:17;15130:22736;-1:-1:-1;;;;;15130:22736:0;;;522:10;35310:33;:68;;;;15130:22736;;;;;;;;;35442:15;15130:22736;;35484:21;35434:85;;;;;;:::i;35310:68::-;15130:22736;;35363:15;15130:22736;;522:10;35347:31;35310:68;;15130:22736;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15811:30;15130:22736;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;25791:17;15130:22736;;;;;;25755:54;;15130:22736;25755:54;;-1:-1:-1;;;;;;15130:22736:0;;25791:17;15130:22736;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;25950:19;15130:22736;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15733:33;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;15256:28;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;-1:-1:-1;;;15130:22736:0;;24214:6;15130:22736;;;;;;;;;;;;;;;24392:101;15130:22736;;;;;;;;;;;24392:61;15130:22736;;;;;;;;;;24392:61;:::i;:::-;15130:22736;;;;24392:101;;:::i;:::-;24503:65;24531:3;15130:22736;;;24511:23;;24503:65;:::i;:::-;15130:22736;;;;;;;;;;;24214:6;15130:22736;;24692:9;15130:22736;;;;24688:59;;15130:22736;24688:59;;;:::i;15130:22736::-;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;16751:29;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;4886:47;15130:22736;;:::i;:::-;522:10;15130:22736;;;;;;;;;;;;;;;;;;;4886:47;15130:22736;;;;;;4886:47;:::i;:::-;522:10;;4886:47;:::i;15130:22736::-;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16682:29;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;3330:2;15130:22736;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16829:36;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;16718:27;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15496:33;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15535:45;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15336:6;15130:22736;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;;;;:::i;:::-;;4354:6;15130:22736;;4354:6;;;;:::i;:::-;15130:22736;;;;;;;;;;;;;;;522:10;15130:22736;;;;;;;;4463:26;;;;15130:22736;;;;4620:25;15130:22736;;;522:10;15130:22736;4620:25;:::i;15130:22736::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;3432:12;15130:22736;;;;;;;;;;;;;22096:4;22104;;15130:22736;;;;;22063:45;;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;22191:42:0;15130:22736;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16872:33;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;;22925:6;15130:22736;;;;;;;;;;;;;;;23099:98;15130:22736;;;;;;;;;;;23099:59;15130:22736;;;;;;;;;;23099:59;:::i;:::-;15130:22736;;;;23099:98;;:::i;:::-;15130:22736;;;;;;;;23215:10;;15130:22736;;23274:22;;23266:64;23293:3;23274:22;;;23266:64;:::i;:::-;-1:-1:-1;;15130:22736:0;;;;;22925:6;15130:22736;23448:59;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16911:33;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15455:35;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15848:47;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;3432:12;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;15209:41;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;17042:63;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4132:6;15130:22736;;:::i;:::-;;;522:10;;4132:6;:::i;15130:22736::-;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;3122:5;15130:22736;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3122:5;15130:22736;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16787:36;15130:22736;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;21130:20;15130:22736;;-1:-1:-1;;15130:22736:0;;;;;21205:15;21188:32;15130:22736;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15130:22736:0;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;15130:22736:0;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;:::i;:::-;;;;-1:-1:-1;15130:22736:0;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;:::o;7174:370::-;-1:-1:-1;;;;;15130:22736:0;;;;7305:19;;15130:22736;;;7383:21;;;15130:22736;;;7505:32;15130:22736;;7322:1;15130:22736;7454:11;15130:22736;;;7322:1;15130:22736;;7322:1;15130:22736;;;;;7322:1;15130:22736;;;;;;;7505:32;7174:370::o;15130:22736::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;23519:541;23591:6;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23591:6;15130:22736;23519:541::o;15130:22736::-;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;:::o;26039:4850::-;26182:1;;26039:4850;;;-1:-1:-1;;;;;15130:22736:0;;;26166:18;;;;26158:68;26166:18;26158:68;:::i;:::-;15130:22736;;;26244:16;;;;26236:64;;;;:::i;:::-;26315:11;;26311:90;;15130:22736;26415:14;15130:22736;;;;;;;;26411:2426;;26039:4850;28896:4;;;;26182:1;15130:22736;;;26182:1;15130:22736;;;;;26182:1;15130:22736;;28952:18;15130:22736;-1:-1:-1;28928:42:0;28998:34;;;26039:4850;28998:59;;;26039:4850;28998:107;;;26039:4850;28998:149;;;26039:4850;28998:189;;;26039:4850;28981:313;;26039:4850;29322:8;15130:22736;;;;;;29321:9;:54;;;26039:4850;29321:83;;;26039:4850;29321:150;;;26039:4850;29321:192;;;26039:4850;29304:274;;26039:4850;15130:22736;;;29322:8;15130:22736;;;;29603:9;15130:22736;;;;29711:19;15130:22736;;;;;;;;29711:52;;;;26039:4850;29707:98;;26039:4850;29815:16;29841:19;;29943:896;;;26039:4850;30875:6;;;;;;;;;;;;:::i;:::-;26039:4850::o;29943:896::-;29975:9;15130:22736;;;;;;;;;;29974:10;29970:210;;29943:896;15130:22736;;30814:14;15130:22736;;;;;;;30875:6;15130:22736;;;;;;;;;;;;;30220:57;;;29943:896;30216:389;;;30297:13;;;;;9300:5;30372:3;30297:13;30306:4;15130:22736;30346:6;15130:22736;;;;9300:5;;:::i;:::-;15130:22736;30216:389;;30623:8;30619:181;;30216:389;30814:14;;:::i;:::-;29943:896;;;;;;;;;;;30619:181;30688:4;28896;;30688;;:::i;:::-;30711:75;;30619:181;;;;30711:75;30760:6;;;:::i;:::-;30711:75;;30216:389;15130:22736;;;;;;-1:-1:-1;15130:22736:0;;;;;30452:58;;30216:389;30431:174;;30216:389;;;;30431:174;30586:3;15130:22736;;;9300:5;15130:22736;30561:6;15130:22736;;9300:5;;:::i;:::-;15130:22736;30431:174;;;;30452:58;15130:22736;;30487:6;15130:22736;;30487:23;;30452:58;;30220:57;15130:22736;;30253:6;15130:22736;;;;30253:24;;30220:57;;29970:210;15130:22736;30017:1;15130:22736;;;;;;;;;;30875:6;15130:22736;;;;30814:14;15130:22736;;;;;;;;;;;;;;;29975:9;15130:22736;30052:14;15130:22736;;;;;;30040:26;30036:130;;29970:210;;;;;;;;;;;;;;;;30036:130;15130:22736;;;;;;;29975:9;15130:22736;30090:16;;:::i;:::-;30036:130;;;;15130:22736;-1:-1:-1;;;15130:22736:0;;26415:14;15130:22736;;;;;29707:98;29779:15;;-1:-1:-1;29707:98:0;;29711:52;15130:22736;;;;;;;;;;29711:52;;29304:274;36167:15;;;36150:32;15130:22736;;;;;;;36265:29;;;;;;15130:22736;28896:4;;15130:22736;28896:4;;36265:29;;;;;;;26182:1;36265:29;;;29304:274;15130:22736;9300:5;36424;15130:22736;36389:16;15130:22736;9300:5;;:::i;:::-;15130:22736;36541:16;36537:108;;29304:274;15130:22736;;29322:8;15130:22736;;36778:11;;;;;26182:1;15130:22736;;36265:29;15130:22736;;;;;;;;;36778:11;;;;;;;;;;29304:274;36804:12;;;;;29304:274;;;;36778:11;;;;;;:::i;:::-;26182:1;36778:11;;;;36537:108;36621:12;;;:::i;:::-;36537:108;;;;36265:29;;;;;;;;;;;;;;;;:::i;:::-;;;15130:22736;;;;;9300:5;36265:29;;;;;;;;15130:22736;;;26182:1;15130:22736;;;;;29321:192;15130:22736;;26182:1;15130:22736;29488:19;15130:22736;;;;26182:1;15130:22736;;;29487:26;29321:192;;:150;15130:22736;29439:32;:14;15130:22736;29456:15;15130:22736;29439:32;;:::i;:::-;29420:15;:51;;29321:150;;:83;15130:22736;;29391:13;15130:22736;;29321:83;;:54;15130:22736;;26182:1;15130:22736;;;;;;26182:1;15130:22736;;;29321:54;;28981:313;29212:15;15130:22736;;-1:-1:-1;;;;15130:22736:0;;;-1:-1:-1;;;15130:22736:0;;;;29212:15;;:::i;:::-;;15130:22736;;29212:15;15130:22736;28981:313;;28998:189;15130:22736;;26182:1;15130:22736;29164:19;15130:22736;;;;26182:1;15130:22736;;;29163:24;28998:189;;:149;15130:22736;;26182:1;15130:22736;29122:19;15130:22736;;;;26182:1;15130:22736;;;29121:26;28998:149;;:107;15130:22736;;26182:1;15130:22736;;;;;;26182:1;15130:22736;;;29073:32;28998:107;;:59;15130:22736;;29049:8;15130:22736;;;;29048:9;28998:59;;:34;15130:22736;;26415:14;15130:22736;;;;28998:34;;26411:2426;15130:22736;973:6;15130:22736;;26466:15;;;;;:48;;;;26411:2426;26466:84;;;26411:2426;26466:125;;;;26411:2426;26466:154;;;26411:2426;26445:2382;26411:2426;26445:2382;15130:22736;;;26657:14;26653:218;;26445:2382;15130:22736;27024:20;15130:22736;;27020:628;;26445:2382;15130:22736;;26182:1;15130:22736;27718:25;15130:22736;;;;;;;26182:1;15130:22736;;;27718:91;;;26445:2382;27693:1120;;;27893:20;15130:22736;27883:30;;15130:22736;;28038:137;15130:22736;26182:1;28071:22;15130:22736;;;;;26182:1;15130:22736;;28071:22;;:::i;:::-;28097:9;15130:22736;-1:-1:-1;28071:35:0;28038:137;:::i;:::-;26445:2382;;;26411:2426;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;27693:1120;15130:22736;;26182:1;15130:22736;;;;;;26182:1;15130:22736;;;28269:91;;;27693:1120;28244:569;;;28444:20;15130:22736;28434:30;;15130:22736;;28244:569;;27693:1120;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;28244:569;15130:22736;;26182:1;15130:22736;28598:31;15130:22736;;;;26182:1;15130:22736;;;28597:36;28593:220;;28244:569;;;27693:1120;;28593:220;28657:137;15130:22736;26182:1;28690:22;15130:22736;;26182:1;15130:22736;;28690:22;;:::i;28657:137::-;28593:220;;;;28269:91;15130:22736;;26182:1;15130:22736;28323:31;15130:22736;;;;26182:1;15130:22736;;;28322:38;28269:91;;27718;15130:22736;;26182:1;15130:22736;27774:31;15130:22736;;;;26182:1;15130:22736;;;27773:36;27718:91;;27020:628;27097:13;;;:71;;;27020:628;27097:127;;;27020:628;27068:562;;27020:628;;;;27068:562;27339:9;26182:1;15130:22736;27310:28;15130:22736;;;26182:1;15130:22736;;27384:12;-1:-1:-1;15130:22736:0;;;27339:9;26182:1;15130:22736;27310:28;15130:22736;;27384:12;15130:22736;26182:1;15130:22736;;27068:562;;15130:22736;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;27097:127;15130:22736;;27210:13;15130:22736;;27196:28;;;27097:127;;:71;15130:22736;;27152:15;15130:22736;;27138:30;;;27097:71;;26653:218;15130:22736;26182:1;15130:22736;26728:19;15130:22736;;;;26182:1;15130:22736;;;26728:52;;;;26653:218;;15130:22736;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;26728:52;15130:22736;;26182:1;15130:22736;;;26182:1;15130:22736;;;26728:52;;26466:154;15130:22736;;26612:8;15130:22736;;;;26611:9;26466:154;;:125;26570:21;26584:6;26570:21;;;26466:125;;:84;;;;;;:48;26501:13;;;;;-1:-1:-1;26466:48:0;;26311:90;5571:70;;;;;;;;5651:71;5571:70;;;;;;:::i;:::-;5651:71;:::i;:::-;26182:1;15130:22736;;;26182:1;15130:22736;6092:35;15130:22736;;;26182:1;15130:22736;;6092:35;26384:7::o;32185:573::-;15130:22736;;;;;;;;;;;;;;;;;;32347:1;15130:22736;;;;;;;;;;;;;;;;32377:4;15130:22736;;32402:15;15130:22736;;;-1:-1:-1;;;32402:22:0;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;32402:22;15130:22736;;32402:22;;;;;;;-1:-1:-1;32402:22:0;;;32185:573;15130:22736;;;32397:1;;15130:22736;32397:1;15130:22736;;;;32485:11;15130:22736;;;;;;;;;32377:4;32485:11;:::i;:::-;15130:22736;32402:15;15130:22736;;32533:218;;;;;;15130:22736;;;;;;;;;;;;;;32533:218;;15130:22736;;;32533:218;32402:22;32533:218;;15130:22736;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;32377:4;;;;;;;;-1:-1:-1;32377:4:0;;;;15130:22736;;;;32726:15;15130:22736;;;;32533:218;;;;;;;;;;;;32185:573;:::o;32533:218::-;;;;:::i;:::-;15130:22736;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;32402:22;15130:22736;;-1:-1:-1;15130:22736:0;32402:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;15130:22736;;;-1:-1:-1;15130:22736:0;;;;;5444:747;-1:-1:-1;;;;;15130:22736:0;5571:70;5579:20;;;5571:70;:::i;:::-;15130:22736;5597:1;15130:22736;5597:1;15130:22736;;;5597:1;15130:22736;;5863:23;;;15130:22736;;;;;5597:1;15130:22736;5597:1;15130:22736;;;;5597:1;15130:22736;;6092:35;15130:22736;;;;5597:1;15130:22736;;5597:1;15130:22736;6046:30;15130:22736;;;6046:30;:::i;:::-;15130:22736;;;;;;;6092:35;5444:747::o;15130:22736::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;5444:747;-1:-1:-1;;;;;15130:22736:0;;;;5571:70;5579:20;;;5571:70;:::i;:::-;15130:22736;5659:23;5651:71;5659:23;;;5651:71;:::i;:::-;15130:22736;5597:1;15130:22736;5597:1;15130:22736;;;5597:1;15130:22736;;5863:23;;;15130:22736;;;6092:35;15130:22736;;;;5597:1;15130:22736;5597:1;15130:22736;;;;5597:1;15130:22736;;;5597:1;15130:22736;;5597:1;15130:22736;6046:30;15130:22736;;;6046:30;:::i;33274:1712::-;33356:4;3571:9;15130:22736;3571:9;15130:22736;;;3571:9;15130:22736;;33400:18;15130:22736;33400:78;:51;33433:18;15130:22736;33400:51;;:::i;:::-;33466:12;15130:22736;33400:78;;:::i;:::-;33515:20;;;:46;;;;33274:1712;33511:83;;33626:18;15130:22736;33647:2;15130:22736;;;;;;33647:2;15130:22736;;;;;;;33608:41;;;33604:113;;33274:1712;33802:36;33801:70;33802:36;;9198:5;33802:36;;;:::i;:::-;33801:70;:::i;:::-;15130:22736;;9198:5;;;:::i;:::-;34379:40;9198:5;34001:21;34050:18;;;:::i;:::-;34101:21;9198:5;:::i;:::-;34379:28;9402:5;;15130:22736;9300:5;33433:18;15130:22736;9300:5;;:::i;9402:::-;15130:22736;9300:5;33466:12;15130:22736;9300:5;;:::i;9402:::-;34379:28;;;;:::i;:::-;:40;:::i;:::-;15130:22736;3571:9;33400:18;15130:22736;3571:9;33433:18;15130:22736;3571:9;33466:12;15130:22736;3571:9;15130:22736;;;;;;;;;;34543:17;15130:22736;;34535:53;;;;;:::i;:::-;;34603:19;;;:42;;;33274:1712;34599:271;;33274:1712;15130:22736;;3571:9;15130:22736;;;;;;34902:15;15130:22736;;34944:21;34894:85;;;;;;:::i;:::-;;33274:1712::o;34599:271::-;33012:249;15130:22736;32960:11;15130:22736;;;32942:15;15130:22736;;33356:4;32960:11;:::i;:::-;15130:22736;;32942:15;15130:22736;;;;;;;;;;;;;33012:249;;33356:4;33012:249;;;15130:22736;;;;;3571:9;15130:22736;;;;3571:9;15130:22736;;;;15336:6;15130:22736;;;;33236:15;15130:22736;;;;33012:249;;;;;;;;34599:271;15130:22736;3571:9;15130:22736;;;34726:133;33012:249;15130:22736;;;;;33400:18;15130:22736;;;;;;;;;;;;;;;34726:133;34599:271;;;;33012:249;;;;;;;;;;;;;;:::i;:::-;;;15130:22736;;;;33012:249;;;;;;;;;15130:22736;;;3571:9;15130:22736;;;;;34603:42;34626:19;;;;34603:42;;33604:113;33665:41;-1:-1:-1;33801:70:0;33604:113;;33511:83;33577:7;;;:::o;33515:46::-;33539:22;;;33515:46;;30895:1284;3432:12;15130:22736;;;;;;;;3432:12;15130:22736;;;;;;;30996:3;15130:22736;;31013:17;15130:22736;31034:12;31013:33;31009:1090;31034:12;;;31092:17;15130:22736;;31092:31;;;;;31143:7;;;:::o;31088:550::-;31284:30;;;;31596:27;31284:30;;:::i;:::-;31274:41;;:125;;;;;;31499:4;-1:-1:-1;15130:22736:0;-1:-1:-1;15130:22736:0;;;-1:-1:-1;15130:22736:0;;31532:45;:21;;;:45;:21;;;:45;;31523:54;31596:27;;:::i;:::-;31092:17;15130:22736;31009:1090;32112:10;32108:65;;30895:1284;:::o;32108:65::-;32155:6;;;:::i;31532:45::-;;;;;31274:125;31368:30;;;;:::i;:::-;31274:125;;31009:1090;31745:19;;;;;;:41;;31874:4;-1:-1:-1;15130:22736:0;-1:-1:-1;15130:22736:0;;;-1:-1:-1;15130:22736:0;;31903:45;:21;;;:45;:21;;;:45;;31894:54;31034:12;31013:17;15130:22736;32062:26;15130:22736;31009:1090;;31903:45;;;;;31745:41;;;;

Swarm Source

ipfs://20e6f33b6e74ccb59099106efc97be57363968d9f02b9a2dbfb2e3f93a13dbd2
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.