ETH Price: $3,000.20 (+4.14%)
Gas: 2 Gwei

Token

Dogira (DOGIRA)
 

Overview

Max Total Supply

1,000,000,000 DOGIRA

Holders

117 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (+6.25%)

Onchain Market Cap

$78,100.00

Circulating Supply Market Cap

$57,552.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.176701664 DOGIRA

Value
$0.00 ( ~0 Eth) [0.0000%]
0xC806D79A403201ff4533a8D0D9887617275b6633
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

DOGIRA combines Decentralized Finance, and Gaming into one token package; providing a non-inflationary Yield Farming incentive, directly supporting Gaming and NFT Ecosystems developed in-house on the Polygon Network.

Market

Volume (24H):$9.45
Market Capitalization:$57,552.00
Circulating Supply:736,879,845.00 DOGIRA
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Dogira

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 3 of 10: Dogira.sol
/**
 * Dogira Token
 * https://Dogira.net
 */

pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

import "./Address.sol";
import "./IERC20.sol";
import "./IUniswapV2Factory.sol";
import "./IUniswapV2Router02.sol";
import "./Ownable.sol";
import "./SafeMath.sol";

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

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

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;

    string private constant _name = "Dogira";
    string private constant _symbol = "DOGIRA";
    uint8 private constant _decimals = 9;

    uint256 public _taxFee = 0;
    uint256 private _previousTaxFee = _taxFee;
    address[] private _includedInFees;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public previousUniswapV2Pair;
    address public pendingUniswapV2Pair;
    uint256 public pairSwitchUnlockTimestamp = 0;
    bool public pairSwitchPossible = false;

    address public bridge;

    address payable public devWallet;

    bool inSwapTokens;
    bool public SwapTokensEnabled = true;

    uint256 public maxTxAmount = 50000000 * 10**9;
    uint256 private numTokensSwap = 50000 * 10**9;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapTokensEnabledUpdated(bool enabled);
    event SwapAndLiquifyFailed(uint256 tokensSwapped);
    event SwapTokensForETH(uint256 tokensSwapped);

    event FeeAppliedTo(address _address);
    event FeeExcludedFrom(address _address);

    event SwapRouterUpdated(address _router);
    event SwapPairUpdated(address _pair);
    event SwapPairRequested(address _pair, uint256 unlockTimestamp);
    event SwapPairLocked(address _pair);
    event BridgeAddressUpdated(address _bridge);
    event TaxUpdated(uint256 taxFee);
    event MaxTxPercentUpdated(uint256 maxTxPercent);
    event DevWalletChanged(address newWallet);
    event GlobalTradingEnabled();

    address[] private blacklist;
    uint256 public blacklistUnlockTimestamp = 0;
    uint8 constant private _maxBlacklistings = 5;
    uint8 private _currentBlacklistings = 0;
    bool public limitedBlacklist = true;
    bool public blacklistPossible = true;

    // whitelist for adding liquidity while global trading is disabled
    mapping (address => bool) private _routerWhitelist;
    event Whitelisted(address indexed node);

    event Blacklisted(address indexed node, uint8 blacklistsThisUnlock);
    event Unblacklisted(address indexed node);
    event BlacklistUnlockCalled(uint256 unlockTimestamp, uint daysUntilUnlock, bool isLimited);
    event BlacklistLockCalled(uint256 lockTimestamp);

    bool public globalTradingEnabled = false;

    modifier lockTheSwap {
        inSwapTokens = true;
        _;
        inSwapTokens = false;
    }

    constructor (address _wallet) public {
        _balances[_msgSender()] = _tTotal;

        // This Router address should be changed based on network.

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F);
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        devWallet = payable(_wallet);

        // whitelisting for liquidity pair adding
        _routerWhitelist[address(this)] = true;
        _routerWhitelist[owner()] = true;
        _routerWhitelist[address(_uniswapV2Router)] = true;

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

        //Public list of flashbots & front-runners
        blacklistPreloadedAddress(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a));
        blacklistPreloadedAddress(address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7));
        blacklistPreloadedAddress(address(0xD334C5392eD4863C81576422B968C6FB90EE9f79));
        blacklistPreloadedAddress(address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3));
        blacklistPreloadedAddress(address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65));
        blacklistPreloadedAddress(address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A));
        blacklistPreloadedAddress(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40));
        blacklistPreloadedAddress(address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37));
        blacklistPreloadedAddress(address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850));
        blacklistPreloadedAddress(address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02));
        blacklistPreloadedAddress(address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7));
        blacklistPreloadedAddress(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b));
        blacklistPreloadedAddress(address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5));
        blacklistPreloadedAddress(address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290));
        blacklistPreloadedAddress(address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF));
        blacklistPreloadedAddress(address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7));
        blacklistPreloadedAddress(address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9));
        blacklistPreloadedAddress(address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F));
        blacklistPreloadedAddress(address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE));
        blacklistPreloadedAddress(address(0x72b30cDc1583224381132D379A052A6B10725415));
        blacklistPreloadedAddress(address(0x7100e690554B1c2FD01E8648db88bE235C1E6514));
        blacklistPreloadedAddress(address(0x000000917de6037d52b1F0a306eeCD208405f7cd));
        blacklistPreloadedAddress(address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6));
        blacklistPreloadedAddress(address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1));
        blacklistPreloadedAddress(address(0x0000000000007673393729D5618DC555FD13f9aA));
        blacklistPreloadedAddress(address(0xA3b0e79935815730d942A444A84d4Bd14A339553));
        blacklistPreloadedAddress(address(0x000000005804B22091aa9830E50459A15E7C9241));
        blacklistPreloadedAddress(address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595));
        blacklistPreloadedAddress(address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303));
        blacklistPreloadedAddress(address(0x000000000000084e91743124a982076C59f10084));
        blacklistPreloadedAddress(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d));
        blacklistPreloadedAddress(address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533));
        blacklistPreloadedAddress(address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7));
        blacklistPreloadedAddress(address(0x45fD07C63e5c316540F14b2002B085aEE78E3881));
        blacklistPreloadedAddress(address(0xDC81a3450817A58D00f45C86d0368290088db848));
        blacklistPreloadedAddress(address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964));
        blacklistPreloadedAddress(address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95));
        blacklistPreloadedAddress(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b));
        blacklistPreloadedAddress(address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345));
        blacklistPreloadedAddress(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce));
        blacklistPreloadedAddress(address(0x65A67DF75CCbF57828185c7C050e34De64d859d0));
        blacklistPreloadedAddress(address(0x7589319ED0fD750017159fb4E4d96C63966173C1));
        blacklistPreloadedAddress(address(0x0000000099cB7fC48a935BcEb9f05BbaE54e8987));
        blacklistPreloadedAddress(address(0x03BB05BBa541842400541142d20e9C128Ba3d17c));
    }

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

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

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

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function includeInFee(address _address) external onlyOwner {
        _includedInFees.push(_address);

        emit FeeAppliedTo(_address);
    }

    function isIncludedInFees(address _address) public view returns(bool) {
        for(uint i = 0; i < _includedInFees.length; i++) {
            if(_includedInFees[i] == _address) {
                return true;
            }
        }

        return false;
    }

    function excludeFromFee(address _address) external onlyOwner {
        for(uint i = 0; i < _includedInFees.length; i++) {
            if(_includedInFees[i] == _address) {
                _includedInFees[i] = _includedInFees[_includedInFees.length - 1];
                _includedInFees[_includedInFees.length - 1] = address(0x0);
                _includedInFees.pop();

                emit FeeExcludedFrom(_address);
                break;
            }
        }
    }

    function setUniswapRouter(address _router) external onlyOwner {
        require(_router != address(0x0), "Invalid address");
        uniswapV2Router = IUniswapV2Router02(_router);

        emit SwapRouterUpdated(_router);
    }

    function requestPairSwitch(address _pair) external onlyOwner {
        require(_pair != address(0x0), "Invalid address");
        pendingUniswapV2Pair = _pair;
        previousUniswapV2Pair = uniswapV2Pair;
        pairSwitchUnlockTimestamp = now + 7 days;
        pairSwitchPossible = true;
        emit SwapPairRequested(_pair, pairSwitchUnlockTimestamp);
    }

    function setUniswapPairToPending() external onlyOwner {
        require(pairSwitchPossible, "Cannot update pair - requestPairSwitch has not been called.");
        require(now > pairSwitchUnlockTimestamp, "Cannot update pair - required unlock time period has not yet passed.");

        uniswapV2Pair = pendingUniswapV2Pair;
        emit SwapPairUpdated(pendingUniswapV2Pair);
    }

    function revertToPreviousPair() external onlyOwner {
        require(pairSwitchPossible, "Cannot update pair - requestPairSwitch has not been called.");
        require(now > pairSwitchUnlockTimestamp, "Cannot update pair - required unlock time period has not yet passed.");

        uniswapV2Pair = previousUniswapV2Pair;
        emit SwapPairUpdated(uniswapV2Pair);
    }

    function lockPairSwitching() external onlyOwner {
        pairSwitchPossible = false;
        emit SwapPairLocked(uniswapV2Pair);
    }

    function setBridgeAddress(address _bridge) external onlyOwner {
        require(_bridge != address(0x0), "Invalid address");
        bridge = _bridge;

        emit BridgeAddressUpdated(_bridge);
    }

    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        require(taxFee <= 2, "Input number between 0 - 2");
        _taxFee = taxFee;

        emit TaxUpdated(taxFee);
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent >= 1, "Anti-whale limitations cannot fall below 1%/supply per Tx.");
        maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );

        emit MaxTxPercentUpdated(maxTxPercent);
    }

    function setConvertMinimum(uint256 _numTokensSwap) external onlyOwner {
        require(_numTokensSwap < 500000, "Minimum token conversion amount cannot exceed 500,000 tokens!");
        require(_numTokensSwap > 500, "Minimum token conversion amount cannot be under 500 tokens!");
        numTokensSwap = _numTokensSwap * 10**9;
        emit MinTokensBeforeSwapUpdated(numTokensSwap);
    }

    function setDevWallet(address payable newWallet) external onlyOwner {
        require(newWallet != address(0x0), "Invalid address");
        require(devWallet != newWallet, "Wallet already set!");
        devWallet = payable(newWallet);

        emit DevWalletChanged(newWallet);
    }

    function setSwapEnabled(bool enabled) external onlyOwner {
        SwapTokensEnabled = enabled;
        emit SwapTokensEnabledUpdated(enabled);
    }

    function setGlobalTradingEnabled() external onlyOwner {
        globalTradingEnabled = true;
        emit GlobalTradingEnabled();
    }

    //to receive ETH from uniswapV2Router when swapping
    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }


    function _takeFee(uint256 tFee) private {
        _balances[address(this)] = _balances[address(this)].add(tFee);
    }

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

    function removeAllFee() private {
        if(_taxFee == 0) return;

        _previousTaxFee = _taxFee;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        if (!globalTradingEnabled && !_routerWhitelist[from] && !_routerWhitelist[to]) {
            require(_msgSender() == owner() || globalTradingEnabled, "Trading has not yet been enabled.");
        }

        if(from != owner() && to != owner()) {
            require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        require(amount > 0, "Transfer amount must be greater than zero");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isInBlacklist(from) && !isInBlacklist(to) && !isInBlacklist(tx.origin),
            "This address is blacklisted. Please contact DOGIRA Support if you believe this is in error.");


        uint256 contractTokenBalance = balanceOf(address(this));

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

        bool overMinTokenBalance = contractTokenBalance >= numTokensSwap;
        if (
            overMinTokenBalance &&
            !inSwapTokens &&
            from != uniswapV2Pair &&
            SwapTokensEnabled
        ) {
            contractTokenBalance = numTokensSwap;
            swapTokens(contractTokenBalance);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = false;

        //if any non-owner/contract account belongs to _isIncludedInFees account then fee will be applied
        if(_taxFee > 0 && from != owner() && to != owner() && from != address(this) && to != address(this)) {
            if(isIncludedInFees(from) || isIncludedInFees(to)){
                takeFee = true;
            }
        }


        //transfer amount, take fee if applicable
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        uint256 toSwapForEth = contractTokenBalance;
        swapTokensForEth(toSwapForEth);

        // how much ETH did we just swap into?
        uint256 fromSwap = address(this).balance.sub(initialBalance);

        devWallet.transfer(fromSwap);
    }

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

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

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        _transferStandard(sender, recipient, amount);

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _balances[sender] = _balances[sender].sub(tAmount);
        _balances[recipient] = _balances[recipient].add(tTransferAmount);
        _takeFee(tFee);

        emit Transfer(sender, recipient, tTransferAmount);
    }

    // Blacklist Lock & Unlock functions.
    // Unlocking the blacklist requires a minimum of 3 days notice.
    function unlockBlacklist(bool _limitedBlacklist, uint _daysUntilUnlock) external onlyOwner {
        require(_daysUntilUnlock > 2, "Unlocking blacklist functionality requires a minimum of 3 days notice.");
        blacklistUnlockTimestamp = now + (_daysUntilUnlock * 60 * 60 * 24);
        limitedBlacklist = _limitedBlacklist;
        blacklistPossible = true;
        emit BlacklistUnlockCalled(blacklistUnlockTimestamp, _daysUntilUnlock, limitedBlacklist);
    }

    function lockBlacklist() external onlyOwner {
        blacklistPossible = false;
        _currentBlacklistings = 0;
        emit BlacklistLockCalled(now);
    }

    function addToWhitelist(address _address) external onlyOwner {
        require(!globalTradingEnabled, "Global trading is enabled: Whitelist no longer necessary.");
        require(!_routerWhitelist[_address], "Address is already whitelisted!");
        _routerWhitelist[_address] = true;
        emit Whitelisted(_address);
    }

    function addToBlacklist(address _address) external onlyOwner {
        require(blacklistPossible, "Blacklisting is currently locked.");
        require(now > blacklistUnlockTimestamp, "Blacklisting is enabled, but currently timelocked.");
        require(!isInBlacklist(_address), "This address is already blacklisted.");
        if (limitedBlacklist) {
            require(_currentBlacklistings <= _maxBlacklistings, "Blacklisting limit reached, re-lock and timed unlock required.");
        }
        require(_address != address(0x0), "Invalid address");
        require(_address != address(this) && _address != owner() && _address != address(uniswapV2Router) && _address != uniswapV2Pair && _address != bridge, "this address cannot be blocked");

        blacklist.push(_address);
        _currentBlacklistings++;
        emit Blacklisted(_address, _currentBlacklistings);
    }

    // Function is only called within the constructor, and cannot be called after this contract is launched.
    // This is used solely to preload the Blacklist with known flashbots and frontrunners.
    function blacklistPreloadedAddress(address _address) private {
        blacklist.push(_address);
        _currentBlacklistings++;
    }

    function checkBlacklistUnlockTime() external view returns(uint256) {
        require(blacklistPossible, "Blacklisting is locked, no unlock time available.");
        return blacklistUnlockTimestamp;
    }

    function removeFromBlacklist(address _address) external onlyOwner {
        require(isInBlacklist(_address), "This address is not blacklisted.");
        for(uint i = 0; i < blacklist.length; i++) {
            if(blacklist[i] == _address) {
                blacklist[i] = blacklist[blacklist.length - 1];
                blacklist[blacklist.length - 1] = address(0x0);
                blacklist.pop();
                break;
            }
        }

        emit Unblacklisted(_address);
    }

    function isInBlacklist(address _address) public view returns (bool){
        for(uint i = 0; i < blacklist.length; i++) {
            if(blacklist[i] == _address) {
                return true;
            }
        }

        return false;
    }

    function transferERC20(address tokenAddress, address ownerAddress, uint tokens) external onlyOwner returns (bool success) {
        return IERC20(tokenAddress).transfer(ownerAddress, tokens);
    }

}

