ETH Price: $3,385.66 (+0.85%)

Token

UPMAX (MAX)
 

Overview

Max Total Supply

36,000,000 MAX

Holders

259

Market

Price

$0.01 @ 0.000003 ETH

Onchain Market Cap

$411,901.20

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
*🇵🇱pl.eth
Balance
40,000 MAX

Value
$457.67 ( ~0.135178888742148 Eth) [0.1111%]
0xc1cad6df277106222dd45cf5b0300fbd4d1193d5
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
1
Uniswap V3 (Ethereum)
0X8805792D41FACB22B6F47D468B06AF36FF3FC1C5-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0117
0.0000034 Eth
$83.11
7,122.173 0X8805792D41FACB22B6F47D468B06AF36FF3FC1C5
50.0000%
2
Uniswap V3 (Ethereum)
0X8805792D41FACB22B6F47D468B06AF36FF3FC1C5-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$0.0115
0.0000033 Eth
$81.61
7,122.173 0X8805792D41FACB22B6F47D468B06AF36FF3FC1C5
50.0000%

Contract Source Code Verified (Exact Match)

Contract Name:
UPMAX

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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 {}
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

contract UPMAX is ERC20, Ownable {
    uint256 public constant pairDecimals = 18;
    uint256 public startTime;

    uint256 public treasuryFeeOnBuy = 250;
    uint256 public treasuryFeeOnSell = 250;
    uint256 public operationsFeeOnBuy = 250;
    uint256 public operationsFeeOnSell = 250;
    uint256 public EthToTreasury;
    uint256 public EthToOperations;

    uint256 private _totalFeesOnBuy = 500;
    uint256 private _totalFeesOnSell = 500;

    address public operationWallet = 0x3F534f03fa8cC16887c3defDcB5e41027c9D2523;
    address public treasuryWallet = 0x88C908c9e34DC0c98f08849eC36bf5738Ea6a5e4;
    address private creator = 0xd98ED1716e011EE5549FFCF10159bD25DfEd8Ade;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    address private DEAD = 0x000000000000000000000000000000000000dEaD;

    uint256 public swapTokensAtAmount;
    bool public swapEnabled = false;
    bool public swapWithLimit;
    bool private swapping;
    bool public tradingEnabled = false;

    mapping(address => bool) private _isExcludedFromFees;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdateBuyFees(uint256 treasuryFeeOnBuy, uint256 operationsFeeOnBuy);
    event UpdateSellFees(
        uint256 treasuryFeeOnSell,
        uint256 operationsFeeOnSell
    );
    event OperationWalletUpdated(address indexed newOperationWallet);
    event TreasuryWalletUpdated(address indexed newTreasuryWallet);
    event TradingEnabled(bool enabled);
    event WithdrawalEth(address indexed beneficiary, uint amount);
    event WithdrawalTokens(address indexed beneficiary, uint amount);

    constructor() ERC20("UPMAX", "MAX") {
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[creator] = true;
        _isExcludedFromFees[operationWallet] = true;
        _isExcludedFromFees[treasuryWallet] = true;

        _mint(owner(), 36_000_000 * (10 ** 18));
        swapTokensAtAmount = totalSupply() / 5000;
    }

    receive() external payable {}

    function initializePairAndLiquidity(
        address routerAddress
    ) external onlyOwner {
        require(
            address(uniswapV2Router) == address(0),
            "Router already initialized"
        );

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(routerAddress);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

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

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

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

        emit ExcludeFromFees(account, true);
    }

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

        emit ExcludeFromFees(account, false);
    }

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

    function getEthToTreasury() public view returns (uint256) {
        return EthToTreasury;
    }

    function getEthToOperations() public view returns (uint256) {
        return EthToOperations;
    }

    function updateBuyFees(
        uint256 _treasuryFeeOnBuy,
        uint256 _operationsFeeOnBuy
    ) external onlyOwner {
        require(
            _treasuryFeeOnBuy + _operationsFeeOnBuy <= 1500,
            "Fees must be less than 15%"
        );
        treasuryFeeOnBuy = _treasuryFeeOnBuy;
        operationsFeeOnBuy = _operationsFeeOnBuy;
        _totalFeesOnBuy = treasuryFeeOnBuy + operationsFeeOnBuy;
        emit UpdateBuyFees(_treasuryFeeOnBuy, _operationsFeeOnBuy);
    }

    function updateSellFees(
        uint256 _treasuryFeeOnSell,
        uint256 _operationsFeeOnSell
    ) external onlyOwner {
        require(
            _treasuryFeeOnSell + _operationsFeeOnSell <= 1500,
            "Fees must be less than 15%"
        );
        treasuryFeeOnSell = _treasuryFeeOnSell;
        operationsFeeOnSell = _operationsFeeOnSell;
        _totalFeesOnSell = treasuryFeeOnSell + operationsFeeOnSell;
        emit UpdateSellFees(_treasuryFeeOnSell, _operationsFeeOnSell);
    }

    function changeOperationWallet(
        address _operationWallet
    ) external onlyOwner {
        require(
            _operationWallet != address(0),
            "Operation wallet cannot be zero address"
        );
        operationWallet = _operationWallet;
        emit OperationWalletUpdated(_operationWallet);
    }

    function changeTreasuryWallet(address _treasuryWallet) external onlyOwner {
        require(
            _treasuryWallet != address(0),
            "Operation wallet cannot be zero address"
        );
        treasuryWallet = _treasuryWallet;
        emit TreasuryWalletUpdated(_treasuryWallet);
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        require(balanceOf(uniswapV2Pair) > 0, "Liquidity must be added first");
        tradingEnabled = true;
        startTime = block.timestamp;
        swapEnabled = true;
        emit TradingEnabled(true);
    }

    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 (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            require(tradingEnabled == true, "Trading is not enabled yet");
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            swapEnabled &&
            canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            _totalFeesOnBuy + _totalFeesOnSell > 0
        ) {
            swapping = true;

            if (swapWithLimit) {
                contractTokenBalance = swapTokensAtAmount;
            }

            uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell;
            uint256 treasuryShare = treasuryFeeOnBuy + treasuryFeeOnSell;
            uint256 operationsShare = operationsFeeOnBuy + operationsFeeOnSell;

            if (contractTokenBalance > 0 && swapEnabled) {
                address[] memory path = new address[](2);
                path[0] = address(this);
                path[1] = uniswapV2Router.WETH();

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

                uint256 newBalance = address(this).balance;

                if (treasuryShare > 0) {
                    uint256 treasuryAmount = (newBalance * treasuryShare) /
                        totalFee;
                    (bool sent, ) = treasuryWallet.call{value: treasuryAmount}(
                        ""
                    );
                    require(sent, "Send Failed");
                    EthToTreasury += treasuryAmount;
                }

                if (operationsShare > 0) {
                    uint256 operationsAmount = address(this).balance;
                    (bool sent, ) = operationWallet.call{
                        value: operationsAmount
                    }("");
                    require(sent, "Send failed");
                    EthToOperations += operationsAmount;
                }
            }

            swapping = false;
        }

        bool takeFee = !swapping;

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

        if (takeFee && (from == uniswapV2Pair || to == uniswapV2Pair)) {
            uint256 _totalFees;
            if (from == uniswapV2Pair) {
                _totalFees = _totalFeesOnBuy;
            } else if (to == uniswapV2Pair) {
                _totalFees = _totalFeesOnSell;
            }
            uint256 fees = (amount * _totalFees) / 10000;

            amount = amount - fees;

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

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

    function setSwapEnabled(bool _swapEnabled) external onlyOwner {
        require(
            swapEnabled != _swapEnabled,
            "Swap is already set to that state"
        );
        swapEnabled = _swapEnabled;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount > totalSupply() / 1_000_000,
            "New Amount must more than 0.0001% of total supply"
        );
        swapTokensAtAmount = newAmount;
    }

    function setSwapWithLimit(bool _swapWithLimit) external onlyOwner {
        require(
            swapWithLimit != _swapWithLimit,
            "Swap with limit is already set to that state"
        );
        swapWithLimit = _swapWithLimit;
    }

    function Multisend(
        address[] memory addresses,
        uint256[] memory amounts
    ) external onlyOwner {
        require(addresses.length == amounts.length, "Arrays must be equal");
        uint256 totalAmount;

        for (uint256 i = 0; i < amounts.length; i++) {
            totalAmount += amounts[i];
        }

        require(balanceOf(msg.sender) >= totalAmount, "Not enough tokens");

        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(_msgSender(), addresses[i], amounts[i]);
        }
    }

    function withdraw(address _beneficiary) external onlyOwner {
        uint256 amount = address(this).balance;
        require(amount > 0, "No Tokens to withdraw");
        (bool sent, ) = _beneficiary.call{value: amount}("");
        require(sent, "Send Failed");

        emit WithdrawalEth(_beneficiary, amount);
    }

    function withdrawToken(
        address _beneficiary,
        address _token
    ) external onlyOwner {
        uint256 amount = IERC20(_token).balanceOf(address(this));
        require(amount > 0, "No Tokens to withdraw");
        IERC20(_token).transfer(_beneficiary, amount);

        emit WithdrawalTokens(_beneficiary, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOperationWallet","type":"address"}],"name":"OperationWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TradingEnabled","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":"newTreasuryWallet","type":"address"}],"name":"TreasuryWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"treasuryFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"operationsFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"treasuryFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"operationsFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawalEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawalTokens","type":"event"},{"inputs":[],"name":"EthToOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EthToTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Multisend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operationWallet","type":"address"}],"name":"changeOperationWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"name":"changeTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEthToOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEthToTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"name":"initializePairAndLiquidity","outputs":[],"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapWithLimit","type":"bool"}],"name":"setSwapWithLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"swapWithLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"uint256","name":"_treasuryFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_operationsFeeOnBuy","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_operationsFeeOnSell","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260fa600781905560088190556009819055600a556101f4600d819055600e55600f80546001600160a01b0319908116733f534f03fa8cc16887c3defdcb5e41027c9d2523179091556010805482167388c908c9e34dc0c98f08849ec36bf5738ea6a5e417905560118054821673d98ed1716e011ee5549ffcf10159bd25dfed8ade1790556014805490911661dead1790556016805463ff0000ff19169055348015620000ae575f80fd5b50604051806040016040528060058152602001640aaa09a82b60db1b8152506040518060400160405280600381526020016209a82b60eb1b8152508160039081620000fa9190620003e4565b506004620001098282620003e4565b5050505f6200011d6200025960201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600160175f620001826005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556014548216815260179093528183208054851660019081179091553084528284208054861682179055601154821684528284208054861682179055600f5482168452828420805486168217905560105490911683529120805490921617905562000237620002256005546001600160a01b031690565b6a1dc74be914d16aa40000006200025d565b6113886200024460025490565b620002509190620004b0565b601555620004f6565b3390565b6001600160a01b038216620002b85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620002cb9190620004d0565b90915550506001600160a01b0382165f9081526020819052604081208054839290620002f9908490620004d0565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200037057607f821691505b6020821081036200038f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200034257805f5260205f20601f840160051c81016020851015620003bc5750805b601f840160051c820191505b81811015620003dd575f8155600101620003c8565b5050505050565b81516001600160401b0381111562000400576200040062000347565b62000418816200041184546200035b565b8462000395565b602080601f8311600181146200044e575f8415620004365750858301515b5f19600386901b1c1916600185901b178555620004a8565b5f85815260208120601f198616915b828110156200047e578886015182559484019460019091019084016200045d565b50858210156200049c57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f82620004cb57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004f057634e487b7160e01b5f52601160045260245ffd5b92915050565b61291180620005045f395ff3fe608060405260043610610283575f3560e01c806366ca9b8311610155578063a9059cbb116100be578063dd62ed3e11610078578063dd62ed3e14610756578063e01af92c1461079a578063e042ad58146107b9578063e2f45605146107d8578063e57f14e1146107ed578063f2fde38b1461080c575f80fd5b8063a9059cbb146106bc578063afa4f3b2146106db578063b32def52146106fa578063c1538c921461070e578063c9b58ec71461072d578063cdd4bd7914610741575f80fd5b80638a8c523c1161010f5780638a8c523c146106255780638da5cb5b1461063957806393bf6c3b1461065657806395d89b411461066a578063988be1181461067e578063a457c2d71461069d575f80fd5b806366ca9b831461057b5780636ddd17131461059a57806370a08231146105b3578063715018a6146105e757806378e97925146105fb578063824e460514610610575f80fd5b806331ad080f116101f757806349bd5a5e116101b157806349bd5a5e146104a85780634ada218b146104c75780634fbee193146104e757806351cff8d91461051e57806352bae28f1461053d578063537c1ac71461055c575f80fd5b806331ad080f14610403578063365e275714610418578063395093511461042d5780633aeac4e11461044c5780634626402b1461046b578063488eb37f1461048a575f80fd5b80631694505e116102485780631694505e1461034a57806316a2f82a1461038157806318160ddd146103a057806320be4afe146103b457806323b872dd146103c9578063313ce567146103e8575f80fd5b806302dbd8f81461028e57806306fdde03146102af578063095ea7b3146102d95780630cf2f8db1461030857806311091edd1461032b575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102ad6102a836600461231f565b61082b565b005b3480156102ba575f80fd5b506102c361090e565b6040516102d0919061233f565b60405180910390f35b3480156102e4575f80fd5b506102f86102f33660046123a2565b61099e565b60405190151581526020016102d0565b348015610313575f80fd5b5061031d60095481565b6040519081526020016102d0565b348015610336575f80fd5b506102ad6103453660046123cc565b6109b4565b348015610355575f80fd5b50601254610369906001600160a01b031681565b6040516001600160a01b0390911681526020016102d0565b34801561038c575f80fd5b506102ad61039b3660046123cc565b610a4d565b3480156103ab575f80fd5b5060025461031d565b3480156103bf575f80fd5b5061031d600a5481565b3480156103d4575f80fd5b506102f86103e33660046123ee565b610b4a565b3480156103f3575f80fd5b50604051601281526020016102d0565b34801561040e575f80fd5b5061031d600c5481565b348015610423575f80fd5b5061031d600b5481565b348015610438575f80fd5b506102f86104473660046123a2565b610bf9565b348015610457575f80fd5b506102ad61046636600461242c565b610c34565b348015610476575f80fd5b50601054610369906001600160a01b031681565b348015610495575f80fd5b506016546102f890610100900460ff1681565b3480156104b3575f80fd5b50601354610369906001600160a01b031681565b3480156104d2575f80fd5b506016546102f8906301000000900460ff1681565b3480156104f2575f80fd5b506102f86105013660046123cc565b6001600160a01b03165f9081526017602052604090205460ff1690565b348015610529575f80fd5b506102ad6105383660046123cc565b610dc8565b348015610548575f80fd5b506102ad610557366004612537565b610f00565b348015610567575f80fd5b506102ad6105763660046123cc565b611056565b348015610586575f80fd5b506102ad61059536600461231f565b6110ef565b3480156105a5575f80fd5b506016546102f89060ff1681565b3480156105be575f80fd5b5061031d6105cd3660046123cc565b6001600160a01b03165f9081526020819052604090205490565b3480156105f2575f80fd5b506102ad6111c1565b348015610606575f80fd5b5061031d60065481565b34801561061b575f80fd5b5061031d60075481565b348015610630575f80fd5b506102ad611234565b348015610644575f80fd5b506005546001600160a01b0316610369565b348015610661575f80fd5b50600b5461031d565b348015610675575f80fd5b506102c361136c565b348015610689575f80fd5b506102ad610698366004612600565b61137b565b3480156106a8575f80fd5b506102f86106b73660046123a2565b611436565b3480156106c7575f80fd5b506102f86106d63660046123a2565b6114ce565b3480156106e6575f80fd5b506102ad6106f536600461261b565b6114da565b348015610705575f80fd5b50600c5461031d565b348015610719575f80fd5b506102ad6107283660046123cc565b611588565b348015610738575f80fd5b5061031d601281565b34801561074c575f80fd5b5061031d60085481565b348015610761575f80fd5b5061031d61077036600461242c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107a5575f80fd5b506102ad6107b4366004612600565b61185e565b3480156107c4575f80fd5b50600f54610369906001600160a01b031681565b3480156107e3575f80fd5b5061031d60155481565b3480156107f8575f80fd5b506102ad6108073660046123cc565b6118ff565b348015610817575f80fd5b506102ad6108263660046123cc565b6119fe565b6005546001600160a01b0316331461085e5760405162461bcd60e51b815260040161085590612632565b60405180910390fd5b6105dc61086b828461267b565b11156108b95760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203135250000000000006044820152606401610855565b6008829055600a8190556108cd818361267b565b600e5560408051838152602081018390527f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c691015b60405180910390a15050565b60606003805461091d9061268e565b80601f01602080910402602001604051908101604052809291908181526020018280546109499061268e565b80156109945780601f1061096b57610100808354040283529160200191610994565b820191905f5260205f20905b81548152906001019060200180831161097757829003601f168201915b5050505050905090565b5f6109aa338484611ae8565b5060015b92915050565b6005546001600160a01b031633146109de5760405162461bcd60e51b815260040161085590612632565b6001600160a01b038116610a045760405162461bcd60e51b8152600401610855906126c6565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f94f8663f0cb713f4364c7d85d039810699325227f02be0141c6f83acb99295b4905f90a250565b6005546001600160a01b03163314610a775760405162461bcd60e51b815260040161085590612632565b6001600160a01b0381165f9081526017602052604081205460ff1615159003610af55760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201526927696e636c756465642760b01b6064820152608401610855565b6001600160a01b0381165f818152601760209081526040808320805460ff19169055519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a250565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f198114610be35782811015610bd65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610855565b610be38533858403611ae8565b610bee858585611c0b565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109aa918590610c2f90869061267b565b611ae8565b6005546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161085590612632565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ca2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc6919061270d565b90505f8111610d0f5760405162461bcd60e51b81526020600482015260156024820152744e6f20546f6b656e7320746f20776974686472617760581b6044820152606401610855565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7f9190612724565b50826001600160a01b03167fe1f5e586001a4379bd30c8517bdf92bb9f9f845b3fdd3fd6e5b60db68753cbd082604051610dbb91815260200190565b60405180910390a2505050565b6005546001600160a01b03163314610df25760405162461bcd60e51b815260040161085590612632565b4780610e385760405162461bcd60e51b81526020600482015260156024820152744e6f20546f6b656e7320746f20776974686472617760581b6044820152606401610855565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610e81576040519150601f19603f3d011682016040523d82523d5f602084013e610e86565b606091505b5050905080610ec55760405162461bcd60e51b815260206004820152600b60248201526a14d95b990811985a5b195960aa1b6044820152606401610855565b826001600160a01b03167f40953fd5db732b94d86820ccd999bd4ab6da08154a115387891e8957e585fa1d83604051610dbb91815260200190565b6005546001600160a01b03163314610f2a5760405162461bcd60e51b815260040161085590612632565b8051825114610f725760405162461bcd60e51b8152602060048201526014602482015273105c9c985e5cc81b5d5cdd08189948195c5d585b60621b6044820152606401610855565b5f805b8251811015610fad57828181518110610f9057610f9061273f565b602002602001015182610fa3919061267b565b9150600101610f75565b50335f908152602081905260409020548111156110005760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610855565b5f5b835181101561105057611048338583815181106110215761102161273f565b602002602001015185848151811061103b5761103b61273f565b6020026020010151611c0b565b600101611002565b50505050565b6005546001600160a01b031633146110805760405162461bcd60e51b815260040161085590612632565b6001600160a01b0381166110a65760405162461bcd60e51b8152600401610855906126c6565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f97c79b3848e51f57983ac89e4403452655c8d83ceba8199011de63a74f60d1a7905f90a250565b6005546001600160a01b031633146111195760405162461bcd60e51b815260040161085590612632565b6105dc611126828461267b565b11156111745760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203135250000000000006044820152606401610855565b60078290556009819055611188818361267b565b600d5560408051838152602081018390527fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc509101610902565b6005546001600160a01b031633146111eb5760405162461bcd60e51b815260040161085590612632565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461125e5760405162461bcd60e51b815260040161085590612632565b6016546301000000900460ff16156112b85760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610855565b6013546001600160a01b03165f908152602081905260408120541161131f5760405162461bcd60e51b815260206004820152601d60248201527f4c6971756964697479206d7573742062652061646465642066697273740000006044820152606401610855565b601680544260065563ff0000ff19166301000001179055604051600181527fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a9060200160405180910390a1565b60606004805461091d9061268e565b6005546001600160a01b031633146113a55760405162461bcd60e51b815260040161085590612632565b801515601660019054906101000a900460ff1615150361141c5760405162461bcd60e51b815260206004820152602c60248201527f537761702077697468206c696d697420697320616c726561647920736574207460448201526b6f207468617420737461746560a01b6064820152608401610855565b601680549115156101000261ff0019909216919091179055565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156114b75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610855565b6114c43385858403611ae8565b5060019392505050565b5f6109aa338484611c0b565b6005546001600160a01b031633146115045760405162461bcd60e51b815260040161085590612632565b620f424061151160025490565b61151b9190612753565b81116115835760405162461bcd60e51b815260206004820152603160248201527f4e657720416d6f756e74206d757374206d6f7265207468616e20302e3030303160448201527025206f6620746f74616c20737570706c7960781b6064820152608401610855565b601555565b6005546001600160a01b031633146115b25760405162461bcd60e51b815260040161085590612632565b6012546001600160a01b03161561160b5760405162461bcd60e51b815260206004820152601a60248201527f526f7574657220616c726561647920696e697469616c697a65640000000000006044820152606401610855565b5f819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f9190612772565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116de9190612772565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611728573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174c9190612772565b601380546001600160a01b039283166001600160a01b0319918216179091556012805492841692909116821790556117879030905f19611ae8565b6012546001600160a01b031663f305d71947306117b8816001600160a01b03165f9081526020819052604090205490565b5f806117cc6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611832573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611857919061278d565b5050505050565b6005546001600160a01b031633146118885760405162461bcd60e51b815260040161085590612632565b60165481151560ff9091161515036118ec5760405162461bcd60e51b815260206004820152602160248201527f5377617020697320616c72656164792073657420746f207468617420737461746044820152606560f81b6064820152608401610855565b6016805460ff1916911515919091179055565b6005546001600160a01b031633146119295760405162461bcd60e51b815260040161085590612632565b6001600160a01b0381165f9081526017602052604090205460ff1615156001036119a85760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610855565b6001600160a01b0381165f81815260176020908152604091829020805460ff1916600190811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610b3f565b6005546001600160a01b03163314611a285760405162461bcd60e51b815260040161085590612632565b6001600160a01b038116611a8d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b4a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610855565b6001600160a01b038216611bab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610855565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c315760405162461bcd60e51b8152600401610855906127b8565b6001600160a01b038216611c575760405162461bcd60e51b8152600401610855906127fd565b805f03611c6e57611c6983835f6121cd565b505050565b6001600160a01b0383165f9081526017602052604090205460ff16158015611cae57506001600160a01b0382165f9081526017602052604090205460ff16155b15611d11576016546301000000900460ff161515600114611d115760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610855565b305f90815260208190526040902054601554601654908210159060ff168015611d375750805b8015611d4c575060165462010000900460ff16155b8015611d6557506013546001600160a01b038581169116145b8015611d7f57505f600e54600d54611d7d919061267b565b115b156120bb576016805462ff00001916620100001790819055610100900460ff1615611daa5760155491505b5f600e54600d54611dbb919061267b565b90505f600854600754611dce919061267b565b90505f600a54600954611de1919061267b565b90505f85118015611df4575060165460ff165b156120ab576040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e2c57611e2c61273f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ea79190612772565b81600181518110611eba57611eba61273f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611eff9089905f90869030904290600401612840565b5f604051808303815f87803b158015611f16575f80fd5b505af1158015611f28573d5f803e3d5ffd5b504792505084159050611ff7575f85611f4186846128b1565b611f4b9190612753565b6010546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f8114611f9a576040519150601f19603f3d011682016040523d82523d5f602084013e611f9f565b606091505b5050905080611fde5760405162461bcd60e51b815260206004820152600b60248201526a14d95b990811985a5b195960aa1b6044820152606401610855565b81600b5f828254611fef919061267b565b909155505050505b82156120a857600f5460405147915f916001600160a01b039091169083908381818185875af1925050503d805f811461204b576040519150601f19603f3d011682016040523d82523d5f602084013e612050565b606091505b505090508061208f5760405162461bcd60e51b815260206004820152600b60248201526a14d95b990819985a5b195960aa1b6044820152606401610855565b81600c5f8282546120a0919061267b565b909155505050505b50505b50506016805462ff000019169055505b6016546001600160a01b0386165f9081526017602052604090205460ff6201000090920482161591168061210657506001600160a01b0385165f9081526017602052604090205460ff165b1561210e57505f5b80801561213f57506013546001600160a01b038781169116148061213f57506013546001600160a01b038681169116145b156121ba576013545f906001600160a01b03908116908816036121655750600d54612180565b6013546001600160a01b03908116908716036121805750600e545b5f61271061218e83886128b1565b6121989190612753565b90506121a481876128c8565b955080156121b7576121b78830836121cd565b50505b6121c58686866121cd565b505050505050565b6001600160a01b0383166121f35760405162461bcd60e51b8152600401610855906127b8565b6001600160a01b0382166122195760405162461bcd60e51b8152600401610855906127fd565b6001600160a01b0383165f90815260208190526040902054818110156122905760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610855565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906122c690849061267b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161231291815260200190565b60405180910390a3611050565b5f8060408385031215612330575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561236b5785810183015185820160400152820161234f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461239f575f80fd5b50565b5f80604083850312156123b3575f80fd5b82356123be8161238b565b946020939093013593505050565b5f602082840312156123dc575f80fd5b81356123e78161238b565b9392505050565b5f805f60608486031215612400575f80fd5b833561240b8161238b565b9250602084013561241b8161238b565b929592945050506040919091013590565b5f806040838503121561243d575f80fd5b82356124488161238b565b915060208301356124588161238b565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124a0576124a0612463565b604052919050565b5f67ffffffffffffffff8211156124c1576124c1612463565b5060051b60200190565b5f82601f8301126124da575f80fd5b813560206124ef6124ea836124a8565b612477565b8083825260208201915060208460051b870101935086841115612510575f80fd5b602086015b8481101561252c5780358352918301918301612515565b509695505050505050565b5f8060408385031215612548575f80fd5b823567ffffffffffffffff8082111561255f575f80fd5b818501915085601f830112612572575f80fd5b813560206125826124ea836124a8565b82815260059290921b840181019181810190898411156125a0575f80fd5b948201945b838610156125c75785356125b88161238b565b825294820194908201906125a5565b965050860135925050808211156125dc575f80fd5b506125e9858286016124cb565b9150509250929050565b801515811461239f575f80fd5b5f60208284031215612610575f80fd5b81356123e7816125f3565b5f6020828403121561262b575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109ae576109ae612667565b600181811c908216806126a257607f821691505b6020821081036126c057634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526027908201527f4f7065726174696f6e2077616c6c65742063616e6e6f74206265207a65726f206040820152666164647265737360c81b606082015260800190565b5f6020828403121561271d575f80fd5b5051919050565b5f60208284031215612734575f80fd5b81516123e7816125f3565b634e487b7160e01b5f52603260045260245ffd5b5f8261276d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612782575f80fd5b81516123e78161238b565b5f805f6060848603121561279f575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156128905784516001600160a01b03168352938301939183019160010161286b565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176109ae576109ae612667565b818103818111156109ae576109ae61266756fea2646970667358221220bab9dcd5862a66c4f7c5023bf8b21f63095671af16ae3d2a14b9608bd278a40964736f6c63430008170033

Deployed Bytecode

0x608060405260043610610283575f3560e01c806366ca9b8311610155578063a9059cbb116100be578063dd62ed3e11610078578063dd62ed3e14610756578063e01af92c1461079a578063e042ad58146107b9578063e2f45605146107d8578063e57f14e1146107ed578063f2fde38b1461080c575f80fd5b8063a9059cbb146106bc578063afa4f3b2146106db578063b32def52146106fa578063c1538c921461070e578063c9b58ec71461072d578063cdd4bd7914610741575f80fd5b80638a8c523c1161010f5780638a8c523c146106255780638da5cb5b1461063957806393bf6c3b1461065657806395d89b411461066a578063988be1181461067e578063a457c2d71461069d575f80fd5b806366ca9b831461057b5780636ddd17131461059a57806370a08231146105b3578063715018a6146105e757806378e97925146105fb578063824e460514610610575f80fd5b806331ad080f116101f757806349bd5a5e116101b157806349bd5a5e146104a85780634ada218b146104c75780634fbee193146104e757806351cff8d91461051e57806352bae28f1461053d578063537c1ac71461055c575f80fd5b806331ad080f14610403578063365e275714610418578063395093511461042d5780633aeac4e11461044c5780634626402b1461046b578063488eb37f1461048a575f80fd5b80631694505e116102485780631694505e1461034a57806316a2f82a1461038157806318160ddd146103a057806320be4afe146103b457806323b872dd146103c9578063313ce567146103e8575f80fd5b806302dbd8f81461028e57806306fdde03146102af578063095ea7b3146102d95780630cf2f8db1461030857806311091edd1461032b575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102ad6102a836600461231f565b61082b565b005b3480156102ba575f80fd5b506102c361090e565b6040516102d0919061233f565b60405180910390f35b3480156102e4575f80fd5b506102f86102f33660046123a2565b61099e565b60405190151581526020016102d0565b348015610313575f80fd5b5061031d60095481565b6040519081526020016102d0565b348015610336575f80fd5b506102ad6103453660046123cc565b6109b4565b348015610355575f80fd5b50601254610369906001600160a01b031681565b6040516001600160a01b0390911681526020016102d0565b34801561038c575f80fd5b506102ad61039b3660046123cc565b610a4d565b3480156103ab575f80fd5b5060025461031d565b3480156103bf575f80fd5b5061031d600a5481565b3480156103d4575f80fd5b506102f86103e33660046123ee565b610b4a565b3480156103f3575f80fd5b50604051601281526020016102d0565b34801561040e575f80fd5b5061031d600c5481565b348015610423575f80fd5b5061031d600b5481565b348015610438575f80fd5b506102f86104473660046123a2565b610bf9565b348015610457575f80fd5b506102ad61046636600461242c565b610c34565b348015610476575f80fd5b50601054610369906001600160a01b031681565b348015610495575f80fd5b506016546102f890610100900460ff1681565b3480156104b3575f80fd5b50601354610369906001600160a01b031681565b3480156104d2575f80fd5b506016546102f8906301000000900460ff1681565b3480156104f2575f80fd5b506102f86105013660046123cc565b6001600160a01b03165f9081526017602052604090205460ff1690565b348015610529575f80fd5b506102ad6105383660046123cc565b610dc8565b348015610548575f80fd5b506102ad610557366004612537565b610f00565b348015610567575f80fd5b506102ad6105763660046123cc565b611056565b348015610586575f80fd5b506102ad61059536600461231f565b6110ef565b3480156105a5575f80fd5b506016546102f89060ff1681565b3480156105be575f80fd5b5061031d6105cd3660046123cc565b6001600160a01b03165f9081526020819052604090205490565b3480156105f2575f80fd5b506102ad6111c1565b348015610606575f80fd5b5061031d60065481565b34801561061b575f80fd5b5061031d60075481565b348015610630575f80fd5b506102ad611234565b348015610644575f80fd5b506005546001600160a01b0316610369565b348015610661575f80fd5b50600b5461031d565b348015610675575f80fd5b506102c361136c565b348015610689575f80fd5b506102ad610698366004612600565b61137b565b3480156106a8575f80fd5b506102f86106b73660046123a2565b611436565b3480156106c7575f80fd5b506102f86106d63660046123a2565b6114ce565b3480156106e6575f80fd5b506102ad6106f536600461261b565b6114da565b348015610705575f80fd5b50600c5461031d565b348015610719575f80fd5b506102ad6107283660046123cc565b611588565b348015610738575f80fd5b5061031d601281565b34801561074c575f80fd5b5061031d60085481565b348015610761575f80fd5b5061031d61077036600461242c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107a5575f80fd5b506102ad6107b4366004612600565b61185e565b3480156107c4575f80fd5b50600f54610369906001600160a01b031681565b3480156107e3575f80fd5b5061031d60155481565b3480156107f8575f80fd5b506102ad6108073660046123cc565b6118ff565b348015610817575f80fd5b506102ad6108263660046123cc565b6119fe565b6005546001600160a01b0316331461085e5760405162461bcd60e51b815260040161085590612632565b60405180910390fd5b6105dc61086b828461267b565b11156108b95760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203135250000000000006044820152606401610855565b6008829055600a8190556108cd818361267b565b600e5560408051838152602081018390527f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c691015b60405180910390a15050565b60606003805461091d9061268e565b80601f01602080910402602001604051908101604052809291908181526020018280546109499061268e565b80156109945780601f1061096b57610100808354040283529160200191610994565b820191905f5260205f20905b81548152906001019060200180831161097757829003601f168201915b5050505050905090565b5f6109aa338484611ae8565b5060015b92915050565b6005546001600160a01b031633146109de5760405162461bcd60e51b815260040161085590612632565b6001600160a01b038116610a045760405162461bcd60e51b8152600401610855906126c6565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f94f8663f0cb713f4364c7d85d039810699325227f02be0141c6f83acb99295b4905f90a250565b6005546001600160a01b03163314610a775760405162461bcd60e51b815260040161085590612632565b6001600160a01b0381165f9081526017602052604081205460ff1615159003610af55760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201526927696e636c756465642760b01b6064820152608401610855565b6001600160a01b0381165f818152601760209081526040808320805460ff19169055519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a250565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f198114610be35782811015610bd65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610855565b610be38533858403611ae8565b610bee858585611c0b565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109aa918590610c2f90869061267b565b611ae8565b6005546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161085590612632565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ca2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc6919061270d565b90505f8111610d0f5760405162461bcd60e51b81526020600482015260156024820152744e6f20546f6b656e7320746f20776974686472617760581b6044820152606401610855565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7f9190612724565b50826001600160a01b03167fe1f5e586001a4379bd30c8517bdf92bb9f9f845b3fdd3fd6e5b60db68753cbd082604051610dbb91815260200190565b60405180910390a2505050565b6005546001600160a01b03163314610df25760405162461bcd60e51b815260040161085590612632565b4780610e385760405162461bcd60e51b81526020600482015260156024820152744e6f20546f6b656e7320746f20776974686472617760581b6044820152606401610855565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610e81576040519150601f19603f3d011682016040523d82523d5f602084013e610e86565b606091505b5050905080610ec55760405162461bcd60e51b815260206004820152600b60248201526a14d95b990811985a5b195960aa1b6044820152606401610855565b826001600160a01b03167f40953fd5db732b94d86820ccd999bd4ab6da08154a115387891e8957e585fa1d83604051610dbb91815260200190565b6005546001600160a01b03163314610f2a5760405162461bcd60e51b815260040161085590612632565b8051825114610f725760405162461bcd60e51b8152602060048201526014602482015273105c9c985e5cc81b5d5cdd08189948195c5d585b60621b6044820152606401610855565b5f805b8251811015610fad57828181518110610f9057610f9061273f565b602002602001015182610fa3919061267b565b9150600101610f75565b50335f908152602081905260409020548111156110005760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610855565b5f5b835181101561105057611048338583815181106110215761102161273f565b602002602001015185848151811061103b5761103b61273f565b6020026020010151611c0b565b600101611002565b50505050565b6005546001600160a01b031633146110805760405162461bcd60e51b815260040161085590612632565b6001600160a01b0381166110a65760405162461bcd60e51b8152600401610855906126c6565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f97c79b3848e51f57983ac89e4403452655c8d83ceba8199011de63a74f60d1a7905f90a250565b6005546001600160a01b031633146111195760405162461bcd60e51b815260040161085590612632565b6105dc611126828461267b565b11156111745760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203135250000000000006044820152606401610855565b60078290556009819055611188818361267b565b600d5560408051838152602081018390527fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc509101610902565b6005546001600160a01b031633146111eb5760405162461bcd60e51b815260040161085590612632565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461125e5760405162461bcd60e51b815260040161085590612632565b6016546301000000900460ff16156112b85760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610855565b6013546001600160a01b03165f908152602081905260408120541161131f5760405162461bcd60e51b815260206004820152601d60248201527f4c6971756964697479206d7573742062652061646465642066697273740000006044820152606401610855565b601680544260065563ff0000ff19166301000001179055604051600181527fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a9060200160405180910390a1565b60606004805461091d9061268e565b6005546001600160a01b031633146113a55760405162461bcd60e51b815260040161085590612632565b801515601660019054906101000a900460ff1615150361141c5760405162461bcd60e51b815260206004820152602c60248201527f537761702077697468206c696d697420697320616c726561647920736574207460448201526b6f207468617420737461746560a01b6064820152608401610855565b601680549115156101000261ff0019909216919091179055565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156114b75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610855565b6114c43385858403611ae8565b5060019392505050565b5f6109aa338484611c0b565b6005546001600160a01b031633146115045760405162461bcd60e51b815260040161085590612632565b620f424061151160025490565b61151b9190612753565b81116115835760405162461bcd60e51b815260206004820152603160248201527f4e657720416d6f756e74206d757374206d6f7265207468616e20302e3030303160448201527025206f6620746f74616c20737570706c7960781b6064820152608401610855565b601555565b6005546001600160a01b031633146115b25760405162461bcd60e51b815260040161085590612632565b6012546001600160a01b03161561160b5760405162461bcd60e51b815260206004820152601a60248201527f526f7574657220616c726561647920696e697469616c697a65640000000000006044820152606401610855565b5f819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f9190612772565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116de9190612772565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611728573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174c9190612772565b601380546001600160a01b039283166001600160a01b0319918216179091556012805492841692909116821790556117879030905f19611ae8565b6012546001600160a01b031663f305d71947306117b8816001600160a01b03165f9081526020819052604090205490565b5f806117cc6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611832573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611857919061278d565b5050505050565b6005546001600160a01b031633146118885760405162461bcd60e51b815260040161085590612632565b60165481151560ff9091161515036118ec5760405162461bcd60e51b815260206004820152602160248201527f5377617020697320616c72656164792073657420746f207468617420737461746044820152606560f81b6064820152608401610855565b6016805460ff1916911515919091179055565b6005546001600160a01b031633146119295760405162461bcd60e51b815260040161085590612632565b6001600160a01b0381165f9081526017602052604090205460ff1615156001036119a85760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610855565b6001600160a01b0381165f81815260176020908152604091829020805460ff1916600190811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610b3f565b6005546001600160a01b03163314611a285760405162461bcd60e51b815260040161085590612632565b6001600160a01b038116611a8d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b4a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610855565b6001600160a01b038216611bab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610855565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c315760405162461bcd60e51b8152600401610855906127b8565b6001600160a01b038216611c575760405162461bcd60e51b8152600401610855906127fd565b805f03611c6e57611c6983835f6121cd565b505050565b6001600160a01b0383165f9081526017602052604090205460ff16158015611cae57506001600160a01b0382165f9081526017602052604090205460ff16155b15611d11576016546301000000900460ff161515600114611d115760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610855565b305f90815260208190526040902054601554601654908210159060ff168015611d375750805b8015611d4c575060165462010000900460ff16155b8015611d6557506013546001600160a01b038581169116145b8015611d7f57505f600e54600d54611d7d919061267b565b115b156120bb576016805462ff00001916620100001790819055610100900460ff1615611daa5760155491505b5f600e54600d54611dbb919061267b565b90505f600854600754611dce919061267b565b90505f600a54600954611de1919061267b565b90505f85118015611df4575060165460ff165b156120ab576040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e2c57611e2c61273f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ea79190612772565b81600181518110611eba57611eba61273f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611eff9089905f90869030904290600401612840565b5f604051808303815f87803b158015611f16575f80fd5b505af1158015611f28573d5f803e3d5ffd5b504792505084159050611ff7575f85611f4186846128b1565b611f4b9190612753565b6010546040519192505f916001600160a01b039091169083908381818185875af1925050503d805f8114611f9a576040519150601f19603f3d011682016040523d82523d5f602084013e611f9f565b606091505b5050905080611fde5760405162461bcd60e51b815260206004820152600b60248201526a14d95b990811985a5b195960aa1b6044820152606401610855565b81600b5f828254611fef919061267b565b909155505050505b82156120a857600f5460405147915f916001600160a01b039091169083908381818185875af1925050503d805f811461204b576040519150601f19603f3d011682016040523d82523d5f602084013e612050565b606091505b505090508061208f5760405162461bcd60e51b815260206004820152600b60248201526a14d95b990819985a5b195960aa1b6044820152606401610855565b81600c5f8282546120a0919061267b565b909155505050505b50505b50506016805462ff000019169055505b6016546001600160a01b0386165f9081526017602052604090205460ff6201000090920482161591168061210657506001600160a01b0385165f9081526017602052604090205460ff165b1561210e57505f5b80801561213f57506013546001600160a01b038781169116148061213f57506013546001600160a01b038681169116145b156121ba576013545f906001600160a01b03908116908816036121655750600d54612180565b6013546001600160a01b03908116908716036121805750600e545b5f61271061218e83886128b1565b6121989190612753565b90506121a481876128c8565b955080156121b7576121b78830836121cd565b50505b6121c58686866121cd565b505050505050565b6001600160a01b0383166121f35760405162461bcd60e51b8152600401610855906127b8565b6001600160a01b0382166122195760405162461bcd60e51b8152600401610855906127fd565b6001600160a01b0383165f90815260208190526040902054818110156122905760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610855565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906122c690849061267b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161231291815260200190565b60405180910390a3611050565b5f8060408385031215612330575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561236b5785810183015185820160400152820161234f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461239f575f80fd5b50565b5f80604083850312156123b3575f80fd5b82356123be8161238b565b946020939093013593505050565b5f602082840312156123dc575f80fd5b81356123e78161238b565b9392505050565b5f805f60608486031215612400575f80fd5b833561240b8161238b565b9250602084013561241b8161238b565b929592945050506040919091013590565b5f806040838503121561243d575f80fd5b82356124488161238b565b915060208301356124588161238b565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124a0576124a0612463565b604052919050565b5f67ffffffffffffffff8211156124c1576124c1612463565b5060051b60200190565b5f82601f8301126124da575f80fd5b813560206124ef6124ea836124a8565b612477565b8083825260208201915060208460051b870101935086841115612510575f80fd5b602086015b8481101561252c5780358352918301918301612515565b509695505050505050565b5f8060408385031215612548575f80fd5b823567ffffffffffffffff8082111561255f575f80fd5b818501915085601f830112612572575f80fd5b813560206125826124ea836124a8565b82815260059290921b840181019181810190898411156125a0575f80fd5b948201945b838610156125c75785356125b88161238b565b825294820194908201906125a5565b965050860135925050808211156125dc575f80fd5b506125e9858286016124cb565b9150509250929050565b801515811461239f575f80fd5b5f60208284031215612610575f80fd5b81356123e7816125f3565b5f6020828403121561262b575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109ae576109ae612667565b600181811c908216806126a257607f821691505b6020821081036126c057634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526027908201527f4f7065726174696f6e2077616c6c65742063616e6e6f74206265207a65726f206040820152666164647265737360c81b606082015260800190565b5f6020828403121561271d575f80fd5b5051919050565b5f60208284031215612734575f80fd5b81516123e7816125f3565b634e487b7160e01b5f52603260045260245ffd5b5f8261276d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612782575f80fd5b81516123e78161238b565b5f805f6060848603121561279f575f80fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156128905784516001600160a01b03168352938301939183019160010161286b565b50506001600160a01b03969096166060850152505050608001529392505050565b80820281158282048414176109ae576109ae612667565b818103818111156109ae576109ae61266756fea2646970667358221220bab9dcd5862a66c4f7c5023bf8b21f63095671af16ae3d2a14b9608bd278a40964736f6c63430008170033

Deployed Bytecode Sourcemap

16665:11419:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21134:513;;;;;;;;;;-1:-1:-1;21134:513:0;;;;;:::i;:::-;;:::i;:::-;;2892:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3872:194;;;;;;;;;;-1:-1:-1;3872:194:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;3872:194:0;1276:187:1;16875:39:0;;;;;;;;;;;;;;;;;;;1614:25:1;;;1602:2;1587:18;16875:39:0;1468:177:1;21655:331:0;;;;;;;;;;-1:-1:-1;21655:331:0;;;;;:::i;:::-;;:::i;17373:41::-;;;;;;;;;;-1:-1:-1;17373:41:0;;;;-1:-1:-1;;;;;17373:41:0;;;;;;-1:-1:-1;;;;;2093:32:1;;;2075:51;;2063:2;2048:18;17373:41:0;1902:230:1;19969:303:0;;;;;;;;;;-1:-1:-1;19969:303:0;;;;;:::i;:::-;;:::i;3213:108::-;;;;;;;;;;-1:-1:-1;3301:12:0;;3213:108;;16921:40;;;;;;;;;;;;;;;;4074:622;;;;;;;;;;-1:-1:-1;4074:622:0;;;;;:::i;:::-;;:::i;3112:93::-;;;;;;;;;;-1:-1:-1;3112:93:0;;3195:2;2740:36:1;;2728:2;2713:18;3112:93:0;2598:184:1;17003:30:0;;;;;;;;;;;;;;;;16968:28;;;;;;;;;;;;;;;;4704:290;;;;;;;;;;-1:-1:-1;4704:290:0;;;;;:::i;:::-;;:::i;27734:347::-;;;;;;;;;;-1:-1:-1;27734:347:0;;;;;:::i;:::-;;:::i;17215:74::-;;;;;;;;;;-1:-1:-1;17215:74:0;;;;-1:-1:-1;;;;;17215:74:0;;;17610:25;;;;;;;;;;-1:-1:-1;17610:25:0;;;;;;;;;;;17421:28;;;;;;;;;;-1:-1:-1;17421:28:0;;;;-1:-1:-1;;;;;17421:28:0;;;17670:34;;;;;;;;;;-1:-1:-1;17670:34:0;;;;;;;;;;;20280:126;;;;;;;;;;-1:-1:-1;20280:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;20370:28:0;20346:4;20370:28;;;:19;:28;;;;;;;;;20280:126;27400:326;;;;;;;;;;-1:-1:-1;27400:326:0;;;;;:::i;:::-;;:::i;26836:556::-;;;;;;;;;;-1:-1:-1;26836:556:0;;;;;:::i;:::-;;:::i;21994:308::-;;;;;;;;;;-1:-1:-1;21994:308:0;;;;;:::i;:::-;;:::i;20628:498::-;;;;;;;;;;-1:-1:-1;20628:498:0;;;;;:::i;:::-;;:::i;17572:31::-;;;;;;;;;;-1:-1:-1;17572:31:0;;;;;;;;3329:143;;;;;;;;;;-1:-1:-1;3329:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;3446:18:0;3419:7;3446:18;;;;;;;;;;;;3329:143;2042:148;;;;;;;;;;;;;:::i;16753:24::-;;;;;;;;;;;;;;;;16786:37;;;;;;;;;;;;;;;;22310:333;;;;;;;;;;;;;:::i;1828:79::-;;;;;;;;;;-1:-1:-1;1893:6:0;;-1:-1:-1;;;;;1893:6:0;1828:79;;20414:97;;;;;;;;;;-1:-1:-1;20490:13:0;;20414:97;;3000:104;;;;;;;;;;;;;:::i;26577:251::-;;;;;;;;;;-1:-1:-1;26577:251:0;;;;;:::i;:::-;;:::i;5002:475::-;;;;;;;;;;-1:-1:-1;5002:475:0;;;;;:::i;:::-;;:::i;3480:200::-;;;;;;;;;;-1:-1:-1;3480:200:0;;;;;:::i;:::-;;:::i;26304:265::-;;;;;;;;;;-1:-1:-1;26304:265:0;;;;;:::i;:::-;;:::i;20519:101::-;;;;;;;;;;-1:-1:-1;20597:15:0;;20519:101;;18841:810;;;;;;;;;;-1:-1:-1;18841:810:0;;;;;:::i;:::-;;:::i;16705:41::-;;;;;;;;;;;;16744:2;16705:41;;16830:38;;;;;;;;;;;;;;;;3688:176;;;;;;;;;;-1:-1:-1;3688:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;3829:18:0;;;3802:7;3829:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3688:176;26068:228;;;;;;;;;;-1:-1:-1;26068:228:0;;;;;:::i;:::-;;:::i;17133:75::-;;;;;;;;;;-1:-1:-1;17133:75:0;;;;-1:-1:-1;;;;;17133:75:0;;;17532:33;;;;;;;;;;;;;;;;19659:302;;;;;;;;;;-1:-1:-1;19659:302:0;;;;;:::i;:::-;;:::i;2198:281::-;;;;;;;;;;-1:-1:-1;2198:281:0;;;;;:::i;:::-;;:::i;21134:513::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;;;;;;;;;21338:4:::1;21293:41;21314:20:::0;21293:18;:41:::1;:::i;:::-;:49;;21271:125;;;::::0;-1:-1:-1;;;21271:125:0;;7260:2:1;21271:125:0::1;::::0;::::1;7242:21:1::0;7299:2;7279:18;;;7272:30;7338:28;7318:18;;;7311:56;7384:18;;21271:125:0::1;7058:350:1::0;21271:125:0::1;21407:17;:38:::0;;;21456:19:::1;:42:::0;;;21528:39:::1;21478:20:::0;21427:18;21528:39:::1;:::i;:::-;21509:16;:58:::0;21583:56:::1;::::0;;7587:25:1;;;7643:2;7628:18;;7621:34;;;21583:56:0::1;::::0;7560:18:1;21583:56:0::1;;;;;;;;21134:513:::0;;:::o;2892:100::-;2946:13;2979:5;2972:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2892:100;:::o;3872:194::-;3980:4;3997:39;1207:10;4020:7;4029:6;3997:8;:39::i;:::-;-1:-1:-1;4054:4:0;3872:194;;;;;:::o;21655:331::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21780:30:0;::::1;21758:119;;;;-1:-1:-1::0;;;21758:119:0::1;;;;;;;:::i;:::-;21888:15;:34:::0;;-1:-1:-1;;;;;;21888:34:0::1;-1:-1:-1::0;;;;;21888:34:0;::::1;::::0;;::::1;::::0;;;21938:40:::1;::::0;::::1;::::0;-1:-1:-1;;21938:40:0::1;21655:331:::0;:::o;19969:303::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20061:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:37;;::::0;;20039:129:::1;;;::::0;-1:-1:-1;;;20039:129:0;;8661:2:1;20039:129:0::1;::::0;::::1;8643:21:1::0;8700:2;8680:18;;;8673:30;8739:34;8719:18;;;8712:62;-1:-1:-1;;;8790:18:1;;;8783:40;8840:19;;20039:129:0::1;8459:406:1::0;20039:129:0::1;-1:-1:-1::0;;;;;20179:28:0;::::1;20210:5;20179:28:::0;;;:19:::1;:28;::::0;;;;;;;:36;;-1:-1:-1;;20179:36:0::1;::::0;;20233:31;1416:41:1;;;20233:31:0::1;::::0;1389:18:1;20233:31:0::1;;;;;;;;19969:303:::0;:::o;4074:622::-;-1:-1:-1;;;;;4258:19:0;;4214:4;4258:19;;;:11;:19;;;;;;;;1207:10;4258:33;;;;;;;;-1:-1:-1;;4306:37:0;;4302:314;;4406:6;4386:16;:26;;4360:128;;;;-1:-1:-1;;;4360:128:0;;9072:2:1;4360:128:0;;;9054:21:1;9111:2;9091:18;;;9084:30;9150:34;9130:18;;;9123:62;-1:-1:-1;;;9201:18:1;;;9194:38;9249:19;;4360:128:0;8870:404:1;4360:128:0;4532:57;4541:6;1207:10;4582:6;4563:16;:25;4532:8;:57::i;:::-;4628:36;4638:6;4646:9;4657:6;4628:9;:36::i;:::-;-1:-1:-1;4684:4:0;;4074:622;-1:-1:-1;;;;4074:622:0:o;4704:290::-;1207:10;4817:4;4906:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4906:34:0;;;;;;;;;;4817:4;;4834:130;;4884:7;;4906:47;;4943:10;;4906:47;:::i;:::-;4834:8;:130::i;27734:347::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;27867:39:::1;::::0;-1:-1:-1;;;27867:39:0;;27900:4:::1;27867:39;::::0;::::1;2075:51:1::0;27850:14:0::1;::::0;-1:-1:-1;;;;;27867:24:0;::::1;::::0;::::1;::::0;2048:18:1;;27867:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27850:56;;27934:1;27925:6;:10;27917:44;;;::::0;-1:-1:-1;;;27917:44:0;;9670:2:1;27917:44:0::1;::::0;::::1;9652:21:1::0;9709:2;9689:18;;;9682:30;-1:-1:-1;;;9728:18:1;;;9721:51;9789:18;;27917:44:0::1;9468:345:1::0;27917:44:0::1;27972:45;::::0;-1:-1:-1;;;27972:45:0;;-1:-1:-1;;;;;10010:32:1;;;27972:45:0::1;::::0;::::1;9992:51:1::0;10059:18;;;10052:34;;;27972:23:0;::::1;::::0;::::1;::::0;9965:18:1;;27972:45:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28052:12;-1:-1:-1::0;;;;;28035:38:0::1;;28066:6;28035:38;;;;1614:25:1::0;;1602:2;1587:18;;1468:177;28035:38:0::1;;;;;;;;27839:242;27734:347:::0;;:::o;27400:326::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;27487:21:::1;27527:10:::0;27519:44:::1;;;::::0;-1:-1:-1;;;27519:44:0;;9670:2:1;27519:44:0::1;::::0;::::1;9652:21:1::0;9709:2;9689:18;;;9682:30;-1:-1:-1;;;9728:18:1;;;9721:51;9789:18;;27519:44:0::1;9468:345:1::0;27519:44:0::1;27575:9;27590:12;-1:-1:-1::0;;;;;27590:17:0::1;27615:6;27590:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27574:52;;;27645:4;27637:28;;;::::0;-1:-1:-1;;;27637:28:0;;10759:2:1;27637:28:0::1;::::0;::::1;10741:21:1::0;10798:2;10778:18;;;10771:30;-1:-1:-1;;;10817:18:1;;;10810:41;10868:18;;27637:28:0::1;10557:335:1::0;27637:28:0::1;27697:12;-1:-1:-1::0;;;;;27683:35:0::1;;27711:6;27683:35;;;;1614:25:1::0;;1602:2;1587:18;;1468:177;26836:556:0;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;26992:7:::1;:14;26972:9;:16;:34;26964:67;;;::::0;-1:-1:-1;;;26964:67:0;;11099:2:1;26964:67:0::1;::::0;::::1;11081:21:1::0;11138:2;11118:18;;;11111:30;-1:-1:-1;;;11157:18:1;;;11150:50;11217:18;;26964:67:0::1;10897:344:1::0;26964:67:0::1;27042:19;::::0;27074:97:::1;27098:7;:14;27094:1;:18;27074:97;;;27149:7;27157:1;27149:10;;;;;;;;:::i;:::-;;;;;;;27134:25;;;;;:::i;:::-;::::0;-1:-1:-1;27114:3:0::1;;27074:97;;;-1:-1:-1::0;27201:10:0::1;3419:7:::0;3446:18;;;;;;;;;;;27216:11;-1:-1:-1;27191:36:0::1;27183:66;;;::::0;-1:-1:-1;;;27183:66:0;;11580:2:1;27183:66:0::1;::::0;::::1;11562:21:1::0;11619:2;11599:18;;;11592:30;-1:-1:-1;;;11638:18:1;;;11631:47;11695:18;;27183:66:0::1;11378:341:1::0;27183:66:0::1;27267:9;27262:123;27286:9;:16;27282:1;:20;27262:123;;;27324:49;1207:10:::0;27348:9:::1;27358:1;27348:12;;;;;;;;:::i;:::-;;;;;;;27362:7;27370:1;27362:10;;;;;;;;:::i;:::-;;;;;;;27324:9;:49::i;:::-;27304:3;;27262:123;;;;26953:439;26836:556:::0;;:::o;21994:308::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22101:29:0;::::1;22079:118;;;;-1:-1:-1::0;;;22079:118:0::1;;;;;;;:::i;:::-;22208:14;:32:::0;;-1:-1:-1;;;;;;22208:32:0::1;-1:-1:-1::0;;;;;22208:32:0;::::1;::::0;;::::1;::::0;;;22256:38:::1;::::0;::::1;::::0;-1:-1:-1;;22256:38:0::1;21994:308:::0;:::o;20628:498::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;20827:4:::1;20784:39;20804:19:::0;20784:17;:39:::1;:::i;:::-;:47;;20762:123;;;::::0;-1:-1:-1;;;20762:123:0;;7260:2:1;20762:123:0::1;::::0;::::1;7242:21:1::0;7299:2;7279:18;;;7272:30;7338:28;7318:18;;;7311:56;7384:18;;20762:123:0::1;7058:350:1::0;20762:123:0::1;20896:16;:36:::0;;;20943:18:::1;:40:::0;;;21012:37:::1;20964:19:::0;20915:17;21012:37:::1;:::i;:::-;20994:15;:55:::0;21065:53:::1;::::0;;7587:25:1;;;7643:2;7628:18;;7621:34;;;21065:53:0::1;::::0;7560:18:1;21065:53:0::1;7413:248:1::0;2042:148:0;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;2133:6:::1;::::0;2112:40:::1;::::0;2149:1:::1;::::0;-1:-1:-1;;;;;2133:6:0::1;::::0;2112:40:::1;::::0;2149:1;;2112:40:::1;2163:6;:19:::0;;-1:-1:-1;;;;;;2163:19:0::1;::::0;;2042:148::o;22310:333::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;22374:14:::1;::::0;;;::::1;;;22373:15;22365:54;;;::::0;-1:-1:-1;;;22365:54:0;;11926:2:1;22365:54:0::1;::::0;::::1;11908:21:1::0;11965:2;11945:18;;;11938:30;12004:28;11984:18;;;11977:56;12050:18;;22365:54:0::1;11724:350:1::0;22365:54:0::1;22448:13;::::0;-1:-1:-1;;;;;22448:13:0::1;22465:1;3446:18:::0;;;;;;;;;;;22438:28:::1;22430:70;;;::::0;-1:-1:-1;;;22430:70:0;;12281:2:1;22430:70:0::1;::::0;::::1;12263:21:1::0;12320:2;12300:18;;;12293:30;12359:31;12339:18;;;12332:59;12408:18;;22430:70:0::1;12079:353:1::0;22430:70:0::1;22511:14;:21:::0;;22555:15:::1;22543:9;:27:::0;-1:-1:-1;;22581:18:0;;;;;22615:20:::1;::::0;-1:-1:-1;1416:41:1;;22615:20:0::1;::::0;1404:2:1;1389:18;22615:20:0::1;;;;;;;22310:333::o:0;3000:104::-;3056:13;3089:7;3082:14;;;;;:::i;26577:251::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;26693:14:::1;26676:31;;:13;;;;;;;;;;;:31;;::::0;26654:125:::1;;;::::0;-1:-1:-1;;;26654:125:0;;12639:2:1;26654:125:0::1;::::0;::::1;12621:21:1::0;12678:2;12658:18;;;12651:30;12717:34;12697:18;;;12690:62;-1:-1:-1;;;12768:18:1;;;12761:42;12820:19;;26654:125:0::1;12437:408:1::0;26654:125:0::1;26790:13;:30:::0;;;::::1;;;;-1:-1:-1::0;;26790:30:0;;::::1;::::0;;;::::1;::::0;;26577:251::o;5002:475::-;1207:10;5120:4;5164:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5164:34:0;;;;;;;;;;5231:35;;;;5209:122;;;;-1:-1:-1;;;5209:122:0;;13052:2:1;5209:122:0;;;13034:21:1;13091:2;13071:18;;;13064:30;13130:34;13110:18;;;13103:62;-1:-1:-1;;;13181:18:1;;;13174:35;13226:19;;5209:122:0;12850:401:1;5209:122:0;5367:67;1207:10;5390:7;5418:15;5399:16;:34;5367:8;:67::i;:::-;-1:-1:-1;5465:4:0;;5002:475;-1:-1:-1;;;5002:475:0:o;3480:200::-;3591:4;3608:42;1207:10;3632:9;3643:6;3608:9;:42::i;26304:265::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;26434:9:::1;26418:13;3301:12:::0;;;3213:108;26418:13:::1;:25;;;;:::i;:::-;26406:9;:37;26384:136;;;::::0;-1:-1:-1;;;26384:136:0;;13680:2:1;26384:136:0::1;::::0;::::1;13662:21:1::0;13719:2;13699:18;;;13692:30;13758:34;13738:18;;;13731:62;-1:-1:-1;;;13809:18:1;;;13802:47;13866:19;;26384:136:0::1;13478:413:1::0;26384:136:0::1;26531:18;:30:::0;26304:265::o;18841:810::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;18976:15:::1;::::0;-1:-1:-1;;;;;18976:15:0::1;18968:38:::0;18946:114:::1;;;::::0;-1:-1:-1;;;18946:114:0;;14098:2:1;18946:114:0::1;::::0;::::1;14080:21:1::0;14137:2;14117:18;;;14110:30;14176:28;14156:18;;;14149:56;14222:18;;18946:114:0::1;13896:350:1::0;18946:114:0::1;19073:35;19130:13;19073:71;;19189:16;-1:-1:-1::0;;;;;19189:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19171:70:0::1;;19250:4;19257:16;-1:-1:-1::0;;;;;19257:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19171:110;::::0;-1:-1:-1;;;;;;19171:110:0::1;::::0;;;;;;-1:-1:-1;;;;;14737:15:1;;;19171:110:0::1;::::0;::::1;14719:34:1::0;14789:15;;14769:18;;;14762:43;14654:18;;19171:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19155:13;:126:::0;;-1:-1:-1;;;;;19155:126:0;;::::1;-1:-1:-1::0;;;;;;19155:126:0;;::::1;;::::0;;;19292:15:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;19339:68:::1;::::0;19356:4:::1;::::0;-1:-1:-1;;19339:8:0::1;:68::i;:::-;19420:15;::::0;-1:-1:-1;;;;;19420:15:0::1;:31;19459:21;19504:4;19524:24;19504:4:::0;-1:-1:-1;;;;;3446:18:0;3419:7;3446:18;;;;;;;;;;;;3329:143;19524:24:::1;19563:1;19579::::0;19595:7:::1;1893:6:::0;;-1:-1:-1;;;;;1893:6:0;;1828:79;19595:7:::1;19420:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;19420:223:0;;;-1:-1:-1;;;;;15175:15:1;;;19420:223:0::1;::::0;::::1;15157:34:1::0;15207:18;;;15200:34;;;;15250:18;;;15243:34;;;;15293:18;;;15286:34;15357:15;;;15336:19;;;15329:44;19617:15:0::1;15389:19:1::0;;;15382:35;15091:19;;19420:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18935:716;18841:810:::0;:::o;26068:228::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;26163:11:::1;::::0;:27;::::1;;:11;::::0;;::::1;:27;;::::0;26141:110:::1;;;::::0;-1:-1:-1;;;26141:110:0;;15941:2:1;26141:110:0::1;::::0;::::1;15923:21:1::0;15980:2;15960:18;;;15953:30;16019:34;15999:18;;;15992:62;-1:-1:-1;;;16070:18:1;;;16063:31;16111:19;;26141:110:0::1;15739:397:1::0;26141:110:0::1;26262:11;:26:::0;;-1:-1:-1;;26262:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26068:228::o;19659:302::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19753:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:36;;:28:::0;:36;19731:128:::1;;;::::0;-1:-1:-1;;;19731:128:0;;16343:2:1;19731:128:0::1;::::0;::::1;16325:21:1::0;16382:2;16362:18;;;16355:30;16421:34;16401:18;;;16394:62;-1:-1:-1;;;16472:18:1;;;16465:40;16522:19;;19731:128:0::1;16141:406:1::0;19731:128:0::1;-1:-1:-1::0;;;;;19870:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;19870:35:0::1;19901:4;19870:35:::0;;::::1;::::0;;;19923:30;;1416:41:1;;;19923:30:0::1;::::0;1389:18:1;19923:30:0::1;1276:187:1::0;2198:281:0;1955:6;;-1:-1:-1;;;;;1955:6:0;1207:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2301:22:0;::::1;2279:110;;;::::0;-1:-1:-1;;;2279:110:0;;16754:2:1;2279:110:0::1;::::0;::::1;16736:21:1::0;16793:2;16773:18;;;16766:30;16832:34;16812:18;;;16805:62;-1:-1:-1;;;16883:18:1;;;16876:36;16929:19;;2279:110:0::1;16552:402:1::0;2279:110:0::1;2426:6;::::0;2405:38:::1;::::0;-1:-1:-1;;;;;2405:38:0;;::::1;::::0;2426:6:::1;::::0;2405:38:::1;::::0;2426:6:::1;::::0;2405:38:::1;2454:6;:17:::0;;-1:-1:-1;;;;;;2454:17:0::1;-1:-1:-1::0;;;;;2454:17:0;;;::::1;::::0;;;::::1;::::0;;2198:281::o;7269:380::-;-1:-1:-1;;;;;7405:19:0;;7397:68;;;;-1:-1:-1;;;7397:68:0;;17161:2:1;7397:68:0;;;17143:21:1;17200:2;17180:18;;;17173:30;17239:34;17219:18;;;17212:62;-1:-1:-1;;;17290:18:1;;;17283:34;17334:19;;7397:68:0;16959:400:1;7397:68:0;-1:-1:-1;;;;;7484:21:0;;7476:68;;;;-1:-1:-1;;;7476:68:0;;17566:2:1;7476:68:0;;;17548:21:1;17605:2;17585:18;;;17578:30;17644:34;17624:18;;;17617:62;-1:-1:-1;;;17695:18:1;;;17688:32;17737:19;;7476:68:0;17364:398:1;7476:68:0;-1:-1:-1;;;;;7557:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7609:32;;1614:25:1;;;7609:32:0;;1587:18:1;7609:32:0;;;;;;;7269:380;;;:::o;22651:3409::-;-1:-1:-1;;;;;22783:18:0;;22775:68;;;;-1:-1:-1;;;22775:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22862:16:0;;22854:64;;;;-1:-1:-1;;;22854:64:0;;;;;;;:::i;:::-;22935:6;22945:1;22935:11;22931:93;;22963:28;22979:4;22985:2;22989:1;22963:15;:28::i;:::-;22651:3409;;;:::o;22931:93::-;-1:-1:-1;;;;;23041:25:0;;;;;;:19;:25;;;;;;;;23040:26;:54;;;;-1:-1:-1;;;;;;23071:23:0;;;;;;:19;:23;;;;;;;;23070:24;23040:54;23036:148;;;23119:14;;;;;;;:22;;23137:4;23119:22;23111:61;;;;-1:-1:-1;;;23111:61:0;;18779:2:1;23111:61:0;;;18761:21:1;18818:2;18798:18;;;18791:30;18857:28;18837:18;;;18830:56;18903:18;;23111:61:0;18577:350:1;23111:61:0;23245:4;23196:28;3446:18;;;;;;;;;;;23303;;23352:11;;23279:42;;;;;23352:11;;:35;;;;;23380:7;23352:35;:61;;;;-1:-1:-1;23405:8:0;;;;;;;23404:9;23352:61;:97;;;;-1:-1:-1;23436:13:0;;-1:-1:-1;;;;;23430:19:0;;;23436:13;;23430:19;23352:97;:152;;;;;23503:1;23484:16;;23466:15;;:34;;;;:::i;:::-;:38;23352:152;23334:2000;;;23531:8;:15;;-1:-1:-1;;23531:15:0;;;;;;;;23567:13;;23531:15;23567:13;23563:95;;;23624:18;;23601:41;;23563:95;23674:16;23711;;23693:15;;:34;;;;:::i;:::-;23674:53;;23742:21;23785:17;;23766:16;;:36;;;;:::i;:::-;23742:60;;23817:23;23864:19;;23843:18;;:40;;;;:::i;:::-;23817:66;;23927:1;23904:20;:24;:39;;;;-1:-1:-1;23932:11:0;;;;23904:39;23900:1390;;;23988:16;;;24002:1;23988:16;;;;;;;;23964:21;;23988:16;;;;;;;;;;-1:-1:-1;23988:16:0;23964:40;;24041:4;24023;24028:1;24023:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24023:23:0;;;:7;;;;;;;;;;:23;;;;24075:15;;:22;;;-1:-1:-1;;;24075:22:0;;;;:15;;;;;:20;;:22;;;;;24023:7;;24075:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24065:4;24070:1;24065:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24065:32:0;;;:7;;;;;;;;;:32;24118:15;;:299;;-1:-1:-1;;;24118:299:0;;:15;;;:88;;:299;;24233:20;;24118:15;;24308:4;;24347;;24379:15;;24118:299;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24459:21:0;;-1:-1:-1;;24505:17:0;;;-1:-1:-1;24501:393:0;;24547:22;24628:8;24573:26;24586:13;24573:10;:26;:::i;:::-;24572:64;;;;:::i;:::-;24675:14;;:94;;24547:89;;-1:-1:-1;24660:9:0;;-1:-1:-1;;;;;24675:14:0;;;;24547:89;;24660:9;24675:94;24660:9;24675:94;24547:89;24675:14;:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24659:110;;;24800:4;24792:28;;;;-1:-1:-1;;;24792:28:0;;10759:2:1;24792:28:0;;;10741:21:1;10798:2;10778:18;;;10771:30;-1:-1:-1;;;10817:18:1;;;10810:41;10868:18;;24792:28:0;10557:335:1;24792:28:0;24860:14;24843:13;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;24501:393:0;24918:19;;24914:361;;25049:15;;:97;;24989:21;;24962:24;;-1:-1:-1;;;;;25049:15:0;;;;24989:21;;24962:24;25049:97;24962:24;25049:97;24989:21;25049:15;:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25033:113;;;25177:4;25169:28;;;;-1:-1:-1;;;25169:28:0;;20292:2:1;25169:28:0;;;20274:21:1;20331:2;20311:18;;;20304:30;-1:-1:-1;;;20350:18:1;;;20343:41;20401:18;;25169:28:0;20090:335:1;25169:28:0;25239:16;25220:15;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;24914:361:0;23945:1345;;23900:1390;-1:-1:-1;;25306:8:0;:16;;-1:-1:-1;;25306:16:0;;;-1:-1:-1;23334:2000:0;25362:8;;-1:-1:-1;;;;;25387:25:0;;25346:12;25387:25;;;:19;:25;;;;;;25362:8;;;;;;;25361:9;;25387:25;;:52;;-1:-1:-1;;;;;;25416:23:0;;;;;;:19;:23;;;;;;;;25387:52;25383:100;;;-1:-1:-1;25466:5:0;25383:100;25499:7;:57;;;;-1:-1:-1;25519:13:0;;-1:-1:-1;;;;;25511:21:0;;;25519:13;;25511:21;;:44;;-1:-1:-1;25542:13:0;;-1:-1:-1;;;;;25536:19:0;;;25542:13;;25536:19;25511:44;25495:512;;;25618:13;;25573:18;;-1:-1:-1;;;;;25618:13:0;;;25610:21;;;;25606:185;;-1:-1:-1;25665:15:0;;25606:185;;;25712:13;;-1:-1:-1;;;;;25712:13:0;;;25706:19;;;;25702:89;;-1:-1:-1;25759:16:0;;25702:89;25805:12;25844:5;25821:19;25830:10;25821:6;:19;:::i;:::-;25820:29;;;;:::i;:::-;25805:44;-1:-1:-1;25875:13:0;25805:44;25875:6;:13;:::i;:::-;25866:22;-1:-1:-1;25909:8:0;;25905:91;;25938:42;25954:4;25968;25975;25938:15;:42::i;:::-;25558:449;;25495:512;26019:33;26035:4;26041:2;26045:6;26019:15;:33::i;:::-;22764:3296;;;22651:3409;;;:::o;5485:770::-;-1:-1:-1;;;;;5625:20:0;;5617:70;;;;-1:-1:-1;;;5617:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5706:23:0;;5698:71;;;;-1:-1:-1;;;5698:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5866:17:0;;5842:21;5866:17;;;;;;;;;;;5916:23;;;;5894:111;;;;-1:-1:-1;;;5894:111:0;;20765:2:1;5894:111:0;;;20747:21:1;20804:2;20784:18;;;20777:30;20843:34;20823:18;;;20816:62;-1:-1:-1;;;20894:18:1;;;20887:36;20940:19;;5894:111:0;20563:402:1;5894:111:0;-1:-1:-1;;;;;6041:17:0;;;:9;:17;;;;;;;;;;;6061:22;;;6041:42;;6105:20;;;;;;;;:30;;6077:6;;6041:9;6105:30;;6077:6;;6105:30;:::i;:::-;;;;;;;;6170:9;-1:-1:-1;;;;;6153:35:0;6162:6;-1:-1:-1;;;;;6153:35:0;;6181:6;6153:35;;;;1614:25:1;;1602:2;1587:18;;1468:177;6153:35:0;;;;;;;;6201:46;22651:3409;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;875:70;820:131;:::o;956:315::-;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1650:247::-;1709:6;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1817:9;1804:23;1836:31;1861:5;1836:31;:::i;:::-;1886:5;1650:247;-1:-1:-1;;;1650:247:1:o;2137:456::-;2214:6;2222;2230;2283:2;2271:9;2262:7;2258:23;2254:32;2251:52;;;2299:1;2296;2289:12;2251:52;2338:9;2325:23;2357:31;2382:5;2357:31;:::i;:::-;2407:5;-1:-1:-1;2464:2:1;2449:18;;2436:32;2477:33;2436:32;2477:33;:::i;:::-;2137:456;;2529:7;;-1:-1:-1;;;2583:2:1;2568:18;;;;2555:32;;2137:456::o;2787:388::-;2855:6;2863;2916:2;2904:9;2895:7;2891:23;2887:32;2884:52;;;2932:1;2929;2922:12;2884:52;2971:9;2958:23;2990:31;3015:5;2990:31;:::i;:::-;3040:5;-1:-1:-1;3097:2:1;3082:18;;3069:32;3110:33;3069:32;3110:33;:::i;:::-;3162:7;3152:17;;;2787:388;;;;;:::o;3388:127::-;3449:10;3444:3;3440:20;3437:1;3430:31;3480:4;3477:1;3470:15;3504:4;3501:1;3494:15;3520:275;3591:2;3585:9;3656:2;3637:13;;-1:-1:-1;;3633:27:1;3621:40;;3691:18;3676:34;;3712:22;;;3673:62;3670:88;;;3738:18;;:::i;:::-;3774:2;3767:22;3520:275;;-1:-1:-1;3520:275:1:o;3800:183::-;3860:4;3893:18;3885:6;3882:30;3879:56;;;3915:18;;:::i;:::-;-1:-1:-1;3960:1:1;3956:14;3972:4;3952:25;;3800:183::o;3988:668::-;4042:5;4095:3;4088:4;4080:6;4076:17;4072:27;4062:55;;4113:1;4110;4103:12;4062:55;4149:6;4136:20;4175:4;4199:60;4215:43;4255:2;4215:43;:::i;:::-;4199:60;:::i;:::-;4281:3;4305:2;4300:3;4293:15;4333:4;4328:3;4324:14;4317:21;;4390:4;4384:2;4381:1;4377:10;4369:6;4365:23;4361:34;4347:48;;4418:3;4410:6;4407:15;4404:35;;;4435:1;4432;4425:12;4404:35;4471:4;4463:6;4459:17;4485:142;4501:6;4496:3;4493:15;4485:142;;;4567:17;;4555:30;;4605:12;;;;4518;;4485:142;;;-1:-1:-1;4645:5:1;3988:668;-1:-1:-1;;;;;;3988:668:1:o;4661:1215::-;4779:6;4787;4840:2;4828:9;4819:7;4815:23;4811:32;4808:52;;;4856:1;4853;4846:12;4808:52;4896:9;4883:23;4925:18;4966:2;4958:6;4955:14;4952:34;;;4982:1;4979;4972:12;4952:34;5020:6;5009:9;5005:22;4995:32;;5065:7;5058:4;5054:2;5050:13;5046:27;5036:55;;5087:1;5084;5077:12;5036:55;5123:2;5110:16;5145:4;5169:60;5185:43;5225:2;5185:43;:::i;5169:60::-;5263:15;;;5345:1;5341:10;;;;5333:19;;5329:28;;;5294:12;;;;5369:19;;;5366:39;;;5401:1;5398;5391:12;5366:39;5425:11;;;;5445:217;5461:6;5456:3;5453:15;5445:217;;;5541:3;5528:17;5558:31;5583:5;5558:31;:::i;:::-;5602:18;;5478:12;;;;5640;;;;5445:217;;;5681:5;-1:-1:-1;;5724:18:1;;5711:32;;-1:-1:-1;;5755:16:1;;;5752:36;;;5784:1;5781;5774:12;5752:36;;5807:63;5862:7;5851:8;5840:9;5836:24;5807:63;:::i;:::-;5797:73;;;4661:1215;;;;;:::o;5881:118::-;5967:5;5960:13;5953:21;5946:5;5943:32;5933:60;;5989:1;5986;5979:12;6004:241;6060:6;6113:2;6101:9;6092:7;6088:23;6084:32;6081:52;;;6129:1;6126;6119:12;6081:52;6168:9;6155:23;6187:28;6209:5;6187:28;:::i;6250:180::-;6309:6;6362:2;6350:9;6341:7;6337:23;6333:32;6330:52;;;6378:1;6375;6368:12;6330:52;-1:-1:-1;6401:23:1;;6250:180;-1:-1:-1;6250:180:1:o;6435:356::-;6637:2;6619:21;;;6656:18;;;6649:30;6715:34;6710:2;6695:18;;6688:62;6782:2;6767:18;;6435:356::o;6796:127::-;6857:10;6852:3;6848:20;6845:1;6838:31;6888:4;6885:1;6878:15;6912:4;6909:1;6902:15;6928:125;6993:9;;;7014:10;;;7011:36;;;7027:18;;:::i;7666:380::-;7745:1;7741:12;;;;7788;;;7809:61;;7863:4;7855:6;7851:17;7841:27;;7809:61;7916:2;7908:6;7905:14;7885:18;7882:38;7879:161;;7962:10;7957:3;7953:20;7950:1;7943:31;7997:4;7994:1;7987:15;8025:4;8022:1;8015:15;7879:161;;7666:380;;;:::o;8051:403::-;8253:2;8235:21;;;8292:2;8272:18;;;8265:30;8331:34;8326:2;8311:18;;8304:62;-1:-1:-1;;;8397:2:1;8382:18;;8375:37;8444:3;8429:19;;8051:403::o;9279:184::-;9349:6;9402:2;9390:9;9381:7;9377:23;9373:32;9370:52;;;9418:1;9415;9408:12;9370:52;-1:-1:-1;9441:16:1;;9279:184;-1:-1:-1;9279:184:1:o;10097:245::-;10164:6;10217:2;10205:9;10196:7;10192:23;10188:32;10185:52;;;10233:1;10230;10223:12;10185:52;10265:9;10259:16;10284:28;10306:5;10284:28;:::i;11246:127::-;11307:10;11302:3;11298:20;11295:1;11288:31;11338:4;11335:1;11328:15;11362:4;11359:1;11352:15;13256:217;13296:1;13322;13312:132;;13366:10;13361:3;13357:20;13354:1;13347:31;13401:4;13398:1;13391:15;13429:4;13426:1;13419:15;13312:132;-1:-1:-1;13458:9:1;;13256:217::o;14251:251::-;14321:6;14374:2;14362:9;14353:7;14349:23;14345:32;14342:52;;;14390:1;14387;14380:12;14342:52;14422:9;14416:16;14441:31;14466:5;14441:31;:::i;15428:306::-;15516:6;15524;15532;15585:2;15573:9;15564:7;15560:23;15556:32;15553:52;;;15601:1;15598;15591:12;15553:52;15630:9;15624:16;15614:26;;15680:2;15669:9;15665:18;15659:25;15649:35;;15724:2;15713:9;15709:18;15703:25;15693:35;;15428:306;;;;;:::o;17767:401::-;17969:2;17951:21;;;18008:2;17988:18;;;17981:30;18047:34;18042:2;18027:18;;18020:62;-1:-1:-1;;;18113:2:1;18098:18;;18091:35;18158:3;18143:19;;17767:401::o;18173:399::-;18375:2;18357:21;;;18414:2;18394:18;;;18387:30;18453:34;18448:2;18433:18;;18426:62;-1:-1:-1;;;18519:2:1;18504:18;;18497:33;18562:3;18547:19;;18173:399::o;18932:980::-;19194:4;19242:3;19231:9;19227:19;19273:6;19262:9;19255:25;19299:2;19337:6;19332:2;19321:9;19317:18;19310:34;19380:3;19375:2;19364:9;19360:18;19353:31;19404:6;19439;19433:13;19470:6;19462;19455:22;19508:3;19497:9;19493:19;19486:26;;19547:2;19539:6;19535:15;19521:29;;19568:1;19578:195;19592:6;19589:1;19586:13;19578:195;;;19657:13;;-1:-1:-1;;;;;19653:39:1;19641:52;;19748:15;;;;19713:12;;;;19689:1;19607:9;19578:195;;;-1:-1:-1;;;;;;;19829:32:1;;;;19824:2;19809:18;;19802:60;-1:-1:-1;;;19893:3:1;19878:19;19871:35;19790:3;18932:980;-1:-1:-1;;;18932:980:1:o;19917:168::-;19990:9;;;20021;;20038:15;;;20032:22;;20018:37;20008:71;;20059:18;;:::i;20430:128::-;20497:9;;;20518:11;;;20515:37;;;20532:18;;:::i

Swarm Source

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