ETH Price: $2,421.57 (+0.01%)

Token

Bricscoin (BRC)
 

Overview

Max Total Supply

21,000,000 BRC

Holders

63

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
70,517.157866192360894046 BRC

Value
$0.00
0x44aa03689760e602936cc7f73550e48836427b69
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Bricscoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-31
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, 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)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            _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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

contract Bricscoin is Context, ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private _uniswapV2Router02;

    mapping(address => bool) private _excludedFromFees;
    mapping(address => bool) private _excludedFromMaxTxAmount;
    mapping(address => bool) private _blacklisted;

    bool public tradingOpen;
    bool private _swapping;
    bool public swapEnabled = false;
    bool public feesEnabled = true;
    bool public transferFeesEnabled = true;

    uint256 private constant _tSupply = 21_000_000 ether;

    uint256 public maxBuyAmount = _tSupply;
    uint256 public maxSellAmount = _tSupply;
    uint256 public maxWalletAmount = _tSupply;

    uint256 public tradingOpenBlock = 0;
    uint256 private _blocksToBlacklist = 0;

    uint256 public constant FEE_DIVISOR = 1000;

    uint256 private _totalFees;
    uint256 private _opsFee;

    uint256 public buyOpsFee = 300;
    uint256 private _previousBuyOpsFee = buyOpsFee;

    uint256 public sellOpsFee = 600;
    uint256 private _previousSellOpsFee = sellOpsFee;

    uint256 public transferOpsFee = 100;
    uint256 private _previousTransferOpsFee = transferOpsFee;

    uint256 private _tokensForOps;
    uint256 private _swapTokensAtAmount = 0;

    address payable public opsWalletAddress;

    address private _uniswapV2Pair;

    enum TransactionType {
        BUY,
        SELL,
        TRANSFER
    }

    modifier lockSwapping() {
        _swapping = true;
        _;
        _swapping = false;
    }

    constructor() payable ERC20("Bricscoin", "BRC") {
        opsWalletAddress = payable(owner());

        _excludedFromFees[owner()] = true;
        _excludedFromFees[address(this)] = true;
        _excludedFromFees[address(0xdead)] = true;

        _excludedFromMaxTxAmount[owner()] = true;
        _excludedFromMaxTxAmount[address(this)] = true;
        _excludedFromMaxTxAmount[address(0xdead)] = true;

        _mint(address(this), _tSupply);
    }

    receive() external payable {}

    fallback() external payable {}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0x0), "ERC20: transfer from the zero address");
        require(to != address(0x0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        bool takeFee = true;
        TransactionType txType = (from == _uniswapV2Pair)
            ? TransactionType.BUY
            : (to == _uniswapV2Pair)
            ? TransactionType.SELL
            : TransactionType.TRANSFER;
        if (
            from != owner() &&
            to != owner() &&
            to != address(0x0) &&
            to != address(0xdead) &&
            !_swapping
        ) {
            require(!_blacklisted[from] && !_blacklisted[to], "Blacklisted.");

            if (!tradingOpen)
                require(
                    _excludedFromFees[from] || _excludedFromFees[to],
                    "Trading is not allowed yet."
                );

            if (
                txType == TransactionType.BUY &&
                to != address(_uniswapV2Router02) &&
                !_excludedFromMaxTxAmount[to]
            ) {
                require(
                    amount <= maxBuyAmount,
                    "Transfer amount exceeds the maxBuyAmount."
                );
                require(
                    balanceOf(to).add(amount) <= maxWalletAmount,
                    "Exceeds maximum wallet token amount."
                );
            }

            if (
                txType == TransactionType.SELL &&
                from != address(_uniswapV2Router02) &&
                !_excludedFromMaxTxAmount[from]
            )
                require(
                    amount <= maxSellAmount,
                    "Transfer amount exceeds the maxSellAmount."
                );
        }

        if (
            _excludedFromFees[from] ||
            _excludedFromFees[to] ||
            !feesEnabled ||
            (!transferFeesEnabled && txType == TransactionType.TRANSFER)
        ) takeFee = false;

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = (contractBalance > _swapTokensAtAmount) &&
            (txType == TransactionType.SELL);

        if (
            canSwap &&
            swapEnabled &&
            !_swapping &&
            !_excludedFromFees[from] &&
            !_excludedFromFees[to]
        ) {
            _swapBack(contractBalance);
        }

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

    function _swapBack(uint256 contractBalance) internal lockSwapping {
        bool success;

        if (contractBalance == 0 || _tokensForOps == 0) return;

        if (contractBalance > _swapTokensAtAmount.mul(5))
            contractBalance = _swapTokensAtAmount.mul(5);

        _swapExactTokensForETHSupportingFeeOnTransferTokens(contractBalance);

        _tokensForOps = 0;

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

    function _swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 tokenAmount
    ) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router02.WETH();
        _approve(address(this), address(_uniswapV2Router02), tokenAmount);
        _uniswapV2Router02.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function blacklisted(address wallet) external view returns (bool) {
        return _blacklisted[wallet];
    }

    function openTrading(uint256 blocks) public onlyOwner {
        require(!tradingOpen, "Trading is already open");
        require(blocks <= 10, "Invalid blocks count.");

        _uniswapV2Router02 = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        _approve(address(this), address(_uniswapV2Router02), totalSupply());
        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router02.factory())
            .createPair(address(this), _uniswapV2Router02.WETH());
        _uniswapV2Router02.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(_uniswapV2Pair).approve(
            address(_uniswapV2Router02),
            type(uint256).max
        );

        maxBuyAmount = totalSupply().mul(2).div(100);
        maxSellAmount = totalSupply().mul(2).div(100);
        maxWalletAmount = totalSupply().mul(2).div(100);
        _swapTokensAtAmount = totalSupply().mul(5).div(10000);
        swapEnabled = true;
        tradingOpen = true;
        tradingOpenBlock = block.number;
        _blocksToBlacklist = blocks;
    }

    function setSwapEnabled(bool onoff) public onlyOwner {
        swapEnabled = onoff;
    }

    function setFeesEnabled(bool onoff) public onlyOwner {
        feesEnabled = onoff;
    }

    function setTransferFeesEnabled(bool onoff) public onlyOwner {
        transferFeesEnabled = onoff;
    }

    function setMaxBuyAmount(uint256 _maxBuyAmount) public onlyOwner {
        require(
            _maxBuyAmount >= (totalSupply().mul(1).div(1000)),
            "Max buy amount cannot be lower than 0.1% total supply."
        );
        maxBuyAmount = _maxBuyAmount;
    }

    function setMaxSellAmount(uint256 _maxSellAmount) public onlyOwner {
        require(
            _maxSellAmount >= (totalSupply().mul(1).div(1000)),
            "Max sell amount cannot be lower than 0.1% total supply."
        );
        maxSellAmount = _maxSellAmount;
    }

    function setMaxWalletAmount(uint256 _maxWalletAmount) public onlyOwner {
        require(
            _maxWalletAmount >= (totalSupply().mul(1).div(1000)),
            "Max wallet amount cannot be lower than 0.1% total supply."
        );
        maxWalletAmount = _maxWalletAmount;
    }

    function setSwapTokensAtAmount(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        require(
            swapTokensAtAmount >= (totalSupply().mul(1).div(1000000)),
            "Swap amount cannot be lower than 0.0001% total supply."
        );
        require(
            swapTokensAtAmount <= (totalSupply().mul(5).div(1000)),
            "Swap amount cannot be higher than 0.5% total supply."
        );
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function setOpsWalletAddress(address _opsWalletAddress) public onlyOwner {
        require(
            _opsWalletAddress != address(0x0),
            "opsWalletAddress cannot be 0"
        );
        _excludedFromFees[opsWalletAddress] = false;
        _excludedFromMaxTxAmount[opsWalletAddress] = false;
        opsWalletAddress = payable(_opsWalletAddress);
        _excludedFromFees[opsWalletAddress] = true;
        _excludedFromMaxTxAmount[opsWalletAddress] = true;
    }

    function excludeFromFees(address[] memory accounts, bool isEx)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++)
            _excludedFromFees[accounts[i]] = isEx;
    }

    function excludeFromMaxTxAmount(address[] memory accounts, bool isEx)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++)
            _excludedFromMaxTxAmount[accounts[i]] = isEx;
    }

    function blacklist(address[] memory accounts, bool isBL) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            if (
                (accounts[i] != _uniswapV2Pair) &&
                (accounts[i] != address(_uniswapV2Router02)) &&
                (accounts[i] != address(this))
            ) _blacklisted[accounts[i]] = isBL;
        }
    }

    function setBuyFee(uint256 _buyOpsFee) public onlyOwner {
        buyOpsFee = _buyOpsFee;
    }

    function setSellFee(uint256 _sellOpsFee) public onlyOwner {
        sellOpsFee = _sellOpsFee;
    }

    function setTransferFee(uint256 _transferOpsFee) public onlyOwner {
        transferOpsFee = _transferOpsFee;
    }

    function _removeAllFee() internal {
        if (buyOpsFee == 0 && sellOpsFee == 0 && transferOpsFee == 0) return;

        _previousBuyOpsFee = buyOpsFee;
        _previousSellOpsFee = sellOpsFee;
        _previousTransferOpsFee = transferOpsFee;

        buyOpsFee = 0;
        sellOpsFee = 0;
        transferOpsFee = 0;
    }

    function _restoreAllFee() internal {
        buyOpsFee = _previousBuyOpsFee;
        sellOpsFee = _previousSellOpsFee;
        transferOpsFee = _previousTransferOpsFee;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee,
        TransactionType txType
    ) internal {
        if (!takeFee) _removeAllFee();
        else amount = _takeFees(sender, amount, txType);

        super._transfer(sender, recipient, amount);

        if (!takeFee) _restoreAllFee();
    }

    function _takeFees(
        address sender,
        uint256 amount,
        TransactionType txType
    ) internal returns (uint256) {
        if (tradingOpenBlock.add(_blocksToBlacklist) > block.number) _setBot();
        else if (txType == TransactionType.SELL) _setSell();
        else if (txType == TransactionType.BUY) _setBuy();
        else if (txType == TransactionType.TRANSFER) _setTransfer();
        else revert("Invalid transaction type.");

        uint256 fees;
        if (_totalFees > 0) {
            fees = amount.mul(_totalFees).div(FEE_DIVISOR);
            _tokensForOps += (fees.mul(_opsFee)).div(_totalFees);
        }

        if (fees > 0) super._transfer(sender, address(this), fees);

        return amount -= fees;
    }

    function _setBot() internal {
        _opsFee = 999;
        _totalFees = _opsFee;
    }

    function _setSell() internal {
        _opsFee = sellOpsFee;
        _totalFees = _opsFee;
    }

    function _setBuy() internal {
        _opsFee = buyOpsFee;
        _totalFees = _opsFee;
    }

    function _setTransfer() internal {
        _opsFee = transferOpsFee;
        _totalFees = _opsFee;
    }

    function unclog() public onlyOwner lockSwapping {
        _swapExactTokensForETHSupportingFeeOnTransferTokens(
            balanceOf(address(this))
        );
        _tokensForOps = 0;
        bool success;
        (success, ) = address(opsWalletAddress).call{
            value: address(this).balance
        }("");
    }

    function withdrawStuckTokens(address tkn) external onlyOwner {
        require(tkn != address(this), "Cannot withdraw own token");
        bool success;
        if (tkn == address(0))
            (success, ) = address(msg.sender).call{
                value: address(this).balance
            }("");
        else {
            require(IERC20(tkn).balanceOf(address(this)) > 0);
            uint256 amount = IERC20(tkn).balanceOf(address(this));
            IERC20(tkn).transfer(msg.sender, amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isBL","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"opsWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyOpsFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_opsWalletAddress","type":"address"}],"name":"setOpsWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellOpsFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferOpsFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTransferFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpenBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFeesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600a805464ffffff000019166401010000001790556a115eec47f6cf7e35000000600b819055600c819055600d556000600e819055600f81905561012c60128190556013556102586014819055601555606460168190556017556019556009608090815268213934b1b9b1b7b4b760b91b60a052610100604052600360c08181526242524360e81b60e0529062000097838262000374565b506004620000a6828262000374565b505050620000c3620000bd620001af60201b60201c565b620001b3565b60058054601a80546001600160a01b0319166001600160a01b039283169081179091556000908152600760209081526040808320805460ff1990811660019081179092553080865283862080548316841790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d805483168417905596549095168452600890925280832080548516831790558483528220805484168217905561dead9091527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054909216179055620001a9906a115eec47f6cf7e3500000062000205565b62000468565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002605760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000274919062000440565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002fb57607f821691505b6020821081036200031c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cb57600081815260208120601f850160051c810160208610156200034b5750805b601f850160051c820191505b818110156200036c5782815560010162000357565b505050505050565b81516001600160401b03811115620003905762000390620002d0565b620003a881620003a18454620002e6565b8462000322565b602080601f831160018114620003e05760008415620003c75750858301515b600019600386901b1c1916600185901b1785556200036c565b600085815260208120601f198616915b828110156200041157888601518255948401946001909101908401620003f0565b5085821015620004305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200046257634e487b7160e01b600052601160045260246000fd5b92915050565b612a2d80620004786000396000f3fe60806040526004361061025e5760003560e01c80638f02bb5b11610143578063c997eb8d116100bb578063e01af92c11610077578063e01af92c14610736578063e99c9d0914610756578063effb3c5314610776578063f2fde38b14610798578063f34eb0b8146107b8578063ffb54a99146107d857005b8063c997eb8d1461065d578063cb9637281461067d578063d16336491461069d578063dbac26e9146106bd578063dd62ed3e146106f6578063dd77b7e61461071657005b8063a64e4f8a1161010a578063a64e4f8a146105a6578063a901dd92146105c7578063a9059cbb146105e7578063aa4bde2814610607578063ad29ffde1461061d578063afa4f3b21461063d57005b80638f02bb5b1461052557806393e3a1551461054557806395d89b411461055b5780639e93ad8e14610570578063a457c2d71461058657005b80635286e770116101d657806370a082311161019d57806370a0823114610470578063715018a6146104a657806378dd7d41146104bb57806388e765ff146104d15780638b4cee08146104e75780638da5cb5b1461050757005b80635286e770146103ef578063659ffb9c1461040f57806366d602ae1461042557806367c453491461043b5780636ddd17131461045057005b806318160ddd1161022557806318160ddd1461032657806323b872dd1461033b57806327a14fc21461035b57806329ea34cc1461037b578063313ce567146103b357806339509351146103cf57005b806306fdde0314610267578063095ea7b3146102925780630cc835a3146102c25780630e23500e146102e2578063157e136e1461030657005b3661026557005b005b34801561027357600080fd5b5061027c6107f2565b6040516102899190612517565b60405180910390f35b34801561029e57600080fd5b506102b26102ad36600461258a565b610884565b6040519015158152602001610289565b3480156102ce57600080fd5b506102656102dd3660046125b6565b61089e565b3480156102ee57600080fd5b506102f8600e5481565b604051908152602001610289565b34801561031257600080fd5b506102656103213660046125cf565b6108ab565b34801561033257600080fd5b506002546102f8565b34801561034757600080fd5b506102b26103563660046125ec565b61098c565b34801561036757600080fd5b506102656103763660046125b6565b6109b0565b34801561038757600080fd5b50601a5461039b906001600160a01b031681565b6040516001600160a01b039091168152602001610289565b3480156103bf57600080fd5b5060405160128152602001610289565b3480156103db57600080fd5b506102b26103ea36600461258a565b610a52565b3480156103fb57600080fd5b5061026561040a36600461265c565b610a74565b34801561041b57600080fd5b506102f860145481565b34801561043157600080fd5b506102f8600c5481565b34801561044757600080fd5b50610265610ae8565b34801561045c57600080fd5b50600a546102b29062010000900460ff1681565b34801561047c57600080fd5b506102f861048b3660046125cf565b6001600160a01b031660009081526020819052604090205490565b3480156104b257600080fd5b50610265610b8f565b3480156104c757600080fd5b506102f860125481565b3480156104dd57600080fd5b506102f8600b5481565b3480156104f357600080fd5b506102656105023660046125b6565b610ba3565b34801561051357600080fd5b506005546001600160a01b031661039b565b34801561053157600080fd5b506102656105403660046125b6565b610bb0565b34801561055157600080fd5b506102f860165481565b34801561056757600080fd5b5061027c610bbd565b34801561057c57600080fd5b506102f86103e881565b34801561059257600080fd5b506102b26105a136600461258a565b610bcc565b3480156105b257600080fd5b50600a546102b2906301000000900460ff1681565b3480156105d357600080fd5b506102656105e2366004612733565b610c47565b3480156105f357600080fd5b506102b261060236600461258a565b610c6d565b34801561061357600080fd5b506102f8600d5481565b34801561062957600080fd5b5061026561063836600461265c565b610c7b565b34801561064957600080fd5b506102656106583660046125b6565b610cea565b34801561066957600080fd5b5061026561067836600461265c565b610dfa565b34801561068957600080fd5b506102656106983660046125cf565b610f27565b3480156106a957600080fd5b506102656106b83660046125b6565b61113d565b3480156106c957600080fd5b506102b26106d83660046125cf565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561070257600080fd5b506102f8610711366004612750565b611562565b34801561072257600080fd5b50610265610731366004612733565b61158d565b34801561074257600080fd5b50610265610751366004612733565b6115b5565b34801561076257600080fd5b506102656107713660046125b6565b6115d9565b34801561078257600080fd5b50600a546102b290640100000000900460ff1681565b3480156107a457600080fd5b506102656107b33660046125cf565b61166f565b3480156107c457600080fd5b506102656107d33660046125b6565b6116e8565b3480156107e457600080fd5b50600a546102b29060ff1681565b60606003805461080190612789565b80601f016020809104026020016040519081016040528092919081815260200182805461082d90612789565b801561087a5780601f1061084f5761010080835404028352916020019161087a565b820191906000526020600020905b81548152906001019060200180831161085d57829003601f168201915b5050505050905090565b600033610892818585611777565b60019150505b92915050565b6108a661189b565b601255565b6108b361189b565b6001600160a01b03811661090e5760405162461bcd60e51b815260206004820152601c60248201527f6f707357616c6c6574416464726573732063616e6e6f7420626520300000000060448201526064015b60405180910390fd5b601a80546001600160a01b039081166000908152600760208181526040808420805460ff19908116909155865486168552600880845282862080548316905587546001600160a01b03191698871698891788559785529282528084208054841660019081179091559554909416835294909452208054909216179055565b60003361099a8582856118f5565b6109a5858585611969565b506001949350505050565b6109b861189b565b6109d86103e86109d260016109cc60025490565b90611f51565b90611f64565b811015610a4d5760405162461bcd60e51b815260206004820152603960248201527f4d61782077616c6c657420616d6f756e742063616e6e6f74206265206c6f776560448201527f72207468616e20302e312520746f74616c20737570706c792e000000000000006064820152608401610905565b600d55565b600033610892818585610a658383611562565b610a6f91906127d9565b611777565b610a7c61189b565b60005b8251811015610ae3578160086000858481518110610a9f57610a9f6127ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610adb81612802565b915050610a7f565b505050565b610af061189b565b600a805461ff001916610100179055610b26610b21306001600160a01b031660009081526020819052604090205490565b611f70565b60006018819055601a546040516001600160a01b039091169047908381818185875af1925050503d8060008114610b79576040519150601f19603f3d011682016040523d82523d6000602084013e610b7e565b606091505b5050600a805461ff00191690555050565b610b9761189b565b610ba160006120ca565b565b610bab61189b565b601455565b610bb861189b565b601655565b60606004805461080190612789565b60003381610bda8286611562565b905083811015610c3a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610905565b6109a58286868403611777565b610c4f61189b565b600a805491151563010000000263ff00000019909216919091179055565b600033610892818585611969565b610c8361189b565b60005b8251811015610ae3578160076000858481518110610ca657610ca66127ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ce281612802565b915050610c86565b610cf261189b565b610d07620f42406109d260016109cc60025490565b811015610d755760405162461bcd60e51b815260206004820152603660248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e6044820152751018171818181892903a37ba30b61039bab838363c9760511b6064820152608401610905565b610d896103e86109d260056109cc60025490565b811115610df55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610905565b601955565b610e0261189b565b60005b8251811015610ae357601b5483516001600160a01b0390911690849083908110610e3157610e316127ec565b60200260200101516001600160a01b031614158015610e82575060065483516001600160a01b0390911690849083908110610e6e57610e6e6127ec565b60200260200101516001600160a01b031614155b8015610eb95750306001600160a01b0316838281518110610ea557610ea56127ec565b60200260200101516001600160a01b031614155b15610f15578160096000858481518110610ed557610ed56127ec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80610f1f81612802565b915050610e05565b610f2f61189b565b306001600160a01b03821603610f875760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207769746864726177206f776e20746f6b656e000000000000006044820152606401610905565b60006001600160a01b038216610fe35760405133904790600081818185875af1925050503d8060008114610fd7576040519150601f19603f3d011682016040523d82523d6000602084013e610fdc565b606091505b5050505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104e919061281b565b1161105857600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c3919061281b565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111379190612834565b50505050565b61114561189b565b600a5460ff16156111985760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610905565b600a8111156111e15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b210313637b1b5b99031b7bab73a1760591b6044820152606401610905565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155611219903090610a6f60025490565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190612851565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190612851565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113879190612851565b601b80546001600160a01b039283166001600160a01b03199091161790556006541663f305d71947306113cf816001600160a01b031660009081526020819052604090205490565b6000806113e46005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561144c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611471919061286e565b5050601b5460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156114ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ee9190612834565b5061150260646109d260026109cc60025490565b600b5561151860646109d260026109cc60025490565b600c5561152e60646109d260026109cc60025490565b600d556115456127106109d260056109cc60025490565b601955600a805462ff00ff19166201000117905543600e55600f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61159561189b565b600a80549115156401000000000264ff0000000019909216919091179055565b6115bd61189b565b600a8054911515620100000262ff000019909216919091179055565b6115e161189b565b6115f56103e86109d260016109cc60025490565b81101561166a5760405162461bcd60e51b815260206004820152603760248201527f4d61782073656c6c20616d6f756e742063616e6e6f74206265206c6f7765722060448201527f7468616e20302e312520746f74616c20737570706c792e0000000000000000006064820152608401610905565b600c55565b61167761189b565b6001600160a01b0381166116dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610905565b6116e5816120ca565b50565b6116f061189b565b6117046103e86109d260016109cc60025490565b8110156117725760405162461bcd60e51b815260206004820152603660248201527f4d61782062757920616d6f756e742063616e6e6f74206265206c6f77657220746044820152753430b71018171892903a37ba30b61039bab838363c9760511b6064820152608401610905565b600b55565b6001600160a01b0383166117d95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610905565b6001600160a01b03821661183a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610905565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610ba15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610905565b60006119018484611562565b90506000198114611137578181101561195c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610905565b6111378484848403611777565b6001600160a01b03831661198f5760405162461bcd60e51b81526004016109059061289c565b6001600160a01b0382166119b55760405162461bcd60e51b8152600401610905906128e1565b60008111611a175760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610905565b601b546001906000906001600160a01b03868116911614611a5557601b546001600160a01b03858116911614611a4e576002611a58565b6001611a58565b60005b9050611a6c6005546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015611a9b57506005546001600160a01b03858116911614155b8015611aaf57506001600160a01b03841615155b8015611ac657506001600160a01b03841661dead14155b8015611ada5750600a54610100900460ff16155b15611df2576001600160a01b03851660009081526009602052604090205460ff16158015611b2157506001600160a01b03841660009081526009602052604090205460ff16155b611b5c5760405162461bcd60e51b815260206004820152600c60248201526b213630b1b5b634b9ba32b21760a11b6044820152606401610905565b600a5460ff16611bf1576001600160a01b03851660009081526007602052604090205460ff1680611ba557506001600160a01b03841660009081526007602052604090205460ff165b611bf15760405162461bcd60e51b815260206004820152601b60248201527f54726164696e67206973206e6f7420616c6c6f776564207965742e00000000006044820152606401610905565b6000816002811115611c0557611c05612924565b148015611c2057506006546001600160a01b03858116911614155b8015611c4557506001600160a01b03841660009081526008602052604090205460ff16155b15611d3457600b54831115611cae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610905565b600d54611cda84611cd4876001600160a01b031660009081526020819052604090205490565b9061211c565b1115611d345760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610905565b6001816002811115611d4857611d48612924565b148015611d6357506006546001600160a01b03868116911614155b8015611d8857506001600160a01b03851660009081526008602052604090205460ff16155b15611df257600c54831115611df25760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610905565b6001600160a01b03851660009081526007602052604090205460ff1680611e3157506001600160a01b03841660009081526007602052604090205460ff165b80611e465750600a546301000000900460ff16155b80611e785750600a54640100000000900460ff16158015611e7857506002816002811115611e7657611e76612924565b145b15611e8257600091505b306000908152602081905260408120549050600060195482118015611eb857506001836002811115611eb657611eb6612924565b145b9050808015611ecf5750600a5462010000900460ff165b8015611ee35750600a54610100900460ff16155b8015611f0857506001600160a01b03871660009081526007602052604090205460ff16155b8015611f2d57506001600160a01b03861660009081526007602052604090205460ff16155b15611f3b57611f3b82612128565b611f4887878787876121eb565b50505050505050565b6000611f5d828461293a565b9392505050565b6000611f5d8284612951565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fa557611fa56127ec565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120229190612851565b81600181518110612035576120356127ec565b6001600160a01b03928316602091820292909201015260065461205b9130911684611777565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612094908590600090869030904290600401612973565b600060405180830381600087803b1580156120ae57600080fd5b505af11580156120c2573d6000803e3d6000fd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611f5d82846127d9565b600a805461ff00191661010017905560008115806121465750601854155b1561215157506121dd565b60195461215f906005611f51565b82111561217757601954612174906005611f51565b91505b61218082611f70565b60006018819055601a546040516001600160a01b039091169147919081818185875af1925050503d80600081146121d3576040519150601f19603f3d011682016040523d82523d6000602084013e6121d8565b606091505b505050505b50600a805461ff0019169055565b816121fd576121f8612232565b61220b565b612208858483612277565b92505b6122168585856123ed565b81610fdc57610fdc601354601255601554601455601754601655565b6012541580156122425750601454155b801561224e5750601654155b1561225557565b6012805460135560148054601555601680546017556000928390559082905555565b600043612291600f54600e5461211c90919063ffffffff16565b11156122ac576122a76103e76011819055601055565b61236f565b60018260028111156122c0576122c0612924565b036122d5576122a76014546011819055601055565b60008260028111156122e9576122e9612924565b036122fe576122a76012546011819055601055565b600282600281111561231257612312612924565b03612327576122a76016546011819055601055565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c6964207472616e73616374696f6e20747970652e000000000000006044820152606401610905565b601054600090156123c9576123956103e86109d260105487611f5190919063ffffffff16565b90506123b26010546109d260115484611f5190919063ffffffff16565b601860008282546123c391906127d9565b90915550505b80156123da576123da8530836123ed565b6123e481856129e4565b95945050505050565b6001600160a01b0383166124135760405162461bcd60e51b81526004016109059061289c565b6001600160a01b0382166124395760405162461bcd60e51b8152600401610905906128e1565b6001600160a01b038316600090815260208190526040902054818110156124b15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610905565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611137565b600060208083528351808285015260005b8181101561254457858101830151858201604001528201612528565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116e557600080fd5b803561258581612565565b919050565b6000806040838503121561259d57600080fd5b82356125a881612565565b946020939093013593505050565b6000602082840312156125c857600080fd5b5035919050565b6000602082840312156125e157600080fd5b8135611f5d81612565565b60008060006060848603121561260157600080fd5b833561260c81612565565b9250602084013561261c81612565565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b80151581146116e557600080fd5b803561258581612643565b6000806040838503121561266f57600080fd5b823567ffffffffffffffff8082111561268757600080fd5b818501915085601f83011261269b57600080fd5b81356020828211156126af576126af61262d565b8160051b604051601f19603f830116810181811086821117156126d4576126d461262d565b6040529283528183019350848101820192898411156126f257600080fd5b948201945b83861015612717576127088661257a565b855294820194938201936126f7565b96506127269050878201612651565b9450505050509250929050565b60006020828403121561274557600080fd5b8135611f5d81612643565b6000806040838503121561276357600080fd5b823561276e81612565565b9150602083013561277e81612565565b809150509250929050565b600181811c9082168061279d57607f821691505b6020821081036127bd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610898576108986127c3565b634e487b7160e01b600052603260045260246000fd5b600060018201612814576128146127c3565b5060010190565b60006020828403121561282d57600080fd5b5051919050565b60006020828403121561284657600080fd5b8151611f5d81612643565b60006020828403121561286357600080fd5b8151611f5d81612565565b60008060006060848603121561288357600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b8082028115828204841417610898576108986127c3565b60008261296e57634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129c35784516001600160a01b03168352938301939183019160010161299e565b50506001600160a01b03969096166060850152505050608001529392505050565b81810381811115610898576108986127c356fea26469706673582212205eb2994e98d46d3cca628c9735c7b719adea4d4b5b5f3c8d2a1b33a04d3481c664736f6c63430008130033

Deployed Bytecode

0x60806040526004361061025e5760003560e01c80638f02bb5b11610143578063c997eb8d116100bb578063e01af92c11610077578063e01af92c14610736578063e99c9d0914610756578063effb3c5314610776578063f2fde38b14610798578063f34eb0b8146107b8578063ffb54a99146107d857005b8063c997eb8d1461065d578063cb9637281461067d578063d16336491461069d578063dbac26e9146106bd578063dd62ed3e146106f6578063dd77b7e61461071657005b8063a64e4f8a1161010a578063a64e4f8a146105a6578063a901dd92146105c7578063a9059cbb146105e7578063aa4bde2814610607578063ad29ffde1461061d578063afa4f3b21461063d57005b80638f02bb5b1461052557806393e3a1551461054557806395d89b411461055b5780639e93ad8e14610570578063a457c2d71461058657005b80635286e770116101d657806370a082311161019d57806370a0823114610470578063715018a6146104a657806378dd7d41146104bb57806388e765ff146104d15780638b4cee08146104e75780638da5cb5b1461050757005b80635286e770146103ef578063659ffb9c1461040f57806366d602ae1461042557806367c453491461043b5780636ddd17131461045057005b806318160ddd1161022557806318160ddd1461032657806323b872dd1461033b57806327a14fc21461035b57806329ea34cc1461037b578063313ce567146103b357806339509351146103cf57005b806306fdde0314610267578063095ea7b3146102925780630cc835a3146102c25780630e23500e146102e2578063157e136e1461030657005b3661026557005b005b34801561027357600080fd5b5061027c6107f2565b6040516102899190612517565b60405180910390f35b34801561029e57600080fd5b506102b26102ad36600461258a565b610884565b6040519015158152602001610289565b3480156102ce57600080fd5b506102656102dd3660046125b6565b61089e565b3480156102ee57600080fd5b506102f8600e5481565b604051908152602001610289565b34801561031257600080fd5b506102656103213660046125cf565b6108ab565b34801561033257600080fd5b506002546102f8565b34801561034757600080fd5b506102b26103563660046125ec565b61098c565b34801561036757600080fd5b506102656103763660046125b6565b6109b0565b34801561038757600080fd5b50601a5461039b906001600160a01b031681565b6040516001600160a01b039091168152602001610289565b3480156103bf57600080fd5b5060405160128152602001610289565b3480156103db57600080fd5b506102b26103ea36600461258a565b610a52565b3480156103fb57600080fd5b5061026561040a36600461265c565b610a74565b34801561041b57600080fd5b506102f860145481565b34801561043157600080fd5b506102f8600c5481565b34801561044757600080fd5b50610265610ae8565b34801561045c57600080fd5b50600a546102b29062010000900460ff1681565b34801561047c57600080fd5b506102f861048b3660046125cf565b6001600160a01b031660009081526020819052604090205490565b3480156104b257600080fd5b50610265610b8f565b3480156104c757600080fd5b506102f860125481565b3480156104dd57600080fd5b506102f8600b5481565b3480156104f357600080fd5b506102656105023660046125b6565b610ba3565b34801561051357600080fd5b506005546001600160a01b031661039b565b34801561053157600080fd5b506102656105403660046125b6565b610bb0565b34801561055157600080fd5b506102f860165481565b34801561056757600080fd5b5061027c610bbd565b34801561057c57600080fd5b506102f86103e881565b34801561059257600080fd5b506102b26105a136600461258a565b610bcc565b3480156105b257600080fd5b50600a546102b2906301000000900460ff1681565b3480156105d357600080fd5b506102656105e2366004612733565b610c47565b3480156105f357600080fd5b506102b261060236600461258a565b610c6d565b34801561061357600080fd5b506102f8600d5481565b34801561062957600080fd5b5061026561063836600461265c565b610c7b565b34801561064957600080fd5b506102656106583660046125b6565b610cea565b34801561066957600080fd5b5061026561067836600461265c565b610dfa565b34801561068957600080fd5b506102656106983660046125cf565b610f27565b3480156106a957600080fd5b506102656106b83660046125b6565b61113d565b3480156106c957600080fd5b506102b26106d83660046125cf565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561070257600080fd5b506102f8610711366004612750565b611562565b34801561072257600080fd5b50610265610731366004612733565b61158d565b34801561074257600080fd5b50610265610751366004612733565b6115b5565b34801561076257600080fd5b506102656107713660046125b6565b6115d9565b34801561078257600080fd5b50600a546102b290640100000000900460ff1681565b3480156107a457600080fd5b506102656107b33660046125cf565b61166f565b3480156107c457600080fd5b506102656107d33660046125b6565b6116e8565b3480156107e457600080fd5b50600a546102b29060ff1681565b60606003805461080190612789565b80601f016020809104026020016040519081016040528092919081815260200182805461082d90612789565b801561087a5780601f1061084f5761010080835404028352916020019161087a565b820191906000526020600020905b81548152906001019060200180831161085d57829003601f168201915b5050505050905090565b600033610892818585611777565b60019150505b92915050565b6108a661189b565b601255565b6108b361189b565b6001600160a01b03811661090e5760405162461bcd60e51b815260206004820152601c60248201527f6f707357616c6c6574416464726573732063616e6e6f7420626520300000000060448201526064015b60405180910390fd5b601a80546001600160a01b039081166000908152600760208181526040808420805460ff19908116909155865486168552600880845282862080548316905587546001600160a01b03191698871698891788559785529282528084208054841660019081179091559554909416835294909452208054909216179055565b60003361099a8582856118f5565b6109a5858585611969565b506001949350505050565b6109b861189b565b6109d86103e86109d260016109cc60025490565b90611f51565b90611f64565b811015610a4d5760405162461bcd60e51b815260206004820152603960248201527f4d61782077616c6c657420616d6f756e742063616e6e6f74206265206c6f776560448201527f72207468616e20302e312520746f74616c20737570706c792e000000000000006064820152608401610905565b600d55565b600033610892818585610a658383611562565b610a6f91906127d9565b611777565b610a7c61189b565b60005b8251811015610ae3578160086000858481518110610a9f57610a9f6127ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610adb81612802565b915050610a7f565b505050565b610af061189b565b600a805461ff001916610100179055610b26610b21306001600160a01b031660009081526020819052604090205490565b611f70565b60006018819055601a546040516001600160a01b039091169047908381818185875af1925050503d8060008114610b79576040519150601f19603f3d011682016040523d82523d6000602084013e610b7e565b606091505b5050600a805461ff00191690555050565b610b9761189b565b610ba160006120ca565b565b610bab61189b565b601455565b610bb861189b565b601655565b60606004805461080190612789565b60003381610bda8286611562565b905083811015610c3a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610905565b6109a58286868403611777565b610c4f61189b565b600a805491151563010000000263ff00000019909216919091179055565b600033610892818585611969565b610c8361189b565b60005b8251811015610ae3578160076000858481518110610ca657610ca66127ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ce281612802565b915050610c86565b610cf261189b565b610d07620f42406109d260016109cc60025490565b811015610d755760405162461bcd60e51b815260206004820152603660248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e6044820152751018171818181892903a37ba30b61039bab838363c9760511b6064820152608401610905565b610d896103e86109d260056109cc60025490565b811115610df55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610905565b601955565b610e0261189b565b60005b8251811015610ae357601b5483516001600160a01b0390911690849083908110610e3157610e316127ec565b60200260200101516001600160a01b031614158015610e82575060065483516001600160a01b0390911690849083908110610e6e57610e6e6127ec565b60200260200101516001600160a01b031614155b8015610eb95750306001600160a01b0316838281518110610ea557610ea56127ec565b60200260200101516001600160a01b031614155b15610f15578160096000858481518110610ed557610ed56127ec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80610f1f81612802565b915050610e05565b610f2f61189b565b306001600160a01b03821603610f875760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207769746864726177206f776e20746f6b656e000000000000006044820152606401610905565b60006001600160a01b038216610fe35760405133904790600081818185875af1925050503d8060008114610fd7576040519150601f19603f3d011682016040523d82523d6000602084013e610fdc565b606091505b5050505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104e919061281b565b1161105857600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c3919061281b565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111379190612834565b50505050565b61114561189b565b600a5460ff16156111985760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610905565b600a8111156111e15760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b210313637b1b5b99031b7bab73a1760591b6044820152606401610905565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155611219903090610a6f60025490565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190612851565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190612851565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113879190612851565b601b80546001600160a01b039283166001600160a01b03199091161790556006541663f305d71947306113cf816001600160a01b031660009081526020819052604090205490565b6000806113e46005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561144c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611471919061286e565b5050601b5460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156114ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ee9190612834565b5061150260646109d260026109cc60025490565b600b5561151860646109d260026109cc60025490565b600c5561152e60646109d260026109cc60025490565b600d556115456127106109d260056109cc60025490565b601955600a805462ff00ff19166201000117905543600e55600f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61159561189b565b600a80549115156401000000000264ff0000000019909216919091179055565b6115bd61189b565b600a8054911515620100000262ff000019909216919091179055565b6115e161189b565b6115f56103e86109d260016109cc60025490565b81101561166a5760405162461bcd60e51b815260206004820152603760248201527f4d61782073656c6c20616d6f756e742063616e6e6f74206265206c6f7765722060448201527f7468616e20302e312520746f74616c20737570706c792e0000000000000000006064820152608401610905565b600c55565b61167761189b565b6001600160a01b0381166116dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610905565b6116e5816120ca565b50565b6116f061189b565b6117046103e86109d260016109cc60025490565b8110156117725760405162461bcd60e51b815260206004820152603660248201527f4d61782062757920616d6f756e742063616e6e6f74206265206c6f77657220746044820152753430b71018171892903a37ba30b61039bab838363c9760511b6064820152608401610905565b600b55565b6001600160a01b0383166117d95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610905565b6001600160a01b03821661183a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610905565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610ba15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610905565b60006119018484611562565b90506000198114611137578181101561195c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610905565b6111378484848403611777565b6001600160a01b03831661198f5760405162461bcd60e51b81526004016109059061289c565b6001600160a01b0382166119b55760405162461bcd60e51b8152600401610905906128e1565b60008111611a175760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610905565b601b546001906000906001600160a01b03868116911614611a5557601b546001600160a01b03858116911614611a4e576002611a58565b6001611a58565b60005b9050611a6c6005546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015611a9b57506005546001600160a01b03858116911614155b8015611aaf57506001600160a01b03841615155b8015611ac657506001600160a01b03841661dead14155b8015611ada5750600a54610100900460ff16155b15611df2576001600160a01b03851660009081526009602052604090205460ff16158015611b2157506001600160a01b03841660009081526009602052604090205460ff16155b611b5c5760405162461bcd60e51b815260206004820152600c60248201526b213630b1b5b634b9ba32b21760a11b6044820152606401610905565b600a5460ff16611bf1576001600160a01b03851660009081526007602052604090205460ff1680611ba557506001600160a01b03841660009081526007602052604090205460ff165b611bf15760405162461bcd60e51b815260206004820152601b60248201527f54726164696e67206973206e6f7420616c6c6f776564207965742e00000000006044820152606401610905565b6000816002811115611c0557611c05612924565b148015611c2057506006546001600160a01b03858116911614155b8015611c4557506001600160a01b03841660009081526008602052604090205460ff16155b15611d3457600b54831115611cae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610905565b600d54611cda84611cd4876001600160a01b031660009081526020819052604090205490565b9061211c565b1115611d345760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610905565b6001816002811115611d4857611d48612924565b148015611d6357506006546001600160a01b03868116911614155b8015611d8857506001600160a01b03851660009081526008602052604090205460ff16155b15611df257600c54831115611df25760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610905565b6001600160a01b03851660009081526007602052604090205460ff1680611e3157506001600160a01b03841660009081526007602052604090205460ff165b80611e465750600a546301000000900460ff16155b80611e785750600a54640100000000900460ff16158015611e7857506002816002811115611e7657611e76612924565b145b15611e8257600091505b306000908152602081905260408120549050600060195482118015611eb857506001836002811115611eb657611eb6612924565b145b9050808015611ecf5750600a5462010000900460ff165b8015611ee35750600a54610100900460ff16155b8015611f0857506001600160a01b03871660009081526007602052604090205460ff16155b8015611f2d57506001600160a01b03861660009081526007602052604090205460ff16155b15611f3b57611f3b82612128565b611f4887878787876121eb565b50505050505050565b6000611f5d828461293a565b9392505050565b6000611f5d8284612951565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fa557611fa56127ec565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120229190612851565b81600181518110612035576120356127ec565b6001600160a01b03928316602091820292909201015260065461205b9130911684611777565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612094908590600090869030904290600401612973565b600060405180830381600087803b1580156120ae57600080fd5b505af11580156120c2573d6000803e3d6000fd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611f5d82846127d9565b600a805461ff00191661010017905560008115806121465750601854155b1561215157506121dd565b60195461215f906005611f51565b82111561217757601954612174906005611f51565b91505b61218082611f70565b60006018819055601a546040516001600160a01b039091169147919081818185875af1925050503d80600081146121d3576040519150601f19603f3d011682016040523d82523d6000602084013e6121d8565b606091505b505050505b50600a805461ff0019169055565b816121fd576121f8612232565b61220b565b612208858483612277565b92505b6122168585856123ed565b81610fdc57610fdc601354601255601554601455601754601655565b6012541580156122425750601454155b801561224e5750601654155b1561225557565b6012805460135560148054601555601680546017556000928390559082905555565b600043612291600f54600e5461211c90919063ffffffff16565b11156122ac576122a76103e76011819055601055565b61236f565b60018260028111156122c0576122c0612924565b036122d5576122a76014546011819055601055565b60008260028111156122e9576122e9612924565b036122fe576122a76012546011819055601055565b600282600281111561231257612312612924565b03612327576122a76016546011819055601055565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c6964207472616e73616374696f6e20747970652e000000000000006044820152606401610905565b601054600090156123c9576123956103e86109d260105487611f5190919063ffffffff16565b90506123b26010546109d260115484611f5190919063ffffffff16565b601860008282546123c391906127d9565b90915550505b80156123da576123da8530836123ed565b6123e481856129e4565b95945050505050565b6001600160a01b0383166124135760405162461bcd60e51b81526004016109059061289c565b6001600160a01b0382166124395760405162461bcd60e51b8152600401610905906128e1565b6001600160a01b038316600090815260208190526040902054818110156124b15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610905565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611137565b600060208083528351808285015260005b8181101561254457858101830151858201604001528201612528565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116e557600080fd5b803561258581612565565b919050565b6000806040838503121561259d57600080fd5b82356125a881612565565b946020939093013593505050565b6000602082840312156125c857600080fd5b5035919050565b6000602082840312156125e157600080fd5b8135611f5d81612565565b60008060006060848603121561260157600080fd5b833561260c81612565565b9250602084013561261c81612565565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b80151581146116e557600080fd5b803561258581612643565b6000806040838503121561266f57600080fd5b823567ffffffffffffffff8082111561268757600080fd5b818501915085601f83011261269b57600080fd5b81356020828211156126af576126af61262d565b8160051b604051601f19603f830116810181811086821117156126d4576126d461262d565b6040529283528183019350848101820192898411156126f257600080fd5b948201945b83861015612717576127088661257a565b855294820194938201936126f7565b96506127269050878201612651565b9450505050509250929050565b60006020828403121561274557600080fd5b8135611f5d81612643565b6000806040838503121561276357600080fd5b823561276e81612565565b9150602083013561277e81612565565b809150509250929050565b600181811c9082168061279d57607f821691505b6020821081036127bd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610898576108986127c3565b634e487b7160e01b600052603260045260246000fd5b600060018201612814576128146127c3565b5060010190565b60006020828403121561282d57600080fd5b5051919050565b60006020828403121561284657600080fd5b8151611f5d81612643565b60006020828403121561286357600080fd5b8151611f5d81612565565b60008060006060848603121561288357600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b8082028115828204841417610898576108986127c3565b60008261296e57634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129c35784516001600160a01b03168352938301939183019160010161299e565b50506001600160a01b03969096166060850152505050608001529392505050565b81810381811115610898576108986127c356fea26469706673582212205eb2994e98d46d3cca628c9735c7b719adea4d4b5b5f3c8d2a1b33a04d3481c664736f6c63430008130033

Deployed Bytecode Sourcemap

11645:13584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5407:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6480:242;;;;;;;;;;-1:-1:-1;6480:242:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;6480:242:0;1162:187:1;21901:97:0;;;;;;;;;;-1:-1:-1;21901:97:0;;;;;:::i;:::-;;:::i;12345:35::-;;;;;;;;;;;;;;;;;;;1685:25:1;;;1673:2;1658:18;12345:35:0;1539:177:1;20550:487:0;;;;;;;;;;-1:-1:-1;20550:487:0;;;;;:::i;:::-;;:::i;5728:108::-;;;;;;;;;;-1:-1:-1;5816:12:0;;5728:108;;6730:295;;;;;;;;;;-1:-1:-1;6730:295:0;;;;;:::i;:::-;;:::i;19743:294::-;;;;;;;;;;-1:-1:-1;19743:294:0;;;;;:::i;:::-;;:::i;12928:39::-;;;;;;;;;;-1:-1:-1;12928:39:0;;;;-1:-1:-1;;;;;12928:39:0;;;;;;-1:-1:-1;;;;;2614:32:1;;;2596:51;;2584:2;2569:18;12928:39:0;2434:219:1;5627:93:0;;;;;;;;;;-1:-1:-1;5627:93:0;;5710:2;2800:36:1;;2788:2;2773:18;5627:93:0;2658:184:1;7033:270:0;;;;;;;;;;-1:-1:-1;7033:270:0;;;;;:::i;:::-;;:::i;21271:232::-;;;;;;;;;;-1:-1:-1;21271:232:0;;;;;:::i;:::-;;:::i;12642:31::-;;;;;;;;;;;;;;;;12249:39;;;;;;;;;;;;;;;;24360:332;;;;;;;;;;;;;:::i;12021:31::-;;;;;;;;;;-1:-1:-1;12021:31:0;;;;;;;;;;;5844:177;;;;;;;;;;-1:-1:-1;5844:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;5995:18:0;5963:7;5995:18;;;;;;;;;;;;5844:177;880:103;;;;;;;;;;;;;:::i;12550:30::-;;;;;;;;;;;;;;;;12204:38;;;;;;;;;;;;;;;;22006:101;;;;;;;;;;-1:-1:-1;22006:101:0;;;;;:::i;:::-;;:::i;645:87::-;;;;;;;;;;-1:-1:-1;718:6:0;;-1:-1:-1;;;;;718:6:0;645:87;;22115:117;;;;;;;;;;-1:-1:-1;22115:117:0;;;;;:::i;:::-;;:::i;12737:35::-;;;;;;;;;;;;;;;;5515:104;;;;;;;;;;;;;:::i;12434:42::-;;;;;;;;;;;;12472:4;12434:42;;7311:505;;;;;;;;;;-1:-1:-1;7311:505:0;;;;;:::i;:::-;;:::i;12059:30::-;;;;;;;;;;-1:-1:-1;12059:30:0;;;;;;;;;;;18955:91;;;;;;;;;;-1:-1:-1;18955:91:0;;;;;:::i;:::-;;:::i;6029:234::-;;;;;;;;;;-1:-1:-1;6029:234:0;;;;;:::i;:::-;;:::i;12295:41::-;;;;;;;;;;;;;;;;21045:218;;;;;;;;;;-1:-1:-1;21045:218:0;;;;;:::i;:::-;;:::i;20045:497::-;;;;;;;;;;-1:-1:-1;20045:497:0;;;;;:::i;:::-;;:::i;21511:382::-;;;;;;;;;;-1:-1:-1;21511:382:0;;;;;:::i;:::-;;:::i;24700:526::-;;;;;;;;;;-1:-1:-1;24700:526:0;;;;;:::i;:::-;;:::i;17592:1256::-;;;;;;;;;;-1:-1:-1;17592:1256:0;;;;;:::i;:::-;;:::i;17472:112::-;;;;;;;;;;-1:-1:-1;17472:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;17556:20:0;17532:4;17556:20;;;:12;:20;;;;;;;;;17472:112;6271:201;;;;;;;;;;-1:-1:-1;6271:201:0;;;;;:::i;:::-;;:::i;19054:107::-;;;;;;;;;;-1:-1:-1;19054:107:0;;;;;:::i;:::-;;:::i;18856:91::-;;;;;;;;;;-1:-1:-1;18856:91:0;;;;;:::i;:::-;;:::i;19453:282::-;;;;;;;;;;-1:-1:-1;19453:282:0;;;;;:::i;:::-;;:::i;12096:38::-;;;;;;;;;;-1:-1:-1;12096:38:0;;;;;;;;;;;991:238;;;;;;;;;;-1:-1:-1;991:238:0;;;;;:::i;:::-;;:::i;19169:276::-;;;;;;;;;;-1:-1:-1;19169:276:0;;;;;:::i;:::-;;:::i;11962:23::-;;;;;;;;;;-1:-1:-1;11962:23:0;;;;;;;;5407:100;5461:13;5494:5;5487:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5407:100;:::o;6480:242::-;6599:4;173:10;6660:32;173:10;6676:7;6685:6;6660:8;:32::i;:::-;6710:4;6703:11;;;6480:242;;;;;:::o;21901:97::-;604:13;:11;:13::i;:::-;21968:9:::1;:22:::0;21901:97::o;20550:487::-;604:13;:11;:13::i;:::-;-1:-1:-1;;;;;20656:33:0;::::1;20634:111;;;::::0;-1:-1:-1;;;20634:111:0;;5865:2:1;20634:111:0::1;::::0;::::1;5847:21:1::0;5904:2;5884:18;;;5877:30;5943;5923:18;;;5916:58;5991:18;;20634:111:0::1;;;;;;;;;20774:16;::::0;;-1:-1:-1;;;;;20774:16:0;;::::1;20794:5;20756:35:::0;;;:17:::1;:35;::::0;;;;;;;:43;;-1:-1:-1;;20756:43:0;;::::1;::::0;;;20835:16;;;::::1;20810:42:::0;;:24:::1;:42:::0;;;;;;:50;;;::::1;::::0;;20871:45;;-1:-1:-1;;;;;;20871:45:0::1;::::0;;::::1;::::0;;::::1;::::0;;20927:35;;;;;;;;;:42;;;::::1;-1:-1:-1::0;20927:42:0;;::::1;::::0;;;21005:16;;;;::::1;20980:42:::0;;;;;;;:49;;;;::::1;;::::0;;20550:487::o;6730:295::-;6861:4;173:10;6919:38;6935:4;173:10;6950:6;6919:15;:38::i;:::-;6968:27;6978:4;6984:2;6988:6;6968:9;:27::i;:::-;-1:-1:-1;7013:4:0;;6730:295;-1:-1:-1;;;;6730:295:0:o;19743:294::-;604:13;:11;:13::i;:::-;19868:30:::1;19893:4;19868:20;19886:1;19868:13;5816:12:::0;;;5728:108;19868:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;19847:16;:52;;19825:159;;;::::0;-1:-1:-1;;;19825:159:0;;6222:2:1;19825:159:0::1;::::0;::::1;6204:21:1::0;6261:2;6241:18;;;6234:30;6300:34;6280:18;;;6273:62;6371:27;6351:18;;;6344:55;6416:19;;19825:159:0::1;6020:421:1::0;19825:159:0::1;19995:15;:34:::0;19743:294::o;7033:270::-;7148:4;173:10;7209:64;173:10;7225:7;7262:10;7234:25;173:10;7225:7;7234:9;:25::i;:::-;:38;;;;:::i;:::-;7209:8;:64::i;21271:232::-;604:13;:11;:13::i;:::-;21397:9:::1;21392:103;21416:8;:15;21412:1;:19;21392:103;;;21491:4;21451:24;:37;21476:8;21485:1;21476:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21451:37:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21451:37:0;:44;;-1:-1:-1;;21451:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21433:3;::::1;::::0;::::1;:::i;:::-;;;;21392:103;;;;21271:232:::0;;:::o;24360:332::-;604:13;:11;:13::i;:::-;13134:9:::1;:16:::0;;-1:-1:-1;;13134:16:0::1;;;::::0;;24419:101:::2;24485:24;24503:4;-1:-1:-1::0;;;;;5995:18:0;5963:7;5995:18;;;;;;;;;;;;5844:177;24485:24:::2;24419:51;:101::i;:::-;24547:1;24531:13;:17:::0;;;24604:16:::2;::::0;24596:88:::2;::::0;-1:-1:-1;;;;;24604:16:0;;::::2;::::0;24648:21:::2;::::0;24547:1;24596:88;24547:1;24596:88;24648:21;24604:16;24596:88:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;13173:9:0::1;:17:::0;;-1:-1:-1;;13173:17:0::1;::::0;;-1:-1:-1;;24360:332:0:o;880:103::-;604:13;:11;:13::i;:::-;945:30:::1;972:1;945:18;:30::i;:::-;880:103::o:0;22006:101::-;604:13;:11;:13::i;:::-;22075:10:::1;:24:::0;22006:101::o;22115:117::-;604:13;:11;:13::i;:::-;22192:14:::1;:32:::0;22115:117::o;5515:104::-;5571:13;5604:7;5597:14;;;;;:::i;7311:505::-;7431:4;173:10;7431:4;7519:25;173:10;7536:7;7519:9;:25::i;:::-;7492:52;;7597:15;7577:16;:35;;7555:122;;;;-1:-1:-1;;;7555:122:0;;7392:2:1;7555:122:0;;;7374:21:1;7431:2;7411:18;;;7404:30;7470:34;7450:18;;;7443:62;-1:-1:-1;;;7521:18:1;;;7514:35;7566:19;;7555:122:0;7190:401:1;7555:122:0;7713:60;7722:5;7729:7;7757:15;7738:16;:34;7713:8;:60::i;18955:91::-;604:13;:11;:13::i;:::-;19019:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;19019:19:0;;::::1;::::0;;;::::1;::::0;;18955:91::o;6029:234::-;6144:4;173:10;6205:28;173:10;6222:2;6226:6;6205:9;:28::i;21045:218::-;604:13;:11;:13::i;:::-;21164:9:::1;21159:96;21183:8;:15;21179:1;:19;21159:96;;;21251:4;21218:17;:30;21236:8;21245:1;21236:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21218:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21218:30:0;:37;;-1:-1:-1;;21218:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21200:3;::::1;::::0;::::1;:::i;:::-;;;;21159:96;;20045:497:::0;604:13;:11;:13::i;:::-;20200:33:::1;20225:7;20200:20;20218:1;20200:13;5816:12:::0;;;5728:108;20200:33:::1;20177:18;:57;;20155:161;;;::::0;-1:-1:-1;;;20155:161:0;;7798:2:1;20155:161:0::1;::::0;::::1;7780:21:1::0;7837:2;7817:18;;;7810:30;7876:34;7856:18;;;7849:62;-1:-1:-1;;;7927:18:1;;;7920:52;7989:19;;20155:161:0::1;7596:418:1::0;20155:161:0::1;20372:30;20397:4;20372:20;20390:1;20372:13;5816:12:::0;;;5728:108;20372:30:::1;20349:18;:54;;20327:156;;;::::0;-1:-1:-1;;;20327:156:0;;8221:2:1;20327:156:0::1;::::0;::::1;8203:21:1::0;8260:2;8240:18;;;8233:30;8299:34;8279:18;;;8272:62;-1:-1:-1;;;8350:18:1;;;8343:50;8410:19;;20327:156:0::1;8019:416:1::0;20327:156:0::1;20494:19;:40:::0;20045:497::o;21511:382::-;604:13;:11;:13::i;:::-;21601:9:::1;21596:290;21620:8;:15;21616:1;:19;21596:290;;;21695:14;::::0;21680:11;;-1:-1:-1;;;;;21695:14:0;;::::1;::::0;21680:8;;21689:1;;21680:11;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;21680:29:0::1;;;21679:96;;;;-1:-1:-1::0;21755:18:0::1;::::0;21732:11;;-1:-1:-1;;;;;21755:18:0;;::::1;::::0;21732:8;;21741:1;;21732:11;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;21732:42:0::1;;;21679:96;:147;;;;;21820:4;-1:-1:-1::0;;;;;21797:28:0::1;:8;21806:1;21797:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;21797:28:0::1;;;21679:147;21657:217;;;21870:4;21842:12;:25;21855:8;21864:1;21855:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;21842:25:0::1;-1:-1:-1::0;;;;;21842:25:0::1;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21657:217;21637:3:::0;::::1;::::0;::::1;:::i;:::-;;;;21596:290;;24700:526:::0;604:13;:11;:13::i;:::-;24795:4:::1;-1:-1:-1::0;;;;;24780:20:0;::::1;::::0;24772:58:::1;;;::::0;-1:-1:-1;;;24772:58:0;;8642:2:1;24772:58:0::1;::::0;::::1;8624:21:1::0;8681:2;8661:18;;;8654:30;8720:27;8700:18;;;8693:55;8765:18;;24772:58:0::1;8440:349:1::0;24772:58:0::1;24841:12;-1:-1:-1::0;;;;;24868:17:0;::::1;24864:355;;24914:90;::::0;24922:10:::1;::::0;24964:21:::1;::::0;24914:90:::1;::::0;;;24964:21;24922:10;24914:90:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24700:526:0:o;24864:355::-:1;25043:36;::::0;-1:-1:-1;;;25043:36:0;;25073:4:::1;25043:36;::::0;::::1;2596:51:1::0;25082:1:0::1;::::0;-1:-1:-1;;;;;25043:21:0;::::1;::::0;::::1;::::0;2569:18:1;;25043:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;25035:49;;;::::0;::::1;;25116:36;::::0;-1:-1:-1;;;25116:36:0;;25146:4:::1;25116:36;::::0;::::1;2596:51:1::0;25099:14:0::1;::::0;-1:-1:-1;;;;;25116:21:0;::::1;::::0;::::1;::::0;2569:18:1;;25116:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25167:40;::::0;-1:-1:-1;;;25167:40:0;;25188:10:::1;25167:40;::::0;::::1;9157:51:1::0;9224:18;;;9217:34;;;25099:53:0;;-1:-1:-1;;;;;;25167:20:0;::::1;::::0;::::1;::::0;9130:18:1;;25167:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25020:199;24761:465;24700:526:::0;:::o;17592:1256::-;604:13;:11;:13::i;:::-;17666:11:::1;::::0;::::1;;17665:12;17657:48;;;::::0;-1:-1:-1;;;17657:48:0;;9714:2:1;17657:48:0::1;::::0;::::1;9696:21:1::0;9753:2;9733:18;;;9726:30;9792:25;9772:18;;;9765:53;9835:18;;17657:48:0::1;9512:347:1::0;17657:48:0::1;17734:2;17724:6;:12;;17716:46;;;::::0;-1:-1:-1;;;17716:46:0;;10066:2:1;17716:46:0::1;::::0;::::1;10048:21:1::0;10105:2;10085:18;;;10078:30;-1:-1:-1;;;10124:18:1;;;10117:51;10185:18;;17716:46:0::1;9864:345:1::0;17716:46:0::1;17775:18;:107:::0;;-1:-1:-1;;;;;;17775:107:0::1;17829:42;17775:107:::0;;::::1;::::0;;;17895:67:::1;::::0;17912:4:::1;::::0;17948:13:::1;5816:12:::0;;;5728:108;17895:67:::1;18008:18;;;;;;;;;-1:-1:-1::0;;;;;18008:18:0::1;-1:-1:-1::0;;;;;18008:26:0::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17990:72:0::1;;18071:4;18078:18;;;;;;;;;-1:-1:-1::0;;;;;18078:18:0::1;-1:-1:-1::0;;;;;18078:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17990:114;::::0;-1:-1:-1;;;;;;17990:114:0::1;::::0;;;;;;-1:-1:-1;;;;;10700:15:1;;;17990:114:0::1;::::0;::::1;10682:34:1::0;10752:15;;10732:18;;;10725:43;10617:18;;17990:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17973:14;:131:::0;;-1:-1:-1;;;;;17973:131:0;;::::1;-1:-1:-1::0;;;;;;17973:131:0;;::::1;;::::0;;18115:18:::1;::::0;::::1;:34;18157:21;18202:4;18222:24;18202:4:::0;-1:-1:-1;;;;;5995:18:0;5963:7;5995:18;;;;;;;;;;;;5844:177;18222:24:::1;18261:1;18277::::0;18293:7:::1;718:6:::0;;-1:-1:-1;;;;;718:6:0;;645:87;18293:7:::1;18115:226;::::0;::::1;::::0;;;-1:-1:-1;;;;;;18115:226:0;;;-1:-1:-1;;;;;11138:15:1;;;18115:226:0::1;::::0;::::1;11120:34:1::0;11170:18;;;11163:34;;;;11213:18;;;11206:34;;;;11256:18;;;11249:34;11320:15;;;11299:19;;;11292:44;18315:15:0::1;11352:19:1::0;;;11345:35;11054:19;;18115:226:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18359:14:0::1;::::0;18405:18:::1;::::0;18352:115:::1;::::0;-1:-1:-1;;;18352:115:0;;-1:-1:-1;;;;;18405:18:0;;::::1;18352:115;::::0;::::1;9157:51:1::0;-1:-1:-1;;9224:18:1;;;9217:34;18359:14:0;::::1;::::0;-1:-1:-1;18352:30:0::1;::::0;9130:18:1;;18352:115:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18495:29;18520:3;18495:20;18513:1;18495:13;5816:12:::0;;;5728:108;18495:29:::1;18480:12;:44:::0;18551:29:::1;18576:3;18551:20;18569:1;18551:13;5816:12:::0;;;5728:108;18551:29:::1;18535:13;:45:::0;18609:29:::1;18634:3;18609:20;18627:1;18609:13;5816:12:::0;;;5728:108;18609:29:::1;18591:15;:47:::0;18671:31:::1;18696:5;18671:20;18689:1;18671:13;5816:12:::0;;;5728:108;18671:31:::1;18649:19;:53:::0;18713:11:::1;:18:::0;;-1:-1:-1;;18742:18:0;;;;;18790:12:::1;18771:16;:31:::0;-1:-1:-1;18813:27:0;17592:1256::o;6271:201::-;-1:-1:-1;;;;;6437:18:0;;;6405:7;6437:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6271:201::o;19054:107::-;604:13;:11;:13::i;:::-;19126:19:::1;:27:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;19126:27:0;;::::1;::::0;;;::::1;::::0;;19054:107::o;18856:91::-;604:13;:11;:13::i;:::-;18920:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18920:19:0;;::::1;::::0;;;::::1;::::0;;18856:91::o;19453:282::-;604:13;:11;:13::i;:::-;19572:30:::1;19597:4;19572:20;19590:1;19572:13;5816:12:::0;;;5728:108;19572:30:::1;19553:14;:50;;19531:155;;;::::0;-1:-1:-1;;;19531:155:0;;11904:2:1;19531:155:0::1;::::0;::::1;11886:21:1::0;11943:2;11923:18;;;11916:30;11982:34;11962:18;;;11955:62;12053:25;12033:18;;;12026:53;12096:19;;19531:155:0::1;11702:419:1::0;19531:155:0::1;19697:13;:30:::0;19453:282::o;991:238::-;604:13;:11;:13::i;:::-;-1:-1:-1;;;;;1094:22:0;::::1;1072:110;;;::::0;-1:-1:-1;;;1072:110:0;;12328:2:1;1072:110:0::1;::::0;::::1;12310:21:1::0;12367:2;12347:18;;;12340:30;12406:34;12386:18;;;12379:62;-1:-1:-1;;;12457:18:1;;;12450:36;12503:19;;1072:110:0::1;12126:402:1::0;1072:110:0::1;1193:28;1212:8;1193:18;:28::i;:::-;991:238:::0;:::o;19169:276::-;604:13;:11;:13::i;:::-;19285:30:::1;19310:4;19285:20;19303:1;19285:13;5816:12:::0;;;5728:108;19285:30:::1;19267:13;:49;;19245:153;;;::::0;-1:-1:-1;;;19245:153:0;;12735:2:1;19245:153:0::1;::::0;::::1;12717:21:1::0;12774:2;12754:18;;;12747:30;12813:34;12793:18;;;12786:62;-1:-1:-1;;;12864:18:1;;;12857:52;12926:19;;19245:153:0::1;12533:418:1::0;19245:153:0::1;19409:12;:28:::0;19169:276::o;9590:380::-;-1:-1:-1;;;;;9726:19:0;;9718:68;;;;-1:-1:-1;;;9718:68:0;;13158:2:1;9718:68:0;;;13140:21:1;13197:2;13177:18;;;13170:30;13236:34;13216:18;;;13209:62;-1:-1:-1;;;13287:18:1;;;13280:34;13331:19;;9718:68:0;12956:400:1;9718:68:0;-1:-1:-1;;;;;9805:21:0;;9797:68;;;;-1:-1:-1;;;9797:68:0;;13563:2:1;9797:68:0;;;13545:21:1;13602:2;13582:18;;;13575:30;13641:34;13621:18;;;13614:62;-1:-1:-1;;;13692:18:1;;;13685:32;13734:19;;9797:68:0;13361:398:1;9797:68:0;-1:-1:-1;;;;;9878:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9930:32;;1685:25:1;;;9930:32:0;;1658:18:1;9930:32:0;;;;;;;9590:380;;;:::o;740:132::-;718:6;;-1:-1:-1;;;;;718:6:0;173:10;804:23;796:68;;;;-1:-1:-1;;;796:68:0;;13966:2:1;796:68:0;;;13948:21:1;;;13985:18;;;13978:30;14044:34;14024:18;;;14017:62;14096:18;;796:68:0;13764:356:1;9978:502:0;10113:24;10140:25;10150:5;10157:7;10140:9;:25::i;:::-;10113:52;;-1:-1:-1;;10180:16:0;:37;10176:297;;10280:6;10260:16;:26;;10234:117;;;;-1:-1:-1;;;10234:117:0;;14327:2:1;10234:117:0;;;14309:21:1;14366:2;14346:18;;;14339:30;14405:31;14385:18;;;14378:59;14454:18;;10234:117:0;14125:353:1;10234:117:0;10395:51;10404:5;10411:7;10439:6;10420:16;:25;10395:8;:51::i;13751:2655::-;-1:-1:-1;;;;;13883:20:0;;13875:70;;;;-1:-1:-1;;;13875:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13964:18:0;;13956:66;;;;-1:-1:-1;;;13956:66:0;;;;;;;:::i;:::-;14050:1;14041:6;:10;14033:64;;;;-1:-1:-1;;;14033:64:0;;15495:2:1;14033:64:0;;;15477:21:1;15534:2;15514:18;;;15507:30;15573:34;15553:18;;;15546:62;-1:-1:-1;;;15624:18:1;;;15617:39;15673:19;;14033:64:0;15293:405:1;14033:64:0;14174:14;;14125:4;;14110:12;;-1:-1:-1;;;;;14166:22:0;;;14174:14;;14166:22;14165:173;;14247:14;;-1:-1:-1;;;;;14241:20:0;;;14247:14;;14241:20;14240:98;;14314:24;14165:173;;14240:98;14278:20;14165:173;;;14205:19;14165:173;14140:198;;14375:7;718:6;;-1:-1:-1;;;;;718:6:0;;645:87;14375:7;-1:-1:-1;;;;;14367:15:0;:4;-1:-1:-1;;;;;14367:15:0;;;:45;;;;-1:-1:-1;718:6:0;;-1:-1:-1;;;;;14399:13:0;;;718:6;;14399:13;;14367:45;:80;;;;-1:-1:-1;;;;;;14429:18:0;;;;14367:80;:118;;;;-1:-1:-1;;;;;;14464:21:0;;14478:6;14464:21;;14367:118;:145;;;;-1:-1:-1;14503:9:0;;;;;;;14502:10;14367:145;14349:1349;;;-1:-1:-1;;;;;14548:18:0;;;;;;:12;:18;;;;;;;;14547:19;:40;;;;-1:-1:-1;;;;;;14571:16:0;;;;;;:12;:16;;;;;;;;14570:17;14547:40;14539:65;;;;-1:-1:-1;;;14539:65:0;;15905:2:1;14539:65:0;;;15887:21:1;15944:2;15924:18;;;15917:30;-1:-1:-1;;;15963:18:1;;;15956:42;16015:18;;14539:65:0;15703:336:1;14539:65:0;14626:11;;;;14621:184;;-1:-1:-1;;;;;14686:23:0;;;;;;:17;:23;;;;;;;;;:48;;-1:-1:-1;;;;;;14713:21:0;;;;;;:17;:21;;;;;;;;14686:48;14656:149;;;;-1:-1:-1;;;14656:149:0;;16246:2:1;14656:149:0;;;16228:21:1;16285:2;16265:18;;;16258:30;16324:29;16304:18;;;16297:57;16371:18;;14656:149:0;16044:351:1;14656:149:0;14854:19;14844:6;:29;;;;;;;;:::i;:::-;;:83;;;;-1:-1:-1;14908:18:0;;-1:-1:-1;;;;;14894:33:0;;;14908:18;;14894:33;;14844:83;:133;;;;-1:-1:-1;;;;;;14949:28:0;;;;;;:24;:28;;;;;;;;14948:29;14844:133;14822:516;;;15052:12;;15042:6;:22;;15012:137;;;;-1:-1:-1;;;15012:137:0;;16734:2:1;15012:137:0;;;16716:21:1;16773:2;16753:18;;;16746:30;16812:34;16792:18;;;16785:62;-1:-1:-1;;;16863:18:1;;;16856:39;16912:19;;15012:137:0;16532:405:1;15012:137:0;15227:15;;15198:25;15216:6;15198:13;15208:2;-1:-1:-1;;;;;5995:18:0;5963:7;5995:18;;;;;;;;;;;;5844:177;15198:13;:17;;:25::i;:::-;:44;;15168:154;;;;-1:-1:-1;;;15168:154:0;;17144:2:1;15168:154:0;;;17126:21:1;17183:2;17163:18;;;17156:30;17222:34;17202:18;;;17195:62;-1:-1:-1;;;17273:18:1;;;17266:34;17317:19;;15168:154:0;16942:400:1;15168:154:0;15386:20;15376:6;:30;;;;;;;;:::i;:::-;;:86;;;;-1:-1:-1;15443:18:0;;-1:-1:-1;;;;;15427:35:0;;;15443:18;;15427:35;;15376:86;:138;;;;-1:-1:-1;;;;;;15484:30:0;;;;;;:24;:30;;;;;;;;15483:31;15376:138;15354:332;;;15587:13;;15577:6;:23;;15547:139;;;;-1:-1:-1;;;15547:139:0;;17549:2:1;15547:139:0;;;17531:21:1;17588:2;17568:18;;;17561:30;17627:34;17607:18;;;17600:62;-1:-1:-1;;;17678:18:1;;;17671:40;17728:19;;15547:139:0;17347:406:1;15547:139:0;-1:-1:-1;;;;;15728:23:0;;;;;;:17;:23;;;;;;;;;:61;;-1:-1:-1;;;;;;15768:21:0;;;;;;:17;:21;;;;;;;;15728:61;:90;;;-1:-1:-1;15807:11:0;;;;;;;15806:12;15728:90;:167;;;-1:-1:-1;15837:19:0;;;;;;;15836:20;:58;;;;-1:-1:-1;15870:24:0;15860:6;:34;;;;;;;;:::i;:::-;;15836:58;15710:212;;;15917:5;15907:15;;15710:212;15979:4;15935:23;5995:18;;;;;;;;;;;15935:50;;15996:12;16030:19;;16012:15;:37;16011:88;;;;-1:-1:-1;16078:20:0;16068:6;:30;;;;;;;;:::i;:::-;;16011:88;15996:103;;16130:7;:35;;;;-1:-1:-1;16154:11:0;;;;;;;16130:35;:62;;;;-1:-1:-1;16183:9:0;;;;;;;16182:10;16130:62;:103;;;;-1:-1:-1;;;;;;16210:23:0;;;;;;:17;:23;;;;;;;;16209:24;16130:103;:142;;;;-1:-1:-1;;;;;;16251:21:0;;;;;;:17;:21;;;;;;;;16250:22;16130:142;16112:225;;;16299:26;16309:15;16299:9;:26::i;:::-;16349:49;16364:4;16370:2;16374:6;16382:7;16391:6;16349:14;:49::i;:::-;13864:2542;;;;13751:2655;;;:::o;2947:98::-;3005:7;3032:5;3036:1;3032;:5;:::i;:::-;3025:12;2947:98;-1:-1:-1;;;2947:98:0:o;3053:::-;3111:7;3138:5;3142:1;3138;:5;:::i;16932:532::-;17074:16;;;17088:1;17074:16;;;;;;;;17050:21;;17074:16;;;;;;;;;;-1:-1:-1;17074:16:0;17050:40;;17119:4;17101;17106:1;17101:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17101:23:0;;;:7;;;;;;;;;;:23;;;;17145:18;;:25;;;-1:-1:-1;;;17145:25:0;;;;:18;;;;;:23;;:25;;;;;17101:7;;17145:25;;;;;:18;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17135:4;17140:1;17135:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17135:35:0;;;:7;;;;;;;;;:35;17213:18;;17181:65;;17198:4;;17213:18;17234:11;17181:8;:65::i;:::-;17257:18;;:199;;-1:-1:-1;;;17257:199:0;;-1:-1:-1;;;;;17257:18:0;;;;:69;;:199;;17341:11;;17257:18;;17383:4;;17410;;17430:15;;17257:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17039:425;16932:532;:::o;1237:191::-;1330:6;;;-1:-1:-1;;;;;1347:17:0;;;-1:-1:-1;;;;;;1347:17:0;;;;;;;1380:40;;1330:6;;;1347:17;1330:6;;1380:40;;1311:16;;1380:40;1300:128;1237:191;:::o;2735:98::-;2793:7;2820:5;2824:1;2820;:5;:::i;16414:510::-;13134:9;:16;;-1:-1:-1;;13134:16:0;;;;;;16520:20;;;:42:::1;;-1:-1:-1::0;16544:13:0::1;::::0;:18;16520:42:::1;16516:55;;;16564:7;;;16516:55;16605:19;::::0;:26:::1;::::0;16629:1:::1;16605:23;:26::i;:::-;16587:15;:44;16583:107;;;16664:19;::::0;:26:::1;::::0;16688:1:::1;16664:23;:26::i;:::-;16646:44;;16583:107;16703:68;16755:15;16703:51;:68::i;:::-;16800:1;16784:13;:17:::0;;;16836:16:::1;::::0;16828:88:::1;::::0;-1:-1:-1;;;;;16836:16:0;;::::1;::::0;16880:21:::1;::::0;16828:88;;16800:1;16828:88;16880:21;16836:16;16828:88:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;13161:1:0::1;-1:-1:-1::0;13173:9:0;:17;;-1:-1:-1;;13173:17:0;;;16414:510::o;22772:378::-;22962:7;22957:87;;22971:15;:13;:15::i;:::-;22957:87;;;23011:33;23021:6;23029;23037;23011:9;:33::i;:::-;23002:42;;22957:87;23057:42;23073:6;23081:9;23092:6;23057:15;:42::i;:::-;23117:7;23112:30;;23126:16;22644:18;;22632:9;:30;22686:19;;22673:10;:32;22733:23;;22716:14;:40;22586:178;22240:338;22289:9;;:14;:33;;;;-1:-1:-1;22307:10:0;;:15;22289:33;:56;;;;-1:-1:-1;22326:14:0;;:19;22289:56;22285:69;;;22240:338::o;22285:69::-;22387:9;;;22366:18;:30;22429:10;;;22407:19;:32;22476:14;;;22450:23;:40;-1:-1:-1;22503:13:0;;;;22527:14;;;;22552:18;22240:338::o;23158:768::-;23285:7;23352:12;23309:40;23330:18;;23309:16;;:20;;:40;;;;:::i;:::-;:55;23305:313;;;23366:9;23983:3;23973:7;:13;;;23997:10;:20;23934:91;23366:9;23305:313;;;23405:20;23395:6;:30;;;;;;;;:::i;:::-;;23391:227;;23427:10;24083;;24073:7;:20;;;24104:10;:20;24033:99;23391:227;23467:19;23457:6;:29;;;;;;;;:::i;:::-;;23453:165;;23488:9;24189;;24179:7;:19;;;24209:10;:20;24140:97;23453:165;23527:24;23517:6;:34;;;;;;;;:::i;:::-;;23513:105;;23553:14;24299;;24289:7;:24;;;24324:10;:20;24245:107;23513:105;23583:35;;-1:-1:-1;;;23583:35:0;;19340:2:1;23583:35:0;;;19322:21:1;19379:2;19359:18;;;19352:30;19418:27;19398:18;;;19391:55;19463:18;;23583:35:0;19138:349:1;23513:105:0;23658:10;;23631:12;;23658:14;23654:160;;23696:39;12472:4;23696:22;23707:10;;23696:6;:10;;:22;;;;:::i;:39::-;23689:46;;23767:35;23791:10;;23768:17;23777:7;;23768:4;:8;;:17;;;;:::i;23767:35::-;23750:13;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;23654:160:0;23830:8;;23826:58;;23840:44;23856:6;23872:4;23879;23840:15;:44::i;:::-;23904:14;23914:4;23904:14;;:::i;:::-;;23158:768;-1:-1:-1;;;;;23158:768:0:o;7824:712::-;-1:-1:-1;;;;;7955:18:0;;7947:68;;;;-1:-1:-1;;;7947:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8034:16:0;;8026:64;;;;-1:-1:-1;;;8026:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8176:15:0;;8154:19;8176:15;;;;;;;;;;;8224:21;;;;8202:109;;;;-1:-1:-1;;;8202:109:0;;19827:2:1;8202:109:0;;;19809:21:1;19866:2;19846:18;;;19839:30;19905:34;19885:18;;;19878:62;-1:-1:-1;;;19956:18:1;;;19949:36;20002:19;;8202:109:0;19625:402:1;8202:109:0;-1:-1:-1;;;;;8347:15:0;;;:9;:15;;;;;;;;;;;8365:20;;;8347:38;;8400:13;;;;;;;;;;:23;;;;;;8452:26;;1685:25:1;;;8400:13:0;;8452:26;;1658:18:1;8452:26:0;;;;;;;8491:37;21271:232;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:180::-;1413:6;1466:2;1454:9;1445:7;1441:23;1437:32;1434:52;;;1482:1;1479;1472:12;1434:52;-1:-1:-1;1505:23:1;;1354:180;-1:-1:-1;1354:180:1:o;1721:247::-;1780:6;1833:2;1821:9;1812:7;1808:23;1804:32;1801:52;;;1849:1;1846;1839:12;1801:52;1888:9;1875:23;1907:31;1932:5;1907:31;:::i;1973:456::-;2050:6;2058;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2174:9;2161:23;2193:31;2218:5;2193:31;:::i;:::-;2243:5;-1:-1:-1;2300:2:1;2285:18;;2272:32;2313:33;2272:32;2313:33;:::i;:::-;1973:456;;2365:7;;-1:-1:-1;;;2419:2:1;2404:18;;;;2391:32;;1973:456::o;2847:127::-;2908:10;2903:3;2899:20;2896:1;2889:31;2939:4;2936:1;2929:15;2963:4;2960:1;2953:15;2979:118;3065:5;3058:13;3051:21;3044:5;3041:32;3031:60;;3087:1;3084;3077:12;3102:128;3167:20;;3196:28;3167:20;3196:28;:::i;3235:1191::-;3325:6;3333;3386:2;3374:9;3365:7;3361:23;3357:32;3354:52;;;3402:1;3399;3392:12;3354:52;3442:9;3429:23;3471:18;3512:2;3504:6;3501:14;3498:34;;;3528:1;3525;3518:12;3498:34;3566:6;3555:9;3551:22;3541:32;;3611:7;3604:4;3600:2;3596:13;3592:27;3582:55;;3633:1;3630;3623:12;3582:55;3669:2;3656:16;3691:4;3714:2;3710;3707:10;3704:36;;;3720:18;;:::i;:::-;3766:2;3763:1;3759:10;3798:2;3792:9;3861:2;3857:7;3852:2;3848;3844:11;3840:25;3832:6;3828:38;3916:6;3904:10;3901:22;3896:2;3884:10;3881:18;3878:46;3875:72;;;3927:18;;:::i;:::-;3963:2;3956:22;4013:18;;;4047:15;;;;-1:-1:-1;4089:11:1;;;4085:20;;;4117:19;;;4114:39;;;4149:1;4146;4139:12;4114:39;4173:11;;;;4193:148;4209:6;4204:3;4201:15;4193:148;;;4275:23;4294:3;4275:23;:::i;:::-;4263:36;;4226:12;;;;4319;;;;4193:148;;;4360:6;-1:-1:-1;4385:35:1;;-1:-1:-1;4401:18:1;;;4385:35;:::i;:::-;4375:45;;;;;;3235:1191;;;;;:::o;4639:241::-;4695:6;4748:2;4736:9;4727:7;4723:23;4719:32;4716:52;;;4764:1;4761;4754:12;4716:52;4803:9;4790:23;4822:28;4844:5;4822:28;:::i;4885:388::-;4953:6;4961;5014:2;5002:9;4993:7;4989:23;4985:32;4982:52;;;5030:1;5027;5020:12;4982:52;5069:9;5056:23;5088:31;5113:5;5088:31;:::i;:::-;5138:5;-1:-1:-1;5195:2:1;5180:18;;5167:32;5208:33;5167:32;5208:33;:::i;:::-;5260:7;5250:17;;;4885:388;;;;;:::o;5278:380::-;5357:1;5353:12;;;;5400;;;5421:61;;5475:4;5467:6;5463:17;5453:27;;5421:61;5528:2;5520:6;5517:14;5497:18;5494:38;5491:161;;5574:10;5569:3;5565:20;5562:1;5555:31;5609:4;5606:1;5599:15;5637:4;5634:1;5627:15;5491:161;;5278:380;;;:::o;6446:127::-;6507:10;6502:3;6498:20;6495:1;6488:31;6538:4;6535:1;6528:15;6562:4;6559:1;6552:15;6578:125;6643:9;;;6664:10;;;6661:36;;;6677:18;;:::i;6708:127::-;6769:10;6764:3;6760:20;6757:1;6750:31;6800:4;6797:1;6790:15;6824:4;6821:1;6814:15;6840:135;6879:3;6900:17;;;6897:43;;6920:18;;:::i;:::-;-1:-1:-1;6967:1:1;6956:13;;6840:135::o;8794:184::-;8864:6;8917:2;8905:9;8896:7;8892:23;8888:32;8885:52;;;8933:1;8930;8923:12;8885:52;-1:-1:-1;8956:16:1;;8794:184;-1:-1:-1;8794:184:1:o;9262:245::-;9329:6;9382:2;9370:9;9361:7;9357:23;9353:32;9350:52;;;9398:1;9395;9388:12;9350:52;9430:9;9424:16;9449:28;9471:5;9449:28;:::i;10214:251::-;10284:6;10337:2;10325:9;10316:7;10312:23;10308:32;10305:52;;;10353:1;10350;10343:12;10305:52;10385:9;10379:16;10404:31;10429:5;10404:31;:::i;11391:306::-;11479:6;11487;11495;11548:2;11536:9;11527:7;11523:23;11519:32;11516:52;;;11564:1;11561;11554:12;11516:52;11593:9;11587:16;11577:26;;11643:2;11632:9;11628:18;11622:25;11612:35;;11687:2;11676:9;11672:18;11666:25;11656:35;;11391:306;;;;;:::o;14483:401::-;14685:2;14667:21;;;14724:2;14704:18;;;14697:30;14763:34;14758:2;14743:18;;14736:62;-1:-1:-1;;;14829:2:1;14814:18;;14807:35;14874:3;14859:19;;14483:401::o;14889:399::-;15091:2;15073:21;;;15130:2;15110:18;;;15103:30;15169:34;15164:2;15149:18;;15142:62;-1:-1:-1;;;15235:2:1;15220:18;;15213:33;15278:3;15263:19;;14889:399::o;16400:127::-;16461:10;16456:3;16452:20;16449:1;16442:31;16492:4;16489:1;16482:15;16516:4;16513:1;16506:15;17758:168;17831:9;;;17862;;17879:15;;;17873:22;;17859:37;17849:71;;17900:18;;:::i;17931:217::-;17971:1;17997;17987:132;;18041:10;18036:3;18032:20;18029:1;18022:31;18076:4;18073:1;18066:15;18104:4;18101:1;18094:15;17987:132;-1:-1:-1;18133:9:1;;17931:217::o;18153:980::-;18415:4;18463:3;18452:9;18448:19;18494:6;18483:9;18476:25;18520:2;18558:6;18553:2;18542:9;18538:18;18531:34;18601:3;18596:2;18585:9;18581:18;18574:31;18625:6;18660;18654:13;18691:6;18683;18676:22;18729:3;18718:9;18714:19;18707:26;;18768:2;18760:6;18756:15;18742:29;;18789:1;18799:195;18813:6;18810:1;18807:13;18799:195;;;18878:13;;-1:-1:-1;;;;;18874:39:1;18862:52;;18969:15;;;;18934:12;;;;18910:1;18828:9;18799:195;;;-1:-1:-1;;;;;;;19050:32:1;;;;19045:2;19030:18;;19023:60;-1:-1:-1;;;19114:3:1;19099:19;19092:35;19011:3;18153:980;-1:-1:-1;;;18153:980:1:o;19492:128::-;19559:9;;;19580:11;;;19577:37;;;19594:18;;:::i

Swarm Source

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