ETH Price: $3,309.49 (+2.00%)
 

Overview

ETH Balance

29 wei

Eth Value

Less Than $0.01 (@ $3,309.49/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve213923302024-12-13 8:15:1149 days ago1734077711IN
0xD0a2E0DF...5171D36ec
0 ETH0.0003006512.36256938
Approve178475022023-08-05 8:13:11545 days ago1691223191IN
0xD0a2E0DF...5171D36ec
0 ETH0.0006128913.23973447
Approve177468802023-07-22 6:27:47559 days ago1690007267IN
0xD0a2E0DF...5171D36ec
0 ETH0.0008116617.41616742
Approve177457452023-07-22 2:39:47559 days ago1689993587IN
0xD0a2E0DF...5171D36ec
0 ETH0.0008176717.56772843
Approve177456892023-07-22 2:28:35559 days ago1689992915IN
0xD0a2E0DF...5171D36ec
0 ETH0.0012001725.75266462
Approve177450892023-07-22 0:28:11559 days ago1689985691IN
0xD0a2E0DF...5171D36ec
0 ETH0.0011298724.27550247
Approve177436962023-07-21 19:46:59560 days ago1689968819IN
0xD0a2E0DF...5171D36ec
0 ETH0.0018673640.33889314
Approve177434512023-07-21 18:57:47560 days ago1689965867IN
0xD0a2E0DF...5171D36ec
0 ETH0.0018627740.22915573
Approve177434122023-07-21 18:49:59560 days ago1689965399IN
0xD0a2E0DF...5171D36ec
0 ETH0.0022818548.96260179
Renounce Ownersh...177431872023-07-21 18:04:59560 days ago1689962699IN
0xD0a2E0DF...5171D36ec
0 ETH0.0012106751.92931004
Approve177431832023-07-21 18:04:11560 days ago1689962651IN
0xD0a2E0DF...5171D36ec
0 ETH0.0024359552.26931238
Update Max Tx Li...177431572023-07-21 17:58:47560 days ago1689962327IN
0xD0a2E0DF...5171D36ec
0 ETH0.0017684443.38147247
Approve177431422023-07-21 17:55:47560 days ago1689962147IN
0xD0a2E0DF...5171D36ec
0 ETH0.0022000747.20793507
Approve177431332023-07-21 17:53:59560 days ago1689962039IN
0xD0a2E0DF...5171D36ec
0 ETH0.0022009947.22760147
Update Max Tx Li...177431202023-07-21 17:51:23560 days ago1689961883IN
0xD0a2E0DF...5171D36ec
0 ETH0.0019168247.52486431
Approve177431202023-07-21 17:51:23560 days ago1689961883IN
0xD0a2E0DF...5171D36ec
0 ETH0.0023550.42486431
Approve177431192023-07-21 17:51:11560 days ago1689961871IN
0xD0a2E0DF...5171D36ec
0 ETH0.0022895449.1276521
Approve177431102023-07-21 17:49:23560 days ago1689961763IN
0xD0a2E0DF...5171D36ec
0 ETH0.0030292665
Approve177431102023-07-21 17:49:23560 days ago1689961763IN
0xD0a2E0DF...5171D36ec
0 ETH0.0030292665
Approve177431102023-07-21 17:49:23560 days ago1689961763IN
0xD0a2E0DF...5171D36ec
0 ETH0.0030292665
Approve177430852023-07-21 17:44:23560 days ago1689961463IN
0xD0a2E0DF...5171D36ec
0 ETH0.0020805444.64303279
Approve177430782023-07-21 17:42:59560 days ago1689961379IN
0xD0a2E0DF...5171D36ec
0 ETH0.0020330843.62472284
Approve177430752023-07-21 17:42:23560 days ago1689961343IN
0xD0a2E0DF...5171D36ec
0 ETH0.0020057343.03789356
Approve177430732023-07-21 17:41:59560 days ago1689961319IN
0xD0a2E0DF...5171D36ec
0 ETH0.001870640.24186451
Approve177430332023-07-21 17:33:59560 days ago1689960839IN
0xD0a2E0DF...5171D36ec
0 ETH0.0026172156.46395769
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
183708192023-10-17 14:54:23472 days ago1697554463
0xD0a2E0DF...5171D36ec
0.00150586 ETH
183708192023-10-17 14:54:23472 days ago1697554463
0xD0a2E0DF...5171D36ec
0.00150586 ETH
177468812023-07-22 6:27:59559 days ago1690007279
0xD0a2E0DF...5171D36ec
0.00181606 ETH
177468812023-07-22 6:27:59559 days ago1690007279
0xD0a2E0DF...5171D36ec
0.00181606 ETH
177464252023-07-22 4:56:23559 days ago1690001783
0xD0a2E0DF...5171D36ec
0.00211194 ETH
177464252023-07-22 4:56:23559 days ago1690001783
0xD0a2E0DF...5171D36ec
0.00211194 ETH
177451802023-07-22 0:46:23559 days ago1689986783
0xD0a2E0DF...5171D36ec
0.00249441 ETH
177451802023-07-22 0:46:23559 days ago1689986783
0xD0a2E0DF...5171D36ec
0.00249441 ETH
177438582023-07-21 20:19:23560 days ago1689970763
0xD0a2E0DF...5171D36ec
0.0027264 ETH
177438582023-07-21 20:19:23560 days ago1689970763
0xD0a2E0DF...5171D36ec
0.0027264 ETH
177433132023-07-21 18:30:11560 days ago1689964211
0xD0a2E0DF...5171D36ec
0.00328145 ETH
177433132023-07-21 18:30:11560 days ago1689964211
0xD0a2E0DF...5171D36ec
0.00328145 ETH
177433102023-07-21 18:29:35560 days ago1689964175
0xD0a2E0DF...5171D36ec
0.00381807 ETH
177433102023-07-21 18:29:35560 days ago1689964175
0xD0a2E0DF...5171D36ec
0.00381807 ETH
177431912023-07-21 18:05:47560 days ago1689962747
0xD0a2E0DF...5171D36ec
0.00379976 ETH
177431912023-07-21 18:05:47560 days ago1689962747
0xD0a2E0DF...5171D36ec
0.00379976 ETH
177431772023-07-21 18:02:59560 days ago1689962579
0xD0a2E0DF...5171D36ec
0.00367251 ETH
177431772023-07-21 18:02:59560 days ago1689962579
0xD0a2E0DF...5171D36ec
0.00367251 ETH
177431532023-07-21 17:57:59560 days ago1689962279
0xD0a2E0DF...5171D36ec
0.00398216 ETH
177431532023-07-21 17:57:59560 days ago1689962279
0xD0a2E0DF...5171D36ec
0.00398216 ETH
177431532023-07-21 17:57:59560 days ago1689962279
0xD0a2E0DF...5171D36ec
0.00433271 ETH
177431532023-07-21 17:57:59560 days ago1689962279
0xD0a2E0DF...5171D36ec
0.00433271 ETH
177431512023-07-21 17:57:35560 days ago1689962255
0xD0a2E0DF...5171D36ec
0.00446053 ETH
177431512023-07-21 17:57:35560 days ago1689962255
0xD0a2E0DF...5171D36ec
0.00446053 ETH
177430902023-07-21 17:45:23560 days ago1689961523
0xD0a2E0DF...5171D36ec
0.00310111 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UglySkankyDipshitsTethergreendildowenunpeggedstablecoin

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-21
*/

//SPDX-License-Identifier: UNLICENSED

// Telegram: https://t.me/USDTOfficialStableCoin
// Twitter: https://twitter.com/TheOfficialUSDT
// Website: https://officialusdt.vip/

pragma solidity ^0.8.7;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    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");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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 UglySkankyDipshitsTethergreendildowenunpeggedstablecoin is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private providingLiquidity = true;
    bool public tradingEnabled = false;

    uint256 public ThresholdAmount = 1e6 * 10**18;
    
    uint256 public maxBuyLimit = 1e7 * 10**18;
    uint256 public maxSellLimit = 1e7 * 10**18;
    uint256 public maxWalletLimit = 2e7 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 1;
    uint256 private launchtax = 90;

    address public marketingWallet = 0x06c5a921634dec73bCD8E0837ddb8e55B12a63f4;
    address public teamWallet = 0x06c5a921634dec73bCD8E0837ddb8e55B12a63f4; 
    address public developmentWallet = 0x06c5a921634dec73bCD8E0837ddb8e55B12a63f4;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 team;
        uint256 liquidity;
        uint256 development;       
    }

    Taxes public buyTaxes = Taxes(2, 0, 0, 0);
    Taxes public sellTaxes = Taxes(2, 0, 0, 0);

    mapping(address => bool) public exemptFee;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("UglySkankyDipshitsTethergreendildowenunpeggedstablecoin", "$USDT") {
        _tokengeneration(msg.sender, 1e9 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[owner()] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[developmentWallet] = true;
        exemptFee[teamWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0x06c5a921634dec73bCD8E0837ddb8e55B12a63f4] = true;

    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

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

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
           
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number <= genesis_block + deadline;

        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

        else if (recipient == pair && !useLaunchFee) {
            feeswap = sellTaxes.marketing + sellTaxes.team + sellTaxes.liquidity + sellTaxes.development;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap = buyTaxes.marketing + buyTaxes.team + buyTaxes.liquidity + buyTaxes.development;
            feesum = feeswap;
            currentTaxes = buyTaxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = ((amount * feesum) / 100);

        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
    
            if (feeswap > 0) {
                uint256 feeAmount = ((amount * feeswap) / 100);
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

        if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= ThresholdAmount) {
            if (ThresholdAmount > 1) {
                contractBalance = ThresholdAmount;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator;
            uint256 AmountToSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(AmountToSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 bnbToAddLiquidityWith = (unitBalance * swapTaxes.liquidity);

            if (bnbToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
            }

            uint256 marketingAmt = (unitBalance * 2 * swapTaxes.marketing);
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

            uint256 developmentAmt = (unitBalance * 2 * swapTaxes.development);
            if (developmentAmt > 0) {
                payable(developmentWallet).sendValue(developmentAmt);
            }

            uint256 teamAmt = (unitBalance * 2 * swapTaxes.team);
            if (teamAmt > 0) {
                payable(teamWallet).sendValue(teamAmt);
            }

        }
    }

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

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        providingLiquidity = state;
    }

    function updateTreshhold(uint256 new_amount) external onlyOwner {
        ThresholdAmount = new_amount * 10**decimals();
    }

        function SetBuyTaxes(
        uint256 _marketing,
        uint256 _team,
        uint256 _liquidity,
        uint256 _development
    ) external onlyOwner {
        require((_marketing + _team + _liquidity + _development) <= 10, "Must keep fees at 10% or less");
        buyTaxes.marketing = _marketing;
        buyTaxes.team = _team;
        buyTaxes.liquidity = _liquidity;
        buyTaxes.development = _development;
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _team,
        uint256 _liquidity,
        uint256 _development
    ) external onlyOwner {
        require((_marketing + _team + _liquidity + _development) <= 15, "Must keep fees at 15% or less");
        sellTaxes.marketing = _marketing;
        sellTaxes.team = _team;
        sellTaxes.liquidity = _liquidity;
        sellTaxes.development = _development;
    }

    function InitialTaxes() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        buyTaxes = Taxes(2, 0, 0, 0);
        sellTaxes = Taxes(2, 0, 0, 0);
    }
    
    function DefultTaxes() external onlyOwner {
        buyTaxes = Taxes(2, 0, 0, 0);
        sellTaxes = Taxes(2, 0, 0, 0);
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

   function enableTrading(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        genesis_block = block.number;
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Fee Address cannot be zero address");
        require(newWallet != address(this), "Fee Address cannot be CA");
        marketingWallet = newWallet;
    }

    function updateDevelopmentWallet(address newWallet) external onlyOwner {
        require(newWallet != address(this), "Fee Address cannot be CA");
        require(newWallet != address(0), "Fee Address cannot be zero address");
        developmentWallet = newWallet;
    }

    function updateTeamWallet(address newWallet) external onlyOwner {
        require(newWallet != address(this), "Fee Address cannot be CA");
        require(newWallet != address(0), "Fee Address cannot be zero address");
        teamWallet = newWallet;
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 1e7, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 1e7, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 2e7, "Cannot set max wallet amount lower than 1%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner()).transfer(contractETHBalance);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"},{"inputs":[],"name":"DefultTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_team","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_team","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ThresholdAmount","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":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b1916600160a81b17905569d3c21bcecceda10000006008556a084595161401484a0000006009819055600a556a108b2a2c28029094000000600b556001600d55605a600e55600f80546001600160a01b03199081167306c5a921634dec73bcd8e0837ddb8e55b12a63f49081179092556010805482168317905560118054909116909117905560026080819052600060a081905260c081905260e0819052601282905560138190556014819055601581905561018060405261010082905261012081905261014081905261016081905260169190915560178190556018819055601955348015620000fa57600080fd5b50604051806060016040528060378152602001620031c76037913960405180604001604052806005815260200164091554d11560da1b81525081600390805190602001906200014b9291906200055b565b508051620001619060049060208401906200055b565b5050506200017e620001786200044860201b60201c565b6200044c565b620001a733620001916012600a6200067c565b620001a190633b9aca006200073d565b6200049e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001fc57600080fd5b505afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000601565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028057600080fd5b505afa15801562000295573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bb919062000601565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200030457600080fd5b505af115801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f919062000601565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550306000908152601a6020526040808220805460ff199081166001908117909255600554851684528284208054821683179055600f54851684528284208054821683179055601154851684528284208054821683179055601054909416835290822080548416821790557f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e8880548416821790557306c5a921634dec73bcd8e0837ddb8e55b12a63f49091527f490543e24b7b19267c55e6be82e6c5eed1fa330c21fcf7d772b6cc310e43c0b98054909216179055620007b2565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005075760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805462000569906200075f565b90600052602060002090601f0160209004810192826200058d5760008555620005d8565b82601f10620005a857805160ff1916838001178555620005d8565b82800160010185558215620005d8579182015b82811115620005d8578251825591602001919060010190620005bb565b50620005e6929150620005ea565b5090565b5b80821115620005e65760008155600101620005eb565b6000602082840312156200061457600080fd5b81516001600160a01b03811681146200062c57600080fd5b9392505050565b600181815b80851115620006745781600019048211156200065857620006586200079c565b808516156200066657918102915b93841c939080029062000638565b509250929050565b60006200062c60ff841683600082620006985750600162000737565b81620006a75750600062000737565b8160018114620006c05760028114620006cb57620006eb565b600191505062000737565b60ff841115620006df57620006df6200079c565b50506001821b62000737565b5060208310610133831016604e8410600b841016171562000710575081810a62000737565b6200071c838362000633565b80600019048211156200073357620007336200079c565b0290505b92915050565b60008160001904831182151516156200075a576200075a6200079c565b500290565b600181811c908216806200077457607f821691505b602082108114156200079657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612a0580620007c26000396000f3fe6080604052600436106102765760003560e01c80637cb332bb1161014f578063aacebbe3116100c1578063e1b450ad1161007a578063e1b450ad1461078d578063f023f573146107ad578063f2fde38b146107cd578063f66895a3146107ed578063f887ea4014610810578063fbb63ac31461083057600080fd5b8063aacebbe3146106ac578063bcd5dd98146106cc578063c04a5414146106e2578063c5d32bb214610702578063d9788dc514610732578063dd62ed3e1461074757600080fd5b80638da5cb5b116101135780638da5cb5b146105f957806395d89b411461061757806397973a2b1461062c578063a457c2d71461064c578063a8aa1b311461066c578063a9059cbb1461068c57600080fd5b80637cb332bb1461054057806382aa7c681461056057806385141a7714610580578063864701a5146105965780638cd4426d146105d957600080fd5b806339509351116101e8578063652e2f04116101ac578063652e2f041461049357806366a88d96146104a95780636aa5b37f146104bf57806370a08231146104d5578063715018a61461050b57806375f0a8741461052057600080fd5b806339509351146103e557806340b28c2f146104055780634ada218b1461042557806359927044146104465780635d67fdda1461047e57600080fd5b806318160ddd1161023a57806318160ddd1461033f57806320800a001461035e57806323b872dd14610373578063274a533c14610393578063313ce567146103a9578063355496ca146103c557600080fd5b806306fdde0314610282578063095ea7b3146102ad5780630e375a5c146102dd578063105cafb6146102ff5780631340538f1461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610850565b6040516102a49190612642565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004612459565b6108e2565b60405190151581526020016102a4565b3480156102e957600080fd5b506102fd6102f8366004612485565b6108f9565b005b34801561030b57600080fd5b506102fd61031a366004612610565b610998565b34801561032b57600080fd5b506102fd61033a366004612563565b610a46565b34801561034b57600080fd5b506002545b6040519081526020016102a4565b34801561036a57600080fd5b506102fd610a8e565b34801561037f57600080fd5b506102cd61038e3660046123ea565b610b07565b34801561039f57600080fd5b50610350600c5481565b3480156103b557600080fd5b50604051601281526020016102a4565b3480156103d157600080fd5b506102fd6103e036600461242b565b610bb8565b3480156103f157600080fd5b506102cd610400366004612459565b610c0d565b34801561041157600080fd5b506102fd6104203660046123b1565b610c44565b34801561043157600080fd5b506007546102cd90600160b01b900460ff1681565b34801561045257600080fd5b50601054610466906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b34801561048a57600080fd5b506102fd610c9c565b34801561049f57600080fd5b50610350600a5481565b3480156104b557600080fd5b50610350600b5481565b3480156104cb57600080fd5b5061035060095481565b3480156104e157600080fd5b506103506104f0366004612370565b6001600160a01b031660009081526020819052604090205490565b34801561051757600080fd5b506102fd610d88565b34801561052c57600080fd5b50600f54610466906001600160a01b031681565b34801561054c57600080fd5b506102fd61055b366004612370565b610dbe565b34801561056c57600080fd5b506102fd61057b36600461259d565b610e59565b34801561058c57600080fd5b5061046661dead81565b3480156105a257600080fd5b506012546013546014546015546105b99392919084565b6040805194855260208501939093529183015260608201526080016102a4565b3480156105e557600080fd5b506102fd6105f4366004612459565b610ef9565b34801561060557600080fd5b506005546001600160a01b0316610466565b34801561062357600080fd5b50610297610fc4565b34801561063857600080fd5b506102fd610647366004612610565b610fd3565b34801561065857600080fd5b506102cd610667366004612459565b611081565b34801561067857600080fd5b50600754610466906001600160a01b031681565b34801561069857600080fd5b506102cd6106a7366004612459565b61111c565b3480156106b857600080fd5b506102fd6106c7366004612370565b611129565b3480156106d857600080fd5b5061035060085481565b3480156106ee57600080fd5b50601154610466906001600160a01b031681565b34801561070e57600080fd5b506102cd61071d366004612370565b601a6020526000908152604090205460ff1681565b34801561073e57600080fd5b506102fd6111c4565b34801561075357600080fd5b506103506107623660046123b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079957600080fd5b506102fd6107a83660046125b6565b6111ee565b3480156107b957600080fd5b506102fd6107c8366004612370565b61139b565b3480156107d957600080fd5b506102fd6107e8366004612370565b611436565b3480156107f957600080fd5b506016546017546018546019546105b99392919084565b34801561081c57600080fd5b50600654610466906001600160a01b031681565b34801561083c57600080fd5b506102fd61084b36600461259d565b6114d1565b60606003805461085f90612914565b80601f016020809104026020016040519081016040528092919081815260200182805461088b90612914565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050905090565b60006108ef338484611517565b5060015b92915050565b6005546001600160a01b0316331461092c5760405162461bcd60e51b8152600401610923906126d9565b60405180910390fd5b60005b82518110156109935781601a600085848151811061094f5761094f612980565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061098b8161294f565b91505061092f565b505050565b6005546001600160a01b031633146109c25760405162461bcd60e51b8152600401610923906126d9565b600f81836109d086886127b6565b6109da91906127b6565b6109e491906127b6565b1115610a325760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610923565b601693909355601791909155601855601955565b6005546001600160a01b03163314610a705760405162461bcd60e51b8152600401610923906126d9565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ab85760405162461bcd60e51b8152600401610923906126d9565b47610acb6005546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610b03573d6000803e3d6000fd5b5050565b6000610b1484848461163b565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b995760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610923565b610bad8533610ba886856128fd565b611517565b506001949350505050565b6005546001600160a01b03163314610be25760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108ef918590610ba89086906127b6565b6005546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610923906126d9565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610cc65760405162461bcd60e51b8152600401610923906126d9565b600754600160b01b900460ff1615610d205760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610923565b604080516080808201835260028083526000602080850182905284860182905260609485018290526012839055601382905560148290556015829055855193840186528284528301819052938201849052910182905260165560178190556018819055601955565b6005546001600160a01b03163314610db25760405162461bcd60e51b8152600401610923906126d9565b610dbc6000611c2f565b565b6005546001600160a01b03163314610de85760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b038116301415610e115760405162461bcd60e51b81526004016109239061270e565b6001600160a01b038116610e375760405162461bcd60e51b815260040161092390612697565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e835760405162461bcd60e51b8152600401610923906126d9565b600754600160b01b900460ff1615610edd5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610923565b6007805460ff60b01b1916600160b01b17905543600c55600d55565b6005546001600160a01b03163314610f235760405162461bcd60e51b8152600401610923906126d9565b816001600160a01b031663a9059cbb610f446005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610f8c57600080fd5b505af1158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109939190612580565b60606004805461085f90612914565b6005546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610923906126d9565b600a818361100b86886127b6565b61101591906127b6565b61101f91906127b6565b111561106d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610923565b601293909355601391909155601455601555565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111035760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610923565b6111123385610ba886856128fd565b5060019392505050565b60006108ef33848461163b565b6005546001600160a01b031633146111535760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b0381166111795760405162461bcd60e51b815260040161092390612697565b6001600160a01b0381163014156111a25760405162461bcd60e51b81526004016109239061270e565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d205760405162461bcd60e51b8152600401610923906126d9565b6005546001600160a01b031633146112185760405162461bcd60e51b8152600401610923906126d9565b6298968083101561127d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610923565b629896808210156112e35760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610923565b6301312d0081101561134a5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b6064820152608401610923565b6113566012600a612833565b61136090846128de565b60095561136f6012600a612833565b61137990836128de565b600a55601261138990600a612833565b61139390826128de565b600b55505050565b6005546001600160a01b031633146113c55760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b0381163014156113ee5760405162461bcd60e51b81526004016109239061270e565b6001600160a01b0381166114145760405162461bcd60e51b815260040161092390612697565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114605760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b0381166114c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610923565b6114ce81611c2f565b50565b6005546001600160a01b031633146114fb5760405162461bcd60e51b8152600401610923906126d9565b6115076012600a612833565b61151190826128de565b60085550565b6001600160a01b0383166115795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610923565b6001600160a01b0382166115da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610923565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161169d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610923565b6001600160a01b0383166000908152601a602052604090205460ff161580156116df57506001600160a01b0382166000908152601a602052604090205460ff16155b1561173357600754600160b01b900460ff166117335760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610923565b6007546001600160a01b03848116911614801561176957506001600160a01b0382166000908152601a602052604090205460ff16155b801561177f5750600754600160a01b900460ff16155b15611851576009548111156117d65760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610923565b600b54816117f9846001600160a01b031660009081526020819052604090205490565b61180391906127b6565b11156118515760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610923565b6007546001600160a01b0384811691161480159061188857506001600160a01b0382166000908152601a602052604090205460ff16155b80156118ad57506001600160a01b0383166000908152601a602052604090205460ff16155b80156118c35750600754600160a01b900460ff16155b156119aa57600a5481111561191a5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610923565b6007546001600160a01b038381169116146119aa57600b5481611952846001600160a01b031660009081526020819052604090205490565b61195c91906127b6565b11156119aa5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610923565b60008060006119da6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611a1c57506001600160a01b0387166000908152601a602052604090205460ff16155b8015611a375750600d54600c54611a3391906127b6565b4311155b600754909150600160a01b900460ff1680611a6a57506001600160a01b0388166000908152601a602052604090205460ff165b80611a8d57506001600160a01b0387166000908152601a602052604090205460ff165b15611a9b5760009250611b8f565b6007546001600160a01b038881169116148015611ab6575080155b15611b1b57601954601854601754601654611ad191906127b6565b611adb91906127b6565b611ae591906127b6565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611b8f565b80611b8057601554601454601354601254611b3691906127b6565b611b4091906127b6565b611b4a91906127b6565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611b8f565b8015611b8f57600e5494508493505b6064611b9b85886128de565b611ba591906127ce565b600754909350600160a81b900460ff168015611bcf57506007546001600160a01b03898116911614155b15611bde57611bde8583611c81565b611bf28888611bed868a6128fd565b611e3a565b8215611c25578415611c255760006064611c0c87896128de565b611c1691906127ce565b9050611c23893083611e3a565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610b03576007805460ff60a01b1916600160a01b17905581611caf57611e29565b306000908152602081905260409020546008548110611e275760016008541115611cd857506008545b6000611ce58460026128de565b9050600081846040015184611cfa91906128de565b611d0491906127ce565b90506000611d1282856128fd565b905047611d1e82612012565b6000611d2a82476128fd565b90506000876040015186611d3e91906128fd565b611d4890836127ce565b90506000886040015182611d5c91906128de565b90508015611d6e57611d6e868261217b565b8851600090611d7e8460026128de565b611d8891906128de565b90508015611da657600f54611da6906001600160a01b03168261223c565b60608a0151600090611db98560026128de565b611dc391906128de565b90508015611de157601154611de1906001600160a01b03168261223c565b60208b0151600090611df48660026128de565b611dfe91906128de565b90508015611e1c57601054611e1c906001600160a01b03168261223c565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611e9e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610923565b6001600160a01b038216611f005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610923565b6001600160a01b03831660009081526020819052604090205481811015611f785760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610923565b611f8282826128fd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611fb89084906127b6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161200491815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061204757612047612980565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561209b57600080fd5b505afa1580156120af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d39190612394565b816001815181106120e6576120e6612980565b6001600160a01b03928316602091820292909201015260065461210c9130911684611517565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612145908590600090869030904290600401612745565b600060405180830381600087803b15801561215f57600080fd5b505af1158015612173573d6000803e3d6000fd5b505050505050565b6006546121939030906001600160a01b031684611517565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b1580156121fc57600080fd5b505af1158015612210573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061223591906125e2565b5050505050565b8047101561228c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610923565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146122d9576040519150601f19603f3d011682016040523d82523d6000602084013e6122de565b606091505b50509050806109935760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610923565b8035612360816129ac565b919050565b8035612360816129c1565b60006020828403121561238257600080fd5b813561238d816129ac565b9392505050565b6000602082840312156123a657600080fd5b815161238d816129ac565b600080604083850312156123c457600080fd5b82356123cf816129ac565b915060208301356123df816129ac565b809150509250929050565b6000806000606084860312156123ff57600080fd5b833561240a816129ac565b9250602084013561241a816129ac565b929592945050506040919091013590565b6000806040838503121561243e57600080fd5b8235612449816129ac565b915060208301356123df816129c1565b6000806040838503121561246c57600080fd5b8235612477816129ac565b946020939093013593505050565b6000806040838503121561249857600080fd5b823567ffffffffffffffff808211156124b057600080fd5b818501915085601f8301126124c457600080fd5b81356020828211156124d8576124d8612996565b8160051b604051601f19603f830116810181811086821117156124fd576124fd612996565b604052838152828101945085830182870184018b101561251c57600080fd5b600096505b848710156125465761253281612355565b865260019690960195948301948301612521565b5096506125569050878201612365565b9450505050509250929050565b60006020828403121561257557600080fd5b813561238d816129c1565b60006020828403121561259257600080fd5b815161238d816129c1565b6000602082840312156125af57600080fd5b5035919050565b6000806000606084860312156125cb57600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156125f757600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561262657600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561266f57858101830151858201604001528201612653565b81811115612681576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f46656520416464726573732063616e6e6f742062652043410000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127955784516001600160a01b031683529383019391830191600101612770565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127c9576127c961296a565b500190565b6000826127eb57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561282b5781600019048211156128115761281161296a565b8085161561281e57918102915b93841c93908002906127f5565b509250929050565b600061238d60ff84168360008261284c575060016108f3565b81612859575060006108f3565b816001811461286f576002811461287957612895565b60019150506108f3565b60ff84111561288a5761288a61296a565b50506001821b6108f3565b5060208310610133831016604e8410600b84101617156128b8575081810a6108f3565b6128c283836127f0565b80600019048211156128d6576128d661296a565b029392505050565b60008160001904831182151516156128f8576128f861296a565b500290565b60008282101561290f5761290f61296a565b500390565b600181811c9082168061292857607f821691505b6020821081141561294957634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129635761296361296a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146114ce57600080fd5b80151581146114ce57600080fdfea2646970667358221220c613118ce3cabbbc441e9b00adc1f7dd1cdde437938e3ec8ded10d706e2b1c4864736f6c6343000807003355676c79536b616e6b794469707368697473546574686572677265656e64696c646f77656e756e706567676564737461626c65636f696e

Deployed Bytecode

0x6080604052600436106102765760003560e01c80637cb332bb1161014f578063aacebbe3116100c1578063e1b450ad1161007a578063e1b450ad1461078d578063f023f573146107ad578063f2fde38b146107cd578063f66895a3146107ed578063f887ea4014610810578063fbb63ac31461083057600080fd5b8063aacebbe3146106ac578063bcd5dd98146106cc578063c04a5414146106e2578063c5d32bb214610702578063d9788dc514610732578063dd62ed3e1461074757600080fd5b80638da5cb5b116101135780638da5cb5b146105f957806395d89b411461061757806397973a2b1461062c578063a457c2d71461064c578063a8aa1b311461066c578063a9059cbb1461068c57600080fd5b80637cb332bb1461054057806382aa7c681461056057806385141a7714610580578063864701a5146105965780638cd4426d146105d957600080fd5b806339509351116101e8578063652e2f04116101ac578063652e2f041461049357806366a88d96146104a95780636aa5b37f146104bf57806370a08231146104d5578063715018a61461050b57806375f0a8741461052057600080fd5b806339509351146103e557806340b28c2f146104055780634ada218b1461042557806359927044146104465780635d67fdda1461047e57600080fd5b806318160ddd1161023a57806318160ddd1461033f57806320800a001461035e57806323b872dd14610373578063274a533c14610393578063313ce567146103a9578063355496ca146103c557600080fd5b806306fdde0314610282578063095ea7b3146102ad5780630e375a5c146102dd578063105cafb6146102ff5780631340538f1461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610850565b6040516102a49190612642565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004612459565b6108e2565b60405190151581526020016102a4565b3480156102e957600080fd5b506102fd6102f8366004612485565b6108f9565b005b34801561030b57600080fd5b506102fd61031a366004612610565b610998565b34801561032b57600080fd5b506102fd61033a366004612563565b610a46565b34801561034b57600080fd5b506002545b6040519081526020016102a4565b34801561036a57600080fd5b506102fd610a8e565b34801561037f57600080fd5b506102cd61038e3660046123ea565b610b07565b34801561039f57600080fd5b50610350600c5481565b3480156103b557600080fd5b50604051601281526020016102a4565b3480156103d157600080fd5b506102fd6103e036600461242b565b610bb8565b3480156103f157600080fd5b506102cd610400366004612459565b610c0d565b34801561041157600080fd5b506102fd6104203660046123b1565b610c44565b34801561043157600080fd5b506007546102cd90600160b01b900460ff1681565b34801561045257600080fd5b50601054610466906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b34801561048a57600080fd5b506102fd610c9c565b34801561049f57600080fd5b50610350600a5481565b3480156104b557600080fd5b50610350600b5481565b3480156104cb57600080fd5b5061035060095481565b3480156104e157600080fd5b506103506104f0366004612370565b6001600160a01b031660009081526020819052604090205490565b34801561051757600080fd5b506102fd610d88565b34801561052c57600080fd5b50600f54610466906001600160a01b031681565b34801561054c57600080fd5b506102fd61055b366004612370565b610dbe565b34801561056c57600080fd5b506102fd61057b36600461259d565b610e59565b34801561058c57600080fd5b5061046661dead81565b3480156105a257600080fd5b506012546013546014546015546105b99392919084565b6040805194855260208501939093529183015260608201526080016102a4565b3480156105e557600080fd5b506102fd6105f4366004612459565b610ef9565b34801561060557600080fd5b506005546001600160a01b0316610466565b34801561062357600080fd5b50610297610fc4565b34801561063857600080fd5b506102fd610647366004612610565b610fd3565b34801561065857600080fd5b506102cd610667366004612459565b611081565b34801561067857600080fd5b50600754610466906001600160a01b031681565b34801561069857600080fd5b506102cd6106a7366004612459565b61111c565b3480156106b857600080fd5b506102fd6106c7366004612370565b611129565b3480156106d857600080fd5b5061035060085481565b3480156106ee57600080fd5b50601154610466906001600160a01b031681565b34801561070e57600080fd5b506102cd61071d366004612370565b601a6020526000908152604090205460ff1681565b34801561073e57600080fd5b506102fd6111c4565b34801561075357600080fd5b506103506107623660046123b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079957600080fd5b506102fd6107a83660046125b6565b6111ee565b3480156107b957600080fd5b506102fd6107c8366004612370565b61139b565b3480156107d957600080fd5b506102fd6107e8366004612370565b611436565b3480156107f957600080fd5b506016546017546018546019546105b99392919084565b34801561081c57600080fd5b50600654610466906001600160a01b031681565b34801561083c57600080fd5b506102fd61084b36600461259d565b6114d1565b60606003805461085f90612914565b80601f016020809104026020016040519081016040528092919081815260200182805461088b90612914565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050905090565b60006108ef338484611517565b5060015b92915050565b6005546001600160a01b0316331461092c5760405162461bcd60e51b8152600401610923906126d9565b60405180910390fd5b60005b82518110156109935781601a600085848151811061094f5761094f612980565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061098b8161294f565b91505061092f565b505050565b6005546001600160a01b031633146109c25760405162461bcd60e51b8152600401610923906126d9565b600f81836109d086886127b6565b6109da91906127b6565b6109e491906127b6565b1115610a325760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610923565b601693909355601791909155601855601955565b6005546001600160a01b03163314610a705760405162461bcd60e51b8152600401610923906126d9565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ab85760405162461bcd60e51b8152600401610923906126d9565b47610acb6005546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610b03573d6000803e3d6000fd5b5050565b6000610b1484848461163b565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b995760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610923565b610bad8533610ba886856128fd565b611517565b506001949350505050565b6005546001600160a01b03163314610be25760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108ef918590610ba89086906127b6565b6005546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610923906126d9565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610cc65760405162461bcd60e51b8152600401610923906126d9565b600754600160b01b900460ff1615610d205760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610923565b604080516080808201835260028083526000602080850182905284860182905260609485018290526012839055601382905560148290556015829055855193840186528284528301819052938201849052910182905260165560178190556018819055601955565b6005546001600160a01b03163314610db25760405162461bcd60e51b8152600401610923906126d9565b610dbc6000611c2f565b565b6005546001600160a01b03163314610de85760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b038116301415610e115760405162461bcd60e51b81526004016109239061270e565b6001600160a01b038116610e375760405162461bcd60e51b815260040161092390612697565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e835760405162461bcd60e51b8152600401610923906126d9565b600754600160b01b900460ff1615610edd5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610923565b6007805460ff60b01b1916600160b01b17905543600c55600d55565b6005546001600160a01b03163314610f235760405162461bcd60e51b8152600401610923906126d9565b816001600160a01b031663a9059cbb610f446005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610f8c57600080fd5b505af1158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109939190612580565b60606004805461085f90612914565b6005546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610923906126d9565b600a818361100b86886127b6565b61101591906127b6565b61101f91906127b6565b111561106d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610923565b601293909355601391909155601455601555565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111035760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610923565b6111123385610ba886856128fd565b5060019392505050565b60006108ef33848461163b565b6005546001600160a01b031633146111535760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b0381166111795760405162461bcd60e51b815260040161092390612697565b6001600160a01b0381163014156111a25760405162461bcd60e51b81526004016109239061270e565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d205760405162461bcd60e51b8152600401610923906126d9565b6005546001600160a01b031633146112185760405162461bcd60e51b8152600401610923906126d9565b6298968083101561127d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610923565b629896808210156112e35760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610923565b6301312d0081101561134a5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b6064820152608401610923565b6113566012600a612833565b61136090846128de565b60095561136f6012600a612833565b61137990836128de565b600a55601261138990600a612833565b61139390826128de565b600b55505050565b6005546001600160a01b031633146113c55760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b0381163014156113ee5760405162461bcd60e51b81526004016109239061270e565b6001600160a01b0381166114145760405162461bcd60e51b815260040161092390612697565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114605760405162461bcd60e51b8152600401610923906126d9565b6001600160a01b0381166114c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610923565b6114ce81611c2f565b50565b6005546001600160a01b031633146114fb5760405162461bcd60e51b8152600401610923906126d9565b6115076012600a612833565b61151190826128de565b60085550565b6001600160a01b0383166115795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610923565b6001600160a01b0382166115da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610923565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161169d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610923565b6001600160a01b0383166000908152601a602052604090205460ff161580156116df57506001600160a01b0382166000908152601a602052604090205460ff16155b1561173357600754600160b01b900460ff166117335760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610923565b6007546001600160a01b03848116911614801561176957506001600160a01b0382166000908152601a602052604090205460ff16155b801561177f5750600754600160a01b900460ff16155b15611851576009548111156117d65760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610923565b600b54816117f9846001600160a01b031660009081526020819052604090205490565b61180391906127b6565b11156118515760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610923565b6007546001600160a01b0384811691161480159061188857506001600160a01b0382166000908152601a602052604090205460ff16155b80156118ad57506001600160a01b0383166000908152601a602052604090205460ff16155b80156118c35750600754600160a01b900460ff16155b156119aa57600a5481111561191a5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610923565b6007546001600160a01b038381169116146119aa57600b5481611952846001600160a01b031660009081526020819052604090205490565b61195c91906127b6565b11156119aa5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610923565b60008060006119da6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611a1c57506001600160a01b0387166000908152601a602052604090205460ff16155b8015611a375750600d54600c54611a3391906127b6565b4311155b600754909150600160a01b900460ff1680611a6a57506001600160a01b0388166000908152601a602052604090205460ff165b80611a8d57506001600160a01b0387166000908152601a602052604090205460ff165b15611a9b5760009250611b8f565b6007546001600160a01b038881169116148015611ab6575080155b15611b1b57601954601854601754601654611ad191906127b6565b611adb91906127b6565b611ae591906127b6565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611b8f565b80611b8057601554601454601354601254611b3691906127b6565b611b4091906127b6565b611b4a91906127b6565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611b8f565b8015611b8f57600e5494508493505b6064611b9b85886128de565b611ba591906127ce565b600754909350600160a81b900460ff168015611bcf57506007546001600160a01b03898116911614155b15611bde57611bde8583611c81565b611bf28888611bed868a6128fd565b611e3a565b8215611c25578415611c255760006064611c0c87896128de565b611c1691906127ce565b9050611c23893083611e3a565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610b03576007805460ff60a01b1916600160a01b17905581611caf57611e29565b306000908152602081905260409020546008548110611e275760016008541115611cd857506008545b6000611ce58460026128de565b9050600081846040015184611cfa91906128de565b611d0491906127ce565b90506000611d1282856128fd565b905047611d1e82612012565b6000611d2a82476128fd565b90506000876040015186611d3e91906128fd565b611d4890836127ce565b90506000886040015182611d5c91906128de565b90508015611d6e57611d6e868261217b565b8851600090611d7e8460026128de565b611d8891906128de565b90508015611da657600f54611da6906001600160a01b03168261223c565b60608a0151600090611db98560026128de565b611dc391906128de565b90508015611de157601154611de1906001600160a01b03168261223c565b60208b0151600090611df48660026128de565b611dfe91906128de565b90508015611e1c57601054611e1c906001600160a01b03168261223c565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611e9e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610923565b6001600160a01b038216611f005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610923565b6001600160a01b03831660009081526020819052604090205481811015611f785760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610923565b611f8282826128fd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611fb89084906127b6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161200491815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061204757612047612980565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561209b57600080fd5b505afa1580156120af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d39190612394565b816001815181106120e6576120e6612980565b6001600160a01b03928316602091820292909201015260065461210c9130911684611517565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612145908590600090869030904290600401612745565b600060405180830381600087803b15801561215f57600080fd5b505af1158015612173573d6000803e3d6000fd5b505050505050565b6006546121939030906001600160a01b031684611517565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b1580156121fc57600080fd5b505af1158015612210573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061223591906125e2565b5050505050565b8047101561228c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610923565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146122d9576040519150601f19603f3d011682016040523d82523d6000602084013e6122de565b606091505b50509050806109935760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610923565b8035612360816129ac565b919050565b8035612360816129c1565b60006020828403121561238257600080fd5b813561238d816129ac565b9392505050565b6000602082840312156123a657600080fd5b815161238d816129ac565b600080604083850312156123c457600080fd5b82356123cf816129ac565b915060208301356123df816129ac565b809150509250929050565b6000806000606084860312156123ff57600080fd5b833561240a816129ac565b9250602084013561241a816129ac565b929592945050506040919091013590565b6000806040838503121561243e57600080fd5b8235612449816129ac565b915060208301356123df816129c1565b6000806040838503121561246c57600080fd5b8235612477816129ac565b946020939093013593505050565b6000806040838503121561249857600080fd5b823567ffffffffffffffff808211156124b057600080fd5b818501915085601f8301126124c457600080fd5b81356020828211156124d8576124d8612996565b8160051b604051601f19603f830116810181811086821117156124fd576124fd612996565b604052838152828101945085830182870184018b101561251c57600080fd5b600096505b848710156125465761253281612355565b865260019690960195948301948301612521565b5096506125569050878201612365565b9450505050509250929050565b60006020828403121561257557600080fd5b813561238d816129c1565b60006020828403121561259257600080fd5b815161238d816129c1565b6000602082840312156125af57600080fd5b5035919050565b6000806000606084860312156125cb57600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156125f757600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561262657600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561266f57858101830151858201604001528201612653565b81811115612681576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f46656520416464726573732063616e6e6f742062652043410000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127955784516001600160a01b031683529383019391830191600101612770565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127c9576127c961296a565b500190565b6000826127eb57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561282b5781600019048211156128115761281161296a565b8085161561281e57918102915b93841c93908002906127f5565b509250929050565b600061238d60ff84168360008261284c575060016108f3565b81612859575060006108f3565b816001811461286f576002811461287957612895565b60019150506108f3565b60ff84111561288a5761288a61296a565b50506001821b6108f3565b5060208310610133831016604e8410600b84101617156128b8575081810a6108f3565b6128c283836127f0565b80600019048211156128d6576128d661296a565b029392505050565b60008160001904831182151516156128f8576128f861296a565b500290565b60008282101561290f5761290f61296a565b500390565b600181811c9082168061292857607f821691505b6020821081141561294957634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129635761296361296a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146114ce57600080fd5b80151581146114ce57600080fdfea2646970667358221220c613118ce3cabbbc441e9b00adc1f7dd1cdde437938e3ec8ded10d706e2b1c4864736f6c63430008070033

Deployed Bytecode Sourcemap

13741:12864:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15886:161;;;;;;;;;;-1:-1:-1;15886:161:0;;;;;:::i;:::-;;:::i;:::-;;;6739:14:1;;6732:22;6714:41;;6702:2;6687:18;15886:161:0;6574:187:1;25523:202:0;;;;;;;;;;-1:-1:-1;25523:202:0;;;;;:::i;:::-;;:::i;:::-;;23367:442;;;;;;;;;;-1:-1:-1;23367:442:0;;;;;:::i;:::-;;:::i;22666:108::-;;;;;;;;;;-1:-1:-1;22666:108:0;;;;;:::i;:::-;;:::i;3639:::-;;;;;;;;;;-1:-1:-1;3727:12:0;;3639:108;;;17025:25:1;;;17013:2;16998:18;3639:108:0;16879:177:1;26239:165:0;;;;;;;;;;;;;:::i;16055:448::-;;;;;;;;;;-1:-1:-1;16055:448:0;;;;;:::i;:::-;;:::i;14268:28::-;;;;;;;;;;;;;;;;3481:93;;;;;;;;;;-1:-1:-1;3481:93:0;;3564:2;18584:36:1;;18572:2;18557:18;3481:93:0;18442:184:1;25395:120:0;;;;;;;;;;-1:-1:-1;25395:120:0;;;;;:::i;:::-;;:::i;16511:248::-;;;;;;;;;;-1:-1:-1;16511:248:0;;;;;:::i;:::-;;:::i;24161:155::-;;;;;;;;;;-1:-1:-1;24161:155:0;;;;;:::i;:::-;;:::i;14017:34::-;;;;;;;;;;-1:-1:-1;14017:34:0;;;;-1:-1:-1;;;14017:34:0;;;;;;14459:70;;;;;;;;;;-1:-1:-1;14459:70:0;;;;-1:-1:-1;;;;;14459:70:0;;;;;;-1:-1:-1;;;;;5639:32:1;;;5621:51;;5609:2;5594:18;14459:70:0;5475:203:1;23817:195:0;;;;;;;;;;;;;:::i;14166:42::-;;;;;;;;;;;;;;;;14215:44;;;;;;;;;;;;;;;;14118:41;;;;;;;;;;;;;;;;3810:127;;;;;;;;;;-1:-1:-1;3810:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3911:18:0;3884:7;3911:18;;;;;;;;;;;;3810:127;12404:94;;;;;;;;;;;;;:::i;14377:75::-;;;;;;;;;;-1:-1:-1;14377:75:0;;;;-1:-1:-1;;;;;14377:75:0;;;25127:260;;;;;;;;;;-1:-1:-1;25127:260:0;;;;;:::i;:::-;;:::i;24323:236::-;;;;;;;;;;-1:-1:-1;24323:236:0;;;;;:::i;:::-;;:::i;14618:79::-;;;;;;;;;;;;14655:42;14618:79;;14851:41;;;;;;;;;;-1:-1:-1;14851:41:0;;;;;;;;;;;;;;;;;;;18277:25:1;;;18333:2;18318:18;;18311:34;;;;18361:18;;;18354:34;18419:2;18404:18;;18397:34;18264:3;18249:19;14851:41:0;18046:391:1;26412:135:0;;;;;;;;;;-1:-1:-1;26412:135:0;;;;;:::i;:::-;;:::i;12181:87::-;;;;;;;;;;-1:-1:-1;12254:6:0;;-1:-1:-1;;;;;12254:6:0;12181:87;;2738:104;;;;;;;;;;;;;:::i;22922:437::-;;;;;;;;;;-1:-1:-1;22922:437:0;;;;;:::i;:::-;;:::i;16767:410::-;;;;;;;;;;-1:-1:-1;16767:410:0;;;;;:::i;:::-;;:::i;13901:19::-;;;;;;;;;;-1:-1:-1;13901:19:0;;;;-1:-1:-1;;;;;13901:19:0;;;17185:165;;;;;;;;;;-1:-1:-1;17185:165:0;;;;;:::i;:::-;;:::i;24567:270::-;;;;;;;;;;-1:-1:-1;24567:270:0;;;;;:::i;:::-;;:::i;14060:45::-;;;;;;;;;;;;;;;;14537:77;;;;;;;;;;-1:-1:-1;14537:77:0;;;;-1:-1:-1;;;;;14537:77:0;;;14950:41;;;;;;;;;;-1:-1:-1;14950:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24024:129;;;;;;;;;;;;;:::i;4429:201::-;;;;;;;;;;-1:-1:-1;4429:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4595:18:0;;;4563:7;4595:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4429:201;25733:498;;;;;;;;;;-1:-1:-1;25733:498:0;;;;;:::i;:::-;;:::i;24845:274::-;;;;;;;;;;-1:-1:-1;24845:274:0;;;;;:::i;:::-;;:::i;12506:192::-;;;;;;;;;;-1:-1:-1;12506:192:0;;;;;:::i;:::-;;:::i;14899:42::-;;;;;;;;;;-1:-1:-1;14899:42:0;;;;;;;;;;;;;;;13873:21;;;;;;;;;;-1:-1:-1;13873:21:0;;;;-1:-1:-1;;;;;13873:21:0;;;22782:128;;;;;;;;;;-1:-1:-1;22782:128:0;;;;;:::i;:::-;;:::i;2519:100::-;2573:13;2606:5;2599:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:100;:::o;15886:161::-;15961:4;15978:39;321:10;16001:7;16010:6;15978:8;:39::i;:::-;-1:-1:-1;16035:4:0;15886:161;;;;;:::o;25523:202::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;;;;;;;;;25620:9:::1;25615:103;25639:8;:15;25635:1;:19;25615:103;;;25701:5;25676:9;:22;25686:8;25695:1;25686:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25676:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25676:22:0;:30;;-1:-1:-1;;25676:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25656:3;::::1;::::0;::::1;:::i;:::-;;;;25615:103;;;;25523:202:::0;;:::o;23367:442::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;23599:2:::1;23582:12:::0;23569:10;23548:18:::1;23561:5:::0;23548:10;:18:::1;:::i;:::-;:31;;;;:::i;:::-;:46;;;;:::i;:::-;23547:54;;23539:96;;;::::0;-1:-1:-1;;;23539:96:0;;8913:2:1;23539:96:0::1;::::0;::::1;8895:21:1::0;8952:2;8932:18;;;8925:30;8991:31;8971:18;;;8964:59;9040:18;;23539:96:0::1;8711:353:1::0;23539:96:0::1;23646:9;:32:::0;;;;23689:14;:22;;;;23722:19;:32;23765:21;:36;23367:442::o;22666:108::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;22740:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;22740:26:0::1;-1:-1:-1::0;;;;22740:26:0;;::::1;::::0;;;::::1;::::0;;22666:108::o;26239:165::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;26319:21:::1;26359:7;12254:6:::0;;-1:-1:-1;;;;;12254:6:0;;12181:87;26359:7:::1;-1:-1:-1::0;;;;;26351:25:0::1;:45;26377:18;26351:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26279:125;26239:165::o:0;16055:448::-;16187:4;16204:36;16214:6;16222:9;16233:6;16204:9;:36::i;:::-;-1:-1:-1;;;;;16280:19:0;;16253:24;16280:19;;;:11;:19;;;;;;;;321:10;16280:33;;;;;;;;16332:26;;;;16324:79;;;;-1:-1:-1;;;16324:79:0;;13269:2:1;16324:79:0;;;13251:21:1;13308:2;13288:18;;;13281:30;13347:34;13327:18;;;13320:62;-1:-1:-1;;;13398:18:1;;;13391:38;13446:19;;16324:79:0;13067:404:1;16324:79:0;16414:57;16423:6;321:10;16445:25;16464:6;16445:16;:25;:::i;:::-;16414:8;:57::i;:::-;-1:-1:-1;16491:4:0;;16055:448;-1:-1:-1;;;;16055:448:0:o;25395:120::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25480:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;25480:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25395:120::o;16511:248::-;321:10;16627:4;16681:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16681:34:0;;;;;;;;;;16627:4;;16649:80;;16672:7;;16681:47;;16718:10;;16681:47;:::i;24161:155::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;24256:6:::1;:27:::0;;-1:-1:-1;;;;;24256:27:0;;::::1;-1:-1:-1::0;;;;;;24256:27:0;;::::1;;::::0;;;24294:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;24161:155::o;23817:195::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;23880:14:::1;::::0;-1:-1:-1;;;23880:14:0;::::1;;;23879:15;23871:54;;;::::0;-1:-1:-1;;;23871:54:0;;15961:2:1;23871:54:0::1;::::0;::::1;15943:21:1::0;16000:2;15980:18;;;15973:30;16039:28;16019:18;;;16012:56;16085:18;;23871:54:0::1;15759:350:1::0;23871:54:0::1;23947:17;::::0;;::::1;::::0;;::::1;::::0;;23953:1:::1;23947:17:::0;;;-1:-1:-1;23947:17:0::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;23936:8:::1;:28:::0;;;;;;;;;;;;;;;23987:17;;;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;;;;;;23975:9:::1;:29:::0;;;;;;;;;;;23817:195::o;12404:94::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;12469:21:::1;12487:1;12469:9;:21::i;:::-;12404:94::o:0;25127:260::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25210:26:0;::::1;25231:4;25210:26;;25202:63;;;;-1:-1:-1::0;;;25202:63:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25284:23:0;::::1;25276:70;;;;-1:-1:-1::0;;;25276:70:0::1;;;;;;;:::i;:::-;25357:10;:22:::0;;-1:-1:-1;;;;;;25357:22:0::1;-1:-1:-1::0;;;;;25357:22:0;;;::::1;::::0;;;::::1;::::0;;25127:260::o;24323:236::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;24404:14:::1;::::0;-1:-1:-1;;;24404:14:0;::::1;;;24403:15;24395:54;;;::::0;-1:-1:-1;;;24395:54:0;;15961:2:1;24395:54:0::1;::::0;::::1;15943:21:1::0;16000:2;15980:18;;;15973:30;16039:28;16019:18;;;16012:56;16085:18;;24395:54:0::1;15759:350:1::0;24395:54:0::1;24460:14;:21:::0;;-1:-1:-1;;;;24460:21:0::1;-1:-1:-1::0;;;24460:21:0::1;::::0;;24508:12:::1;24492:13;:28:::0;24531:8:::1;:20:::0;24323:236::o;26412:135::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;26504:8:::1;-1:-1:-1::0;;;;;26497:25:0::1;;26523:7;12254:6:::0;;-1:-1:-1;;;;;12254:6:0;;12181:87;26523:7:::1;26497:42;::::0;-1:-1:-1;;;;;;26497:42:0::1;::::0;;;;;;-1:-1:-1;;;;;5875:32:1;;;26497:42:0::1;::::0;::::1;5857:51:1::0;5924:18;;;5917:34;;;5830:18;;26497:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2738:104::-:0;2794:13;2827:7;2820:14;;;;;:::i;22922:437::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;23153:2:::1;23136:12:::0;23123:10;23102:18:::1;23115:5:::0;23102:10;:18:::1;:::i;:::-;:31;;;;:::i;:::-;:46;;;;:::i;:::-;23101:54;;23093:96;;;::::0;-1:-1:-1;;;23093:96:0;;8197:2:1;23093:96:0::1;::::0;::::1;8179:21:1::0;8236:2;8216:18;;;8209:30;8275:31;8255:18;;;8248:59;8324:18;;23093:96:0::1;7995:353:1::0;23093:96:0::1;23200:8;:31:::0;;;;23242:13;:21;;;;23274:18;:31;23316:20;:35;22922:437::o;16767:410::-;321:10;16888:4;16937:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16937:34:0;;;;;;;;;;16990:35;;;;16982:85;;;;-1:-1:-1;;;16982:85:0;;16675:2:1;16982:85:0;;;16657:21:1;16714:2;16694:18;;;16687:30;16753:34;16733:18;;;16726:62;-1:-1:-1;;;16804:18:1;;;16797:35;16849:19;;16982:85:0;16473:401:1;16982:85:0;17078:67;321:10;17101:7;17110:34;17129:15;17110:16;:34;:::i;17078:67::-;-1:-1:-1;17165:4:0;;16767:410;-1:-1:-1;;;16767:410:0:o;17185:165::-;17263:4;17280:40;17290:10;17302:9;17313:6;17280:9;:40::i;24567:270::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24655:23:0;::::1;24647:70;;;;-1:-1:-1::0;;;24647:70:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24736:26:0;::::1;24757:4;24736:26;;24728:63;;;;-1:-1:-1::0;;;24728:63:0::1;;;;;;;:::i;:::-;24802:15;:27:::0;;-1:-1:-1;;;;;;24802:27:0::1;-1:-1:-1::0;;;;;24802:27:0;;;::::1;::::0;;;::::1;::::0;;24567:270::o;24024:129::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;25733:498::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;25859:3:::1;25849:6;:13;;25841:67;;;::::0;-1:-1:-1;;;25841:67:0;;12045:2:1;25841:67:0::1;::::0;::::1;12027:21:1::0;12084:2;12064:18;;;12057:30;12123:34;12103:18;;;12096:62;-1:-1:-1;;;12174:18:1;;;12167:39;12223:19;;25841:67:0::1;11843:405:1::0;25841:67:0::1;25938:3;25927:7;:14;;25919:69;;;::::0;-1:-1:-1;;;25919:69:0;;10081:2:1;25919:69:0::1;::::0;::::1;10063:21:1::0;10120:2;10100:18;;;10093:30;10159:34;10139:18;;;10132:62;-1:-1:-1;;;10210:18:1;;;10203:40;10260:19;;25919:69:0::1;9879:406:1::0;25919:69:0::1;26020:3;26007:9;:16;;25999:71;;;::::0;-1:-1:-1;;;25999:71:0;;12455:2:1;25999:71:0::1;::::0;::::1;12437:21:1::0;12494:2;12474:18;;;12467:30;12533:34;12513:18;;;12506:62;-1:-1:-1;;;12584:18:1;;;12577:40;12634:19;;25999:71:0::1;12253:406:1::0;25999:71:0::1;26104:14;3564:2:::0;26104::::1;:14;:::i;:::-;26095:23;::::0;:6;:23:::1;:::i;:::-;26081:11;:37:::0;26154:14:::1;3564:2:::0;26154::::1;:14;:::i;:::-;26144:24;::::0;:7;:24:::1;:::i;:::-;26129:12;:39:::0;3564:2;26208:14:::1;::::0;:2:::1;:14;:::i;:::-;26196:26;::::0;:9;:26:::1;:::i;:::-;26179:14;:43:::0;-1:-1:-1;;;25733:498:0:o;24845:274::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24935:26:0;::::1;24956:4;24935:26;;24927:63;;;;-1:-1:-1::0;;;24927:63:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25009:23:0;::::1;25001:70;;;;-1:-1:-1::0;;;25001:70:0::1;;;;;;;:::i;:::-;25082:17;:29:::0;;-1:-1:-1;;;;;;25082:29:0::1;-1:-1:-1::0;;;;;25082:29:0;;;::::1;::::0;;;::::1;::::0;;24845:274::o;12506:192::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12595:22:0;::::1;12587:73;;;::::0;-1:-1:-1;;;12587:73:0;;9271:2:1;12587:73:0::1;::::0;::::1;9253:21:1::0;9310:2;9290:18;;;9283:30;9349:34;9329:18;;;9322:62;-1:-1:-1;;;9400:18:1;;;9393:36;9446:19;;12587:73:0::1;9069:402:1::0;12587:73:0::1;12671:19;12681:8;12671:9;:19::i;:::-;12506:192:::0;:::o;22782:128::-;12254:6;;-1:-1:-1;;;;;12254:6:0;321:10;12316:23;12308:68;;;;-1:-1:-1;;;12308:68:0;;;;;;;:::i;:::-;22888:14:::1;3564:2:::0;22888::::1;:14;:::i;:::-;22875:27;::::0;:10;:27:::1;:::i;:::-;22857:15;:45:::0;-1:-1:-1;22782:128:0:o;10480:380::-;-1:-1:-1;;;;;10616:19:0;;10608:68;;;;-1:-1:-1;;;10608:68:0;;15556:2:1;10608:68:0;;;15538:21:1;15595:2;15575:18;;;15568:30;15634:34;15614:18;;;15607:62;-1:-1:-1;;;15685:18:1;;;15678:34;15729:19;;10608:68:0;15354:400:1;10608:68:0;-1:-1:-1;;;;;10695:21:0;;10687:68;;;;-1:-1:-1;;;10687:68:0;;9678:2:1;10687:68:0;;;9660:21:1;9717:2;9697:18;;;9690:30;9756:34;9736:18;;;9729:62;-1:-1:-1;;;9807:18:1;;;9800:32;9849:19;;10687:68:0;9476:398:1;10687:68:0;-1:-1:-1;;;;;10768:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10820:32;;17025:25:1;;;10820:32:0;;16998:18:1;10820:32:0;;;;;;;10480:380;;;:::o;17358:2446::-;17508:1;17499:6;:10;17491:64;;;;-1:-1:-1;;;17491:64:0;;14039:2:1;17491:64:0;;;14021:21:1;14078:2;14058:18;;;14051:30;14117:34;14097:18;;;14090:62;-1:-1:-1;;;14168:18:1;;;14161:39;14217:19;;17491:64:0;13837:405:1;17491:64:0;-1:-1:-1;;;;;17573:17:0;;;;;;:9;:17;;;;;;;;17572:18;:43;;;;-1:-1:-1;;;;;;17595:20:0;;;;;;:9;:20;;;;;;;;17594:21;17572:43;17568:122;;;17640:14;;-1:-1:-1;;;17640:14:0;;;;17632:46;;;;-1:-1:-1;;;17632:46:0;;14449:2:1;17632:46:0;;;14431:21:1;14488:2;14468:18;;;14461:30;-1:-1:-1;;;14507:18:1;;;14500:49;14566:18;;17632:46:0;14247:343:1;17632:46:0;17716:4;;-1:-1:-1;;;;;17706:14:0;;;17716:4;;17706:14;:39;;;;-1:-1:-1;;;;;;17725:20:0;;;;;;:9;:20;;;;;;;;17724:21;17706:39;:59;;;;-1:-1:-1;17750:15:0;;-1:-1:-1;;;17750:15:0;;;;17749:16;17706:59;17702:311;;;17800:11;;17790:6;:21;;17782:63;;;;-1:-1:-1;;;17782:63:0;;8555:2:1;17782:63:0;;;8537:21:1;8594:2;8574:18;;;8567:30;8633:31;8613:18;;;8606:59;8682:18;;17782:63:0;8353:353:1;17782:63:0;17919:14;;17909:6;17886:20;17896:9;-1:-1:-1;;;;;3911:18:0;3884:7;3911:18;;;;;;;;;;;;3810:127;17886:20;:29;;;;:::i;:::-;:47;;17860:141;;;;-1:-1:-1;;;17860:141:0;;10899:2:1;17860:141:0;;;10881:21:1;;;10918:18;;;10911:30;10977:34;10957:18;;;10950:62;11029:18;;17860:141:0;10697:356:1;17860:141:0;18053:4;;-1:-1:-1;;;;;18043:14:0;;;18053:4;;18043:14;;;;:39;;-1:-1:-1;;;;;;18062:20:0;;;;;;:9;:20;;;;;;;;18061:21;18043:39;:61;;;;-1:-1:-1;;;;;;18087:17:0;;;;;;:9;:17;;;;;;;;18086:18;18043:61;:81;;;;-1:-1:-1;18109:15:0;;-1:-1:-1;;;18109:15:0;;;;18108:16;18043:81;18025:441;;;18169:12;;18159:6;:22;;18151:65;;;;-1:-1:-1;;;18151:65:0;;16316:2:1;18151:65:0;;;16298:21:1;16355:2;16335:18;;;16328:30;16394:32;16374:18;;;16367:60;16444:18;;18151:65:0;16114:354:1;18151:65:0;18248:4;;-1:-1:-1;;;;;18235:17:0;;;18248:4;;18235:17;18231:211;;18336:14;;18326:6;18303:20;18313:9;-1:-1:-1;;;;;3911:18:0;3884:7;3911:18;;;;;;;;;;;;3810:127;18303:20;:29;;;;:::i;:::-;:47;;18273:153;;;;-1:-1:-1;;;18273:153:0;;10899:2:1;18273:153:0;;;10881:21:1;;;10918:18;;;10911:30;10977:34;10957:18;;;10950:62;11029:18;;18273:153:0;10697:356:1;18273:153:0;18478:15;18504:14;18529:11;18551:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18551:25:0;-1:-1:-1;;;;;18610:17:0;;18589;18610;;;:9;:17;;;;;;;;18609:18;:56;;;;-1:-1:-1;;;;;;18645:20:0;;;;;;:9;:20;;;;;;;;18644:21;18609:56;:113;;;;;18714:8;;18698:13;;:24;;;;:::i;:::-;18682:12;:40;;18609:113;18739:15;;18589:133;;-1:-1:-1;;;;18739:15:0;;;;;:36;;-1:-1:-1;;;;;;18758:17:0;;;;;;:9;:17;;;;;;;;18739:36;:60;;;-1:-1:-1;;;;;;18779:20:0;;;;;;:9;:20;;;;;;;;18739:60;18735:645;;;18820:1;18814:7;;18735:645;;;18856:4;;-1:-1:-1;;;;;18843:17:0;;;18856:4;;18843:17;:34;;;;;18865:12;18864:13;18843:34;18839:541;;;18965:21;;18943:19;;18926:14;;18965:9;18904:19;:36;;18926:14;18904:36;:::i;:::-;:58;;;;:::i;:::-;:82;;;;:::i;:::-;19032:24;;;;;;;;19047:9;19032:24;;;;;;;;;;;;;;;;;;;;;;;;18894:92;;-1:-1:-1;18894:92:0;;-1:-1:-1;19032:24:0;-1:-1:-1;18839:541:0;;;19079:12;19074:306;;19176:20;;19155:18;;19139:13;;19176:8;19118:18;:34;;19139:13;19118:34;:::i;:::-;:55;;;;:::i;:::-;:78;;;;:::i;:::-;19242:23;;;;;;;;19257:8;19242:23;;;;;;;;;;;;;;;;;;;;;;;;19108:88;;-1:-1:-1;19108:88:0;;-1:-1:-1;19242:23:0;-1:-1:-1;19074:306:0;;;19287:12;19283:97;;;19326:9;;;-1:-1:-1;19326:9:0;;-1:-1:-1;19283:97:0;19419:3;19400:15;19409:6;19400;:15;:::i;:::-;19399:23;;;;:::i;:::-;19440:18;;19392:31;;-1:-1:-1;;;;19440:18:0;;;;:36;;;;-1:-1:-1;19472:4:0;;-1:-1:-1;;;;;19462:14:0;;;19472:4;;19462:14;;19440:36;19436:76;;;19478:34;19490:7;19499:12;19478:11;:34::i;:::-;19525:48;19541:6;19549:9;19560:12;19569:3;19560:6;:12;:::i;:::-;19525:15;:48::i;:::-;19588:7;;19584:213;;19622:11;;19618:166;;19654:17;19696:3;19676:16;19685:7;19676:6;:16;:::i;:::-;19675:24;;;;:::i;:::-;19654:46;;19719:49;19735:6;19751:4;19758:9;19719:15;:49::i;:::-;19635:149;19618:166;17480:2324;;;;;17358:2446;;;:::o;12706:173::-;12781:6;;;-1:-1:-1;;;;;12798:17:0;;;-1:-1:-1;;;;;;12798:17:0;;;;;;;12831:40;;12781:6;;;12798:17;12781:6;;12831:40;;12762:16;;12831:40;12751:128;12706:173;:::o;19812:1796::-;15037:15;;-1:-1:-1;;;15037:15:0;;;;15032:125;;15069:15;:22;;-1:-1:-1;;;;15069:22:0;-1:-1:-1;;;15069:22:0;;;19908:12;19905:49:::1;;19936:7;;19905:49;20011:4;19967:23;3911:18:::0;;;;;;;;;;;20051:15:::1;::::0;20032:34;::::1;20028:1573;;20105:1;20087:15;;:19;20083:93;;;-1:-1:-1::0;20145:15:0::1;::::0;20083:93:::1;20247:19;20269:11;:7:::0;20279:1:::1;20269:11;:::i;:::-;20247:33;;20295:32;20372:11;20349:9;:19;;;20331:15;:37;;;;:::i;:::-;20330:53;;;;:::i;:::-;20295:88:::0;-1:-1:-1;20398:20:0::1;20421:42;20295:88:::0;20421:15;:42:::1;:::i;:::-;20398:65:::0;-1:-1:-1;20505:21:0::1;20543:30;20398:65:::0;20543:16:::1;:30::i;:::-;20590:20;20613:38;20637:14:::0;20613:21:::1;:38;:::i;:::-;20590:61;;20666:19;20718:9;:19;;;20704:11;:33;;;;:::i;:::-;20688:50;::::0;:12;:50:::1;:::i;:::-;20666:72;;20753:29;20800:9;:19;;;20786:11;:33;;;;:::i;:::-;20753:67:::0;-1:-1:-1;20841:25:0;;20837:172:::1;;20932:61;20945:24;20971:21;20932:12;:61::i;:::-;21067:19:::0;;21025:20:::1;::::0;21049:15:::1;:11:::0;21063:1:::1;21049:15;:::i;:::-;:37;;;;:::i;:::-;21025:62:::0;-1:-1:-1;21106:16:0;;21102:105:::1;;21151:15;::::0;21143:48:::1;::::0;-1:-1:-1;;;;;21151:15:0::1;21178:12:::0;21143:34:::1;:48::i;:::-;21267:21;::::0;::::1;::::0;21223:22:::1;::::0;21249:15:::1;:11:::0;21263:1:::1;21249:15;:::i;:::-;:39;;;;:::i;:::-;21223:66:::0;-1:-1:-1;21308:18:0;;21304:111:::1;;21355:17;::::0;21347:52:::1;::::0;-1:-1:-1;;;;;21355:17:0::1;21384:14:::0;21347:36:::1;:52::i;:::-;21468:14;::::0;::::1;::::0;21431:15:::1;::::0;21450::::1;:11:::0;21464:1:::1;21450:15;:::i;:::-;:32;;;;:::i;:::-;21431:52:::0;-1:-1:-1;21502:11:0;;21498:90:::1;;21542:10;::::0;21534:38:::1;::::0;-1:-1:-1;;;;;21542:10:0::1;21564:7:::0;21534:29:::1;:38::i;:::-;20068:1533;;;;;;;;;;20028:1573;19892:1716;15106:1;15122:15:::0;:23;;-1:-1:-1;;;;15122:23:0;;;19812:1796;;:::o;7942:638::-;-1:-1:-1;;;;;8082:20:0;;8074:70;;;;-1:-1:-1;;;8074:70:0;;14797:2:1;8074:70:0;;;14779:21:1;14836:2;14816:18;;;14809:30;14875:34;14855:18;;;14848:62;-1:-1:-1;;;14926:18:1;;;14919:35;14971:19;;8074:70:0;14595:401:1;8074:70:0;-1:-1:-1;;;;;8163:23:0;;8155:71;;;;-1:-1:-1;;;8155:71:0;;7793:2:1;8155:71:0;;;7775:21:1;7832:2;7812:18;;;7805:30;7871:34;7851:18;;;7844:62;-1:-1:-1;;;7922:18:1;;;7915:33;7965:19;;8155:71:0;7591:399:1;8155:71:0;-1:-1:-1;;;;;8323:17:0;;8299:21;8323:17;;;;;;;;;;;8359:23;;;;8351:74;;;;-1:-1:-1;;;8351:74:0;;10492:2:1;8351:74:0;;;10474:21:1;10531:2;10511:18;;;10504:30;10570:34;10550:18;;;10543:62;-1:-1:-1;;;10621:18:1;;;10614:36;10667:19;;8351:74:0;10290:402:1;8351:74:0;8456:22;8472:6;8456:13;:22;:::i;:::-;-1:-1:-1;;;;;8436:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8489:20;;;;;;;;:30;;8513:6;;8436:9;8489:30;;8513:6;;8489:30;:::i;:::-;;;;;;;;8554:9;-1:-1:-1;;;;;8537:35:0;8546:6;-1:-1:-1;;;;;8537:35:0;;8565:6;8537:35;;;;17025:25:1;;17013:2;16998:18;;16879:177;8537:35:0;;;;;;;;8063:517;7942:638;;;:::o;21616:534::-;21766:16;;;21780:1;21766:16;;;;;;;;21742:21;;21766:16;;;;;;;;;;-1:-1:-1;21766:16:0;21742:40;;21811:4;21793;21798:1;21793:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21793:23:0;;;:7;;;;;;;;;;:23;;;;21837:6;;:13;;;-1:-1:-1;;;21837:13:0;;;;:6;;;;;:11;;:13;;;;;21793:7;;21837:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21827:4;21832:1;21827:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21827:23:0;;;:7;;;;;;;;;:23;21895:6;;21863:53;;21880:4;;21895:6;21904:11;21863:8;:53::i;:::-;21955:6;;:187;;-1:-1:-1;;;21955:187:0;;-1:-1:-1;;;;;21955:6:0;;;;:57;;:187;;22027:11;;21955:6;;22069:4;;22096;;22116:15;;21955:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21671:479;21616:534;:::o;22158:500::-;22338:6;;22306:53;;22323:4;;-1:-1:-1;;;;;22338:6:0;22347:11;22306:8;:53::i;:::-;22402:6;;:248;;-1:-1:-1;;;22402:248:0;;22467:4;22402:248;;;6303:34:1;6353:18;;;6346:34;;;22402:6:0;6396:18:1;;;6389:34;;;6439:18;;;6432:34;14655:42:0;6482:19:1;;;6475:44;22624:15:0;6535:19:1;;;6528:35;-1:-1:-1;;;;;22402:6:0;;;;:22;;22433:9;;6237:19:1;;22402:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22158:500;;:::o;11624:319::-;11739:6;11714:21;:31;;11706:73;;;;-1:-1:-1;;;11706:73:0;;11687:2:1;11706:73:0;;;11669:21:1;11726:2;11706:18;;;11699:30;11765:31;11745:18;;;11738:59;11814:18;;11706:73:0;11485:353:1;11706:73:0;11793:12;11811:9;-1:-1:-1;;;;;11811:14:0;11834:6;11811:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11792:54;;;11865:7;11857:78;;;;-1:-1:-1;;;11857:78:0;;11260:2:1;11857:78:0;;;11242:21:1;11299:2;11279:18;;;11272:30;11338:34;11318:18;;;11311:62;11409:28;11389:18;;;11382:56;11455:19;;11857:78:0;11058:422:1;14:134;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:247::-;345:6;398:2;386:9;377:7;373:23;369:32;366:52;;;414:1;411;404:12;366:52;453:9;440:23;472:31;497:5;472:31;:::i;:::-;522:5;286:247;-1:-1:-1;;;286:247:1:o;538:251::-;608:6;661:2;649:9;640:7;636:23;632:32;629:52;;;677:1;674;667:12;629:52;709:9;703:16;728:31;753:5;728:31;:::i;794:388::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;978:9;965:23;997:31;1022:5;997:31;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:33;1076:32;1117:33;:::i;:::-;1169:7;1159:17;;;794:388;;;;;:::o;1187:456::-;1264:6;1272;1280;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1187:456;;1579:7;;-1:-1:-1;;;1633:2:1;1618:18;;;;1605:32;;1187:456::o;1648:382::-;1713:6;1721;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1829:9;1816:23;1848:31;1873:5;1848:31;:::i;:::-;1898:5;-1:-1:-1;1955:2:1;1940:18;;1927:32;1968:30;1927:32;1968:30;:::i;2035:315::-;2103:6;2111;2164:2;2152:9;2143:7;2139:23;2135:32;2132:52;;;2180:1;2177;2170:12;2132:52;2219:9;2206:23;2238:31;2263:5;2238:31;:::i;:::-;2288:5;2340:2;2325:18;;;;2312:32;;-1:-1:-1;;;2035:315:1:o;2355:1202::-;2445:6;2453;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;2562:9;2549:23;2591:18;2632:2;2624:6;2621:14;2618:34;;;2648:1;2645;2638:12;2618:34;2686:6;2675:9;2671:22;2661:32;;2731:7;2724:4;2720:2;2716:13;2712:27;2702:55;;2753:1;2750;2743:12;2702:55;2789:2;2776:16;2811:4;2834:2;2830;2827:10;2824:36;;;2840:18;;:::i;:::-;2886:2;2883:1;2879:10;2918:2;2912:9;2981:2;2977:7;2972:2;2968;2964:11;2960:25;2952:6;2948:38;3036:6;3024:10;3021:22;3016:2;3004:10;3001:18;2998:46;2995:72;;;3047:18;;:::i;:::-;3083:2;3076:22;3133:18;;;3167:15;;;;-1:-1:-1;3202:11:1;;;3232;;;3228:20;;3225:33;-1:-1:-1;3222:53:1;;;3271:1;3268;3261:12;3222:53;3293:1;3284:10;;3303:169;3317:2;3314:1;3311:9;3303:169;;;3374:23;3393:3;3374:23;:::i;:::-;3362:36;;3335:1;3328:9;;;;;3418:12;;;;3450;;3303:169;;;-1:-1:-1;3491:6:1;-1:-1:-1;3516:35:1;;-1:-1:-1;3532:18:1;;;3516:35;:::i;:::-;3506:45;;;;;;2355:1202;;;;;:::o;3562:241::-;3618:6;3671:2;3659:9;3650:7;3646:23;3642:32;3639:52;;;3687:1;3684;3677:12;3639:52;3726:9;3713:23;3745:28;3767:5;3745:28;:::i;3808:245::-;3875:6;3928:2;3916:9;3907:7;3903:23;3899:32;3896:52;;;3944:1;3941;3934:12;3896:52;3976:9;3970:16;3995:28;4017:5;3995:28;:::i;4058:180::-;4117:6;4170:2;4158:9;4149:7;4145:23;4141:32;4138:52;;;4186:1;4183;4176:12;4138:52;-1:-1:-1;4209:23:1;;4058:180;-1:-1:-1;4058:180:1:o;4243:316::-;4320:6;4328;4336;4389:2;4377:9;4368:7;4364:23;4360:32;4357:52;;;4405:1;4402;4395:12;4357:52;-1:-1:-1;;4428:23:1;;;4498:2;4483:18;;4470:32;;-1:-1:-1;4549:2:1;4534:18;;;4521:32;;4243:316;-1:-1:-1;4243:316:1:o;4564:306::-;4652:6;4660;4668;4721:2;4709:9;4700:7;4696:23;4692:32;4689:52;;;4737:1;4734;4727:12;4689:52;4766:9;4760:16;4750:26;;4816:2;4805:9;4801:18;4795:25;4785:35;;4860:2;4849:9;4845:18;4839:25;4829:35;;4564:306;;;;;:::o;4875:385::-;4961:6;4969;4977;4985;5038:3;5026:9;5017:7;5013:23;5009:33;5006:53;;;5055:1;5052;5045:12;5006:53;-1:-1:-1;;5078:23:1;;;5148:2;5133:18;;5120:32;;-1:-1:-1;5199:2:1;5184:18;;5171:32;;5250:2;5235:18;5222:32;;-1:-1:-1;4875:385:1;-1:-1:-1;4875:385:1:o;6989:597::-;7101:4;7130:2;7159;7148:9;7141:21;7191:6;7185:13;7234:6;7229:2;7218:9;7214:18;7207:34;7259:1;7269:140;7283:6;7280:1;7277:13;7269:140;;;7378:14;;;7374:23;;7368:30;7344:17;;;7363:2;7340:26;7333:66;7298:10;;7269:140;;;7427:6;7424:1;7421:13;7418:91;;;7497:1;7492:2;7483:6;7472:9;7468:22;7464:31;7457:42;7418:91;-1:-1:-1;7570:2:1;7549:15;-1:-1:-1;;7545:29:1;7530:45;;;;7577:2;7526:54;;6989:597;-1:-1:-1;;;6989:597:1:o;12664:398::-;12866:2;12848:21;;;12905:2;12885:18;;;12878:30;12944:34;12939:2;12924:18;;12917:62;-1:-1:-1;;;13010:2:1;12995:18;;12988:32;13052:3;13037:19;;12664:398::o;13476:356::-;13678:2;13660:21;;;13697:18;;;13690:30;13756:34;13751:2;13736:18;;13729:62;13823:2;13808:18;;13476:356::o;15001:348::-;15203:2;15185:21;;;15242:2;15222:18;;;15215:30;15281:26;15276:2;15261:18;;15254:54;15340:2;15325:18;;15001:348::o;17061:980::-;17323:4;17371:3;17360:9;17356:19;17402:6;17391:9;17384:25;17428:2;17466:6;17461:2;17450:9;17446:18;17439:34;17509:3;17504:2;17493:9;17489:18;17482:31;17533:6;17568;17562:13;17599:6;17591;17584:22;17637:3;17626:9;17622:19;17615:26;;17676:2;17668:6;17664:15;17650:29;;17697:1;17707:195;17721:6;17718:1;17715:13;17707:195;;;17786:13;;-1:-1:-1;;;;;17782:39:1;17770:52;;17877:15;;;;17842:12;;;;17818:1;17736:9;17707:195;;;-1:-1:-1;;;;;;;17958:32:1;;;;17953:2;17938:18;;17931:60;-1:-1:-1;;;18022:3:1;18007:19;18000:35;17919:3;17061:980;-1:-1:-1;;;17061:980:1:o;18631:128::-;18671:3;18702:1;18698:6;18695:1;18692:13;18689:39;;;18708:18;;:::i;:::-;-1:-1:-1;18744:9:1;;18631:128::o;18764:217::-;18804:1;18830;18820:132;;18874:10;18869:3;18865:20;18862:1;18855:31;18909:4;18906:1;18899:15;18937:4;18934:1;18927:15;18820:132;-1:-1:-1;18966:9:1;;18764:217::o;18986:422::-;19075:1;19118:5;19075:1;19132:270;19153:7;19143:8;19140:21;19132:270;;;19212:4;19208:1;19204:6;19200:17;19194:4;19191:27;19188:53;;;19221:18;;:::i;:::-;19271:7;19261:8;19257:22;19254:55;;;19291:16;;;;19254:55;19370:22;;;;19330:15;;;;19132:270;;;19136:3;18986:422;;;;;:::o;19413:140::-;19471:5;19500:47;19541:4;19531:8;19527:19;19521:4;19607:5;19637:8;19627:80;;-1:-1:-1;19678:1:1;19692:5;;19627:80;19726:4;19716:76;;-1:-1:-1;19763:1:1;19777:5;;19716:76;19808:4;19826:1;19821:59;;;;19894:1;19889:130;;;;19801:218;;19821:59;19851:1;19842:10;;19865:5;;;19889:130;19926:3;19916:8;19913:17;19910:43;;;19933:18;;:::i;:::-;-1:-1:-1;;19989:1:1;19975:16;;20004:5;;19801:218;;20103:2;20093:8;20090:16;20084:3;20078:4;20075:13;20071:36;20065:2;20055:8;20052:16;20047:2;20041:4;20038:12;20034:35;20031:77;20028:159;;;-1:-1:-1;20140:19:1;;;20172:5;;20028:159;20219:34;20244:8;20238:4;20219:34;:::i;:::-;20289:6;20285:1;20281:6;20277:19;20268:7;20265:32;20262:58;;;20300:18;;:::i;:::-;20338:20;;19558:806;-1:-1:-1;;;19558:806:1:o;20369:168::-;20409:7;20475:1;20471;20467:6;20463:14;20460:1;20457:21;20452:1;20445:9;20438:17;20434:45;20431:71;;;20482:18;;:::i;:::-;-1:-1:-1;20522:9:1;;20369:168::o;20542:125::-;20582:4;20610:1;20607;20604:8;20601:34;;;20615:18;;:::i;:::-;-1:-1:-1;20652:9:1;;20542:125::o;20672:380::-;20751:1;20747:12;;;;20794;;;20815:61;;20869:4;20861:6;20857:17;20847:27;;20815:61;20922:2;20914:6;20911:14;20891:18;20888:38;20885:161;;;20968:10;20963:3;20959:20;20956:1;20949:31;21003:4;21000:1;20993:15;21031:4;21028:1;21021:15;20885:161;;20672:380;;;:::o;21057:135::-;21096:3;-1:-1:-1;;21117:17:1;;21114:43;;;21137:18;;:::i;:::-;-1:-1:-1;21184:1:1;21173:13;;21057:135::o;21197:127::-;21258:10;21253:3;21249:20;21246:1;21239:31;21289:4;21286:1;21279:15;21313:4;21310:1;21303:15;21329:127;21390:10;21385:3;21381:20;21378:1;21371:31;21421:4;21418:1;21411:15;21445:4;21442:1;21435:15;21461:127;21522:10;21517:3;21513:20;21510:1;21503:31;21553:4;21550:1;21543:15;21577:4;21574:1;21567:15;21593:131;-1:-1:-1;;;;;21668:31:1;;21658:42;;21648:70;;21714:1;21711;21704:12;21729:118;21815:5;21808:13;21801:21;21794:5;21791:32;21781:60;;21837:1;21834;21827:12

Swarm Source

ipfs://c613118ce3cabbbc441e9b00adc1f7dd1cdde437938e3ec8ded10d706e2b1c48

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.