ETH Price: $1,975.58 (+0.68%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

COREMIND (CORE) ($0.0001)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve245032812026-02-21 5:55:2325 hrs ago1771653323IN
Coremind: CORE Token
0 ETH0.000002650.057
Approve244775862026-02-17 15:56:114 days ago1771343771IN
Coremind: CORE Token
0 ETH0.000006840.14689028
Approve244520432026-02-14 2:29:118 days ago1771036151IN
Coremind: CORE Token
0 ETH0.00004871.04511449
Approve243641832026-02-01 19:44:2320 days ago1769975063IN
Coremind: CORE Token
0 ETH0.000009720.20893121
Approve243265072026-01-27 13:35:5925 days ago1769520959IN
Coremind: CORE Token
0 ETH0.00005251.12673398
Approve241684122026-01-05 12:18:3547 days ago1767615515IN
Coremind: CORE Token
0 ETH0.00001920.41255827
Approve240040542025-12-13 13:43:2370 days ago1765633403IN
Coremind: CORE Token
0 ETH0.000094072.03146059
Approve238393522025-11-20 9:26:5993 days ago1763630819IN
Coremind: CORE Token
0 ETH0.000020130.43257708
Approve237757812025-11-11 11:45:59102 days ago1762861559IN
Coremind: CORE Token
0 ETH0.000012750.2737681
Approve237535652025-11-08 9:11:47105 days ago1762593107IN
Coremind: CORE Token
0 ETH0.000083181.7981659
Approve237416252025-11-06 17:07:23107 days ago1762448843IN
Coremind: CORE Token
0 ETH0.000218934.72515368
Approve237388492025-11-06 7:47:35107 days ago1762415255IN
Coremind: CORE Token
0 ETH0.000104312.25424544
Approve237388142025-11-06 7:40:35107 days ago1762414835IN
Coremind: CORE Token
0 ETH0.000056031.20399116
Approve237387532025-11-06 7:28:23107 days ago1762414103IN
Coremind: CORE Token
0 ETH0.000028640.6155806
Approve237387442025-11-06 7:26:35107 days ago1762413995IN
Coremind: CORE Token
0 ETH0.000033730.72401899
Approve237348502025-11-05 18:21:23108 days ago1762366883IN
Coremind: CORE Token
0 ETH0.000130662.80768589
Approve237323782025-11-05 10:02:47108 days ago1762336967IN
Coremind: CORE Token
0 ETH0.000109752.36878902
Approve237323682025-11-05 10:00:47108 days ago1762336847IN
Coremind: CORE Token
0 ETH0.000023110.49604532
Approve237319222025-11-05 8:31:11108 days ago1762331471IN
Coremind: CORE Token
0 ETH0.000026310.56539927
Approve237318862025-11-05 8:23:59108 days ago1762331039IN
Coremind: CORE Token
0 ETH0.000051831.11374863
Transfer237318722025-11-05 8:21:11108 days ago1762330871IN
Coremind: CORE Token
0 ETH0.000162052.36551578
Transfer237282092025-11-04 20:02:35109 days ago1762286555IN
Coremind: CORE Token
0 ETH0.000252146.49018039
Transfer237282012025-11-04 20:00:59109 days ago1762286459IN
Coremind: CORE Token
0 ETH0.000252886.50902369
Transfer237281802025-11-04 19:56:47109 days ago1762286207IN
Coremind: CORE Token
0 ETH0.000263964.71782746
Approve237257222025-11-04 11:40:23109 days ago1762256423IN
Coremind: CORE Token
0 ETH0.000075991.63295453
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer244775862026-02-17 15:56:114 days ago1771343771
Coremind: CORE Token
0.00544319 ETH
Transfer244775862026-02-17 15:56:114 days ago1771343771
Coremind: CORE Token
0.00544319 ETH
Transfer240040542025-12-13 13:43:2370 days ago1765633403
Coremind: CORE Token
0.00387628 ETH
Transfer240040542025-12-13 13:43:2370 days ago1765633403
Coremind: CORE Token
0.00387628 ETH
Transfer237750062025-11-11 9:09:11102 days ago1762852151
Coremind: CORE Token
0.00492209 ETH
Transfer237750062025-11-11 9:09:11102 days ago1762852151
Coremind: CORE Token
0.00492209 ETH
Transfer237540222025-11-08 10:43:59105 days ago1762598639
Coremind: CORE Token
0.00428391 ETH
Transfer237540222025-11-08 10:43:59105 days ago1762598639
Coremind: CORE Token
0.00428391 ETH
Transfer237539472025-11-08 10:28:59105 days ago1762597739
Coremind: CORE Token
0.00395364 ETH
Transfer237539472025-11-08 10:28:59105 days ago1762597739
Coremind: CORE Token
0.00395364 ETH
Transfer237536832025-11-08 9:35:59105 days ago1762594559
Coremind: CORE Token
0.00341623 ETH
Transfer237536832025-11-08 9:35:59105 days ago1762594559
Coremind: CORE Token
0.00341623 ETH
Transfer237535662025-11-08 9:11:59105 days ago1762593119
Coremind: CORE Token
0.00511475 ETH
Transfer237535662025-11-08 9:11:59105 days ago1762593119
Coremind: CORE Token
0.00511475 ETH
Transfer237510162025-11-08 0:38:11106 days ago1762562291
Coremind: CORE Token
0.00534853 ETH
Transfer237510162025-11-08 0:38:11106 days ago1762562291
Coremind: CORE Token
0.00534853 ETH
Transfer237508712025-11-08 0:08:47106 days ago1762560527
Coremind: CORE Token
0.00531642 ETH
Transfer237508712025-11-08 0:08:47106 days ago1762560527
Coremind: CORE Token
0.00531642 ETH
Transfer237506992025-11-07 23:34:11106 days ago1762558451
Coremind: CORE Token
0.00633277 ETH
Transfer237506992025-11-07 23:34:11106 days ago1762558451
Coremind: CORE Token
0.00633277 ETH
Transfer237488432025-11-07 17:21:11106 days ago1762536071
Coremind: CORE Token
0.00544299 ETH
Transfer237488432025-11-07 17:21:11106 days ago1762536071
Coremind: CORE Token
0.00544299 ETH
Transfer237478162025-11-07 13:54:11106 days ago1762523651
Coremind: CORE Token
0.00587396 ETH
Transfer237478162025-11-07 13:54:11106 days ago1762523651
Coremind: CORE Token
0.00587396 ETH
Transfer237473472025-11-07 12:19:47106 days ago1762517987
Coremind: CORE Token
0.00673154 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
COREMIND

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2025-09-02
*/

/*

 ██████╗ ██████╗ ██████╗ ███████╗███╗   ███╗██╗███╗   ██╗██████╗ 
██╔════╝██╔═══██╗██╔══██╗██╔════╝████╗ ████║██║████╗  ██║██╔══██╗
██║     ██║   ██║██████╔╝█████╗  ██╔████╔██║██║██╔██╗ ██║██║  ██║
██║     ██║   ██║██╔══██╗██╔══╝  ██║╚██╔╝██║██║██║╚██╗██║██║  ██║
╚██████╗╚██████╔╝██║  ██║███████╗██║ ╚═╝ ██║██║██║ ╚████║██████╔╝
 ╚═════╝ ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝     ╚═╝╚═╝╚═╝  ╚═══╝╚═════╝ 
                                                                            
			Train Agents • Tokenize Minds • Shape the Future

Website: https://coremindai.tech
Telegram: https://t.me/CoremindAI_Portal
X: https://x.com/Coremind_AI
Docs: https://docs.coremindai.tech
*/


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


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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract COREMIND is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address payable public TreasuryAddress;


    bool public limitsInEffect = true;

/// @notice Trading state flag.
/// @dev One-way latch: transitions from false→true exactly once; no code path to set it back to false.
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public constant INITIAL_BUY_FEE = 40;
    uint256 public constant INITIAL_SELL_FEE = 40;
    
    uint256 public buyFee;
    uint256 public sellFee;

    uint256 public tokensForTreasury;

    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // AMM pairs registry
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading(bool tradingActive);
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdatedTreasuryAddress(address indexed newWallet);
    event MaxTransactionExclusion(address _address, bool excluded);
    event TransferForeignToken(address token, uint256 amount);
    event FeesLowered(uint256 oldBuy, uint256 oldSell, uint256 newBuy, uint256 newSell);


    
    uint256 public launchPhaseEndTime; 
    uint256 public launchPhaseFee;     
    event LaunchPhaseConfigured(uint256 durationSeconds, uint256 feePercent, uint256 endTime);

    

    constructor() ERC20("COREMIND", "CORE") {

        address newOwner = msg.sender; 
        // Uniswap V2 router on Ethereum mainnet.
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100000000 * 1e18;

        maxBuyAmount = totalSupply *  1 / 1000;
        maxSellAmount = totalSupply *  1 / 1000;
        maxWalletAmount = totalSupply * 30 / 10000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyFee = INITIAL_BUY_FEE;
        sellFee = INITIAL_SELL_FEE;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);


        TreasuryAddress = payable(0x32baFef356792cF18C4A3Cb7F05414d530a73f74);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(TreasuryAddress, true);
        _excludeFromMaxTransaction(TreasuryAddress, true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function updateSwapThreshold(uint256 newAmount) public  {
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can change swapThreshold");
        swapTokensAtAmount = newAmount* (10**18);
    }

// Rescue function for third-party tokens accidentally sent to this contract.
// Cannot withdraw the token of this contract itself
    function transferForeignToken(address _token, address _to) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() public {
        bool success;
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }
    
/// @notice Lowers the buy fee percentage applied on AMM buy trades.
/// @dev
/// - The new fee must be strictly lower than the current `buyFee`.
/// - This function never increases fees.
/// @param _fee The new buy fee in %, (e.g., 1 == 1%), and strictly less than the current `buyFee`.
    function updateBuyFee(uint256 _fee) external onlyOwner {
        require(_fee < buyFee, "New fee must be lower than current fee");
        require(_fee <= 40, "Fee cannot exceed 40%");
        buyFee = _fee;
    }

/// @notice Lowers the sell fee percentage applied on AMM sell trades.
/// @dev
/// - The new fee must be strictly lower than the current `sellFee`.
/// - This function never increases fees.
/// @param _fee The new sell fee in %, (e.g., 1 == 1%), and strictly less than the current `sellFee`.
    function updateSellFee(uint256 _fee) external onlyOwner {
        require(_fee < sellFee, "New fee must be lower than current fee");
        require(_fee <= 40, "Fee cannot exceed 40%");
        sellFee = _fee;
    }

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

/// @notice Fees can only decrease (strictly lower than current values e.g., 4→3→2→1→0).
/// @dev
/// - Callable only when `owner() == address(0)` (i.e., post-renounce).
/// - Callable only by `TreasuryAddress`.
/// - Post-renounce hard cap: each fee must be in the range 0-4 (%).
/// - Inputs are whole-number percentages (e.g., 0 = 0%).
/// @param newBuyFee  New buy fee in %, must be < current `buyFee` and <= 4.
/// @param newSellFee New sell fee in %, must be < current `sellFee` and <= 4.
/// Emits FeesLowered(oldBuy, oldSell, newBuy, newSell) on success.

    function reduceFeesPostRenounce(uint256 newBuyFee, uint256 newSellFee) external {
    require(owner() == address(0), "Only after renounce");
    require(msg.sender == TreasuryAddress, "Only Treasury");
    
    require(newBuyFee  < buyFee,  "New fee must be lower than current fee");
    require(newSellFee < sellFee, "New fee must be lower than current fee");
    
    require(newBuyFee  <= 4 && newSellFee <= 4, "Post-renounce cap is 4%");

    uint256 oldBuy  = buyFee;
    uint256 oldSell = sellFee;

    buyFee  = newBuyFee;
    sellFee = newSellFee;

    emit FeesLowered(oldBuy, oldSell, newBuyFee, newSellFee);
}



    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");


    if (!tradingActive) {
    bool walletToWallet = !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to];
    bool maintenance    = _isExcludedMaxTransactionAmount[from] && _isExcludedMaxTransactionAmount[to];
    require(walletToWallet || maintenance, "Trading is not active.");
}



        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead))
           {      
    // when buy
    if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");

    
    bool launchPhaseActive = (launchPhaseEndTime != 0 && block.timestamp < launchPhaseEndTime && launchPhaseFee > 0);

    if (launchPhaseActive) {
        
        bool feeApplies = !(
            _isExcludedFromFees[from] || _isExcludedFromFees[to] ||
            from == owner() || to == owner() ||
            from == TreasuryAddress || to == TreasuryAddress ||
            from == address(this) || to == address(this)
        );

        if (feeApplies) {
            
            uint256 netAmount = amount - (amount * launchPhaseFee / 100);
            require(netAmount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
        } else {
            
            require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
        }
    } else {
        
        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
    }
}


                // when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                // wallet to wallet
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

    bool isBuy  = automatedMarketMakerPairs[from];
    bool isSell = automatedMarketMakerPairs[to];


bool feeExempt =
    _isExcludedFromFees[from] || _isExcludedFromFees[to] ||
    from == TreasuryAddress || to == TreasuryAddress ||
    from == owner()        || to == owner()        ||
    from == address(this)  || to == address(this);

if (feeExempt) {
    super._transfer(from, to, amount);
    return;
}
  
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && swapEnabled && !swapping && isSell && !_isExcludedFromFees[from]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = true;
        if (
    _isExcludedFromFees[from] || _isExcludedFromFees[to] ||
    from == TreasuryAddress || to == TreasuryAddress ||
    from == owner() || to == owner()
) {
    takeFee = false;
}


uint256 fees = 0;

if (takeFee) {
    
    if (launchPhaseEndTime != 0 && block.timestamp >= launchPhaseEndTime && launchPhaseFee > 0) {
        launchPhaseEndTime = 0;
        launchPhaseFee = 0;
        emit LaunchPhaseConfigured(0, 0, 0);
    }


    if (isBuy || isSell) {
        // AMM trade (BUY/SELL)
        if (launchPhaseEndTime != 0 && block.timestamp < launchPhaseEndTime && launchPhaseFee > 0) {
            fees = (amount * launchPhaseFee) / 100;
        } else if (isSell && sellFee > 0) {
            fees = (amount * sellFee) / 100;
        } else if (isBuy && buyFee > 0) {
            fees = (amount * buyFee) / 100;
        }

    }

    if (fees > 0) {
        tokensForTreasury += fees;
        super._transfer(from, address(this), fees);
        amount -= fees;
    }
}

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

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

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

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

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

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

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

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

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
        excludeFromFees(_TreasuryAddress, true);
        _excludeFromMaxTransaction(_TreasuryAddress, true);
    }
   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForTreasury;

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

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

        bool success;

        swapTokensForEth(contractBalance);
        tokensForTreasury = 0;

        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
            (success,) = address(TreasuryAddress).call{value: address(this).balance}("");
        }
    }
    
    function manualSwap() external {
        require(_msgSender()==TreasuryAddress);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
            swapping = true;
            swapBack();
            swapping = false;
        }
    }