File 1 of 10: Address.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: MIT

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 2 of 10: Context.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: MIT

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

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

File 4 of 10: IERC20.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: MIT

interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 10: IUniswapV2Factory.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

File 6 of 10: IUniswapV2Pair.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

File 7 of 10: IUniswapV2Router01.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

File 8 of 10: IUniswapV2Router02.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

import "./IUniswapV2Router01.sol";

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

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

File 9 of 10: Ownable.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: MIT

import "./Context.sol";
import "./SafeMath.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    using SafeMath for uint256;
    address private _owner;
    address private _previousOwner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
    * @dev Leaves the contract without owner. It will not be possible to call
    * `onlyOwner` functions anymore. Can only be called by the current owner.
    *
    * NOTE: Renouncing ownership will leave the contract without an owner,
    * thereby removing any functionality that is only available to the owner.
    */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
        _previousOwner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

File 10 of 10: SafeMath.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: MIT

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockTimestamp","type":"uint256"}],"name":"BlacklistLockCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"unlockTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"daysUntilUnlock","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isLimited","type":"bool"}],"name":"BlacklistUnlockCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"node","type":"address"},{"indexed":false,"internalType":"uint8","name":"blacklistsThisUnlock","type":"uint8"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_bridge","type":"address"}],"name":"BridgeAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"DevWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"FeeAppliedTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"FeeExcludedFrom","type":"event"},{"anonymous":false,"inputs":[],"name":"GlobalTradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"MaxTxPercentUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"}],"name":"SwapAndLiquifyFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_pair","type":"address"}],"name":"SwapPairLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"unlockTimestamp","type":"uint256"}],"name":"SwapPairRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_pair","type":"address"}],"name":"SwapPairUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_router","type":"address"}],"name":"SwapRouterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapTokensEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"node","type":"address"}],"name":"Unblacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"node","type":"address"}],"name":"Whitelisted","type":"event"},{"inputs":[],"name":"SwapTokensEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistPossible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistUnlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkBlacklistUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"globalTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isInBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isIncludedInFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitedBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockPairSwitching","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairSwitchPossible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairSwitchUnlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingUniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousUniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"requestPairSwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertToPreviousPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"name":"setBridgeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokensSwap","type":"uint256"}],"name":"setConvertMinimum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setGlobalTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setUniswapPairToPending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tokenAddress","type":"address"},{"internalType":"address","name":"ownerAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_limitedBlacklist","type":"bool"},{"internalType":"uint256","name":"_daysUntilUnlock","type":"uint256"}],"name":"unlockBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060048190556005819055600b819055600c805460ff19908116909155600d805460ff60a81b1916600160a81b17905566b1a2bc2ec50000600e55652d79883d2000600f556011919091556012805462ff00001961ffff199091166101001716620100001790556014805490911690553480156200008257600080fd5b50604051620041633803806200416383398181016040526020811015620000a857600080fd5b50516000620000b6620008f8565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350670de0b6b3a76400006002600062000117620008f8565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600073d9e1ce17f2641f24ae83637ab66a2cca9c378b9f9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018e57600080fd5b505afa158015620001a3573d6000803e3d6000fd5b505050506040513d6020811015620001ba57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200020b57600080fd5b505afa15801562000220573d6000803e3d6000fd5b505050506040513d60208110156200023757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200028a57600080fd5b505af11580156200029f573d6000803e3d6000fd5b505050506040513d6020811015620002b657600080fd5b5051600880546001600160a01b03199081166001600160a01b0393841617909155600780548216848416179055600d80549091169184169190911790553060009081526013602081905260408220805460ff19166001908117909155916200031d620008fc565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055908516815260139092529020805490911660011790556200036b620008f8565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040518082815260200191505060405180910390a3620003dd73a39c50bf86e15391180240938f469a7bf4fdae9a6200090b565b620003fc73fffff6e70842330948ca47254f2be673b1cb0db76200090b565b6200041b73d334c5392ed4863c81576422b968c6fb90ee9f796200090b565b6200043a7320f6fcd6b8813c4f98c0ffbd88c87c0255040aa36200090b565b6200045973c6bf34596f74eb22e066a878848dfb9fc1cf4c656200090b565b6200047873231dc6af3c66741f6cf618884b953df0e83c1a2a6200090b565b620004926e3b3cc22af3ae1eac0440bcee416b406200090b565b620004b17342d4c197036bd9984ca652303e07dd29fa6bdb376200090b565b620004d07322246f9bca9921bfa9a3f8df5babc5bc8ee738506200090b565b620004ef73bcb05a3f85d34f0194c70d5914d5c4e28f11cc026200090b565b6200050e735b83a351500b631cc2a20a665ee17f0dc66e3db76200090b565b6200052d7339608b6f20704889c51c0ae28b1fca8f36a5239b6200090b565b6200054c73136f4b5b6a306091b280e3f251fa0e21b1280cd56200090b565b6200056b734aeb32e16dcac00b092596adc6cd4955efdee2906200090b565b6200058a73e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf6200090b565b620005a97359341bc6b4f3ace878574b05914f43309dd678c76200090b565b620005c873c496d84215d5018f6f53e7f6f12e45c9b5e8e8a96200090b565b620005e773fe9d99ef02e905127239e85a611c29ad32c31c2f6200090b565b62000606739edd647d7d6eceae6bb61d7785ef66c5055a9bee6200090b565b620006257372b30cdc1583224381132d379a052a6b107254156200090b565b62000644737100e690554b1c2fd01e8648db88be235c1e65146200090b565b6200066070917de6037d52b1f0a306eecd208405f7cd6200090b565b6200067f7359903993ae67bf48f10832e9be28935fee04d6f66200090b565b620006986d03441d59dde9a90bffb1cd3fabf16200090b565b620006b16d7673393729d5618dc555fd13f9aa6200090b565b620006d073a3b0e79935815730d942a444a84d4bd14a3395536200090b565b620006eb6f5804b22091aa9830e50459a15e7c92416200090b565b6200070a73323b7f37d382a68b0195b873af17cea5b67cd5956200090b565b62000729736da4bea09c3aa0761b09b19837d9105a522543036200090b565b620007426d084e91743124a982076c59f100846200090b565b62000761731d6e8bac6ea3730825bde4b005ed7b2b39a2932d6200090b565b6200078073fad95b6089c53a0d1d861eabfaadd8901b0f85336200090b565b6200079f739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e76200090b565b620007be7345fd07c63e5c316540f14b2002b085aee78e38816200090b565b620007dd73dc81a3450817a58d00f45c86d0368290088db8486200090b565b620007fc73fe76f05dc59fec04184fa0245ad0c3cf9a57b9646200090b565b6200081b73d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf956200090b565b6200083a73a1cec245c456dd1bd9f2815a6955fef44eb4191b6200090b565b6200085973e516bdee55b0b4e9bacaf6285130de15589b13456200090b565b6200087873e031b36b53e53a292a20c5f08fd1658cddf74fce6200090b565b620008977365a67df75ccbf57828185c7c050e34de64d859d06200090b565b620008b6737589319ed0fd750017159fb4e4d96c63966173c16200090b565b620008d16f99cb7fc48a935bceb9f05bbae54e89876200090b565b620008f07303bb05bba541842400541142d20e9c128ba3d17c6200090b565b505062000977565b3390565b6000546001600160a01b031690565b60108054600180820183556000929092527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319166001600160a01b0393909316929092179091556012805460ff19811660ff91821690930116919091179055565b6137dc80620009876000396000f3fe6080604052600436106103035760003560e01c80638c0b5e2211610190578063c5e750ac116100dc578063dd62ed3e11610095578063e78cea921161006f578063e78cea9214610a9d578063ea2f0b3714610ab2578063f23377b314610ae5578063f2fde38b14610afa5761030a565b8063dd62ed3e14610a03578063e01af92c14610a3e578063e43252d714610a6a5761030a565b8063c5e750ac14610952578063c67f8abf14610985578063d408d9791461099a578063d543dbeb146109af578063d9531a8f146109d9578063db870103146109ee5761030a565b80639db5dbe411610149578063a9059cbb11610123578063a9059cbb146108bc578063b8623b4e146108f5578063bea9849e1461090a578063bff4c6321461093d5761030a565b80639db5dbe41461080d578063a457c2d714610850578063a4d443f9146108895761030a565b80638c0b5e22146107715780638d802f9e146107865780638da5cb5b1461079b5780638ea5220f146107b057806395d89b41146107c55780639caf9b00146107da5761030a565b80633b47ee2e1161024f5780635ba7f4b311610208578063715018a6116101e2578063715018a6146106ff5780637e472d4b146107145780637f5a22f91461072957806383cc0b581461075c5761030a565b80635ba7f4b3146106855780636f4876f5146106b757806370a08231146106cc5761030a565b80633b47ee2e14610598578063437823ec146105c257806344337ea1146105f557806349bd5a5e14610628578063537df3b61461063d5780635ad352f6146106705761030a565b80631694505e116102bc57806323b872dd1161029657806323b872dd146104dc578063313ce5671461051f578063395093511461054a5780633b124fe7146105835761030a565b80631694505e1461046d57806318160ddd146104825780631f53ac02146104a95761030a565b806303a928eb1461030f578063061c82d01461032657806306fdde0314610350578063075b73e2146103da578063095ea7b314610403578063113b58661461043c5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610b2d565b005b34801561033257600080fd5b506103246004803603602081101561034957600080fd5b5035610bc6565b34801561035c57600080fd5b50610365610caf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039f578181015183820152602001610387565b50505050905090810190601f1680156103cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103e657600080fd5b506103ef610ccf565b604080519115158252519081900360200190f35b34801561040f57600080fd5b506103ef6004803603604081101561042657600080fd5b506001600160a01b038135169060200135610cd8565b34801561044857600080fd5b50610451610cf6565b604080516001600160a01b039092168252519081900360200190f35b34801561047957600080fd5b50610451610d05565b34801561048e57600080fd5b50610497610d14565b60408051918252519081900360200190f35b3480156104b557600080fd5b50610324600480360360208110156104cc57600080fd5b50356001600160a01b0316610d20565b3480156104e857600080fd5b506103ef600480360360608110156104ff57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b34801561052b57600080fd5b50610534610ef9565b6040805160ff9092168252519081900360200190f35b34801561055657600080fd5b506103ef6004803603604081101561056d57600080fd5b506001600160a01b038135169060200135610efe565b34801561058f57600080fd5b50610497610f4c565b3480156105a457600080fd5b50610324600480360360208110156105bb57600080fd5b5035610f52565b3480156105ce57600080fd5b50610324600480360360208110156105e557600080fd5b50356001600160a01b031661106c565b34801561060157600080fd5b506103246004803603602081101561061857600080fd5b50356001600160a01b0316611228565b34801561063457600080fd5b5061045161156b565b34801561064957600080fd5b506103246004803603602081101561066057600080fd5b50356001600160a01b031661157a565b34801561067c57600080fd5b5061049761177e565b34801561069157600080fd5b50610324600480360360408110156106a857600080fd5b508035151590602001356117cf565b3480156106c357600080fd5b506104976118e2565b3480156106d857600080fd5b50610497600480360360208110156106ef57600080fd5b50356001600160a01b03166118e8565b34801561070b57600080fd5b50610324611907565b34801561072057600080fd5b506103246119b5565b34801561073557600080fd5b506103246004803603602081101561074c57600080fd5b50356001600160a01b0316611a58565b34801561076857600080fd5b50610324611b59565b34801561077d57600080fd5b50610497611be9565b34801561079257600080fd5b50610324611bef565b3480156107a757600080fd5b50610451611d1d565b3480156107bc57600080fd5b50610451611d2c565b3480156107d157600080fd5b50610365611d3b565b3480156107e657600080fd5b506103ef600480360360208110156107fd57600080fd5b50356001600160a01b0316611d5b565b34801561081957600080fd5b506103ef6004803603606081101561083057600080fd5b506001600160a01b03813581169160208101359091169060400135611db6565b34801561085c57600080fd5b506103ef6004803603604081101561087357600080fd5b506001600160a01b038135169060200135611e9b565b34801561089557600080fd5b50610324600480360360208110156108ac57600080fd5b50356001600160a01b0316611f03565b3480156108c857600080fd5b506103ef600480360360408110156108df57600080fd5b506001600160a01b03813516906020013561202d565b34801561090157600080fd5b506103ef612041565b34801561091657600080fd5b506103246004803603602081101561092d57600080fd5b50356001600160a01b031661204a565b34801561094957600080fd5b506103ef612143565b34801561095e57600080fd5b506103ef6004803603602081101561097557600080fd5b50356001600160a01b0316612153565b34801561099157600080fd5b506103ef6121a5565b3480156109a657600080fd5b506104516121b4565b3480156109bb57600080fd5b50610324600480360360208110156109d257600080fd5b50356121c3565b3480156109e557600080fd5b506103ef6122b1565b3480156109fa57600080fd5b506103246122bf565b348015610a0f57600080fd5b5061049760048036036040811015610a2657600080fd5b506001600160a01b03813581169160200135166123f1565b348015610a4a57600080fd5b5061032460048036036020811015610a6157600080fd5b5035151561241c565b348015610a7657600080fd5b5061032460048036036020811015610a8d57600080fd5b50356001600160a01b03166124c7565b348015610aa957600080fd5b5061045161261b565b348015610abe57600080fd5b5061032460048036036020811015610ad557600080fd5b50356001600160a01b031661262f565b348015610af157600080fd5b5061049761270b565b348015610b0657600080fd5b5061032460048036036020811015610b1d57600080fd5b50356001600160a01b0316612711565b610b35612809565b6000546001600160a01b03908116911614610b85576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6012805462ff00ff191690556040805142815290517fb4f20f5ac33851aafbe8cf3fd29451aea22ed5736ae7344816e9ea3d9971cfb29181900360200190a1565b610bce612809565b6000546001600160a01b03908116911614610c1e576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6002811115610c74576040805162461bcd60e51b815260206004820152601a60248201527f496e707574206e756d626572206265747765656e2030202d2032000000000000604482015290519081900360640190fd5b60048190556040805182815290517f35ad15e7f5e4a16b548e8916bd02c51847dde8d106f334b4edaaacf140e43c919181900360200190a150565b604080518082019091526006815265446f6769726160d01b602082015290565b60145460ff1681565b6000610cec610ce5612809565b848461280d565b5060015b92915050565b600a546001600160a01b031681565b6007546001600160a01b031681565b670de0b6b3a764000090565b610d28612809565b6000546001600160a01b03908116911614610d78576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b038116610dc5576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600d546001600160a01b0382811691161415610e1e576040805162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b604482015290519081900360640190fd5b600d80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f268c00f4ec08b34fdde24b52e47a09d62f3f3837eb3b8ac7206cefb3bb5e53459181900360200190a150565b6000610e7f8484846128f9565b610eef84610e8b612809565b610eea85604051806060016040528060288152602001613600602891396001600160a01b038a16600090815260036020526040812090610ec9612809565b6001600160a01b031681526020810191909152604001600020549190612ca4565b61280d565b5060019392505050565b600990565b6000610cec610f0b612809565b84610eea8560036000610f1c612809565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612d3b565b60045481565b610f5a612809565b6000546001600160a01b03908116911614610faa576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6207a1208110610feb5760405162461bcd60e51b815260040180806020018281038252603d815260200180613671603d913960400191505060405180910390fd5b6101f4811161102b5760405162461bcd60e51b815260040180806020018281038252603b815260200180613583603b913960400191505060405180910390fd5b633b9aca008102600f81905560408051918252517f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c009181900360200190a150565b611074612809565b6000546001600160a01b039081169116146110c4576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b60005b60065481101561122457816001600160a01b0316600682815481106110e857fe5b6000918252602090912001546001600160a01b0316141561121c5760068054600019810190811061111557fe5b600091825260209091200154600680546001600160a01b03909216918390811061113b57fe5b6000918252602082200180546001600160a01b0319166001600160a01b03939093169290921790915560068054600019810190811061117657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806111af57fe5b6001900381819060005260206000200160006101000a8154906001600160a01b03021916905590557f066070330054fafd0dadaeb6d88b55b6a71272847202742f2d0246f25c5fcb698260405180826001600160a01b0316815260200191505060405180910390a1611224565b6001016110c7565b5050565b611230612809565b6000546001600160a01b03908116911614611280576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b60125462010000900460ff166112c75760405162461bcd60e51b81526004018080602001828103825260218152602001806135be6021913960400191505060405180910390fd5b60115442116113075760405162461bcd60e51b81526004018080602001828103825260328152602001806133e66032913960400191505060405180910390fd5b61131081611d5b565b1561134c5760405162461bcd60e51b81526004018080602001828103825260248152602001806137186024913960400191505060405180910390fd5b601254610100900460ff16156113a357601254600560ff90911611156113a35760405162461bcd60e51b815260040180806020018281038252603e815260200180613302603e913960400191505060405180910390fd5b6001600160a01b0381166113f0576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b6001600160a01b0381163014801590611422575061140c611d1d565b6001600160a01b0316816001600160a01b031614155b801561143c57506007546001600160a01b03828116911614155b801561145657506008546001600160a01b03828116911614155b80156114755750600c546001600160a01b038281166101009092041614155b6114c6576040805162461bcd60e51b815260206004820152601e60248201527f7468697320616464726573732063616e6e6f7420626520626c6f636b65640000604482015290519081900360640190fd5b60108054600181810183556000929092527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0384166001600160a01b031990911681179091556012805460ff808216909401841660ff19909116179081905560408051919093168152915190917f46f8b36a026a0c85610ae6eac5b2c2614902bdd95929af57017cfc80ad374025919081900360200190a250565b6008546001600160a01b031681565b611582612809565b6000546001600160a01b039081169116146115d2576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6115db81611d5b565b61162c576040805162461bcd60e51b815260206004820181905260248201527f546869732061646472657373206973206e6f7420626c61636b6c69737465642e604482015290519081900360640190fd5b60005b60105481101561174657816001600160a01b03166010828154811061165057fe5b6000918252602090912001546001600160a01b0316141561173e5760108054600019810190811061167d57fe5b600091825260209091200154601080546001600160a01b0390921691839081106116a357fe5b6000918252602082200180546001600160a01b0319166001600160a01b0393909316929092179091556010805460001981019081106116de57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601080548061171757fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611746565b60010161162f565b506040516001600160a01b038216907f7534c63860313c46c473e4e98328f37017e9674e2162faf1a3ad7a96236c3b7b90600090a250565b60125460009062010000900460ff166117c85760405162461bcd60e51b815260040180806020018281038252603181526020018061352a6031913960400191505060405180910390fd5b5060115490565b6117d7612809565b6000546001600160a01b03908116911614611827576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600281116118665760405162461bcd60e51b815260040180806020018281038252604681526020018061373c6046913960600191505060405180910390fd5b426201518082020160118190556012805462ff00001985151561010090810261ff001990931692909217166201000017918290556040805193845260208401859052910460ff16151582820152517fa35d4a4678df695d3aa524c5164b776d8aa581f701b6d1fd632b63e61a0db96c9181900360600190a15050565b60115481565b6001600160a01b0381166000908152600260205260409020545b919050565b61190f612809565b6000546001600160a01b0390811691161461195f576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319908116909155600180549091169055565b6119bd612809565b6000546001600160a01b03908116911614611a0d576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600c805460ff19169055600854604080516001600160a01b039092168252517f1116a2896e8cc754ecbb52265799fce47eed7c23dba20607772677328014cae19181900360200190a1565b611a60612809565b6000546001600160a01b03908116911614611ab0576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b038116611afd576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600c80546001600160a01b0383166101008102610100600160a81b03199092169190911790915560408051918252517fe5be83d44a251cb79ef6eb972655ca2528f5bb94376d7c2cb221c44d7bef6a889181900360200190a150565b611b61612809565b6000546001600160a01b03908116911614611bb1576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6014805460ff191660011790556040517f8eabb2865706c3a5203e7dba1eb135d87bb25e1a0d934b9293c5a1145825d44b90600090a1565b600e5481565b611bf7612809565b6000546001600160a01b03908116911614611c47576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600c5460ff16611c885760405162461bcd60e51b815260040180806020018281038252603b8152602001806133ab603b913960400191505060405180910390fd5b600b544211611cc85760405162461bcd60e51b81526004018080602001828103825260448152602001806134186044913960600191505060405180910390fd5b600a54600880546001600160a01b0319166001600160a01b03909216918217905560408051918252517f86c9e05ae7f32ca9a14845dd994df09258be684bc0eeac32947fa91ec8251eea9181900360200190a1565b6000546001600160a01b031690565b600d546001600160a01b031681565b604080518082019091526006815265444f4749524160d01b602082015290565b6000805b601054811015611dad57826001600160a01b031660108281548110611d8057fe5b6000918252602090912001546001600160a01b03161415611da5576001915050611902565b600101611d5f565b50600092915050565b6000611dc0612809565b6000546001600160a01b03908116911614611e10576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611e6757600080fd5b505af1158015611e7b573d6000803e3d6000fd5b505050506040513d6020811015611e9157600080fd5b5051949350505050565b6000610cec611ea8612809565b84610eea856040518060600160405280602581526020016137826025913960036000611ed2612809565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612ca4565b611f0b612809565b6000546001600160a01b03908116911614611f5b576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b038116611fa8576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600a80546001600160a01b038084166001600160a01b0319928316811790935560085460098054909316911617905562093a804201600b819055600c805460ff1916600117905560408051928352602083019190915280517f2dc0fed5ea70f30b5175e1268c2e647cb9aa86482b618025d009b0760e22124d9281900390910190a150565b6000610cec61203a612809565b84846128f9565b600c5460ff1681565b612052612809565b6000546001600160a01b039081169116146120a2576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b0381166120ef576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f36db479a3b4d3672bd6f5fca4484283f60b5ac70647b1ceec13ecbb1d030a2df9181900360200190a150565b600d54600160a81b900460ff1681565b6000805b600654811015611dad57826001600160a01b03166006828154811061217857fe5b6000918252602090912001546001600160a01b0316141561219d576001915050611902565b600101612157565b60125462010000900460ff1681565b6009546001600160a01b031681565b6121cb612809565b6000546001600160a01b0390811691161461221b576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600181101561225b5760405162461bcd60e51b815260040180806020018281038252603a8152602001806134b7603a913960400191505060405180910390fd5b6122786064612272670de0b6b3a764000084612d9c565b90612df5565b600e556040805182815290517fc41b5064775c86e0a1e98e057992d9ecfe4e9c65c454c523295565ade199f79a9181900360200190a150565b601254610100900460ff1681565b6122c7612809565b6000546001600160a01b03908116911614612317576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600c5460ff166123585760405162461bcd60e51b815260040180806020018281038252603b8152602001806133ab603b913960400191505060405180910390fd5b600b5442116123985760405162461bcd60e51b81526004018080602001828103825260448152602001806134186044913960600191505060405180910390fd5b600954600880546001600160a01b0319166001600160a01b0392831617908190556040805191909216815290517f86c9e05ae7f32ca9a14845dd994df09258be684bc0eeac32947fa91ec8251eea9181900360200190a1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b612424612809565b6000546001600160a01b03908116911614612474576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600d8054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f4eb13905b26771ae43094576c8def400daa4a6f7e3be07e8aaa56fa1c6b3b5209181900360200190a150565b6124cf612809565b6000546001600160a01b0390811691161461251f576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b60145460ff16156125615760405162461bcd60e51b81526004018080602001828103825260398152602001806134f16039913960400191505060405180910390fd5b6001600160a01b03811660009081526013602052604090205460ff16156125cf576040805162461bcd60e51b815260206004820152601f60248201527f4164647265737320697320616c72656164792077686974656c69737465642100604482015290519081900360640190fd5b6001600160a01b038116600081815260136020526040808220805460ff19166001179055517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a250565b600c5461010090046001600160a01b031681565b612637612809565b6000546001600160a01b03908116911614612687576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f75956767f187fa56f7a245b2476e333d68b3830e46cf076fe817fc72986255c69181900360200190a150565b600b5481565b612719612809565b6000546001600160a01b03908116911614612769576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b0381166127ae5760405162461bcd60e51b81526004018080602001828103825260268152602001806133636026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166128525760405162461bcd60e51b81526004018080602001828103825260248152602001806136d36024913960400191505060405180910390fd5b6001600160a01b0382166128975760405162461bcd60e51b81526004018080602001828103825260228152602001806133896022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60145460ff1615801561292557506001600160a01b03831660009081526013602052604090205460ff16155b801561294a57506001600160a01b03821660009081526013602052604090205460ff16155b156129ba57612957611d1d565b6001600160a01b0316612968612809565b6001600160a01b0316148061297f575060145460ff165b6129ba5760405162461bcd60e51b81526004018080602001828103825260218152602001806136f76021913960400191505060405180910390fd5b6129c2611d1d565b6001600160a01b0316836001600160a01b0316141580156129fc57506129e6611d1d565b6001600160a01b0316826001600160a01b031614155b15612a4257600e54811115612a425760405162461bcd60e51b815260040180806020018281038252602881526020018061355b6028913960400191505060405180910390fd5b60008111612a815760405162461bcd60e51b81526004018080602001828103825260298152602001806136486029913960400191505060405180910390fd5b6001600160a01b038316612ac65760405162461bcd60e51b81526004018080602001828103825260258152602001806136ae6025913960400191505060405180910390fd5b6001600160a01b038216612b0b5760405162461bcd60e51b81526004018080602001828103825260238152602001806133406023913960400191505060405180910390fd5b612b1483611d5b565b158015612b275750612b2582611d5b565b155b8015612b395750612b3732611d5b565b155b612b745760405162461bcd60e51b815260040180806020018281038252605b81526020018061345c605b913960600191505060405180910390fd5b6000612b7f306118e8565b9050600e548110612b8f5750600e545b600f5481108015908190612bad5750600d54600160a01b900460ff16155b8015612bc757506008546001600160a01b03868116911614155b8015612bdc5750600d54600160a81b900460ff165b15612bef57600f549150612bef82612e37565b600080600454118015612c1b5750612c05611d1d565b6001600160a01b0316866001600160a01b031614155b8015612c405750612c2a611d1d565b6001600160a01b0316856001600160a01b031614155b8015612c5557506001600160a01b0386163014155b8015612c6a57506001600160a01b0385163014155b15612c9057612c7886612153565b80612c875750612c8785612153565b15612c90575060015b612c9c86868684612eb0565b505050505050565b60008184841115612d335760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cf8578181015183820152602001612ce0565b50505050905090810190601f168015612d255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015612d95576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612dab57506000610cf0565b82820282848281612db857fe5b0414612d955760405162461bcd60e51b81526004018080602001828103825260218152602001806135df6021913960400191505060405180910390fd5b6000612d9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612edb565b600d805460ff60a01b1916600160a01b1790554781612e5581612f40565b6000612e614784613156565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612e9c573d6000803e3d6000fd5b5050600d805460ff60a01b19169055505050565b80612ebd57612ebd613198565b612ec88484846131b2565b80612ed557612ed5613289565b50505050565b60008183612f2a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cf8578181015183820152602001612ce0565b506000838581612f3657fe5b0495945050505050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612f6e57fe5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612fc257600080fd5b505afa158015612fd6573d6000803e3d6000fd5b505050506040513d6020811015612fec57600080fd5b5051815182906001908110612ffd57fe5b6001600160a01b039283166020918202929092010152600754613023913091168461280d565b60075460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156130a9578181015183820152602001613091565b505050509050019650505050505050600060405180830381600087803b1580156130d257600080fd5b505af19250505080156130e3575060015b61311f576040805183815290517f29773efac25b2384793f0148c3bf3003943d92cbb1c285dab7a1bc5778ea371a9181900360200190a1611224565b6040805183815290517ff4016b4961d1ca7a29ff5f57d9929014a4cd0e01ebc479ef660cb30e1ad69d429181900360200190a15050565b6000612d9583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ca4565b6004546131a4576131b0565b60048054600555600090555b565b6000806131be83613291565b6001600160a01b03871660009081526002602052604090205491935091506131e69084613156565b6001600160a01b0380871660009081526002602052604080822093909355908616815220546132159083612d3b565b6001600160a01b038516600090815260026020526040902055613237816132b8565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050565b600554600455565b600080600061329f846132e5565b905060006132ad8583613156565b935090915050915091565b306000908152600260205260409020546132d29082612d3b565b3060009081526002602052604090205550565b6000610cf0606461227260045485612d9c90919063ffffffff1656fe426c61636b6c697374696e67206c696d697420726561636865642c2072652d6c6f636b20616e642074696d656420756e6c6f636b2072657175697265642e45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737343616e6e6f74207570646174652070616972202d20726571756573745061697253776974636820686173206e6f74206265656e2063616c6c65642e426c61636b6c697374696e6720697320656e61626c65642c206275742063757272656e746c792074696d656c6f636b65642e43616e6e6f74207570646174652070616972202d20726571756972656420756e6c6f636b2074696d6520706572696f6420686173206e6f7420796574207061737365642e54686973206164647265737320697320626c61636b6c69737465642e20506c6561736520636f6e7461637420444f4749524120537570706f727420696620796f752062656c69657665207468697320697320696e206572726f722e416e74692d7768616c65206c696d69746174696f6e732063616e6e6f742066616c6c2062656c6f772031252f737570706c79207065722054782e476c6f62616c2074726164696e6720697320656e61626c65643a2057686974656c697374206e6f206c6f6e676572206e65636573736172792e426c61636b6c697374696e67206973206c6f636b65642c206e6f20756e6c6f636b2074696d6520617661696c61626c652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e4d696e696d756d20746f6b656e20636f6e76657273696f6e20616d6f756e742063616e6e6f7420626520756e6465722035303020746f6b656e7321426c61636b6c697374696e672069732063757272656e746c79206c6f636b65642e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f4d696e696d756d20746f6b656e20636f6e76657273696f6e20616d6f756e742063616e6e6f7420657863656564203530302c30303020746f6b656e732145524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737354726164696e6720686173206e6f7420796574206265656e20656e61626c65642e54686973206164647265737320697320616c726561647920626c61636b6c69737465642e556e6c6f636b696e6720626c61636b6c6973742066756e6374696f6e616c6974792072657175697265732061206d696e696d756d206f6620332064617973206e6f746963652e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200b4bbc3d9450a1c46f84797c8399df1bd165420da1526e00967ed8d54e643f1d64736f6c634300060c003300000000000000000000000030fdc8177d064116ce054586d132a1267bd8c9c9

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638c0b5e2211610190578063c5e750ac116100dc578063dd62ed3e11610095578063e78cea921161006f578063e78cea9214610a9d578063ea2f0b3714610ab2578063f23377b314610ae5578063f2fde38b14610afa5761030a565b8063dd62ed3e14610a03578063e01af92c14610a3e578063e43252d714610a6a5761030a565b8063c5e750ac14610952578063c67f8abf14610985578063d408d9791461099a578063d543dbeb146109af578063d9531a8f146109d9578063db870103146109ee5761030a565b80639db5dbe411610149578063a9059cbb11610123578063a9059cbb146108bc578063b8623b4e146108f5578063bea9849e1461090a578063bff4c6321461093d5761030a565b80639db5dbe41461080d578063a457c2d714610850578063a4d443f9146108895761030a565b80638c0b5e22146107715780638d802f9e146107865780638da5cb5b1461079b5780638ea5220f146107b057806395d89b41146107c55780639caf9b00146107da5761030a565b80633b47ee2e1161024f5780635ba7f4b311610208578063715018a6116101e2578063715018a6146106ff5780637e472d4b146107145780637f5a22f91461072957806383cc0b581461075c5761030a565b80635ba7f4b3146106855780636f4876f5146106b757806370a08231146106cc5761030a565b80633b47ee2e14610598578063437823ec146105c257806344337ea1146105f557806349bd5a5e14610628578063537df3b61461063d5780635ad352f6146106705761030a565b80631694505e116102bc57806323b872dd1161029657806323b872dd146104dc578063313ce5671461051f578063395093511461054a5780633b124fe7146105835761030a565b80631694505e1461046d57806318160ddd146104825780631f53ac02146104a95761030a565b806303a928eb1461030f578063061c82d01461032657806306fdde0314610350578063075b73e2146103da578063095ea7b314610403578063113b58661461043c5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610b2d565b005b34801561033257600080fd5b506103246004803603602081101561034957600080fd5b5035610bc6565b34801561035c57600080fd5b50610365610caf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039f578181015183820152602001610387565b50505050905090810190601f1680156103cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103e657600080fd5b506103ef610ccf565b604080519115158252519081900360200190f35b34801561040f57600080fd5b506103ef6004803603604081101561042657600080fd5b506001600160a01b038135169060200135610cd8565b34801561044857600080fd5b50610451610cf6565b604080516001600160a01b039092168252519081900360200190f35b34801561047957600080fd5b50610451610d05565b34801561048e57600080fd5b50610497610d14565b60408051918252519081900360200190f35b3480156104b557600080fd5b50610324600480360360208110156104cc57600080fd5b50356001600160a01b0316610d20565b3480156104e857600080fd5b506103ef600480360360608110156104ff57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b34801561052b57600080fd5b50610534610ef9565b6040805160ff9092168252519081900360200190f35b34801561055657600080fd5b506103ef6004803603604081101561056d57600080fd5b506001600160a01b038135169060200135610efe565b34801561058f57600080fd5b50610497610f4c565b3480156105a457600080fd5b50610324600480360360208110156105bb57600080fd5b5035610f52565b3480156105ce57600080fd5b50610324600480360360208110156105e557600080fd5b50356001600160a01b031661106c565b34801561060157600080fd5b506103246004803603602081101561061857600080fd5b50356001600160a01b0316611228565b34801561063457600080fd5b5061045161156b565b34801561064957600080fd5b506103246004803603602081101561066057600080fd5b50356001600160a01b031661157a565b34801561067c57600080fd5b5061049761177e565b34801561069157600080fd5b50610324600480360360408110156106a857600080fd5b508035151590602001356117cf565b3480156106c357600080fd5b506104976118e2565b3480156106d857600080fd5b50610497600480360360208110156106ef57600080fd5b50356001600160a01b03166118e8565b34801561070b57600080fd5b50610324611907565b34801561072057600080fd5b506103246119b5565b34801561073557600080fd5b506103246004803603602081101561074c57600080fd5b50356001600160a01b0316611a58565b34801561076857600080fd5b50610324611b59565b34801561077d57600080fd5b50610497611be9565b34801561079257600080fd5b50610324611bef565b3480156107a757600080fd5b50610451611d1d565b3480156107bc57600080fd5b50610451611d2c565b3480156107d157600080fd5b50610365611d3b565b3480156107e657600080fd5b506103ef600480360360208110156107fd57600080fd5b50356001600160a01b0316611d5b565b34801561081957600080fd5b506103ef6004803603606081101561083057600080fd5b506001600160a01b03813581169160208101359091169060400135611db6565b34801561085c57600080fd5b506103ef6004803603604081101561087357600080fd5b506001600160a01b038135169060200135611e9b565b34801561089557600080fd5b50610324600480360360208110156108ac57600080fd5b50356001600160a01b0316611f03565b3480156108c857600080fd5b506103ef600480360360408110156108df57600080fd5b506001600160a01b03813516906020013561202d565b34801561090157600080fd5b506103ef612041565b34801561091657600080fd5b506103246004803603602081101561092d57600080fd5b50356001600160a01b031661204a565b34801561094957600080fd5b506103ef612143565b34801561095e57600080fd5b506103ef6004803603602081101561097557600080fd5b50356001600160a01b0316612153565b34801561099157600080fd5b506103ef6121a5565b3480156109a657600080fd5b506104516121b4565b3480156109bb57600080fd5b50610324600480360360208110156109d257600080fd5b50356121c3565b3480156109e557600080fd5b506103ef6122b1565b3480156109fa57600080fd5b506103246122bf565b348015610a0f57600080fd5b5061049760048036036040811015610a2657600080fd5b506001600160a01b03813581169160200135166123f1565b348015610a4a57600080fd5b5061032460048036036020811015610a6157600080fd5b5035151561241c565b348015610a7657600080fd5b5061032460048036036020811015610a8d57600080fd5b50356001600160a01b03166124c7565b348015610aa957600080fd5b5061045161261b565b348015610abe57600080fd5b5061032460048036036020811015610ad557600080fd5b50356001600160a01b031661262f565b348015610af157600080fd5b5061049761270b565b348015610b0657600080fd5b5061032460048036036020811015610b1d57600080fd5b50356001600160a01b0316612711565b610b35612809565b6000546001600160a01b03908116911614610b85576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6012805462ff00ff191690556040805142815290517fb4f20f5ac33851aafbe8cf3fd29451aea22ed5736ae7344816e9ea3d9971cfb29181900360200190a1565b610bce612809565b6000546001600160a01b03908116911614610c1e576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6002811115610c74576040805162461bcd60e51b815260206004820152601a60248201527f496e707574206e756d626572206265747765656e2030202d2032000000000000604482015290519081900360640190fd5b60048190556040805182815290517f35ad15e7f5e4a16b548e8916bd02c51847dde8d106f334b4edaaacf140e43c919181900360200190a150565b604080518082019091526006815265446f6769726160d01b602082015290565b60145460ff1681565b6000610cec610ce5612809565b848461280d565b5060015b92915050565b600a546001600160a01b031681565b6007546001600160a01b031681565b670de0b6b3a764000090565b610d28612809565b6000546001600160a01b03908116911614610d78576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b038116610dc5576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600d546001600160a01b0382811691161415610e1e576040805162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b604482015290519081900360640190fd5b600d80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f268c00f4ec08b34fdde24b52e47a09d62f3f3837eb3b8ac7206cefb3bb5e53459181900360200190a150565b6000610e7f8484846128f9565b610eef84610e8b612809565b610eea85604051806060016040528060288152602001613600602891396001600160a01b038a16600090815260036020526040812090610ec9612809565b6001600160a01b031681526020810191909152604001600020549190612ca4565b61280d565b5060019392505050565b600990565b6000610cec610f0b612809565b84610eea8560036000610f1c612809565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612d3b565b60045481565b610f5a612809565b6000546001600160a01b03908116911614610faa576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6207a1208110610feb5760405162461bcd60e51b815260040180806020018281038252603d815260200180613671603d913960400191505060405180910390fd5b6101f4811161102b5760405162461bcd60e51b815260040180806020018281038252603b815260200180613583603b913960400191505060405180910390fd5b633b9aca008102600f81905560408051918252517f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c009181900360200190a150565b611074612809565b6000546001600160a01b039081169116146110c4576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b60005b60065481101561122457816001600160a01b0316600682815481106110e857fe5b6000918252602090912001546001600160a01b0316141561121c5760068054600019810190811061111557fe5b600091825260209091200154600680546001600160a01b03909216918390811061113b57fe5b6000918252602082200180546001600160a01b0319166001600160a01b03939093169290921790915560068054600019810190811061117657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806111af57fe5b6001900381819060005260206000200160006101000a8154906001600160a01b03021916905590557f066070330054fafd0dadaeb6d88b55b6a71272847202742f2d0246f25c5fcb698260405180826001600160a01b0316815260200191505060405180910390a1611224565b6001016110c7565b5050565b611230612809565b6000546001600160a01b03908116911614611280576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b60125462010000900460ff166112c75760405162461bcd60e51b81526004018080602001828103825260218152602001806135be6021913960400191505060405180910390fd5b60115442116113075760405162461bcd60e51b81526004018080602001828103825260328152602001806133e66032913960400191505060405180910390fd5b61131081611d5b565b1561134c5760405162461bcd60e51b81526004018080602001828103825260248152602001806137186024913960400191505060405180910390fd5b601254610100900460ff16156113a357601254600560ff90911611156113a35760405162461bcd60e51b815260040180806020018281038252603e815260200180613302603e913960400191505060405180910390fd5b6001600160a01b0381166113f0576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b6001600160a01b0381163014801590611422575061140c611d1d565b6001600160a01b0316816001600160a01b031614155b801561143c57506007546001600160a01b03828116911614155b801561145657506008546001600160a01b03828116911614155b80156114755750600c546001600160a01b038281166101009092041614155b6114c6576040805162461bcd60e51b815260206004820152601e60248201527f7468697320616464726573732063616e6e6f7420626520626c6f636b65640000604482015290519081900360640190fd5b60108054600181810183556000929092527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0384166001600160a01b031990911681179091556012805460ff808216909401841660ff19909116179081905560408051919093168152915190917f46f8b36a026a0c85610ae6eac5b2c2614902bdd95929af57017cfc80ad374025919081900360200190a250565b6008546001600160a01b031681565b611582612809565b6000546001600160a01b039081169116146115d2576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6115db81611d5b565b61162c576040805162461bcd60e51b815260206004820181905260248201527f546869732061646472657373206973206e6f7420626c61636b6c69737465642e604482015290519081900360640190fd5b60005b60105481101561174657816001600160a01b03166010828154811061165057fe5b6000918252602090912001546001600160a01b0316141561173e5760108054600019810190811061167d57fe5b600091825260209091200154601080546001600160a01b0390921691839081106116a357fe5b6000918252602082200180546001600160a01b0319166001600160a01b0393909316929092179091556010805460001981019081106116de57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601080548061171757fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611746565b60010161162f565b506040516001600160a01b038216907f7534c63860313c46c473e4e98328f37017e9674e2162faf1a3ad7a96236c3b7b90600090a250565b60125460009062010000900460ff166117c85760405162461bcd60e51b815260040180806020018281038252603181526020018061352a6031913960400191505060405180910390fd5b5060115490565b6117d7612809565b6000546001600160a01b03908116911614611827576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600281116118665760405162461bcd60e51b815260040180806020018281038252604681526020018061373c6046913960600191505060405180910390fd5b426201518082020160118190556012805462ff00001985151561010090810261ff001990931692909217166201000017918290556040805193845260208401859052910460ff16151582820152517fa35d4a4678df695d3aa524c5164b776d8aa581f701b6d1fd632b63e61a0db96c9181900360600190a15050565b60115481565b6001600160a01b0381166000908152600260205260409020545b919050565b61190f612809565b6000546001600160a01b0390811691161461195f576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319908116909155600180549091169055565b6119bd612809565b6000546001600160a01b03908116911614611a0d576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600c805460ff19169055600854604080516001600160a01b039092168252517f1116a2896e8cc754ecbb52265799fce47eed7c23dba20607772677328014cae19181900360200190a1565b611a60612809565b6000546001600160a01b03908116911614611ab0576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b038116611afd576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600c80546001600160a01b0383166101008102610100600160a81b03199092169190911790915560408051918252517fe5be83d44a251cb79ef6eb972655ca2528f5bb94376d7c2cb221c44d7bef6a889181900360200190a150565b611b61612809565b6000546001600160a01b03908116911614611bb1576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6014805460ff191660011790556040517f8eabb2865706c3a5203e7dba1eb135d87bb25e1a0d934b9293c5a1145825d44b90600090a1565b600e5481565b611bf7612809565b6000546001600160a01b03908116911614611c47576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600c5460ff16611c885760405162461bcd60e51b815260040180806020018281038252603b8152602001806133ab603b913960400191505060405180910390fd5b600b544211611cc85760405162461bcd60e51b81526004018080602001828103825260448152602001806134186044913960600191505060405180910390fd5b600a54600880546001600160a01b0319166001600160a01b03909216918217905560408051918252517f86c9e05ae7f32ca9a14845dd994df09258be684bc0eeac32947fa91ec8251eea9181900360200190a1565b6000546001600160a01b031690565b600d546001600160a01b031681565b604080518082019091526006815265444f4749524160d01b602082015290565b6000805b601054811015611dad57826001600160a01b031660108281548110611d8057fe5b6000918252602090912001546001600160a01b03161415611da5576001915050611902565b600101611d5f565b50600092915050565b6000611dc0612809565b6000546001600160a01b03908116911614611e10576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611e6757600080fd5b505af1158015611e7b573d6000803e3d6000fd5b505050506040513d6020811015611e9157600080fd5b5051949350505050565b6000610cec611ea8612809565b84610eea856040518060600160405280602581526020016137826025913960036000611ed2612809565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612ca4565b611f0b612809565b6000546001600160a01b03908116911614611f5b576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b038116611fa8576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600a80546001600160a01b038084166001600160a01b0319928316811790935560085460098054909316911617905562093a804201600b819055600c805460ff1916600117905560408051928352602083019190915280517f2dc0fed5ea70f30b5175e1268c2e647cb9aa86482b618025d009b0760e22124d9281900390910190a150565b6000610cec61203a612809565b84846128f9565b600c5460ff1681565b612052612809565b6000546001600160a01b039081169116146120a2576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b0381166120ef576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b600780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f36db479a3b4d3672bd6f5fca4484283f60b5ac70647b1ceec13ecbb1d030a2df9181900360200190a150565b600d54600160a81b900460ff1681565b6000805b600654811015611dad57826001600160a01b03166006828154811061217857fe5b6000918252602090912001546001600160a01b0316141561219d576001915050611902565b600101612157565b60125462010000900460ff1681565b6009546001600160a01b031681565b6121cb612809565b6000546001600160a01b0390811691161461221b576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600181101561225b5760405162461bcd60e51b815260040180806020018281038252603a8152602001806134b7603a913960400191505060405180910390fd5b6122786064612272670de0b6b3a764000084612d9c565b90612df5565b600e556040805182815290517fc41b5064775c86e0a1e98e057992d9ecfe4e9c65c454c523295565ade199f79a9181900360200190a150565b601254610100900460ff1681565b6122c7612809565b6000546001600160a01b03908116911614612317576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600c5460ff166123585760405162461bcd60e51b815260040180806020018281038252603b8152602001806133ab603b913960400191505060405180910390fd5b600b5442116123985760405162461bcd60e51b81526004018080602001828103825260448152602001806134186044913960600191505060405180910390fd5b600954600880546001600160a01b0319166001600160a01b0392831617908190556040805191909216815290517f86c9e05ae7f32ca9a14845dd994df09258be684bc0eeac32947fa91ec8251eea9181900360200190a1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b612424612809565b6000546001600160a01b03908116911614612474576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600d8054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f4eb13905b26771ae43094576c8def400daa4a6f7e3be07e8aaa56fa1c6b3b5209181900360200190a150565b6124cf612809565b6000546001600160a01b0390811691161461251f576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b60145460ff16156125615760405162461bcd60e51b81526004018080602001828103825260398152602001806134f16039913960400191505060405180910390fd5b6001600160a01b03811660009081526013602052604090205460ff16156125cf576040805162461bcd60e51b815260206004820152601f60248201527f4164647265737320697320616c72656164792077686974656c69737465642100604482015290519081900360640190fd5b6001600160a01b038116600081815260136020526040808220805460ff19166001179055517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a250565b600c5461010090046001600160a01b031681565b612637612809565b6000546001600160a01b03908116911614612687576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f75956767f187fa56f7a245b2476e333d68b3830e46cf076fe817fc72986255c69181900360200190a150565b600b5481565b612719612809565b6000546001600160a01b03908116911614612769576040805162461bcd60e51b81526020600482018190526024820152600080516020613628833981519152604482015290519081900360640190fd5b6001600160a01b0381166127ae5760405162461bcd60e51b81526004018080602001828103825260268152602001806133636026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166128525760405162461bcd60e51b81526004018080602001828103825260248152602001806136d36024913960400191505060405180910390fd5b6001600160a01b0382166128975760405162461bcd60e51b81526004018080602001828103825260228152602001806133896022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60145460ff1615801561292557506001600160a01b03831660009081526013602052604090205460ff16155b801561294a57506001600160a01b03821660009081526013602052604090205460ff16155b156129ba57612957611d1d565b6001600160a01b0316612968612809565b6001600160a01b0316148061297f575060145460ff165b6129ba5760405162461bcd60e51b81526004018080602001828103825260218152602001806136f76021913960400191505060405180910390fd5b6129c2611d1d565b6001600160a01b0316836001600160a01b0316141580156129fc57506129e6611d1d565b6001600160a01b0316826001600160a01b031614155b15612a4257600e54811115612a425760405162461bcd60e51b815260040180806020018281038252602881526020018061355b6028913960400191505060405180910390fd5b60008111612a815760405162461bcd60e51b81526004018080602001828103825260298152602001806136486029913960400191505060405180910390fd5b6001600160a01b038316612ac65760405162461bcd60e51b81526004018080602001828103825260258152602001806136ae6025913960400191505060405180910390fd5b6001600160a01b038216612b0b5760405162461bcd60e51b81526004018080602001828103825260238152602001806133406023913960400191505060405180910390fd5b612b1483611d5b565b158015612b275750612b2582611d5b565b155b8015612b395750612b3732611d5b565b155b612b745760405162461bcd60e51b815260040180806020018281038252605b81526020018061345c605b913960600191505060405180910390fd5b6000612b7f306118e8565b9050600e548110612b8f5750600e545b600f5481108015908190612bad5750600d54600160a01b900460ff16155b8015612bc757506008546001600160a01b03868116911614155b8015612bdc5750600d54600160a81b900460ff165b15612bef57600f549150612bef82612e37565b600080600454118015612c1b5750612c05611d1d565b6001600160a01b0316866001600160a01b031614155b8015612c405750612c2a611d1d565b6001600160a01b0316856001600160a01b031614155b8015612c5557506001600160a01b0386163014155b8015612c6a57506001600160a01b0385163014155b15612c9057612c7886612153565b80612c875750612c8785612153565b15612c90575060015b612c9c86868684612eb0565b505050505050565b60008184841115612d335760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cf8578181015183820152602001612ce0565b50505050905090810190601f168015612d255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015612d95576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612dab57506000610cf0565b82820282848281612db857fe5b0414612d955760405162461bcd60e51b81526004018080602001828103825260218152602001806135df6021913960400191505060405180910390fd5b6000612d9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612edb565b600d805460ff60a01b1916600160a01b1790554781612e5581612f40565b6000612e614784613156565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612e9c573d6000803e3d6000fd5b5050600d805460ff60a01b19169055505050565b80612ebd57612ebd613198565b612ec88484846131b2565b80612ed557612ed5613289565b50505050565b60008183612f2a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cf8578181015183820152602001612ce0565b506000838581612f3657fe5b0495945050505050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612f6e57fe5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612fc257600080fd5b505afa158015612fd6573d6000803e3d6000fd5b505050506040513d6020811015612fec57600080fd5b5051815182906001908110612ffd57fe5b6001600160a01b039283166020918202929092010152600754613023913091168461280d565b60075460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156130a9578181015183820152602001613091565b505050509050019650505050505050600060405180830381600087803b1580156130d257600080fd5b505af19250505080156130e3575060015b61311f576040805183815290517f29773efac25b2384793f0148c3bf3003943d92cbb1c285dab7a1bc5778ea371a9181900360200190a1611224565b6040805183815290517ff4016b4961d1ca7a29ff5f57d9929014a4cd0e01ebc479ef660cb30e1ad69d429181900360200190a15050565b6000612d9583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ca4565b6004546131a4576131b0565b60048054600555600090555b565b6000806131be83613291565b6001600160a01b03871660009081526002602052604090205491935091506131e69084613156565b6001600160a01b0380871660009081526002602052604080822093909355908616815220546132159083612d3b565b6001600160a01b038516600090815260026020526040902055613237816132b8565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050565b600554600455565b600080600061329f846132e5565b905060006132ad8583613156565b935090915050915091565b306000908152600260205260409020546132d29082612d3b565b3060009081526002602052604090205550565b6000610cf0606461227260045485612d9c90919063ffffffff1656fe426c61636b6c697374696e67206c696d697420726561636865642c2072652d6c6f636b20616e642074696d656420756e6c6f636b2072657175697265642e45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737343616e6e6f74207570646174652070616972202d20726571756573745061697253776974636820686173206e6f74206265656e2063616c6c65642e426c61636b6c697374696e6720697320656e61626c65642c206275742063757272656e746c792074696d656c6f636b65642e43616e6e6f74207570646174652070616972202d20726571756972656420756e6c6f636b2074696d6520706572696f6420686173206e6f7420796574207061737365642e54686973206164647265737320697320626c61636b6c69737465642e20506c6561736520636f6e7461637420444f4749524120537570706f727420696620796f752062656c69657665207468697320697320696e206572726f722e416e74692d7768616c65206c696d69746174696f6e732063616e6e6f742066616c6c2062656c6f772031252f737570706c79207065722054782e476c6f62616c2074726164696e6720697320656e61626c65643a2057686974656c697374206e6f206c6f6e676572206e65636573736172792e426c61636b6c697374696e67206973206c6f636b65642c206e6f20756e6c6f636b2074696d6520617661696c61626c652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e4d696e696d756d20746f6b656e20636f6e76657273696f6e20616d6f756e742063616e6e6f7420626520756e6465722035303020746f6b656e7321426c61636b6c697374696e672069732063757272656e746c79206c6f636b65642e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f4d696e696d756d20746f6b656e20636f6e76657273696f6e20616d6f756e742063616e6e6f7420657863656564203530302c30303020746f6b656e732145524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737354726164696e6720686173206e6f7420796574206265656e20656e61626c65642e54686973206164647265737320697320616c726561647920626c61636b6c69737465642e556e6c6f636b696e6720626c61636b6c6973742066756e6374696f6e616c6974792072657175697265732061206d696e696d756d206f6620332064617973206e6f746963652e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200b4bbc3d9450a1c46f84797c8399df1bd165420da1526e00967ed8d54e643f1d64736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000030fdc8177d064116ce054586d132a1267bd8c9c9

-----Decoded View---------------
Arg [0] : _wallet (address): 0x30FDC8177d064116ce054586D132A1267BD8c9c9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000030fdc8177d064116ce054586d132a1267bd8c9c9


Deployed Bytecode Sourcemap

293:22269:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19603:164;;;;;;;;;;;;;:::i;:::-;;12417:195;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12417:195:2;;:::i;7899:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2900:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8734:163;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8734:163:2;;;;;;;;:::i;1043:35::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1043:35:2;;;;;;;;;;;;;;917:41;;;;;;;;;;;;;:::i;8176:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13342:291;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13342:291:2;-1:-1:-1;;;;;13342:291:2;;:::i;8905:315::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8905:315:2;;;;;;;;;;;;;;;;;:::i;8085:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9228:220;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9228:220:2;;;;;;;;:::i;794:26::-;;;;;;;;;;;;;:::i;12939:395::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12939:395:2;;:::i;10168:480::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10168:480:2;-1:-1:-1;;;;;10168:480:2;;:::i;20117:894::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20117:894:2;-1:-1:-1;;;;;20117:894:2;;:::i;965:28::-;;;;;;;;;;;;;:::i;21582:506::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21582:506:2;-1:-1:-1;;;;;21582:506:2;;:::i;21367:207::-;;;;;;;;;;;;;:::i;19124:471::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19124:471:2;;;;;;;;;:::i;2213:43::-;;;;;;;;;;;;;:::i;8279:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8279:119:2;-1:-1:-1;;;;;8279:119:2;;:::i;1828:186:8:-;;;;;;;;;;;;;:::i;12057:138:2:-;;;;;;;;;;;;;:::i;12203:206::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12203:206:2;-1:-1:-1;;;;;12203:206:2;;:::i;13801:138::-;;;;;;;;;;;;;:::i;1323:45::-;;;;;;;;;;;;;:::i;11274:388::-;;;;;;;;;;;;;:::i;1192:79:8:-;;;;;;;;;;;;;:::i;1213:32:2:-;;;;;;;;;;;;;:::i;7990:87::-;;;;;;;;;;;;;:::i;22096:254::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22096:254:2;-1:-1:-1;;;;;22096:254:2;;:::i;22358:199::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22358:199:2;;;;;;;;;;;;;;;;;:::i;9456:271::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9456:271:2;;;;;;;;:::i;10896:370::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10896:370:2;-1:-1:-1;;;;;10896:370:2;;:::i;8406:169::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8406:169:2;;;;;;;;:::i;1136:38::-;;;;;;;;;;;;;:::i;10656:232::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10656:232:2;-1:-1:-1;;;;;10656:232:2;;:::i;1278:36::-;;;;;;;;;;;;;:::i;9891:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9891:269:2;-1:-1:-1;;;;;9891:269:2;;:::i;2402:36::-;;;;;;;;;;;;;:::i;1000:::-;;;;;;;;;;;;;:::i;12620:311::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12620:311:2;;:::i;2360:35::-;;;;;;;;;;;;;:::i;11670:379::-;;;;;;;;;;;;;:::i;8583:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8583:143:2;;;;;;;;;;:::i;13641:152::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13641:152:2;;;;:::i;19775:334::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19775:334:2;-1:-1:-1;;;;;19775:334:2;;:::i;1183:21::-;;;;;;;;;;;;;:::i;9735:148::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9735:148:2;-1:-1:-1;;;;;9735:148:2;;:::i;1085:44::-;;;;;;;;;;;;;:::i;2169:244:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2169:244:8;-1:-1:-1;;;;;2169:244:8;;:::i;19603:164:2:-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;19658:17:2::1;:25:::0;;-1:-1:-1;;19694:25:2;;;19735:24:::1;::::0;;19755:3:::1;19735:24:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;19603:164::o:0;12417:195::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;12509:1:2::1;12499:6;:11;;12491:50;;;::::0;;-1:-1:-1;;;12491:50:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12552:7;:16:::0;;;12586:18:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;12417:195:::0;:::o;7899:83::-;7969:5;;;;;;;;;;;;-1:-1:-1;;;7969:5:2;;;;7899:83;:::o;2900:40::-;;;;;;:::o;8734:163::-;8811:4;8828:39;8837:12;:10;:12::i;:::-;8851:7;8860:6;8828:8;:39::i;:::-;-1:-1:-1;8885:4:2;8734:163;;;;;:::o;1043:35::-;;;-1:-1:-1;;;;;1043:35:2;;:::o;917:41::-;;;-1:-1:-1;;;;;917:41:2;;:::o;8176:95::-;626:18;8176:95;:::o;13342:291::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;13429:25:2;::::1;13421:53;;;::::0;;-1:-1:-1;;;13421:53:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13421:53:2;;;;;;;;;;;;;::::1;;13493:9;::::0;-1:-1:-1;;;;;13493:22:2;;::::1;:9:::0;::::1;:22;;13485:54;;;::::0;;-1:-1:-1;;;13485:54:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13485:54:2;;;;;;;;;;;;;::::1;;13550:9;:30:::0;;-1:-1:-1;;;;;13550:30:2;::::1;-1:-1:-1::0;;;;;;13550:30:2;;::::1;::::0;::::1;::::0;;;13598:27:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;13342:291:::0;:::o;8905:315::-;9005:4;9022:36;9032:6;9040:9;9051:6;9022:9;:36::i;:::-;9069:121;9078:6;9086:12;:10;:12::i;:::-;9100:89;9138:6;9100:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9100:19:2;;;;;;:11;:19;;;;;;9120:12;:10;:12::i;:::-;-1:-1:-1;;;;;9100:33:2;;;;;;;;;;;;-1:-1:-1;9100:33:2;;;:89;:37;:89::i;:::-;9069:8;:121::i;:::-;-1:-1:-1;9208:4:2;8905:315;;;;;:::o;8085:83::-;784:1;8085:83;:::o;9228:220::-;9318:4;9335:83;9344:12;:10;:12::i;:::-;9358:7;9367:50;9406:10;9367:11;:25;9379:12;:10;:12::i;:::-;-1:-1:-1;;;;;9367:25:2;;;;;;;;;;;;;;;;;-1:-1:-1;9367:25:2;;;:34;;;;;;;;;;;:38;:50::i;794:26::-;;;;:::o;12939:395::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;13045:6:2::1;13028:14;:23;13020:97;;;;-1:-1:-1::0;;;13020:97:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13153:3;13136:14;:20;13128:92;;;;-1:-1:-1::0;;;13128:92:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13264:5;13247:22:::0;::::1;13231:13;:38:::0;;;13285:41:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;12939:395:::0;:::o;10168:480::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;10244:6:2::1;10240:401;10260:15;:22:::0;10256:26;::::1;10240:401;;;10329:8;-1:-1:-1::0;;;;;10307:30:2::1;:15;10323:1;10307:18;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10307:18:2::1;:30;10304:326;;;10379:15;10395:22:::0;;-1:-1:-1;;10395:26:2;;;10379:43;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;10358:15:::1;:18:::0;;-1:-1:-1;;;;;10379:43:2;;::::1;::::0;10374:1;;10358:18;::::1;;;;;;::::0;;;::::1;::::0;;::::1;:64:::0;;-1:-1:-1;;;;;;10358:64:2::1;-1:-1:-1::0;;;;;10358:64:2;;;::::1;::::0;;;::::1;::::0;;;10441:15:::1;10457:22:::0;;-1:-1:-1;;10457:26:2;;;10441:43;::::1;;;;;;;;;;;;;:58;;;;;-1:-1:-1::0;;;;;10441:58:2::1;;;;;-1:-1:-1::0;;;;;10441:58:2::1;;;;;;10518:15;:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;10518:21:2::1;;;;;;;10565:25;10581:8;10565:25;;;;-1:-1:-1::0;;;;;10565:25:2::1;;;;;;;;;;;;;;;10609:5;;10304:326;10284:3;;10240:401;;;;10168:480:::0;:::o;20117:894::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;20197:17:2::1;::::0;;;::::1;;;20189:63;;;;-1:-1:-1::0;;;20189:63:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20277:24;;20271:3;:30;20263:93;;;;-1:-1:-1::0;;;20263:93:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20376:23;20390:8;20376:13;:23::i;:::-;20375:24;20367:73;;;;-1:-1:-1::0;;;20367:73:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20455:16;::::0;::::1;::::0;::::1;;;20451:166;;;20496:21;::::0;2306:1:::1;20496:42;:21:::0;;::::1;:42;;20488:117;;;;-1:-1:-1::0;;;20488:117:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;20635:24:2;::::1;20627:52;;;::::0;;-1:-1:-1;;;20627:52:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20627:52:2;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;20698:25:2;::::1;20718:4;20698:25;::::0;::::1;::::0;:48:::1;;;20739:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;20727:19:2::1;:8;-1:-1:-1::0;;;;;20727:19:2::1;;;20698:48;:88;;;;-1:-1:-1::0;20770:15:2::1;::::0;-1:-1:-1;;;;;20750:36:2;;::::1;20770:15:::0;::::1;20750:36;;20698:88;:117;;;;-1:-1:-1::0;20802:13:2::1;::::0;-1:-1:-1;;;;;20790:25:2;;::::1;20802:13:::0;::::1;20790:25;;20698:117;:139;;;;-1:-1:-1::0;20831:6:2::1;::::0;-1:-1:-1;;;;;20819:18:2;;::::1;20831:6;::::0;;::::1;;20819:18;;20698:139;20690:182;;;::::0;;-1:-1:-1;;;20690:182:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20885:9;:24:::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;20885:24:2;;;;;::::1;::::0;;-1:-1:-1;;;;;20885:24:2;::::1;-1:-1:-1::0;;;;;;20885:24:2;;::::1;::::0;::::1;::::0;;;20920:21:::1;:23:::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;20920:23:2;;::::1;;::::0;;;;20959:44:::1;::::0;;20981:21;;;::::1;20959:44:::0;;;;20885:24;;20959:44:::1;::::0;;;;;20885:24:::1;20959:44:::0;;::::1;20117:894:::0;:::o;965:28::-;;;-1:-1:-1;;;;;965:28:2;;:::o;21582:506::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;21667:23:2::1;21681:8;21667:13;:23::i;:::-;21659:68;;;::::0;;-1:-1:-1;;;21659:68:2;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21742:6;21738:302;21758:9;:16:::0;21754:20;::::1;21738:302;;;21815:8;-1:-1:-1::0;;;;;21799:24:2::1;:9;21809:1;21799:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;21799:12:2::1;:24;21796:233;;;21859:9;21869:16:::0;;-1:-1:-1;;21869:20:2;;;21859:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;21844:9:::1;:12:::0;;-1:-1:-1;;;;;21859:31:2;;::::1;::::0;21854:1;;21844:12;::::1;;;;;;::::0;;;::::1;::::0;;::::1;:46:::0;;-1:-1:-1;;;;;;21844:46:2::1;-1:-1:-1::0;;;;;21844:46:2;;;::::1;::::0;;;::::1;::::0;;;21909:9:::1;21919:16:::0;;-1:-1:-1;;21919:20:2;;;21909:31;::::1;;;;;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;21909:46:2::1;;;;;-1:-1:-1::0;;;;;21909:46:2::1;;;;;;21974:9;:15;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;21974:15:2;;;;;-1:-1:-1;;;;;;21974:15:2::1;::::0;;;;;22008:5:::1;;21796:233;21776:3;;21738:302;;;-1:-1:-1::0;22057:23:2::1;::::0;-1:-1:-1;;;;;22057:23:2;::::1;::::0;::::1;::::0;;;::::1;21582:506:::0;:::o;21367:207::-;21453:17;;21425:7;;21453:17;;;;;21445:79;;;;-1:-1:-1;;;21445:79:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21542:24:2;;21367:207;:::o;19124:471::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;19253:1:2::1;19234:16;:20;19226:103;;;;-1:-1:-1::0;;;19226:103:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19367:3;19374:31:::0;;;19367:39:::1;19340:24;:66:::0;;;19417:16:::1;:36:::0;;-1:-1:-1;;19417:36:2;::::1;;;::::0;;::::1;-1:-1:-1::0;;19417:36:2;;::::1;::::0;;;::::1;19464:24;::::0;::::1;::::0;;;;19504:83:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;19570:16;::::1;19417:36;19570:16;19504:83;;::::0;;;;;::::1;::::0;;;;;;;::::1;19124:471:::0;;:::o;2213:43::-;;;;:::o;8279:119::-;-1:-1:-1;;;;;8372:18:2;;8345:7;8372:18;;;:9;:18;;;;;;8279:119;;;;:::o;1828:186:8:-;1414:12;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;1935:1:::1;1919:6:::0;;1898:40:::1;::::0;-1:-1:-1;;;;;1919:6:8;;::::1;::::0;1898:40:::1;::::0;1935:1;;1898:40:::1;1966:1;1949:19:::0;;-1:-1:-1;;;;;;1949:19:8;;::::1;::::0;;;;1979:27;;;;::::1;::::0;;1828:186::o;12057:138:2:-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;12116:18:2::1;:26:::0;;-1:-1:-1;;12116:26:2::1;::::0;;12173:13:::1;::::0;12158:29:::1;::::0;;-1:-1:-1;;;;;12173:13:2;;::::1;12158:29:::0;;;::::1;::::0;;;;::::1;::::0;;::::1;12057:138::o:0;12203:206::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;12284:23:2;::::1;12276:51;;;::::0;;-1:-1:-1;;;12276:51:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12276:51:2;;;;;;;;;;;;;::::1;;12338:6;:16:::0;;-1:-1:-1;;;;;12338:16:2;::::1;;::::0;::::1;-1:-1:-1::0;;;;;;12338:16:2;;::::1;::::0;;;::::1;::::0;;;12372:29:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;12203:206:::0;:::o;13801:138::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;13866:20:2::1;:27:::0;;-1:-1:-1;;13866:27:2::1;13889:4;13866:27;::::0;;13909:22:::1;::::0;::::1;::::0;13866:20:::1;::::0;13909:22:::1;13801:138::o:0;1323:45::-;;;;:::o;11274:388::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;11347:18:2::1;::::0;::::1;;11339:90;;;;-1:-1:-1::0;;;11339:90:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11454:25;;11448:3;:31;11440:112;;;;-1:-1:-1::0;;;11440:112:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11581:20;::::0;11565:13:::1;:36:::0;;-1:-1:-1;;;;;;11565:36:2::1;-1:-1:-1::0;;;;;11581:20:2;;::::1;11565:36:::0;;::::1;::::0;;11617:37:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;11274:388::o:0;1192:79:8:-;1230:7;1257:6;-1:-1:-1;;;;;1257:6:8;1192:79;:::o;1213:32:2:-;;;-1:-1:-1;;;;;1213:32:2;;:::o;7990:87::-;8062:7;;;;;;;;;;;;-1:-1:-1;;;8062:7:2;;;;7990:87;:::o;22096:254::-;22158:4;;22174:144;22194:9;:16;22190:20;;22174:144;;;22251:8;-1:-1:-1;;;;;22235:24:2;:9;22245:1;22235:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22235:12:2;:24;22232:75;;;22287:4;22280:11;;;;;22232:75;22212:3;;22174:144;;;-1:-1:-1;22337:5:2;;22096:254;-1:-1:-1;;22096:254:2:o;22358:199::-;22466:12;1414::8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;22505:12:2::1;-1:-1:-1::0;;;;;22498:29:2::1;;22528:12;22542:6;22498:51;;;;;;;;;;;;;-1:-1:-1::0;;;;;22498:51:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22498:51:2;;22358:199;-1:-1:-1;;;;22358:199:2:o;9456:271::-;9551:4;9568:129;9577:12;:10;:12::i;:::-;9591:7;9600:96;9639:15;9600:96;;;;;;;;;;;;;;;;;:11;:25;9612:12;:10;:12::i;:::-;-1:-1:-1;;;;;9600:25:2;;;;;;;;;;;;;;;;;-1:-1:-1;9600:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;10896:370::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;10976:21:2;::::1;10968:49;;;::::0;;-1:-1:-1;;;10968:49:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10968:49:2;;;;;;;;;;;;;::::1;;11028:20;:28:::0;;-1:-1:-1;;;;;11028:28:2;;::::1;-1:-1:-1::0;;;;;;11028:28:2;;::::1;::::0;::::1;::::0;;;11091:13:::1;::::0;11067:21:::1;:37:::0;;;;::::1;11091:13:::0;::::1;11067:37;::::0;;11149:6:::1;11143:3;:12;11115:25;:40:::0;;;11166:18:::1;:25:::0;;-1:-1:-1;;11166:25:2::1;11028:28:::0;11166:25:::1;::::0;;11207:51:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;10896:370:::0;:::o;8406:169::-;8486:4;8503:42;8513:12;:10;:12::i;:::-;8527:9;8538:6;8503:9;:42::i;1136:38::-;;;;;;:::o;10656:232::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;10737:23:2;::::1;10729:51;;;::::0;;-1:-1:-1;;;10729:51:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10729:51:2;;;;;;;;;;;;;::::1;;10791:15;:45:::0;;-1:-1:-1;;;;;10791:45:2;::::1;-1:-1:-1::0;;;;;;10791:45:2;;::::1;::::0;::::1;::::0;;;10854:26:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;10656:232:::0;:::o;1278:36::-;;;-1:-1:-1;;;1278:36:2;;;;;:::o;9891:269::-;9955:4;;9972:156;9992:15;:22;9988:26;;9972:156;;;10061:8;-1:-1:-1;;;;;10039:30:2;:15;10055:1;10039:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10039:18:2;:30;10036:81;;;10097:4;10090:11;;;;;10036:81;10016:3;;9972:156;;2402:36;;;;;;;;;:::o;1000:::-;;;-1:-1:-1;;;;;1000:36:2;;:::o;12620:311::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;12723:1:2::1;12707:12;:17;;12699:88;;;;-1:-1:-1::0;;;12699:88:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12812:60;12856:5;12812:25;626:18;12824:12:::0;12812:11:::1;:25::i;:::-;:29:::0;::::1;:60::i;:::-;12798:11;:74:::0;12890:33:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;12620:311:::0;:::o;2360:35::-;;;;;;;;;:::o;11670:379::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;11740:18:2::1;::::0;::::1;;11732:90;;;;-1:-1:-1::0;;;11732:90:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11847:25;;11841:3;:31;11833:112;;;;-1:-1:-1::0;;;11833:112:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11974:21;::::0;11958:13:::1;:37:::0;;-1:-1:-1;;;;;;11958:37:2::1;-1:-1:-1::0;;;;;11974:21:2;;::::1;11958:37;::::0;;;;12011:30:::1;::::0;;12027:13;;;::::1;12011:30:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;11670:379::o:0;8583:143::-;-1:-1:-1;;;;;8691:18:2;;;8664:7;8691:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8583:143::o;13641:152::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;13709:17:2::1;:27:::0;;;::::1;;-1:-1:-1::0;;;13709:27:2;::::1;-1:-1:-1::0;;;;13709:27:2;;::::1;::::0;;;::::1;::::0;;;13752:33:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;13641:152:::0;:::o;19775:334::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;19856:20:2::1;::::0;::::1;;19855:21;19847:91;;;;-1:-1:-1::0;;;19847:91:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;19958:26:2;::::1;;::::0;;;:16:::1;:26;::::0;;;;;::::1;;19957:27;19949:71;;;::::0;;-1:-1:-1;;;19949:71:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;20031:26:2;::::1;;::::0;;;:16:::1;:26;::::0;;;;;:33;;-1:-1:-1;;20031:33:2::1;20060:4;20031:33;::::0;;20080:21;::::1;::::0;20031:26;20080:21:::1;19775:334:::0;:::o;1183:21::-;;;;;;-1:-1:-1;;;;;1183:21:2;;:::o;9735:148::-;1414:12:8;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;9805:15:2::1;:30:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;9805:30:2;;;;;::::1;::::0;;-1:-1:-1;;;;;9805:30:2;::::1;-1:-1:-1::0;;;;;;9805:30:2;;::::1;::::0;::::1;::::0;;;9853:22:::1;::::0;;;;;;::::1;::::0;;;;9805:30:::1;9853:22:::0;;::::1;9735:148:::0;:::o;1085:44::-;;;;:::o;2169:244:8:-;1414:12;:10;:12::i;:::-;1404:6;;-1:-1:-1;;;;;1404:6:8;;;:22;;;1396:67;;;;;-1:-1:-1;;;1396:67:8;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1396:67:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;2258:22:8;::::1;2250:73;;;;-1:-1:-1::0;;;2250:73:8::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:6;::::0;;2339:38:::1;::::0;-1:-1:-1;;;;;2339:38:8;;::::1;::::0;2360:6;::::1;::::0;2339:38:::1;::::0;::::1;2388:6;:17:::0;;-1:-1:-1;;;;;;2388:17:8::1;-1:-1:-1::0;;;;;2388:17:8;;;::::1;::::0;;;::::1;::::0;;2169:244::o;94:106:1:-;182:10;94:106;:::o;14798:337:2:-;-1:-1:-1;;;;;14891:19:2;;14883:68;;;;-1:-1:-1;;;14883:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14970:21:2;;14962:68;;;;-1:-1:-1;;;14962:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15043:18:2;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15095:32;;;;;;;;;;;;;;;;;14798:337;;;:::o;15143:1948::-;15228:20;;;;15227:21;:48;;;;-1:-1:-1;;;;;;15253:22:2;;;;;;:16;:22;;;;;;;;15252:23;15227:48;:73;;;;-1:-1:-1;;;;;;15280:20:2;;;;;;:16;:20;;;;;;;;15279:21;15227:73;15223:199;;;15341:7;:5;:7::i;:::-;-1:-1:-1;;;;;15325:23:2;:12;:10;:12::i;:::-;-1:-1:-1;;;;;15325:23:2;;:47;;;-1:-1:-1;15352:20:2;;;;15325:47;15317:93;;;;-1:-1:-1;;;15317:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15445:7;:5;:7::i;:::-;-1:-1:-1;;;;;15437:15:2;:4;-1:-1:-1;;;;;15437:15:2;;;:32;;;;;15462:7;:5;:7::i;:::-;-1:-1:-1;;;;;15456:13:2;:2;-1:-1:-1;;;;;15456:13:2;;;15437:32;15434:138;;;15504:11;;15494:6;:21;;15486:74;;;;-1:-1:-1;;;15486:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15601:1;15592:6;:10;15584:64;;;;-1:-1:-1;;;15584:64:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15667:18:2;;15659:68;;;;-1:-1:-1;;;15659:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15746:16:2;;15738:64;;;;-1:-1:-1;;;15738:64:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15822:19;15836:4;15822:13;:19::i;:::-;15821:20;:42;;;;;15846:17;15860:2;15846:13;:17::i;:::-;15845:18;15821:42;:71;;;;;15868:24;15882:9;15868:13;:24::i;:::-;15867:25;15821:71;15813:188;;;;-1:-1:-1;;;15813:188:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16016:28;16047:24;16065:4;16047:9;:24::i;:::-;16016:55;;16111:11;;16087:20;:35;16084:110;;-1:-1:-1;16171:11:2;;16084:110;16257:13;;16233:37;;;;;;;16299:49;;-1:-1:-1;16336:12:2;;-1:-1:-1;;;16336:12:2;;;;16335:13;16299:49;:87;;;;-1:-1:-1;16373:13:2;;-1:-1:-1;;;;;16365:21:2;;;16373:13;;16365:21;;16299:87;:121;;;;-1:-1:-1;16403:17:2;;-1:-1:-1;;;16403:17:2;;;;16299:121;16281:261;;;16470:13;;16447:36;;16498:32;16509:20;16498:10;:32::i;:::-;16615:12;16768:1;16758:7;;:11;:30;;;;;16781:7;:5;:7::i;:::-;-1:-1:-1;;;;;16773:15:2;:4;-1:-1:-1;;;;;16773:15:2;;;16758:30;:47;;;;;16798:7;:5;:7::i;:::-;-1:-1:-1;;;;;16792:13:2;:2;-1:-1:-1;;;;;16792:13:2;;;16758:47;:72;;;;-1:-1:-1;;;;;;16809:21:2;;16825:4;16809:21;;16758:72;:95;;;;-1:-1:-1;;;;;;16834:19:2;;16848:4;16834:19;;16758:95;16755:225;;;16873:22;16890:4;16873:16;:22::i;:::-;:46;;;;16899:20;16916:2;16899:16;:20::i;:::-;16870:99;;;-1:-1:-1;16949:4:2;16870:99;17045:38;17060:4;17065:2;17068:6;17075:7;17045:14;:38::i;:::-;15143:1948;;;;;;:::o;1806:192:9:-;1892:7;1928:12;1920:6;;;;1912:29;;;;-1:-1:-1;;;1912:29:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1964:5:9;;;1806:192::o;903:181::-;961:7;993:5;;;1017:6;;;;1009:46;;;;;-1:-1:-1;;;1009:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1075:1;903:181;-1:-1:-1;;;903:181:9:o;2257:471::-;2315:7;2560:6;2556:47;;-1:-1:-1;2590:1:9;2583:8;;2556:47;2627:5;;;2631:1;2627;:5;:1;2651:5;;;;;:10;2643:56;;;;-1:-1:-1;;;2643:56:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3204:132;3262:7;3289:39;3293:1;3296;3289:39;;;;;;;;;;;;;;;;;:3;:39::i;17099:426:2:-;2981:12;:19;;-1:-1:-1;;;;2981:19:2;-1:-1:-1;;;2981:19:2;;;17205:21:::1;17294:20:::0;17325:30:::1;17294:20:::0;17325:16:::1;:30::i;:::-;17416:16;17435:41;:21;17461:14:::0;17435:25:::1;:41::i;:::-;17489:9;::::0;:28:::1;::::0;17416:60;;-1:-1:-1;;;;;;17489:9:2::1;::::0;:28;::::1;;;::::0;17416:60;;17489:9:::1;:28:::0;:9;:28;17416:60;17489:9;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3023:12:2;:20;;-1:-1:-1;;;;3023:20:2;;;-1:-1:-1;;;17099:426:2:o;18340:266::-;18451:7;18447:40;;18473:14;:12;:14::i;:::-;18500:44;18518:6;18526:9;18537:6;18500:17;:44::i;:::-;18561:7;18557:41;;18583:15;:13;:15::i;:::-;18340:266;;;;:::o;3832:278:9:-;3918:7;3953:12;3946:5;3938:28;;;;-1:-1:-1;;;3938:28:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3977:9;3993:1;3989;:5;;;;;;;3832:278;-1:-1:-1;;;;;3832:278:9:o;17533:726:2:-;17683:16;;;17697:1;17683:16;;;17659:21;17683:16;;;;;17659:21;17683:16;;;;;;;;;;-1:-1:-1;17683:16:2;17659:40;;17728:4;17710;17715:1;17710:7;;;;;;;;-1:-1:-1;;;;;17710:23:2;;;:7;;;;;;;;;;:23;;;;17754:15;;:22;;;-1:-1:-1;;;17754:22:2;;;;:15;;;;;:20;;:22;;;;;17710:7;;17754:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17754:22:2;17744:7;;:4;;17749:1;;17744:7;;;;;;-1:-1:-1;;;;;17744:32:2;;;:7;;;;;;;;;:32;17821:15;;17789:62;;17806:4;;17821:15;17839:11;17789:8;:62::i;:::-;17894:15;;:224;;-1:-1:-1;;;17894:224:2;;;;;;;;:15;:224;;;;;;18072:4;17894:224;;;;;;18092:15;17894:224;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17894:15:2;;;;:66;;17975:11;;18045:4;;18072;18092:15;17894:224;;;;;;;;;;;;;;;;:15;:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17890:362;;18207:33;;;;;;;;;;;;;;;;;17890:362;;;18139:29;;;;;;;;;;;;;;;;;17533:726;;:::o;1367:136:9:-;1425:7;1452:43;1456:1;1459;1452:43;;;;;;;;;;;;;;;;;:3;:43::i;14571:134:2:-;14617:7;;14614:24;;14631:7;;14614:24;14668:7;;;14650:15;:25;-1:-1:-1;14686:11:2;;14571:134;:::o;18614:390::-;18713:23;18738:12;18754:19;18765:7;18754:10;:19::i;:::-;-1:-1:-1;;;;;18804:17:2;;;;;;:9;:17;;;;;;18712:61;;-1:-1:-1;18712:61:2;-1:-1:-1;18804:30:2;;18826:7;18804:21;:30::i;:::-;-1:-1:-1;;;;;18784:17:2;;;;;;;:9;:17;;;;;;:50;;;;18868:20;;;;;;;:41;;18893:15;18868:24;:41::i;:::-;-1:-1:-1;;;;;18845:20:2;;;;;;:9;:20;;;;;:64;18920:14;18929:4;18920:8;:14::i;:::-;18969:9;-1:-1:-1;;;;;18952:44:2;18961:6;-1:-1:-1;;;;;18952:44:2;;18980:15;18952:44;;;;;;;;;;;;;;;;;;18614:390;;;;;:::o;14713:77::-;14767:15;;14757:7;:25;14713:77::o;14041:230::-;14100:7;14109;14129:12;14144:24;14160:7;14144:15;:24::i;:::-;14129:39;-1:-1:-1;14179:23:2;14205:17;:7;14129:39;14205:11;:17::i;:::-;14179:43;-1:-1:-1;14258:4:2;;-1:-1:-1;;14041:230:2;;;:::o;14281:120::-;14377:4;14359:24;;;;:9;:24;;;;;;:34;;14388:4;14359:28;:34::i;:::-;14350:4;14332:24;;;;:9;:24;;;;;:61;-1:-1:-1;14281:120:2:o;14409:154::-;14473:7;14500:55;14539:5;14500:20;14512:7;;14500;:11;;:20;;;;:::i

Swarm Source

ipfs://0b4bbc3d9450a1c46f84797c8399df1bd165420da1526e00967ed8d54e643f1d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.