/**
 * @notice Permanently enables trading (and swaps).
 * @dev One-way latch: there is no function to disable trading.
 * Reverts if already enabled.
 * @param launchPhaseSeconds  Optional launch window duration in seconds (>0 to enable).
 * @param launchPhaseFeePercent  Optional launch window fee percent (>0 to enable), capped by contract.
 * Emits {EnabledTrading} and optionally {LaunchPhaseConfigured}.
 */
    function enableTrading(
    uint256 launchPhaseSeconds,
    uint256 launchPhaseFeePercent
) external onlyOwner {
    require(!tradingActive, "Trading already enabled");
    tradingActive = true;
    swapEnabled = true;
    emit EnabledTrading(true);

    if (tradingActive) {
        if (launchPhaseSeconds > 0 && launchPhaseFeePercent > 0) {
            require(launchPhaseFeePercent <= 80, "launch phase > 80%");
            launchPhaseEndTime = block.timestamp + launchPhaseSeconds;
            launchPhaseFee = launchPhaseFeePercent;
            emit LaunchPhaseConfigured(launchPhaseSeconds, launchPhaseFeePercent, launchPhaseEndTime);
        }


    }
}

    /// @notice Optional: owner can manually end the launch phase early if needed.
    function endLaunchPhase() external onlyOwner {
        launchPhaseEndTime = 0;
        launchPhaseFee = 0;
        emit LaunchPhaseConfigured(0, 0, 0);
    }


    function isFeeExempt(address a) external view returns (bool) {
    return _isExcludedFromFees[a] 
        || a == TreasuryAddress 
        || a == owner() 
        || a == address(this);
}


        /// @notice View helper to know if launch phase is currently active.
    function isLaunchPhaseActive() public view returns (bool) {
        return launchPhaseEndTime != 0 && block.timestamp < launchPhaseEndTime;
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"FeesLowered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"durationSeconds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feePercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"LaunchPhaseConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"INITIAL_BUY_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_SELL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"launchPhaseSeconds","type":"uint256"},{"internalType":"uint256","name":"launchPhaseFeePercent","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endLaunchPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"a","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunchPhaseActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchPhaseEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchPhaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"reduceFeesPostRenounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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 IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600b805462ffffff60a01b1916600160a01b179055348015610024575f5ffd5b506040518060400160405280600881526020016710d3d4915352539160c21b81525060405180604001604052806004815260200163434f524560e01b81525081600390816100729190610766565b50600461007f8282610766565b5050505f61009161038660201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f5160206138615f395f51905f52908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d6100ec81600161038a565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610134573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101589190610820565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c79190610820565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610211573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102359190610820565b6001600160a01b031660a081905261024e9060016103ec565b6a52b7d2dcc80cd2e40000006103e8610268826001610861565b610272919061087e565b6006556103e8610283826001610861565b61028d919061087e565b60075561271061029e82601e610861565b6102a8919061087e565b600855620186a06102ba826032610861565b6102c4919061087e565b600a556028600c819055600d556102dc83600161038a565b6102e730600161038a565b6102f461dead600161038a565b600b80546001600160a01b0319167332bafef356792cf18c4a3cb7f05414d530a73f74179055610325836001610454565b610330306001610454565b61033d61dead6001610454565b600b54610354906001600160a01b03166001610454565b600b5461036b906001600160a01b0316600161038a565b61037583826104fe565b61037e836105da565b5050506108b0565b3390565b6001600160a01b0382165f81815260106020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601160205260409020805460ff1916821515179055610419828261038a565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b031633146104a05760405162461bcd60e51b815260206004820181905260248201525f5160206138415f395f51905f5260448201526064015b60405180910390fd5b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166105545760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610497565b8060025f828254610565919061089d565b90915550506001600160a01b0382165f908152602081905260408120805483929061059190849061089d565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146106215760405162461bcd60e51b815260206004820181905260248201525f5160206138415f395f51905f526044820152606401610497565b6001600160a01b0381166106865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610497565b6005546040516001600160a01b038084169216905f5160206138615f395f51905f52905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806106f657607f821691505b60208210810361071457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561076157805f5260205f20601f840160051c8101602085101561073f5750805b601f840160051c820191505b8181101561075e575f815560010161074b565b50505b505050565b81516001600160401b0381111561077f5761077f6106ce565b6107938161078d84546106e2565b8461071a565b6020601f8211600181146107c5575f83156107ae5750848201515b5f19600385901b1c1916600184901b17845561075e565b5f84815260208120601f198516915b828110156107f457878501518255602094850194600190920191016107d4565b508482101561081157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610830575f5ffd5b81516001600160a01b0381168114610846575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108785761087861084d565b92915050565b5f8261089857634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108785761087861084d565b60805160a051612f4d6108f45f395f818161052f01528181610fc4015261126101525f81816103bb0152818161295001528181612a070152612a430152612f4d5ff3fe6080604052600436106102f6575f3560e01c8063715018a611610189578063bbc0c742116100d8578063d7726e8a11610092578063e2f456051161006d578063e2f45605146108b5578063f2fde38b146108ca578063f5648a4f146108e9578063fb917d96146108fd575f5ffd5b8063d7726e8a14610833578063dc3f0d0f14610852578063dd62ed3e14610871575f5ffd5b8063bbc0c7421461078d578063c0246668146107ad578063c18bc195146107cc578063cc274b29146107eb578063cc2ffe7c1461080a578063d6a22a851461081f575f5ffd5b80638da5cb5b11610143578063a457c2d71161011e578063a457c2d71461070c578063a9059cbb1461072b578063aa4bde281461074a578063b62496f51461075f575f5ffd5b80638da5cb5b146106bc57806395d89b41146106d95780639a7a23d6146106ed575f5ffd5b8063715018a61461062c578063751039fc146106405780637571336a146106545780638366e79a1461067357806388e765ff146106925780638a3f6f41146106a7575f5ffd5b8063467abe0a116102455780635308b7fb116101ff5780636605bfda116101da5780636605bfda146105b957806366d602ae146105d85780636ddd1713146105ed57806370a082311461060d575f5ffd5b80635308b7fb1461035a5780635b5c251f14610585578063643505c4146105a4575f5ffd5b8063467abe0a146104d657806347062402146104f55780634898d31b1461050a57806349bd5a5e1461051e5780634a62bb651461055157806351bc3c8514610571575f5ffd5b80631d933a4a116102b05780632be32b611161028b5780632be32b611461045e578063313ce5671461047d57806339509351146104985780633f4218e0146104b7575f5ffd5b80631d933a4a1461040957806323b872dd1461042a5780632b14ca5614610449575f5ffd5b806306fdde0314610301578063095ea7b31461032b5780630f6b671b1461035a57806310d5de531461037c5780631694505e146103aa57806318160ddd146103f5575f5ffd5b366102fd57005b5f5ffd5b34801561030c575f5ffd5b5061031561091c565b6040516103229190612aa9565b60405180910390f35b348015610336575f5ffd5b5061034a610345366004612af2565b6109ac565b6040519015158152602001610322565b348015610365575f5ffd5b5061036e602881565b604051908152602001610322565b348015610387575f5ffd5b5061034a610396366004612b1c565b60106020525f908152604090205460ff1681565b3480156103b5575f5ffd5b506103dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610322565b348015610400575f5ffd5b5060025461036e565b348015610414575f5ffd5b50610428610423366004612b3e565b6109c2565b005b348015610435575f5ffd5b5061034a610444366004612b55565b610a64565b348015610454575f5ffd5b5061036e600d5481565b348015610469575f5ffd5b50610428610478366004612b3e565b610b0c565b348015610488575f5ffd5b5060405160128152602001610322565b3480156104a3575f5ffd5b5061034a6104b2366004612af2565b610c19565b3480156104c2575f5ffd5b5061034a6104d1366004612b1c565b610c54565b3480156104e1575f5ffd5b506104286104f0366004612b3e565b610cb7565b348015610500575f5ffd5b5061036e600c5481565b348015610515575f5ffd5b5061034a610d50565b348015610529575f5ffd5b506103dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055c575f5ffd5b50600b5461034a90600160a01b900460ff1681565b34801561057c575f5ffd5b50610428610d69565b348015610590575f5ffd5b50600b546103dd906001600160a01b031681565b3480156105af575f5ffd5b5061036e60135481565b3480156105c4575f5ffd5b506104286105d3366004612b1c565b610dbd565b3480156105e3575f5ffd5b5061036e60075481565b3480156105f8575f5ffd5b50600b5461034a90600160b01b900460ff1681565b348015610618575f5ffd5b5061036e610627366004612b1c565b610ea5565b348015610637575f5ffd5b50610428610ebf565b34801561064b575f5ffd5b50610428610f32565b34801561065f575f5ffd5b5061042861066e366004612ba0565b610f93565b34801561067e575f5ffd5b5061034a61068d366004612bd7565b61107d565b34801561069d575f5ffd5b5061036e60065481565b3480156106b2575f5ffd5b5061036e60125481565b3480156106c7575f5ffd5b506005546001600160a01b03166103dd565b3480156106e4575f5ffd5b50610315611226565b3480156106f8575f5ffd5b50610428610707366004612ba0565b611235565b348015610717575f5ffd5b5061034a610726366004612af2565b611314565b348015610736575f5ffd5b5061034a610745366004612af2565b6113ac565b348015610755575f5ffd5b5061036e60085481565b34801561076a575f5ffd5b5061034a610779366004612b1c565b60116020525f908152604090205460ff1681565b348015610798575f5ffd5b50600b5461034a90600160a81b900460ff1681565b3480156107b8575f5ffd5b506104286107c7366004612ba0565b6113b8565b3480156107d7575f5ffd5b506104286107e6366004612b3e565b611440565b3480156107f6575f5ffd5b50610428610805366004612b3e565b611549565b348015610815575f5ffd5b5061036e600e5481565b34801561082a575f5ffd5b506104286115d1565b34801561083e575f5ffd5b5061042861084d366004612c03565b611648565b34801561085d575f5ffd5b5061042861086c366004612b3e565b6117db565b34801561087c575f5ffd5b5061036e61088b366004612bd7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108c0575f5ffd5b5061036e600a5481565b3480156108d5575f5ffd5b506104286108e4366004612b1c565b6118e2565b3480156108f4575f5ffd5b506104286119cc565b348015610908575f5ffd5b50610428610917366004612c03565b611a40565b60606003805461092b90612c23565b80601f016020809104026020016040519081016040528092919081815260200182805461095790612c23565b80156109a25780601f10610979576101008083540402835291602001916109a2565b820191905f5260205f20905b81548152906001019060200180831161098557829003601f168201915b5050505050905090565b5f6109b8338484611be9565b5060015b92915050565b6005546001600160a01b031633146109f55760405162461bcd60e51b81526004016109ec90612c5b565b60405180910390fd5b600d548110610a165760405162461bcd60e51b81526004016109ec90612c90565b6028811115610a5f5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600d55565b5f610a70848484611d0c565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610af45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109ec565b610b018533858403611be9565b506001949350505050565b6005546001600160a01b03163314610b365760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e8610b4b60025490565b610b56906001612cea565b610b609190612d01565b610b6a9190612d01565b811015610bcb5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016109ec565b610bdd81670de0b6b3a7640000612cea565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109b8918590610c4f908690612d20565b611be9565b6001600160a01b0381165f908152600f602052604081205460ff1680610c875750600b546001600160a01b038381169116145b80610c9f57506005546001600160a01b038381169116145b806109bc57506001600160a01b038216301492915050565b6005546001600160a01b03163314610ce15760405162461bcd60e51b81526004016109ec90612c5b565b600c548110610d025760405162461bcd60e51b81526004016109ec90612c90565b6028811115610d4b5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600c55565b5f6012545f14158015610d64575060125442105b905090565b600b546001600160a01b0316336001600160a01b031614610d88575f5ffd5b5f610d9230610ea5565b90508015610dba576009805460ff19166001179055610daf61262e565b6009805460ff191690555b50565b6005546001600160a01b03163314610de75760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b038116610e495760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b60648201526084016109ec565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a2610e9a8160016113b8565b610dba8160016126e5565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610ee95760405162461bcd60e51b81526004016109ec90612c5b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016109ec90612c5b565b600b805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610fbd5760405162461bcd60e51b81526004016109ec90612c5b565b80611053577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110535760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109ec565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b5f6001600160a01b0383166110d45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109ec565b600b546001600160a01b031633146110fe5760405162461bcd60e51b81526004016109ec90612d33565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611142573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612d74565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af11580156111b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111da9190612d8b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461092b90612c23565b6005546001600160a01b0316331461125f5760405162461bcd60e51b81526004016109ec90612c5b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036113065760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ec565b6113108282612740565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109ec565b6113a23385858403611be9565b5060019392505050565b5f6109b8338484611d0c565b6005546001600160a01b031633146113e25760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461146a5760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861147f60025490565b61148a906003612cea565b6114949190612d01565b61149e9190612d01565b8110156115025760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016109ec565b61151481670de0b6b3a7640000612cea565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610c0e565b600b546001600160a01b031633146115b95760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79205472656173757279416464726573732063616e206368616e67652060448201526c1cddd85c151a1c995cda1bdb19609a1b60648201526084016109ec565b6115cb81670de0b6b3a7640000612cea565b600a5550565b6005546001600160a01b031633146115fb5760405162461bcd60e51b81526004016109ec90612c5b565b5f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a1565b6005546001600160a01b031633146116725760405162461bcd60e51b81526004016109ec90612c5b565b600b54600160a81b900460ff16156116cc5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016109ec565b600b805461ffff60a81b191661010160a81b179055604051600181527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600b54600160a81b900460ff1615611310575f8211801561173557505f81115b156113105760508111156117805760405162461bcd60e51b81526020600482015260126024820152716c61756e6368207068617365203e2038302560701b60448201526064016109ec565b61178a8242612d20565b601281905560138290556040805184815260208101849052908101919091527f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f3906060015b60405180910390a15050565b6005546001600160a01b031633146118055760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861181a60025490565b611825906001612cea565b61182f9190612d01565b6118399190612d01565b81101561189b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016109ec565b6118ad81670de0b6b3a7640000612cea565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c0e565b6005546001600160a01b0316331461190c5760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0381166119715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ec565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f906001600160a01b031633146119f85760405162461bcd60e51b81526004016109ec90612d33565b604051339047905f81818185875af1925050503d805f8114611a35576040519150601f19603f3d011682016040523d82523d5f602084013e611a3a565b606091505b50505050565b5f611a536005546001600160a01b031690565b6001600160a01b031614611a9f5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792061667465722072656e6f756e636560681b60448201526064016109ec565b600b546001600160a01b03163314611ae95760405162461bcd60e51b815260206004820152600d60248201526c4f6e6c7920547265617375727960981b60448201526064016109ec565b600c548210611b0a5760405162461bcd60e51b81526004016109ec90612c90565b600d548110611b2b5760405162461bcd60e51b81526004016109ec90612c90565b60048211158015611b3d575060048111155b611b895760405162461bcd60e51b815260206004820152601760248201527f506f73742d72656e6f756e63652063617020697320342500000000000000000060448201526064016109ec565b600c8054600d8054928590558390556040805182815260208101849052908101859052606081018490529091907fd1aac5c2a5c272e184145b53bbd949a7d9a297b8124dc2671795ff081d18c9cd9060800160405180910390a150505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ec565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ec565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d325760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b038216611d585760405162461bcd60e51b81526004016109ec90612deb565b5f8111611da75760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109ec565b600b54600160a81b900460ff16611e8d576001600160a01b0383165f9081526011602052604081205460ff16158015611df857506001600160a01b0383165f9081526011602052604090205460ff16155b6001600160a01b0385165f908152601060205260408120549192509060ff168015611e3a57506001600160a01b0384165f9081526010602052604090205460ff165b90508180611e455750805b611e8a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ec565b50505b600b54600160a01b900460ff1615612293576005546001600160a01b03848116911614801590611ecb57506005546001600160a01b03838116911614155b8015611edf57506001600160a01b03821615155b8015611ef657506001600160a01b03821661dead14155b15612293576001600160a01b0383165f9081526011602052604090205460ff168015611f3a57506001600160a01b0382165f9081526010602052604090205460ff16155b1561216c57600654811115611fa25760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109ec565b5f6012545f14158015611fb6575060125442105b8015611fc357505f601354115b90508015612132576001600160a01b0384165f908152600f602052604081205460ff168061200857506001600160a01b0384165f908152600f602052604090205460ff165b8061202057506005546001600160a01b038681169116145b8061203857506005546001600160a01b038581169116145b806120505750600b546001600160a01b038681169116145b806120685750600b546001600160a01b038581169116145b8061207b57506001600160a01b03851630145b8061208e57506001600160a01b03841630145b15905080156120f8575f6064601354856120a89190612cea565b6120b29190612d01565b6120bc9085612e2e565b90506008546120ca86610ea5565b6120d49083612d20565b11156120f25760405162461bcd60e51b81526004016109ec90612e41565b5061212c565b60085461210485610ea5565b61210e9085612d20565b111561212c5760405162461bcd60e51b81526004016109ec90612e41565b50612166565b60085461213e84610ea5565b6121489084612d20565b11156121665760405162461bcd60e51b81526004016109ec90612e41565b50612293565b6001600160a01b0382165f9081526011602052604090205460ff1680156121ab57506001600160a01b0383165f9081526010602052604090205460ff16155b1561221a576007548111156122155760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109ec565b612293565b6001600160a01b0382165f9081526010602052604090205460ff1615801561225a57506001600160a01b0383165f9081526010602052604090205460ff16155b156122935760085461226b83610ea5565b6122759083612d20565b11156122935760405162461bcd60e51b81526004016109ec90612e41565b6001600160a01b038084165f81815260116020908152604080832054948716835280832054938352600f90915281205460ff938416939283169216806122f057506001600160a01b0385165f908152600f602052604090205460ff165b806123085750600b546001600160a01b038781169116145b806123205750600b546001600160a01b038681169116145b8061233857506005546001600160a01b038781169116145b8061235057506005546001600160a01b038681169116145b8061236357506001600160a01b03861630145b8061237657506001600160a01b03851630145b90508015612391576123898686866127a8565b505050505050565b5f61239b30610ea5565b600a54909150811080159081906123bb5750600b54600160b01b900460ff165b80156123ca575060095460ff16155b80156123d35750835b80156123f757506001600160a01b0388165f908152600f602052604090205460ff16155b1561241c576009805460ff1916600117905561241161262e565b6009805460ff191690555b6001600160a01b0388165f908152600f602052604090205460019060ff168061245c57506001600160a01b0388165f908152600f602052604090205460ff165b806124745750600b546001600160a01b038a81169116145b8061248c5750600b546001600160a01b038981169116145b806124a457506005546001600160a01b038a81169116145b806124bc57506005546001600160a01b038981169116145b156124c457505f5b5f811561261757601254158015906124de57506012544210155b80156124eb57505f601354115b1561253c575f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a15b86806125455750855b156125e2576012541580159061255c575060125442105b801561256957505f601354115b1561258f5760646013548961257e9190612cea565b6125889190612d01565b90506125e2565b85801561259d57505f600d54115b156125b2576064600d548961257e9190612cea565b8680156125c057505f600c54115b156125e2576064600c54896125d59190612cea565b6125df9190612d01565b90505b80156126175780600e5f8282546125f99190612d20565b9091555061260a90508a30836127a8565b6126148189612e2e565b97505b6126228a8a8a6127a8565b50505050505050505050565b5f61263830610ea5565b600e54909150811580612649575080155b15612652575050565b600a54612660906005612cea565b82111561267857600a54612675906005612cea565b91505b5f612682836128fb565b5f600e55478015611a3a57600b546040516001600160a01b039091169047905f81818185875af1925050503d805f81146126d7576040519150601f19603f3d011682016040523d82523d5f602084013e6126dc565b606091505b50505050505050565b6001600160a01b0382165f81815260106020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016117cf565b6001600160a01b0382165f908152601160205260409020805460ff191682151517905561276d82826126e5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6001600160a01b0383166127ce5760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b0382166127f45760405162461bcd60e51b81526004016109ec90612deb565b6001600160a01b0383165f908152602081905260409020548181101561286b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109ec565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906128a1908490612d20565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128ed91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061292e5761292e612e78565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ce9190612e8c565b816001815181106129e1576129e1612e78565b60200260200101906001600160a01b031690816001600160a01b031681525050612a2c307f000000000000000000000000000000000000000000000000000000000000000084611be9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612a809085905f90869030904290600401612ea7565b5f604051808303815f87803b158015612a97575f5ffd5b505af1158015612389573d5f5f3e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610dba575f5ffd5b5f5f60408385031215612b03575f5ffd5b8235612b0e81612ade565b946020939093013593505050565b5f60208284031215612b2c575f5ffd5b8135612b3781612ade565b9392505050565b5f60208284031215612b4e575f5ffd5b5035919050565b5f5f5f60608486031215612b67575f5ffd5b8335612b7281612ade565b92506020840135612b8281612ade565b929592945050506040919091013590565b8015158114610dba575f5ffd5b5f5f60408385031215612bb1575f5ffd5b8235612bbc81612ade565b91506020830135612bcc81612b93565b809150509250929050565b5f5f60408385031215612be8575f5ffd5b8235612bf381612ade565b91506020830135612bcc81612ade565b5f5f60408385031215612c14575f5ffd5b50508035926020909101359150565b600181811c90821680612c3757607f821691505b602082108103612c5557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f4e657720666565206d757374206265206c6f776572207468616e2063757272656040820152656e742066656560d01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109bc576109bc612cd6565b5f82612d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109bc576109bc612cd6565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f60208284031215612d84575f5ffd5b5051919050565b5f60208284031215612d9b575f5ffd5b8151612b3781612b93565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109bc576109bc612cd6565b60208082526018908201527f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612e9c575f5ffd5b8151612b3781612ade565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612ef75783516001600160a01b0316835260209384019390920191600101612ed0565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220f957f8e006210420f056522b6d28099ef55866c376463c8ae40cd4c7cea004b964736f6c634300081e00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102f6575f3560e01c8063715018a611610189578063bbc0c742116100d8578063d7726e8a11610092578063e2f456051161006d578063e2f45605146108b5578063f2fde38b146108ca578063f5648a4f146108e9578063fb917d96146108fd575f5ffd5b8063d7726e8a14610833578063dc3f0d0f14610852578063dd62ed3e14610871575f5ffd5b8063bbc0c7421461078d578063c0246668146107ad578063c18bc195146107cc578063cc274b29146107eb578063cc2ffe7c1461080a578063d6a22a851461081f575f5ffd5b80638da5cb5b11610143578063a457c2d71161011e578063a457c2d71461070c578063a9059cbb1461072b578063aa4bde281461074a578063b62496f51461075f575f5ffd5b80638da5cb5b146106bc57806395d89b41146106d95780639a7a23d6146106ed575f5ffd5b8063715018a61461062c578063751039fc146106405780637571336a146106545780638366e79a1461067357806388e765ff146106925780638a3f6f41146106a7575f5ffd5b8063467abe0a116102455780635308b7fb116101ff5780636605bfda116101da5780636605bfda146105b957806366d602ae146105d85780636ddd1713146105ed57806370a082311461060d575f5ffd5b80635308b7fb1461035a5780635b5c251f14610585578063643505c4146105a4575f5ffd5b8063467abe0a146104d657806347062402146104f55780634898d31b1461050a57806349bd5a5e1461051e5780634a62bb651461055157806351bc3c8514610571575f5ffd5b80631d933a4a116102b05780632be32b611161028b5780632be32b611461045e578063313ce5671461047d57806339509351146104985780633f4218e0146104b7575f5ffd5b80631d933a4a1461040957806323b872dd1461042a5780632b14ca5614610449575f5ffd5b806306fdde0314610301578063095ea7b31461032b5780630f6b671b1461035a57806310d5de531461037c5780631694505e146103aa57806318160ddd146103f5575f5ffd5b366102fd57005b5f5ffd5b34801561030c575f5ffd5b5061031561091c565b6040516103229190612aa9565b60405180910390f35b348015610336575f5ffd5b5061034a610345366004612af2565b6109ac565b6040519015158152602001610322565b348015610365575f5ffd5b5061036e602881565b604051908152602001610322565b348015610387575f5ffd5b5061034a610396366004612b1c565b60106020525f908152604090205460ff1681565b3480156103b5575f5ffd5b506103dd7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610322565b348015610400575f5ffd5b5060025461036e565b348015610414575f5ffd5b50610428610423366004612b3e565b6109c2565b005b348015610435575f5ffd5b5061034a610444366004612b55565b610a64565b348015610454575f5ffd5b5061036e600d5481565b348015610469575f5ffd5b50610428610478366004612b3e565b610b0c565b348015610488575f5ffd5b5060405160128152602001610322565b3480156104a3575f5ffd5b5061034a6104b2366004612af2565b610c19565b3480156104c2575f5ffd5b5061034a6104d1366004612b1c565b610c54565b3480156104e1575f5ffd5b506104286104f0366004612b3e565b610cb7565b348015610500575f5ffd5b5061036e600c5481565b348015610515575f5ffd5b5061034a610d50565b348015610529575f5ffd5b506103dd7f000000000000000000000000a1bdac6a0eb645a4eddb2086e000e5139d2f176e81565b34801561055c575f5ffd5b50600b5461034a90600160a01b900460ff1681565b34801561057c575f5ffd5b50610428610d69565b348015610590575f5ffd5b50600b546103dd906001600160a01b031681565b3480156105af575f5ffd5b5061036e60135481565b3480156105c4575f5ffd5b506104286105d3366004612b1c565b610dbd565b3480156105e3575f5ffd5b5061036e60075481565b3480156105f8575f5ffd5b50600b5461034a90600160b01b900460ff1681565b348015610618575f5ffd5b5061036e610627366004612b1c565b610ea5565b348015610637575f5ffd5b50610428610ebf565b34801561064b575f5ffd5b50610428610f32565b34801561065f575f5ffd5b5061042861066e366004612ba0565b610f93565b34801561067e575f5ffd5b5061034a61068d366004612bd7565b61107d565b34801561069d575f5ffd5b5061036e60065481565b3480156106b2575f5ffd5b5061036e60125481565b3480156106c7575f5ffd5b506005546001600160a01b03166103dd565b3480156106e4575f5ffd5b50610315611226565b3480156106f8575f5ffd5b50610428610707366004612ba0565b611235565b348015610717575f5ffd5b5061034a610726366004612af2565b611314565b348015610736575f5ffd5b5061034a610745366004612af2565b6113ac565b348015610755575f5ffd5b5061036e60085481565b34801561076a575f5ffd5b5061034a610779366004612b1c565b60116020525f908152604090205460ff1681565b348015610798575f5ffd5b50600b5461034a90600160a81b900460ff1681565b3480156107b8575f5ffd5b506104286107c7366004612ba0565b6113b8565b3480156107d7575f5ffd5b506104286107e6366004612b3e565b611440565b3480156107f6575f5ffd5b50610428610805366004612b3e565b611549565b348015610815575f5ffd5b5061036e600e5481565b34801561082a575f5ffd5b506104286115d1565b34801561083e575f5ffd5b5061042861084d366004612c03565b611648565b34801561085d575f5ffd5b5061042861086c366004612b3e565b6117db565b34801561087c575f5ffd5b5061036e61088b366004612bd7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108c0575f5ffd5b5061036e600a5481565b3480156108d5575f5ffd5b506104286108e4366004612b1c565b6118e2565b3480156108f4575f5ffd5b506104286119cc565b348015610908575f5ffd5b50610428610917366004612c03565b611a40565b60606003805461092b90612c23565b80601f016020809104026020016040519081016040528092919081815260200182805461095790612c23565b80156109a25780601f10610979576101008083540402835291602001916109a2565b820191905f5260205f20905b81548152906001019060200180831161098557829003601f168201915b5050505050905090565b5f6109b8338484611be9565b5060015b92915050565b6005546001600160a01b031633146109f55760405162461bcd60e51b81526004016109ec90612c5b565b60405180910390fd5b600d548110610a165760405162461bcd60e51b81526004016109ec90612c90565b6028811115610a5f5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600d55565b5f610a70848484611d0c565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610af45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109ec565b610b018533858403611be9565b506001949350505050565b6005546001600160a01b03163314610b365760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e8610b4b60025490565b610b56906001612cea565b610b609190612d01565b610b6a9190612d01565b811015610bcb5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016109ec565b610bdd81670de0b6b3a7640000612cea565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109b8918590610c4f908690612d20565b611be9565b6001600160a01b0381165f908152600f602052604081205460ff1680610c875750600b546001600160a01b038381169116145b80610c9f57506005546001600160a01b038381169116145b806109bc57506001600160a01b038216301492915050565b6005546001600160a01b03163314610ce15760405162461bcd60e51b81526004016109ec90612c5b565b600c548110610d025760405162461bcd60e51b81526004016109ec90612c90565b6028811115610d4b5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600c55565b5f6012545f14158015610d64575060125442105b905090565b600b546001600160a01b0316336001600160a01b031614610d88575f5ffd5b5f610d9230610ea5565b90508015610dba576009805460ff19166001179055610daf61262e565b6009805460ff191690555b50565b6005546001600160a01b03163314610de75760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b038116610e495760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b60648201526084016109ec565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a2610e9a8160016113b8565b610dba8160016126e5565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610ee95760405162461bcd60e51b81526004016109ec90612c5b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016109ec90612c5b565b600b805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610fbd5760405162461bcd60e51b81526004016109ec90612c5b565b80611053577f000000000000000000000000a1bdac6a0eb645a4eddb2086e000e5139d2f176e6001600160a01b0316826001600160a01b0316036110535760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109ec565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b5f6001600160a01b0383166110d45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109ec565b600b546001600160a01b031633146110fe5760405162461bcd60e51b81526004016109ec90612d33565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611142573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612d74565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af11580156111b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111da9190612d8b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461092b90612c23565b6005546001600160a01b0316331461125f5760405162461bcd60e51b81526004016109ec90612c5b565b7f000000000000000000000000a1bdac6a0eb645a4eddb2086e000e5139d2f176e6001600160a01b0316826001600160a01b0316036113065760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ec565b6113108282612740565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109ec565b6113a23385858403611be9565b5060019392505050565b5f6109b8338484611d0c565b6005546001600160a01b031633146113e25760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461146a5760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861147f60025490565b61148a906003612cea565b6114949190612d01565b61149e9190612d01565b8110156115025760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016109ec565b61151481670de0b6b3a7640000612cea565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610c0e565b600b546001600160a01b031633146115b95760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79205472656173757279416464726573732063616e206368616e67652060448201526c1cddd85c151a1c995cda1bdb19609a1b60648201526084016109ec565b6115cb81670de0b6b3a7640000612cea565b600a5550565b6005546001600160a01b031633146115fb5760405162461bcd60e51b81526004016109ec90612c5b565b5f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a1565b6005546001600160a01b031633146116725760405162461bcd60e51b81526004016109ec90612c5b565b600b54600160a81b900460ff16156116cc5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016109ec565b600b805461ffff60a81b191661010160a81b179055604051600181527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600b54600160a81b900460ff1615611310575f8211801561173557505f81115b156113105760508111156117805760405162461bcd60e51b81526020600482015260126024820152716c61756e6368207068617365203e2038302560701b60448201526064016109ec565b61178a8242612d20565b601281905560138290556040805184815260208101849052908101919091527f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f3906060015b60405180910390a15050565b6005546001600160a01b031633146118055760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861181a60025490565b611825906001612cea565b61182f9190612d01565b6118399190612d01565b81101561189b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016109ec565b6118ad81670de0b6b3a7640000612cea565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c0e565b6005546001600160a01b0316331461190c5760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0381166119715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ec565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f906001600160a01b031633146119f85760405162461bcd60e51b81526004016109ec90612d33565b604051339047905f81818185875af1925050503d805f8114611a35576040519150601f19603f3d011682016040523d82523d5f602084013e611a3a565b606091505b50505050565b5f611a536005546001600160a01b031690565b6001600160a01b031614611a9f5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792061667465722072656e6f756e636560681b60448201526064016109ec565b600b546001600160a01b03163314611ae95760405162461bcd60e51b815260206004820152600d60248201526c4f6e6c7920547265617375727960981b60448201526064016109ec565b600c548210611b0a5760405162461bcd60e51b81526004016109ec90612c90565b600d548110611b2b5760405162461bcd60e51b81526004016109ec90612c90565b60048211158015611b3d575060048111155b611b895760405162461bcd60e51b815260206004820152601760248201527f506f73742d72656e6f756e63652063617020697320342500000000000000000060448201526064016109ec565b600c8054600d8054928590558390556040805182815260208101849052908101859052606081018490529091907fd1aac5c2a5c272e184145b53bbd949a7d9a297b8124dc2671795ff081d18c9cd9060800160405180910390a150505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ec565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ec565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d325760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b038216611d585760405162461bcd60e51b81526004016109ec90612deb565b5f8111611da75760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109ec565b600b54600160a81b900460ff16611e8d576001600160a01b0383165f9081526011602052604081205460ff16158015611df857506001600160a01b0383165f9081526011602052604090205460ff16155b6001600160a01b0385165f908152601060205260408120549192509060ff168015611e3a57506001600160a01b0384165f9081526010602052604090205460ff165b90508180611e455750805b611e8a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ec565b50505b600b54600160a01b900460ff1615612293576005546001600160a01b03848116911614801590611ecb57506005546001600160a01b03838116911614155b8015611edf57506001600160a01b03821615155b8015611ef657506001600160a01b03821661dead14155b15612293576001600160a01b0383165f9081526011602052604090205460ff168015611f3a57506001600160a01b0382165f9081526010602052604090205460ff16155b1561216c57600654811115611fa25760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109ec565b5f6012545f14158015611fb6575060125442105b8015611fc357505f601354115b90508015612132576001600160a01b0384165f908152600f602052604081205460ff168061200857506001600160a01b0384165f908152600f602052604090205460ff165b8061202057506005546001600160a01b038681169116145b8061203857506005546001600160a01b038581169116145b806120505750600b546001600160a01b038681169116145b806120685750600b546001600160a01b038581169116145b8061207b57506001600160a01b03851630145b8061208e57506001600160a01b03841630145b15905080156120f8575f6064601354856120a89190612cea565b6120b29190612d01565b6120bc9085612e2e565b90506008546120ca86610ea5565b6120d49083612d20565b11156120f25760405162461bcd60e51b81526004016109ec90612e41565b5061212c565b60085461210485610ea5565b61210e9085612d20565b111561212c5760405162461bcd60e51b81526004016109ec90612e41565b50612166565b60085461213e84610ea5565b6121489084612d20565b11156121665760405162461bcd60e51b81526004016109ec90612e41565b50612293565b6001600160a01b0382165f9081526011602052604090205460ff1680156121ab57506001600160a01b0383165f9081526010602052604090205460ff16155b1561221a576007548111156122155760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109ec565b612293565b6001600160a01b0382165f9081526010602052604090205460ff1615801561225a57506001600160a01b0383165f9081526010602052604090205460ff16155b156122935760085461226b83610ea5565b6122759083612d20565b11156122935760405162461bcd60e51b81526004016109ec90612e41565b6001600160a01b038084165f81815260116020908152604080832054948716835280832054938352600f90915281205460ff938416939283169216806122f057506001600160a01b0385165f908152600f602052604090205460ff165b806123085750600b546001600160a01b038781169116145b806123205750600b546001600160a01b038681169116145b8061233857506005546001600160a01b038781169116145b8061235057506005546001600160a01b038681169116145b8061236357506001600160a01b03861630145b8061237657506001600160a01b03851630145b90508015612391576123898686866127a8565b505050505050565b5f61239b30610ea5565b600a54909150811080159081906123bb5750600b54600160b01b900460ff165b80156123ca575060095460ff16155b80156123d35750835b80156123f757506001600160a01b0388165f908152600f602052604090205460ff16155b1561241c576009805460ff1916600117905561241161262e565b6009805460ff191690555b6001600160a01b0388165f908152600f602052604090205460019060ff168061245c57506001600160a01b0388165f908152600f602052604090205460ff165b806124745750600b546001600160a01b038a81169116145b8061248c5750600b546001600160a01b038981169116145b806124a457506005546001600160a01b038a81169116145b806124bc57506005546001600160a01b038981169116145b156124c457505f5b5f811561261757601254158015906124de57506012544210155b80156124eb57505f601354115b1561253c575f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a15b86806125455750855b156125e2576012541580159061255c575060125442105b801561256957505f601354115b1561258f5760646013548961257e9190612cea565b6125889190612d01565b90506125e2565b85801561259d57505f600d54115b156125b2576064600d548961257e9190612cea565b8680156125c057505f600c54115b156125e2576064600c54896125d59190612cea565b6125df9190612d01565b90505b80156126175780600e5f8282546125f99190612d20565b9091555061260a90508a30836127a8565b6126148189612e2e565b97505b6126228a8a8a6127a8565b50505050505050505050565b5f61263830610ea5565b600e54909150811580612649575080155b15612652575050565b600a54612660906005612cea565b82111561267857600a54612675906005612cea565b91505b5f612682836128fb565b5f600e55478015611a3a57600b546040516001600160a01b039091169047905f81818185875af1925050503d805f81146126d7576040519150601f19603f3d011682016040523d82523d5f602084013e6126dc565b606091505b50505050505050565b6001600160a01b0382165f81815260106020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016117cf565b6001600160a01b0382165f908152601160205260409020805460ff191682151517905561276d82826126e5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6001600160a01b0383166127ce5760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b0382166127f45760405162461bcd60e51b81526004016109ec90612deb565b6001600160a01b0383165f908152602081905260409020548181101561286b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109ec565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906128a1908490612d20565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128ed91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061292e5761292e612e78565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ce9190612e8c565b816001815181106129e1576129e1612e78565b60200260200101906001600160a01b031690816001600160a01b031681525050612a2c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611be9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612a809085905f90869030904290600401612ea7565b5f604051808303815f87803b158015612a97575f5ffd5b505af1158015612389573d5f5f3e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610dba575f5ffd5b5f5f60408385031215612b03575f5ffd5b8235612b0e81612ade565b946020939093013593505050565b5f60208284031215612b2c575f5ffd5b8135612b3781612ade565b9392505050565b5f60208284031215612b4e575f5ffd5b5035919050565b5f5f5f60608486031215612b67575f5ffd5b8335612b7281612ade565b92506020840135612b8281612ade565b929592945050506040919091013590565b8015158114610dba575f5ffd5b5f5f60408385031215612bb1575f5ffd5b8235612bbc81612ade565b91506020830135612bcc81612b93565b809150509250929050565b5f5f60408385031215612be8575f5ffd5b8235612bf381612ade565b91506020830135612bcc81612ade565b5f5f60408385031215612c14575f5ffd5b50508035926020909101359150565b600181811c90821680612c3757607f821691505b602082108103612c5557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f4e657720666565206d757374206265206c6f776572207468616e2063757272656040820152656e742066656560d01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109bc576109bc612cd6565b5f82612d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109bc576109bc612cd6565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f60208284031215612d84575f5ffd5b5051919050565b5f60208284031215612d9b575f5ffd5b8151612b3781612b93565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109bc576109bc612cd6565b60208082526018908201527f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612e9c575f5ffd5b8151612b3781612ade565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612ef75783516001600160a01b0316835260209384019390920191600101612ed0565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220f957f8e006210420f056522b6d28099ef55866c376463c8ae40cd4c7cea004b964736f6c634300081e0033

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

4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Arg [1] : 8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0


Deployed Bytecode Sourcemap

8335:17635:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3931:169;;;;;;;;;;-1:-1:-1;3931:169:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;3931:169:0;945:187:1;8966:44:0;;;;;;;;;;;;9008:2;8966:44;;;;;1283:25:1;;;1271:2;1256:18;8966:44:0;1137:177:1;9288:64:0;;;;;;;;;;-1:-1:-1;9288:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8488:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1753:32:1;;;1735:51;;1723:2;1708:18;8488:43:0;1571:221:1;3338:108:0;;;;;;;;;;-1:-1:-1;3426:12:0;;3338:108;;15290:220;;;;;;;;;;-1:-1:-1;15290:220:0;;;;;:::i;:::-;;:::i;:::-;;4108:492;;;;;;;;;;-1:-1:-1;4108:492:0;;;;;:::i;:::-;;:::i;9103:22::-;;;;;;;;;;;;;;;;11846:269;;;;;;;;;;-1:-1:-1;11846:269:0;;;;;:::i;:::-;;:::i;3237:93::-;;;;;;;;;;-1:-1:-1;3237:93:0;;3320:2;2683:36:1;;2671:2;2656:18;3237:93:0;2541:184:1;4608:215:0;;;;;;;;;;-1:-1:-1;4608:215:0;;;;;:::i;:::-;;:::i;25537:193::-;;;;;;;;;;-1:-1:-1;25537:193:0;;;;;:::i;:::-;;:::i;14767:217::-;;;;;;;;;;-1:-1:-1;14767:217:0;;;;;:::i;:::-;;:::i;9075:21::-;;;;;;;;;;;;;;;;25818:147;;;;;;;;;;;;;:::i;8538:38::-;;;;;;;;;;;;;;;8704:33;;;;;;;;;;-1:-1:-1;8704:33:0;;;;-1:-1:-1;;;8704:33:0;;;;;;23893:270;;;;;;;;;;;;;:::i;8655:38::-;;;;;;;;;;-1:-1:-1;8655:38:0;;;;-1:-1:-1;;;;;8655:38:0;;;10175:29;;;;;;;;;;;;;;;;22845:392;;;;;;;;;;-1:-1:-1;22845:392:0;;;;;:::i;:::-;;:::i;8414:28::-;;;;;;;;;;;;;;;;8926:31;;;;;;;;;;-1:-1:-1;8926:31:0;;;;-1:-1:-1;;;8926:31:0;;;;;;3454:127;;;;;;;;;;-1:-1:-1;3454:127:0;;;;;:::i;:::-;;:::i;7094:150::-;;;;;;;;;;;;;:::i;12453:115::-;;;;;;;;;;;;;:::i;12791:267::-;;;;;;;;;;-1:-1:-1;12791:267:0;;;;;:::i;:::-;;:::i;13709:452::-;;;;;;;;;;-1:-1:-1;13709:452:0;;;;;:::i;:::-;;:::i;8380:27::-;;;;;;;;;;;;;;;;10134:33;;;;;;;;;;;;;;;;6880:79;;;;;;;;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;6945:6:0;6880:79;;3125:104;;;;;;;;;;;;;:::i;21819:244::-;;;;;;;;;;-1:-1:-1;21819:244:0;;;;;:::i;:::-;;:::i;4831:413::-;;;;;;;;;;-1:-1:-1;4831:413:0;;;;;:::i;:::-;;:::i;3589:175::-;;;;;;;;;;-1:-1:-1;3589:175:0;;;;;:::i;:::-;;:::i;8449:30::-;;;;;;;;;;;;;;;;9388:58;;;;;;;;;;-1:-1:-1;9388:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8886:33;;;;;;;;;;-1:-1:-1;8886:33:0;;;;-1:-1:-1;;;8886:33:0;;;;;;15518:182;;;;;;;;;;-1:-1:-1;15518:182:0;;;;;:::i;:::-;;:::i;13066:284::-;;;;;;;;;;-1:-1:-1;13066:284:0;;;;;:::i;:::-;;:::i;13358:210::-;;;;;;;;;;-1:-1:-1;13358:210:0;;;;;:::i;:::-;;:::i;9134:32::-;;;;;;;;;;;;;;;;25366:161;;;;;;;;;;;;;:::i;24595:679::-;;;;;;;;;;-1:-1:-1;24595:679:0;;;;;:::i;:::-;;:::i;12123:274::-;;;;;;;;;;-1:-1:-1;12123:274:0;;;;;:::i;:::-;;:::i;3772:151::-;;;;;;;;;;-1:-1:-1;3772:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3888:18:0;;;3861:7;3888:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3772:151;8613:33;;;;;;;;;;;;;;;;7252:244;;;;;;;;;;-1:-1:-1;7252:244:0;;;;;:::i;:::-;;:::i;14231:231::-;;;;;;;;;;;;;:::i;16290:636::-;;;;;;;;;;-1:-1:-1;16290:636:0;;;;;:::i;:::-;;:::i;3017:100::-;3071:13;3104:5;3097:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:100;:::o;3931:169::-;4014:4;4031:39;1536:10;4054:7;4063:6;4031:8;:39::i;:::-;-1:-1:-1;4088:4:0;3931:169;;;;;:::o;15290:220::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;;;;;;;;;15372:7:::1;;15365:4;:14;15357:65;;;;-1:-1:-1::0;;;15357:65:0::1;;;;;;;:::i;:::-;15449:2;15441:4;:10;;15433:44;;;::::0;-1:-1:-1;;;15433:44:0;;5771:2:1;15433:44:0::1;::::0;::::1;5753:21:1::0;5810:2;5790:18;;;5783:30;-1:-1:-1;;;5829:18:1;;;5822:51;5890:18;;15433:44:0::1;5569:345:1::0;15433:44:0::1;15488:7;:14:::0;15290:220::o;4108:492::-;4248:4;4265:36;4275:6;4283:9;4294:6;4265:9;:36::i;:::-;-1:-1:-1;;;;;4341:19:0;;4314:24;4341:19;;;:11;:19;;;;;;;;1536:10;4341:33;;;;;;;;4393:26;;;;4385:79;;;;-1:-1:-1;;;4385:79:0;;6121:2:1;4385:79:0;;;6103:21:1;6160:2;6140:18;;;6133:30;6199:34;6179:18;;;6172:62;-1:-1:-1;;;6250:18:1;;;6243:38;6298:19;;4385:79:0;5919:404:1;4385:79:0;4500:57;4509:6;1536:10;4550:6;4531:16;:25;4500:8;:57::i;:::-;-1:-1:-1;4588:4:0;;4108:492;-1:-1:-1;;;;4108:492:0:o;11846:269::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;11965:4:::1;11959;11939:13;3426:12:::0;;;3338:108;11939:13:::1;:17;::::0;11955:1:::1;11939:17;:::i;:::-;:24;;;;:::i;:::-;11938:31;;;;:::i;:::-;11928:6;:41;;11920:95;;;::::0;-1:-1:-1;;;11920:95:0;;7057:2:1;11920:95:0::1;::::0;::::1;7039:21:1::0;7096:2;7076:18;;;7069:30;7135:34;7115:18;;;7108:62;-1:-1:-1;;;7186:18:1;;;7179:39;7235:19;;11920:95:0::1;6855:405:1::0;11920:95:0::1;12041:17;:6:::0;12051::::1;12041:17;:::i;:::-;12026:12;:32:::0;;;12074:33:::1;::::0;1283:25:1;;;12074:33:0::1;::::0;1271:2:1;1256:18;12074:33:0::1;;;;;;;;11846:269:::0;:::o;4608:215::-;1536:10;4696:4;4745:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4745:34:0;;;;;;;;;;4696:4;;4713:80;;4736:7;;4745:47;;4782:10;;4745:47;:::i;:::-;4713:8;:80::i;25537:193::-;-1:-1:-1;;;;;25612:22:0;;25592:4;25612:22;;;:19;:22;;;;;;;;;:56;;-1:-1:-1;25653:15:0;;-1:-1:-1;;;;;25648:20:0;;;25653:15;;25648:20;25612:56;:82;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;25682:12:0;;;6945:6;;25682:12;25612:82;:114;;;-1:-1:-1;;;;;;25708:18:0;;25721:4;25708:18;25605:121;25537:193;-1:-1:-1;;25537:193:0:o;14767:217::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;14848:6:::1;;14841:4;:13;14833:64;;;;-1:-1:-1::0;;;14833:64:0::1;;;;;;;:::i;:::-;14924:2;14916:4;:10;;14908:44;;;::::0;-1:-1:-1;;;14908:44:0;;5771:2:1;14908:44:0::1;::::0;::::1;5753:21:1::0;5810:2;5790:18;;;5783:30;-1:-1:-1;;;5829:18:1;;;5822:51;5890:18;;14908:44:0::1;5569:345:1::0;14908:44:0::1;14963:6;:13:::0;14767:217::o;25818:147::-;25870:4;25894:18;;25916:1;25894:23;;:63;;;;;25939:18;;25921:15;:36;25894:63;25887:70;;25818:147;:::o;23893:270::-;23957:15;;-1:-1:-1;;;;;23957:15:0;1536:10;-1:-1:-1;;;;;23943:29:0;;23935:38;;;;;;23984:20;24005:24;24023:4;24005:9;:24::i;:::-;23984:45;-1:-1:-1;24043:14:0;;24040:116;;24073:8;:15;;-1:-1:-1;;24073:15:0;24084:4;24073:15;;;24103:10;:8;:10::i;:::-;24128:8;:16;;-1:-1:-1;;24128:16:0;;;24040:116;23924:239;23893:270::o;22845:392::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22937:30:0;::::1;22929:79;;;::::0;-1:-1:-1;;;22929:79:0;;7597:2:1;22929:79:0::1;::::0;::::1;7579:21:1::0;7636:2;7616:18;;;7609:30;7675:34;7655:18;;;7648:62;-1:-1:-1;;;7726:18:1;;;7719:34;7770:19;;22929:79:0::1;7395:400:1::0;22929:79:0::1;23019:15;:43:::0;;-1:-1:-1;;;;;;23019:43:0::1;-1:-1:-1::0;;;;;23019:43:0;::::1;::::0;;::::1;::::0;;;23078:40:::1;::::0;::::1;::::0;-1:-1:-1;;23078:40:0::1;23129:39;23145:16;23163:4;23129:15;:39::i;:::-;23179:50;23206:16;23224:4;23179:26;:50::i;3454:127::-:0;-1:-1:-1;;;;;3555:18:0;3528:7;3555:18;;;;;;;;;;;;3454:127::o;7094:150::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;7187:6:::1;::::0;7166:40:::1;::::0;7203:1:::1;::::0;-1:-1:-1;;;;;7187:6:0::1;::::0;7166:40:::1;::::0;7203:1;;7166:40:::1;7217:6;:19:::0;;-1:-1:-1;;;;;;7217:19:0::1;::::0;;7094:150::o;12453:115::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;12507:14:::1;:22:::0;;-1:-1:-1;;;;12507:22:0::1;::::0;;12545:15:::1;::::0;::::1;::::0;12524:5:::1;::::0;12545:15:::1;12453:115::o:0;12791:267::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;12887:4:::1;12883:111;;12925:13;-1:-1:-1::0;;;;;12915:23:0::1;:6;-1:-1:-1::0;;;;;12915:23:0::1;::::0;12907:75:::1;;;::::0;-1:-1:-1;;;12907:75:0;;8002:2:1;12907:75:0::1;::::0;::::1;7984:21:1::0;8041:2;8021:18;;;8014:30;8080:34;8060:18;;;8053:62;-1:-1:-1;;;8131:18:1;;;8124:37;8178:19;;12907:75:0::1;7800:403:1::0;12907:75:0::1;-1:-1:-1::0;;;;;13004:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;13004:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12791:267::o;13709:452::-;13784:10;-1:-1:-1;;;;;13815:20:0;;13807:59;;;;-1:-1:-1;;;13807:59:0;;8410:2:1;13807:59:0;;;8392:21:1;8449:2;8429:18;;;8422:30;8488:28;8468:18;;;8461:56;8534:18;;13807:59:0;8208:350:1;13807:59:0;13897:15;;-1:-1:-1;;;;;13897:15:0;13885:10;:27;13877:72;;;;-1:-1:-1;;;13877:72:0;;;;;;;:::i;:::-;13987:39;;-1:-1:-1;;;13987:39:0;;14020:4;13987:39;;;1735:51:1;13960:24:0;;-1:-1:-1;;;;;13987:24:0;;;;;1708:18:1;;13987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14045:46;;-1:-1:-1;;;14045:46:0;;-1:-1:-1;;;;;9346:32:1;;;14045:46:0;;;9328:51:1;9395:18;;;9388:34;;;13960:66:0;;-1:-1:-1;14045:23:0;;;;;;9301:18:1;;14045:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14107;;;-1:-1:-1;;;;;9346:32:1;;9328:51;;9410:2;9395:18;;9388:34;;;14037:54:0;;-1:-1:-1;14107:46:0;;9301:18:1;14107:46:0;;;;;;;13796:365;13709:452;;;;:::o;3125:104::-;3181:13;3214:7;3207:14;;;;;:::i;21819:244::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;21928:13:::1;-1:-1:-1::0;;;;;21920:21:0::1;:4;-1:-1:-1::0;;;;;21920:21:0::1;::::0;21912:91:::1;;;::::0;-1:-1:-1;;;21912:91:0;;9885:2:1;21912:91:0::1;::::0;::::1;9867:21:1::0;9924:2;9904:18;;;9897:30;9963:34;9943:18;;;9936:62;10034:27;10014:18;;;10007:55;10079:19;;21912:91:0::1;9683:421:1::0;21912:91:0::1;22014:41;22043:4;22049:5;22014:28;:41::i;:::-;21819:244:::0;;:::o;4831:413::-;1536:10;4924:4;4968:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4968:34:0;;;;;;;;;;5021:35;;;;5013:85;;;;-1:-1:-1;;;5013:85:0;;10311:2:1;5013:85:0;;;10293:21:1;10350:2;10330:18;;;10323:30;10389:34;10369:18;;;10362:62;-1:-1:-1;;;10440:18:1;;;10433:35;10485:19;;5013:85:0;10109:401:1;5013:85:0;5134:67;1536:10;5157:7;5185:15;5166:16;:34;5134:8;:67::i;:::-;-1:-1:-1;5232:4:0;;4831:413;-1:-1:-1;;;4831:413:0:o;3589:175::-;3675:4;3692:42;1536:10;3716:9;3727:6;3692:9;:42::i;15518:182::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15603:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;15603:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15658:34;;1085:41:1;;;15658:34:0::1;::::0;1058:18:1;15658:34:0::1;;;;;;;15518:182:::0;;:::o;13066:284::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;13188:4:::1;13182;13162:13;3426:12:::0;;;3338:108;13162:13:::1;:17;::::0;13178:1:::1;13162:17;:::i;:::-;:24;;;;:::i;:::-;13161:31;;;;:::i;:::-;13151:6;:41;;13143:98;;;::::0;-1:-1:-1;;;13143:98:0;;10717:2:1;13143:98:0::1;::::0;::::1;10699:21:1::0;10756:2;10736:18;;;10729:30;10795:34;10775:18;;;10768:62;-1:-1:-1;;;10846:18:1;;;10839:42;10898:19;;13143:98:0::1;10515:408:1::0;13143:98:0::1;13270:17;:6:::0;13280::::1;13270:17;:::i;:::-;13252:15;:35:::0;;;13303:39:::1;::::0;1283:25:1;;;13303:39:0::1;::::0;1271:2:1;1256:18;13303:39:0::1;1137:177:1::0;13358:210:0;13445:15;;-1:-1:-1;;;;;13445:15:0;13433:10;:27;13425:84;;;;-1:-1:-1;;;13425:84:0;;11130:2:1;13425:84:0;;;11112:21:1;11169:2;11149:18;;;11142:30;11208:34;11188:18;;;11181:62;-1:-1:-1;;;11259:18:1;;;11252:43;11312:19;;13425:84:0;10928:409:1;13425:84:0;13541:19;:9;13553:6;13541:19;:::i;:::-;13520:18;:40;-1:-1:-1;13358:210:0:o;25366:161::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;25443:1:::1;25422:18;:22:::0;;;25455:14:::1;:18:::0;;;25489:30:::1;::::0;;11568:25:1;;;11624:2;11609:18;;11602:34;;;11652:18;;;11645:34;;;;25489:30:0;::::1;::::0;;;;11556:2:1;25489:30:0;;::::1;25366:161::o:0;24595:679::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;24725:13:::1;::::0;-1:-1:-1;;;24725:13:0;::::1;;;24724:14;24716:50;;;::::0;-1:-1:-1;;;24716:50:0;;11892:2:1;24716:50:0::1;::::0;::::1;11874:21:1::0;11931:2;11911:18;;;11904:30;11970:25;11950:18;;;11943:53;12013:18;;24716:50:0::1;11690:347:1::0;24716:50:0::1;24773:13;:20:::0;;-1:-1:-1;;;;24800:18:0;-1:-1:-1;;;24800:18:0;;;24830:20:::1;::::0;-1:-1:-1;1085:41:1;;24830:20:0::1;::::0;1073:2:1;1058:18;24830:20:0::1;;;;;;;24863:13;::::0;-1:-1:-1;;;24863:13:0;::::1;;;24859:412;;;24914:1;24893:18;:22;:51;;;;;24943:1;24919:21;:25;24893:51;24889:371;;;24994:2;24969:21;:27;;24961:58;;;::::0;-1:-1:-1;;;24961:58:0;;12244:2:1;24961:58:0::1;::::0;::::1;12226:21:1::0;12283:2;12263:18;;;12256:30;-1:-1:-1;;;12302:18:1;;;12295:48;12360:18;;24961:58:0::1;12042:342:1::0;24961:58:0::1;25055:36;25073:18:::0;25055:15:::1;:36;:::i;:::-;25034:18;:57:::0;;;25106:14:::1;:38:::0;;;25164:84:::1;::::0;;11568:25:1;;;11624:2;11609:18;;11602:34;;;11652:18;;;11645:34;;;;25164:84:0::1;::::0;11556:2:1;11541:18;25164:84:0::1;;;;;;;;24595:679:::0;;:::o;12123:274::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;12243:4:::1;12237;12217:13;3426:12:::0;;;3338:108;12217:13:::1;:17;::::0;12233:1:::1;12217:17;:::i;:::-;:24;;;;:::i;:::-;12216:31;;;;:::i;:::-;12206:6;:41;;12198:96;;;::::0;-1:-1:-1;;;12198:96:0;;12915:2:1;12198:96:0::1;::::0;::::1;12897:21:1::0;12954:2;12934:18;;;12927:30;12993:34;12973:18;;;12966:62;-1:-1:-1;;;13044:18:1;;;13037:40;13094:19;;12198:96:0::1;12713:406:1::0;12198:96:0::1;12321:17;:6:::0;12331::::1;12321:17;:::i;:::-;12305:13;:33:::0;;;12354:35:::1;::::0;1283:25:1;;;12354:35:0::1;::::0;1271:2:1;1256:18;12354:35:0::1;1137:177:1::0;7252:244:0;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7341:22:0;::::1;7333:73;;;::::0;-1:-1:-1;;;7333:73:0;;13326:2:1;7333:73:0::1;::::0;::::1;13308:21:1::0;13365:2;13345:18;;;13338:30;13404:34;13384:18;;;13377:62;-1:-1:-1;;;13455:18:1;;;13448:36;13501:19;;7333:73:0::1;13124:402:1::0;7333:73:0::1;7443:6;::::0;7422:38:::1;::::0;-1:-1:-1;;;;;7422:38:0;;::::1;::::0;7443:6:::1;::::0;7422:38:::1;::::0;7443:6:::1;::::0;7422:38:::1;7471:6;:17:::0;;-1:-1:-1;;;;;;7471:17:0::1;-1:-1:-1::0;;;;;7471:17:0;;;::::1;::::0;;;::::1;::::0;;7252:244::o;14231:231::-;14320:15;;14277:12;;-1:-1:-1;;;;;14320:15:0;14308:10;:27;14300:72;;;;-1:-1:-1;;;14300:72:0;;;;;;;:::i;:::-;14396:58;;14404:10;;14428:21;;14396:58;;;;14428:21;14404:10;14396:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14231:231:0:o;16290:636::-;16404:1;16385:7;6945:6;;-1:-1:-1;;;;;6945:6:0;;6880:79;16385:7;-1:-1:-1;;;;;16385:21:0;;16377:53;;;;-1:-1:-1;;;16377:53:0;;13943:2:1;16377:53:0;;;13925:21:1;13982:2;13962:18;;;13955:30;-1:-1:-1;;;14001:18:1;;;13994:49;14060:18;;16377:53:0;13741:343:1;16377:53:0;16459:15;;-1:-1:-1;;;;;16459:15:0;16445:10;:29;16437:55;;;;-1:-1:-1;;;16437:55:0;;14291:2:1;16437:55:0;;;14273:21:1;14330:2;14310:18;;;14303:30;-1:-1:-1;;;14349:18:1;;;14342:43;14402:18;;16437:55:0;14089:337:1;16437:55:0;16526:6;;16513:9;:19;16505:71;;;;-1:-1:-1;;;16505:71:0;;;;;;;:::i;:::-;16604:7;;16591:10;:20;16583:71;;;;-1:-1:-1;;;16583:71:0;;;;;;;:::i;:::-;16689:1;16675:9;:15;;:34;;;;;16708:1;16694:10;:15;;16675:34;16667:70;;;;-1:-1:-1;;;16667:70:0;;14633:2:1;16667:70:0;;;14615:21:1;14672:2;14652:18;;;14645:30;14711:25;14691:18;;;14684:53;14754:18;;16667:70:0;14431:347:1;16667:70:0;16764:6;;;16795:7;;;16811:19;;;;16837:20;;;16871:51;;;15014:25:1;;;15070:2;15055:18;;15048:34;;;15098:18;;;15091:34;;;15156:2;15141:18;;15134:34;;;16764:6:0;;16795:7;16871:51;;15001:3:1;14986:19;16871:51:0;;;;;;;16370:556;;16290:636;;:::o;6173:380::-;-1:-1:-1;;;;;6309:19:0;;6301:68;;;;-1:-1:-1;;;6301:68:0;;15381:2:1;6301:68:0;;;15363:21:1;15420:2;15400:18;;;15393:30;15459:34;15439:18;;;15432:62;-1:-1:-1;;;15510:18:1;;;15503:34;15554:19;;6301:68:0;15179:400:1;6301:68:0;-1:-1:-1;;;;;6388:21:0;;6380:68;;;;-1:-1:-1;;;6380:68:0;;15786:2:1;6380:68:0;;;15768:21:1;15825:2;15805:18;;;15798:30;15864:34;15844:18;;;15837:62;-1:-1:-1;;;15915:18:1;;;15908:32;15957:19;;6380:68:0;15584:398:1;6380:68:0;-1:-1:-1;;;;;6461:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6513:32;;1283:25:1;;;6513:32:0;;1256:18:1;6513:32:0;;;;;;;6173:380;;;:::o;16938:4276::-;-1:-1:-1;;;;;17038:18:0;;17030:68;;;;-1:-1:-1;;;17030:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17117:16:0;;17109:64;;;;-1:-1:-1;;;17109:64:0;;;;;;;:::i;:::-;17201:1;17192:6;:10;17184:52;;;;-1:-1:-1;;;17184:52:0;;16999:2:1;17184:52:0;;;16981:21:1;17038:2;17018:18;;;17011:30;17077:31;17057:18;;;17050:59;17126:18;;17184:52:0;16797:353:1;17184:52:0;17252:13;;-1:-1:-1;;;17252:13:0;;;;17247:295;;-1:-1:-1;;;;;17297:31:0;;17274:19;17297:31;;;:25;:31;;;;;;;;17296:32;:66;;;;-1:-1:-1;;;;;;17333:29:0;;;;;;:25;:29;;;;;;;;17332:30;17296:66;-1:-1:-1;;;;;17391:37:0;;17369:16;17391:37;;;:31;:37;;;;;;17274:88;;-1:-1:-1;17369:16:0;17391:37;;:76;;;;-1:-1:-1;;;;;;17432:35:0;;;;;;:31;:35;;;;;;;;17391:76;17369:98;;17482:14;:29;;;;17500:11;17482:29;17474:64;;;;-1:-1:-1;;;17474:64:0;;17357:2:1;17474:64:0;;;17339:21:1;17396:2;17376:18;;;17369:30;-1:-1:-1;;;17415:18:1;;;17408:52;17477:18;;17474:64:0;17155:346:1;17474:64:0;17267:275;;17247:295;17561:14;;-1:-1:-1;;;17561:14:0;;;;17558:1788;;;6945:6;;-1:-1:-1;;;;;17595:15:0;;;6945:6;;17595:15;;;;:32;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;17614:13:0;;;6945:6;;17614:13;;17595:32;:52;;;;-1:-1:-1;;;;;;17631:16:0;;;;17595:52;:77;;;;-1:-1:-1;;;;;;17651:21:0;;17665:6;17651:21;;17595:77;17591:1744;;;-1:-1:-1;;;;;17720:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;17756:35:0;;;;;;:31;:35;;;;;;;;17755:36;17720:71;17716:1604;;;17818:12;;17808:6;:22;;17800:75;;;;-1:-1:-1;;;17800:75:0;;17708:2:1;17800:75:0;;;17690:21:1;17747:2;17727:18;;;17720:30;17786:34;17766:18;;;17759:62;-1:-1:-1;;;17837:18:1;;;17830:38;17885:19;;17800:75:0;17506:404:1;17800:75:0;17890:22;17916:18;;17938:1;17916:23;;:63;;;;;17961:18;;17943:15;:36;17916:63;:85;;;;;18000:1;17983:14;;:18;17916:85;17890:112;;18015:17;18011:787;;;-1:-1:-1;;;;;18089:25:0;;18055:15;18089:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18118:23:0;;;;;;:19;:23;;;;;;;;18089:52;:84;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;18158:15:0;;;6945:6;;18158:15;18089:84;:101;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;18177:13:0;;;6945:6;;18177:13;18089:101;:141;;;-1:-1:-1;18215:15:0;;-1:-1:-1;;;;;18207:23:0;;;18215:15;;18207:23;18089:141;:166;;;-1:-1:-1;18240:15:0;;-1:-1:-1;;;;;18234:21:0;;;18240:15;;18234:21;18089:166;:204;;;-1:-1:-1;;;;;;18272:21:0;;18288:4;18272:21;18089:204;:227;;;-1:-1:-1;;;;;;18297:19:0;;18311:4;18297:19;18089:227;18073:254;18055:272;;18344:10;18340:338;;;18385:17;18441:3;18424:14;;18415:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;18405:40;;:6;:40;:::i;:::-;18385:60;;18497:15;;18480:13;18490:2;18480:9;:13::i;:::-;18468:25;;:9;:25;:::i;:::-;:44;;18460:81;;;;-1:-1:-1;;;18460:81:0;;;;;;;:::i;:::-;18356:197;18340:338;;;18622:15;;18605:13;18615:2;18605:9;:13::i;:::-;18596:22;;:6;:22;:::i;:::-;:41;;18588:78;;;;-1:-1:-1;;;18588:78:0;;;;;;;:::i;:::-;18034:651;18011:787;;;18746:15;;18729:13;18739:2;18729:9;:13::i;:::-;18720:22;;:6;:22;:::i;:::-;:41;;18712:78;;;;-1:-1:-1;;;18712:78:0;;;;;;;:::i;:::-;17793:1008;17716:1604;;;-1:-1:-1;;;;;18862:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;18896:37:0;;;;;;:31;:37;;;;;;;;18895:38;18862:71;18858:462;;;18976:13;;18966:6;:23;;18958:78;;;;-1:-1:-1;;;18958:78:0;;18603:2:1;18958:78:0;;;18585:21:1;18642:2;18622:18;;;18615:30;18681:34;18661:18;;;18654:62;-1:-1:-1;;;18732:18:1;;;18725:40;18782:19;;18958:78:0;18401:406:1;18958:78:0;18858:462;;;-1:-1:-1;;;;;19121:35:0;;;;;;:31;:35;;;;;;;;19120:36;:78;;;;-1:-1:-1;;;;;;19161:37:0;;;;;;:31;:37;;;;;;;;19160:38;19120:78;19116:204;;;19256:15;;19239:13;19249:2;19239:9;:13::i;:::-;19230:22;;:6;:22;:::i;:::-;:41;;19222:78;;;;-1:-1:-1;;;19222:78:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19368:31:0;;;19354:10;19368:31;;;:25;:31;;;;;;;;;19420:29;;;;;;;;;19478:25;;;:19;:25;;;;;;19368:31;;;;;19420:29;;;;19478:25;;:52;;-1:-1:-1;;;;;;19507:23:0;;;;;;:19;:23;;;;;;;;19478:52;:84;;;-1:-1:-1;19547:15:0;;-1:-1:-1;;;;;19539:23:0;;;19547:15;;19539:23;19478:84;:109;;;-1:-1:-1;19572:15:0;;-1:-1:-1;;;;;19566:21:0;;;19572:15;;19566:21;19478:109;:133;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;19596:15:0;;;6945:6;;19596:15;19478:133;:157;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;19622:13:0;;;6945:6;;19622:13;19478:157;:194;;;-1:-1:-1;;;;;;19651:21:0;;19667:4;19651:21;19478:194;:218;;;-1:-1:-1;;;;;;19677:19:0;;19691:4;19677:19;19478:218;19456:240;;19705:9;19701:72;;;19723:33;19739:4;19745:2;19749:6;19723:15;:33::i;:::-;19763:7;;;16938:4276;;;:::o;19701:72::-;19787:28;19818:24;19836:4;19818:9;:24::i;:::-;19892:18;;19787:55;;-1:-1:-1;19868:42:0;;;;;;;19927:22;;-1:-1:-1;19938:11:0;;-1:-1:-1;;;19938:11:0;;;;19927:22;:35;;;;-1:-1:-1;19954:8:0;;;;19953:9;19927:35;:45;;;;;19966:6;19927:45;:75;;;;-1:-1:-1;;;;;;19977:25:0;;;;;;:19;:25;;;;;;;;19976:26;19927:75;19923:179;;;20019:8;:15;;-1:-1:-1;;20019:15:0;20030:4;20019:15;;;20049:10;:8;:10::i;:::-;20074:8;:16;;-1:-1:-1;;20074:16:0;;;19923:179;-1:-1:-1;;;;;20154:25:0;;20114:12;20154:25;;;:19;:25;;;;;;20129:4;;20154:25;;;:52;;-1:-1:-1;;;;;;20183:23:0;;;;;;:19;:23;;;;;;;;20154:52;:84;;;-1:-1:-1;20223:15:0;;-1:-1:-1;;;;;20215:23:0;;;20223:15;;20215:23;20154:84;:109;;;-1:-1:-1;20248:15:0;;-1:-1:-1;;;;;20242:21:0;;;20248:15;;20242:21;20154:109;:133;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;20272:15:0;;;6945:6;;20272:15;20154:133;:150;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;20291:13:0;;;6945:6;;20291:13;20154:150;20144:190;;;-1:-1:-1;20325:5:0;20144:190;20340:12;20361:800;;;;20391:18;;:23;;;;:64;;;20437:18;;20418:15;:37;;20391:64;:86;;;;;20476:1;20459:14;;:18;20391:86;20387:208;;;20511:1;20490:18;:22;;;20523:14;:18;;;20557:30;;;11568:25:1;;;11624:2;11609:18;;11602:34;;;11652:18;;;11645:34;;;;20557:30:0;;;;;;11556:2:1;20557:30:0;;;20387:208;20609:5;:15;;;;20618:6;20609:15;20605:409;;;20674:18;;:23;;;;:63;;;20719:18;;20701:15;:36;20674:63;:85;;;;;20758:1;20741:14;;:18;20674:85;20670:335;;;20811:3;20793:14;;20784:6;:23;;;;:::i;:::-;20783:31;;;;:::i;:::-;20776:38;;20670:335;;;20836:6;:21;;;;;20856:1;20846:7;;:11;20836:21;20832:173;;;20902:3;20891:7;;20882:6;:16;;;;:::i;20832:173::-;20927:5;:19;;;;;20945:1;20936:6;;:10;20927:19;20923:82;;;20990:3;20980:6;;20971;:15;;;;:::i;:::-;20970:23;;;;:::i;:::-;20963:30;;20923:82;21026:8;;21022:136;;21068:4;21047:17;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;21083:42:0;;-1:-1:-1;21099:4:0;21113;21120;21083:15;:42::i;:::-;21136:14;21146:4;21136:14;;:::i;:::-;;;21022:136;21173:33;21189:4;21195:2;21199:6;21173:15;:33::i;:::-;17017:4197;;;;;;;16938:4276;;;:::o;23248:633::-;23287:23;23313:24;23331:4;23313:9;:24::i;:::-;23376:17;;23287:50;;-1:-1:-1;23409:20:0;;;:46;;-1:-1:-1;23433:22:0;;23409:46;23406:60;;;23458:7;;23248:633::o;23406:60::-;23499:18;;:22;;23520:1;23499:22;:::i;:::-;23481:15;:40;23478:111;;;23555:18;;:22;;23576:1;23555:22;:::i;:::-;23537:40;;23478:111;23601:12;23626:33;23643:15;23626:16;:33::i;:::-;23690:1;23670:17;:21;23723;23758:12;;23755:119;;23807:15;;23799:63;;-1:-1:-1;;;;;23807:15:0;;;;23836:21;;23799:63;;;;23836:21;23807:15;23799:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;23248:633:0:o;12576:207::-;-1:-1:-1;;;;;12664:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;12664:52:0;;;;;;;;;;12732:43;;18980:51:1;;;19047:18;;;19040:50;12732:43:0;;18953:18:1;12732:43:0;18812:284:1;22071:236:0;-1:-1:-1;;;;;22154:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;22154:39:0;;;;;;;22204;22154:31;:39;22204:26;:39::i;:::-;22259:40;;;;;;-1:-1:-1;;;;;22259:40:0;;;;;;;;22071:236;;:::o;5252:614::-;-1:-1:-1;;;;;5392:20:0;;5384:70;;;;-1:-1:-1;;;5384:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5473:23:0;;5465:71;;;;-1:-1:-1;;;5465:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5573:17:0;;5549:21;5573:17;;;;;;;;;;;5609:23;;;;5601:74;;;;-1:-1:-1;;;5601:74:0;;19303:2:1;5601:74:0;;;19285:21:1;19342:2;19322:18;;;19315:30;19381:34;19361:18;;;19354:62;-1:-1:-1;;;19432:18:1;;;19425:36;19478:19;;5601:74:0;19101:402:1;5601:74:0;-1:-1:-1;;;;;5711:17:0;;;:9;:17;;;;;;;;;;;5731:22;;;5711:42;;5775:20;;;;;;;;:30;;5747:6;;5711:9;5775:30;;5747:6;;5775:30;:::i;:::-;;;;;;;;5840:9;-1:-1:-1;;;;;5823:35:0;5832:6;-1:-1:-1;;;;;5823:35:0;;5851:6;5823:35;;;;1283:25:1;;1271:2;1256:18;;1137:177;5823:35:0;;;;;;;;5373:493;5252:614;;;:::o;21222:589::-;21372:16;;;21386:1;21372:16;;;;;;;;21348:21;;21372:16;;;;;;;;;;-1:-1:-1;21372:16:0;21348:40;;21417:4;21399;21404:1;21399:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21399:23:0;;;-1:-1:-1;;;;;21399:23:0;;;;;21443:15;-1:-1:-1;;;;;21443:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21433:4;21438:1;21433:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21433:32:0;;;-1:-1:-1;;;;;21433:32:0;;;;;21478:62;21495:4;21510:15;21528:11;21478:8;:62::i;:::-;21579:224;;-1:-1:-1;;;21579:224:0;;-1:-1:-1;;;;;21579:15:0;:66;;;;:224;;21660:11;;21686:1;;21730:4;;21757;;21777:15;;21579:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:418:1;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:247::-;1378:6;1431:2;1419:9;1410:7;1406:23;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;1486:9;1473:23;1505:31;1530:5;1505:31;:::i;:::-;1555:5;1319:247;-1:-1:-1;;;1319:247:1:o;1797:226::-;1856:6;1909:2;1897:9;1888:7;1884:23;1880:32;1877:52;;;1925:1;1922;1915:12;1877:52;-1:-1:-1;1970:23:1;;1797:226;-1:-1:-1;1797:226:1:o;2028:508::-;2105:6;2113;2121;2174:2;2162:9;2153:7;2149:23;2145:32;2142:52;;;2190:1;2187;2180:12;2142:52;2229:9;2216:23;2248:31;2273:5;2248:31;:::i;:::-;2298:5;-1:-1:-1;2355:2:1;2340:18;;2327:32;2368:33;2327:32;2368:33;:::i;:::-;2028:508;;2420:7;;-1:-1:-1;;;2500:2:1;2485:18;;;;2472:32;;2028:508::o;3162:118::-;3248:5;3241:13;3234:21;3227:5;3224:32;3214:60;;3270:1;3267;3260:12;3285:382;3350:6;3358;3411:2;3399:9;3390:7;3386:23;3382:32;3379:52;;;3427:1;3424;3417:12;3379:52;3466:9;3453:23;3485:31;3510:5;3485:31;:::i;:::-;3535:5;-1:-1:-1;3592:2:1;3577:18;;3564:32;3605:30;3564:32;3605:30;:::i;:::-;3654:7;3644:17;;;3285:382;;;;;:::o;3672:388::-;3740:6;3748;3801:2;3789:9;3780:7;3776:23;3772:32;3769:52;;;3817:1;3814;3807:12;3769:52;3856:9;3843:23;3875:31;3900:5;3875:31;:::i;:::-;3925:5;-1:-1:-1;3982:2:1;3967:18;;3954:32;3995:33;3954:32;3995:33;:::i;4065:346::-;4133:6;4141;4194:2;4182:9;4173:7;4169:23;4165:32;4162:52;;;4210:1;4207;4200:12;4162:52;-1:-1:-1;;4255:23:1;;;4375:2;4360:18;;;4347:32;;-1:-1:-1;4065:346:1:o;4416:380::-;4495:1;4491:12;;;;4538;;;4559:61;;4613:4;4605:6;4601:17;4591:27;;4559:61;4666:2;4658:6;4655:14;4635:18;4632:38;4629:161;;4712:10;4707:3;4703:20;4700:1;4693:31;4747:4;4744:1;4737:15;4775:4;4772:1;4765:15;4629:161;;4416:380;;;:::o;4801:356::-;5003:2;4985:21;;;5022:18;;;5015:30;5081:34;5076:2;5061:18;;5054:62;5148:2;5133:18;;4801:356::o;5162:402::-;5364:2;5346:21;;;5403:2;5383:18;;;5376:30;5442:34;5437:2;5422:18;;5415:62;-1:-1:-1;;;5508:2:1;5493:18;;5486:36;5554:3;5539:19;;5162:402::o;6328:127::-;6389:10;6384:3;6380:20;6377:1;6370:31;6420:4;6417:1;6410:15;6444:4;6441:1;6434:15;6460:168;6533:9;;;6564;;6581:15;;;6575:22;;6561:37;6551:71;;6602:18;;:::i;6633:217::-;6673:1;6699;6689:132;;6743:10;6738:3;6734:20;6731:1;6724:31;6778:4;6775:1;6768:15;6806:4;6803:1;6796:15;6689:132;-1:-1:-1;6835:9:1;;6633:217::o;7265:125::-;7330:9;;;7351:10;;;7348:36;;;7364:18;;:::i;8563:397::-;8765:2;8747:21;;;8804:2;8784:18;;;8777:30;8843:34;8838:2;8823:18;;8816:62;-1:-1:-1;;;8909:2:1;8894:18;;8887:31;8950:3;8935:19;;8563:397::o;8965:184::-;9035:6;9088:2;9076:9;9067:7;9063:23;9059:32;9056:52;;;9104:1;9101;9094:12;9056:52;-1:-1:-1;9127:16:1;;8965:184;-1:-1:-1;8965:184:1:o;9433:245::-;9500:6;9553:2;9541:9;9532:7;9528:23;9524:32;9521:52;;;9569:1;9566;9559:12;9521:52;9601:9;9595:16;9620:28;9642:5;9620:28;:::i;15987:401::-;16189:2;16171:21;;;16228:2;16208:18;;;16201:30;16267:34;16262:2;16247:18;;16240:62;-1:-1:-1;;;16333:2:1;16318:18;;16311:35;16378:3;16363:19;;15987:401::o;16393:399::-;16595:2;16577:21;;;16634:2;16614:18;;;16607:30;16673:34;16668:2;16653:18;;16646:62;-1:-1:-1;;;16739:2:1;16724:18;;16717:33;16782:3;16767:19;;16393:399::o;17915:128::-;17982:9;;;18003:11;;;18000:37;;;18017:18;;:::i;18048:348::-;18250:2;18232:21;;;18289:2;18269:18;;;18262:30;18328:26;18323:2;18308:18;;18301:54;18387:2;18372:18;;18048:348::o;19640:127::-;19701:10;19696:3;19692:20;19689:1;19682:31;19732:4;19729:1;19722:15;19756:4;19753:1;19746:15;19772:251;19842:6;19895:2;19883:9;19874:7;19870:23;19866:32;19863:52;;;19911:1;19908;19901:12;19863:52;19943:9;19937:16;19962:31;19987:5;19962:31;:::i;20028:959::-;20290:4;20338:3;20327:9;20323:19;20369:6;20358:9;20351:25;20412:6;20407:2;20396:9;20392:18;20385:34;20455:3;20450:2;20439:9;20435:18;20428:31;20479:6;20514;20508:13;20545:6;20537;20530:22;20583:3;20572:9;20568:19;20561:26;;20622:2;20614:6;20610:15;20596:29;;20643:1;20653:195;20667:6;20664:1;20661:13;20653:195;;;20732:13;;-1:-1:-1;;;;;20728:39:1;20716:52;;20797:2;20823:15;;;;20788:12;;;;20764:1;20682:9;20653:195;;;-1:-1:-1;;;;;;;20904:32:1;;;;20899:2;20884:18;;20877:60;-1:-1:-1;;20968:3:1;20953:19;20946:35;20865:3;20028:959;-1:-1:-1;;;20028:959:1:o

Swarm Source

ipfs://f957f8e006210420f056522b6d28099ef55866c376463c8ae40cd4c7cea004b9

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

OVERVIEW

Coremind - The Architect of Digital Consciousness. Not just an AI agent - a neuroshard, a mind-print, a sovereign digital twin. Where operators and intelligence converge to evolve, verify, and transcend. Coremind is the foundation of the Mindcap Protocol.

Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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