ETH Price: $3,418.96 (+1.10%)
Gas: 4 Gwei

Contract

0x000000000D64DB4a15A79301B2A17c44D871F6B6
 

Overview

ETH Balance

2 wei

Eth Value

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

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201494762024-06-22 19:58:117 days ago1719086291IN
0x00000000...4D871F6B6
0 ETH0.00009552.02107233
Approve200847962024-06-13 18:50:4717 days ago1718304647IN
0x00000000...4D871F6B6
0 ETH0.0003333913.38328856
Approve200093692024-06-03 6:00:4727 days ago1717394447IN
0x00000000...4D871F6B6
0 ETH0.0005209711.02475124
Approve199880782024-05-31 6:38:5930 days ago1717137539IN
0x00000000...4D871F6B6
0 ETH0.0006340313.41741243
Approve199849432024-05-30 20:09:4730 days ago1717099787IN
0x00000000...4D871F6B6
0 ETH0.000894318.92517868
Approve198945822024-05-18 4:54:2343 days ago1716008063IN
0x00000000...4D871F6B6
0 ETH0.0014329930.32464
Approve198862602024-05-17 0:56:5944 days ago1715907419IN
0x00000000...4D871F6B6
0 ETH0.000138222.92502931
Approve198810702024-05-16 7:32:5945 days ago1715844779IN
0x00000000...4D871F6B6
0 ETH0.0005307711.23221014
Approve198792812024-05-16 1:32:4745 days ago1715823167IN
0x00000000...4D871F6B6
0 ETH0.00026795.67659034
Approve198791732024-05-16 1:11:1145 days ago1715821871IN
0x00000000...4D871F6B6
0 ETH0.000269715.74274462
Approve198786402024-05-15 23:23:1145 days ago1715815391IN
0x00000000...4D871F6B6
0 ETH0.000256995.47189027
Approve198785372024-05-15 23:02:2345 days ago1715814143IN
0x00000000...4D871F6B6
0 ETH0.000296356.27140192
Approve198785322024-05-15 23:01:2345 days ago1715814083IN
0x00000000...4D871F6B6
0 ETH0.000352317.45551107
Approve198784372024-05-15 22:42:1145 days ago1715812931IN
0x00000000...4D871F6B6
0 ETH0.00043379.17799363
Approve198784232024-05-15 22:39:1145 days ago1715812751IN
0x00000000...4D871F6B6
0 ETH0.000456969.67014052
Approve198782832024-05-15 22:11:1145 days ago1715811071IN
0x00000000...4D871F6B6
0 ETH0.000236515.01137788
Approve198779832024-05-15 21:11:1145 days ago1715807471IN
0x00000000...4D871F6B6
0 ETH0.0004802610.16318888
Approve198779452024-05-15 21:03:3545 days ago1715807015IN
0x00000000...4D871F6B6
0 ETH0.0006859914.5909338
Approve198779412024-05-15 21:02:4745 days ago1715806967IN
0x00000000...4D871F6B6
0 ETH0.0005670612
Approve198779402024-05-15 21:02:3545 days ago1715806955IN
0x00000000...4D871F6B6
0 ETH0.0005670612
Approve198779392024-05-15 21:02:2345 days ago1715806943IN
0x00000000...4D871F6B6
0 ETH0.0006143113
Approve198779242024-05-15 20:59:2345 days ago1715806763IN
0x00000000...4D871F6B6
0 ETH0.000370477.89393382
Approve198779112024-05-15 20:56:4745 days ago1715806607IN
0x00000000...4D871F6B6
0 ETH0.0006459413.66927028
Approve198778982024-05-15 20:54:1145 days ago1715806451IN
0x00000000...4D871F6B6
0 ETH0.0005975412.72273674
Approve198778882024-05-15 20:52:1145 days ago1715806331IN
0x00000000...4D871F6B6
0 ETH0.0002764610.12873142
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
199784682024-05-29 22:23:3531 days ago1717021415
0x00000000...4D871F6B6
0.00076807 ETH
199784682024-05-29 22:23:3531 days ago1717021415
0x00000000...4D871F6B6
0.00076807 ETH
199784682024-05-29 22:23:3531 days ago1717021415
0x00000000...4D871F6B6
0.00102409 ETH
199784682024-05-29 22:23:3531 days ago1717021415
0x00000000...4D871F6B6
0.00256024 ETH
199101892024-05-20 9:17:3541 days ago1716196655
0x00000000...4D871F6B6
0.00213427 ETH
199101892024-05-20 9:17:3541 days ago1716196655
0x00000000...4D871F6B6
0.00213427 ETH
199101892024-05-20 9:17:3541 days ago1716196655
0x00000000...4D871F6B6
0.0028457 ETH
199101892024-05-20 9:17:3541 days ago1716196655
0x00000000...4D871F6B6
0.00711425 ETH
198806842024-05-16 6:15:1145 days ago1715840111
0x00000000...4D871F6B6
0.00233863 ETH
198806842024-05-16 6:15:1145 days ago1715840111
0x00000000...4D871F6B6
0.00233863 ETH
198806842024-05-16 6:15:1145 days ago1715840111
0x00000000...4D871F6B6
0.00311817 ETH
198806842024-05-16 6:15:1145 days ago1715840111
0x00000000...4D871F6B6
0.00779544 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00135846 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00135846 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00181128 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00452822 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00151807 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00151807 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00202409 ETH
198797792024-05-16 3:12:4745 days ago1715829167
0x00000000...4D871F6B6
0.00506024 ETH
198785382024-05-15 23:02:3545 days ago1715814155
0x00000000...4D871F6B6
0.00321167 ETH
198785382024-05-15 23:02:3545 days ago1715814155
0x00000000...4D871F6B6
0.00321167 ETH
198785382024-05-15 23:02:3545 days ago1715814155
0x00000000...4D871F6B6
0.00428223 ETH
198785382024-05-15 23:02:3545 days ago1715814155
0x00000000...4D871F6B6
0.01070557 ETH
198781142024-05-15 21:37:2345 days ago1715809043
0x00000000...4D871F6B6
0.0042113 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Magenta

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-08
*/

// SPDX-License-Identifier: MIT
/*

   _____                                __              _____  .___ 
  /     \ _____     ____   ____   _____/  |______      /  _  \ |   |
 /  \ /  \\__  \   / ___\_/ __ \ /    \   __\__  \    /  /_\  \|   |
/    Y    \/ __ \_/ /_/  >  ___/|   |  \  |  / __ \_ /    |    \   |
\____|__  (____  /\___  / \___  >___|  /__| (____  / \____|__  /___|
        \/     \//_____/      \/     \/          \/          \/     

Twitter: https://twitter.com/MagentaProtocol
Website: https://magentai.org/
Docs:https://magentaai.gitbook.io/magenta-protocol/
Telegram: https://t.me/magentaprotocol
Bot: https://t.me/MagentaAiBot

*/

pragma solidity 0.8.19;

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

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);
}

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = tx.origin;
        _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() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

/// @title MagentaProtocol - A ERC-20 token with taxces
contract Magenta is Context, IERC20, Ownable {
    using SafeMath for uint256;

    /// @notice Payable fallback, so contract can receive ETH 
    receive() external payable {}

    /*-----------------------------------------------------------------*/
    /*                            events                               */
    /*-----------------------------------------------------------------*/

    /// @dev Emmited when the tax is updated
    event TaxUpdated(uint256 _oldTax, uint256 _newTax);
    /// @dev Emmited when the taxed contract status is updated
    event TaxedContractUpdated(address _contract, bool _isSwapContract);

    /*-----------------------------------------------------------------*/
    /*                            constants                            */
    /*-----------------------------------------------------------------*/

    /// @dev The number of decimal places used by the token.
    uint8 private constant _decimals = 18;
    /// @dev The total amount of the token.
    uint256 private constant _tTotal = 10_000_000 * 10**_decimals;

    /// @dev Token name.
    string private constant _name = unicode"Magenta AI";
    /// @dev Token symbol.
    string private constant _symbol = unicode"MAGAI";

    /// @dev The threshold when collected tax will be swapped to ETH.
    uint256 public _taxTradeThreshold = 5_000 * 10**_decimals;
    /// @dev Greatest number of tokens to swap to ETH at once.
    uint256 public _maxTaxSwap = 100_000 * 10**_decimals;
    /// @dev Greatest amount that can be bought in a single transaction
    uint256 public _maxTxAmount = 4_000 * 10**_decimals;
    /// @dev Greatest amount an address can hold
    uint256 public _maxAddressAmount = 4_000 * 10**_decimals;

    /*-----------------------------------------------------------------*/
    /*                            mappings                             */
    /*-----------------------------------------------------------------*/

    /// @dev Balance of each address.
    mapping (address => uint256) private _balances;
    /// @dev Allowances one account has given to another.
    mapping (address => mapping (address => uint256)) private _allowances;
    /// @dev Whether an account is excluded from paying fees.
    mapping (address => bool) public _isExcludedFromFee;
    /// @dev Whether taxes are charged on transfers to/from an address (used for taxing dex trades).
    mapping (address => bool) private _isTaxedContract;

    /*-----------------------------------------------------------------*/
    /*                            variables                            */
    /*-----------------------------------------------------------------*/

    /// @dev Addresses that collect taxes.
    address payable public _taxReceiver;
    address payable public _taxReceiver2;
    address payable public _taxReceiver3;

    /// @dev Custom tax rate (it can be updated), the default tax rate is used if _customTax is 0.
    uint256 public _customTax = 0;
    /// @dev The block number when trading was started.
    uint256 public tradingStartBlock;

    /// @dev The Uniswap V2 Router used for tax token swaps.
    IUniswapV2Router02 public uniswapV2Router;
    /// @dev The Uniswap V2 Pair address for Magenta-ETH liquidity pool.
    address public uniswapV2Pair;

    /// @dev If trading is open and transfers are possible.
    bool private tradingStarted;
    /// @dev If currently in swap operation (to prevent reentrancy).
    bool private inSwap;
    /// @dev If automatic swapping of taxes to ETH is enabled.
    bool private swapEnabled;
    /// @dev If the maxTxAmount and maxAddressAmount limits are enabled.
    bool public limitsEnabled = true;


    /*-----------------------------------------------------------------*/
    /*                   modifiers and constructor                     */
    /*-----------------------------------------------------------------*/

    /// @dev Lock the swap during its execution (to prevent reentrancy).
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwnerOrTax {
        require(_msgSender() == owner() || _msgSender() == _taxReceiver || _msgSender() == _taxReceiver2 || _msgSender() == _taxReceiver3, "only owner or tax wallets");
        _;
    }

    /// @notice Initializes contract
    constructor () {
        _balances[tx.origin] = _tTotal;

        _taxReceiver = payable(0x7db9Be14B458D5fFD5770CfF9fA415e818dc23C3);  //40%
        _taxReceiver2 = payable(0xC76be262eF9926273756E828c953373D69486181); //30%
        _taxReceiver3 = payable(0x6F0C59171C9fABDc4F5291cAF7d9000a85E0a3Be); //30%

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxReceiver] = true;
        _isExcludedFromFee[_taxReceiver2] = true;
        _isExcludedFromFee[_taxReceiver3] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _isTaxedContract[address(uniswapV2Router)] = true;
        _isTaxedContract[uniswapV2Pair] = true;

        emit Transfer(address(0), tx.origin, _tTotal);
    }

    /*-----------------------------------------------------------------*/
    /*                     ERC-20 view functions                       */
    /*-----------------------------------------------------------------*/

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

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

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

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

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

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

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

    /*-----------------------------------------------------------------*/
    /*                    standard ERC-20 functions                    */
    /*-----------------------------------------------------------------*/

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

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

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

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

        uint256 _taxAmt = 0;
        if (from != owner() && to != owner()) {
            require(tradingStarted, "ERC20: Trading is not started yet");

            if (_isTaxedContract[from] && !_isExcludedFromFee[to] && limitsEnabled){
                require(_balances[to].add(amount) <= _maxAddressAmount, "Transfer amount exceeds the maxAddressAmount");
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount");
            }
               
            if (_isTaxedContract[to] && from != address(this)){
                _taxAmt = amount.mul(_calculateTaxAmount()).div(100);
            } else if (_isTaxedContract[from]){
                _taxAmt = amount.mul(_calculateTaxAmount()).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxTradeThreshold) {
                swapToEth(_getMin(amount, _getMin(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    distributeEthToTaxWallets(address(this).balance);
                }
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            _taxAmt = 0;
        }

        if (_taxAmt > 0){
            _balances[address(this)] = _balances[address(this)].add(_taxAmt);
            emit Transfer(from, address(this), _taxAmt);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(_taxAmt));
        emit Transfer(from, to, amount.sub(_taxAmt));
    }

    /*-----------------------------------------------------------------*/
    /*                         helper functions                        */
    /*-----------------------------------------------------------------*/

    /// @dev Get the tax rate (using the difference between current block number and trading start block)
    /// @return The current percentage tax rate 
    function _calculateTaxAmount() internal view returns (uint256) {
        if (_customTax != 0) return _customTax;

        if (block.number - tradingStartBlock <= 5) {
            return 30;
        } else if (block.number - tradingStartBlock <= 10) {
            return 20;
        } 
            
        return 2;
    }

    /// @dev Function to return the smaller of two values
    /// @param a The first value
    /// @param b The second value
    /// @return The smaller of the values
    function _getMin(uint256 a, uint256 b) private pure returns (uint256){
        return (a > b) ? b : a;
    }

    /// @dev Swaps tokens to ETH on Uniswap
    /// @param tokenAmount The token amount to swap for ETH
    function swapToEth(uint256 tokenAmount) private swapLock {
        if (!tradingStarted || tokenAmount == 0) return;

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

        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    /// @dev Transfers ETH to the tax receiver addresses
    /// @param amount The ETH amount to transfer
    function distributeEthToTaxWallets(uint256 amount) private {
        _taxReceiver.transfer(amount.mul(40).div(100));
        _taxReceiver2.transfer(amount.mul(30).div(100));
        _taxReceiver3.transfer(amount.mul(30).div(100));
    }

    /*-----------------------------------------------------------------*/
    /*                         owner functions                         */
    /*-----------------------------------------------------------------*/

    /// @notice Swap tokens to ETH and sends the received ETH to the tax addresses
    function manualSwap() external onlyOwnerOrTax {
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0){
            swapToEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0){
            distributeEthToTaxWallets(ethBalance);
        }
    }

    /// @notice Start trading, enable swaps and transfers
    function startTrading() external onlyOwner {
        require(!tradingStarted, "Trading is already open");

        swapEnabled = true;
        tradingStarted = true;
        tradingStartBlock = block.number;
    }

    /// @notice Update custom tax rate for token transfers
    /// @param tax New tax rate as a percentage
    function updateCustomTax(uint256 tax) external onlyOwner {
        require(tax <= 50, "Tax must be less than or equal to 50%");
        emit TaxUpdated(_customTax, tax);
        _customTax = tax;
    }

    /// @notice Update address sttaus (if it's excluded from paying taxes on buys and sells)
    function updateIsExcludedFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = !_isExcludedFromFee[account];
    }

    /// @notice Recovers tokens or ETH that was sent to the contract
    function recoverTokensOrEth(address token, uint256 amount) external onlyOwnerOrTax {
        if (token == address(0)){
            (bool sent, bytes memory data) = payable(msg.sender).call{value: amount}("");
        } else {
            IERC20(token).transfer(msg.sender, amount);
        }
    }

    /// @notice Updates an address status (if it's recognized as a swap contract)
    /// @param contractAddress The address to update
    function updateTaxedContract(address contractAddress) external onlyOwnerOrTax {
        _isTaxedContract[contractAddress] = !_isTaxedContract[contractAddress];
        emit TaxedContractUpdated(contractAddress, _isTaxedContract[contractAddress]);
    }

    /// @notice Update status of automatic swaps of taxes to ETH 
    function updateSwapEnabled() external onlyOwnerOrTax {
        swapEnabled = !swapEnabled;
    }

    /// @notice Updates the tax wallet addresses
    function updateTaxWallet(address payable wallet, uint256 index) external onlyOwnerOrTax {
        if (index == 1){
            require(msg.sender == _taxReceiver, "not valid");
            _taxReceiver = wallet;
        } else if (index == 2){
            require(msg.sender == _taxReceiver2, "not valid");
            _taxReceiver2 = wallet;
        } else if (index == 3){
            require(msg.sender == _taxReceiver3, "not valid");
            _taxReceiver3 = wallet;
        }
    }

    /// @notice Updates the status of maxTxAmount and maxWalletAmount limits
    function updateLimits() external onlyOwner {
        limitsEnabled = !limitsEnabled;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_oldTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTax","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_contract","type":"address"},{"indexed":false,"internalType":"bool","name":"_isSwapContract","type":"bool"}],"name":"TaxedContractUpdated","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":"_customTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxAddressAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxReceiver2","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxReceiver3","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxTradeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTokensOrEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingStartBlock","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"updateCustomTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"updateIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"updateTaxedContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000a6d565b61138862000023919062000abe565b6001556012600a62000036919062000a6d565b620186a062000046919062000abe565b6002556012600a62000059919062000a6d565b610fa062000068919062000abe565b6003556012600a6200007b919062000a6d565b610fa06200008a919062000abe565b6004556000600c556001600f60176101000a81548160ff021916908315150217905550348015620000ba57600080fd5b506000329050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506012600a6200016c919062000a6d565b629896806200017c919062000abe565b600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737db9be14b458d5ffd5770cff9fa415e818dc23c3600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c76be262ef9926273756e828c953373d69486181600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736f0c59171c9fabdc4f5291caf7d9000a85e0a3be600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000620002d4620008aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d4919062000b73565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000684919062000b73565b6040518363ffffffff1660e01b8152600401620006a392919062000bb6565b6020604051808303816000875af1158015620006c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006e9919062000b73565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200087d919062000a6d565b629896806200088d919062000abe565b6040516200089c919062000bf4565b60405180910390a362000c11565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200096157808604811115620009395762000938620008d3565b5b6001851615620009495780820291505b8081029050620009598562000902565b945062000919565b94509492505050565b6000826200097c576001905062000a4f565b816200098c576000905062000a4f565b8160018114620009a55760028114620009b057620009e6565b600191505062000a4f565b60ff841115620009c557620009c4620008d3565b5b8360020a915084821115620009df57620009de620008d3565b5b5062000a4f565b5060208310610133831016604e8410600b841016171562000a205782820a90508381111562000a1a5762000a19620008d3565b5b62000a4f565b62000a2f84848460016200090f565b9250905081840481111562000a495762000a48620008d3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a7a8262000a56565b915062000a878362000a60565b925062000ab67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200096a565b905092915050565b600062000acb8262000a56565b915062000ad88362000a56565b925082820262000ae88162000a56565b9150828204841483151762000b025762000b01620008d3565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b3b8262000b0e565b9050919050565b62000b4d8162000b2e565b811462000b5957600080fd5b50565b60008151905062000b6d8162000b42565b92915050565b60006020828403121562000b8c5762000b8b62000b09565b5b600062000b9c8482850162000b5c565b91505092915050565b62000bb08162000b2e565b82525050565b600060408201905062000bcd600083018562000ba5565b62000bdc602083018462000ba5565b9392505050565b62000bee8162000a56565b82525050565b600060208201905062000c0b600083018462000be3565b92915050565b6142558062000c216000396000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2e28a511161006f578063d2e28a51146106a2578063d798cbd2146106cb578063dc871a66146106f6578063dd62ed3e14610721578063f81ff81d1461075e576101f9565b8063a9059cbb146105fc578063ad91542014610639578063bd8abd7314610662578063ce1d022f14610679576101f9565b80637d1db4a5116100dc5780637d1db4a514610550578063855677381461057b5780638da5cb5b146105a657806395d89b41146105d1576101f9565b806370a0823114610494578063715018a6146104d157806372be2693146104e8578063768dc71014610513576101f9565b8063242e18d8116101855780633582ad23116101545780633582ad23146103fc57806349bd5a5e1461042757806351bc3c85146104525780636d71c90f14610469576101f9565b8063242e18d814610366578063293230b81461038f5780632e088214146103a6578063313ce567146103d1576101f9565b80630faee56f116101c15780630faee56f146102a85780631694505e146102d357806318160ddd146102fe57806323b872dd14610329576101f9565b8063033583b4146101fe57806306fdde0314610229578063095ea7b3146102545780630c08e25514610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610787565b6040516102209190613021565b60405180910390f35b34801561023557600080fd5b5061023e61078d565b60405161024b91906130cc565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061317d565b6107ca565b60405161028891906131d8565b60405180910390f35b34801561029d57600080fd5b506102a66107e8565b005b3480156102b457600080fd5b506102bd6108a9565b6040516102ca9190613021565b60405180910390f35b3480156102df57600080fd5b506102e86108af565b6040516102f59190613252565b60405180910390f35b34801561030a57600080fd5b506103136108d5565b6040516103209190613021565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b919061326d565b6108f8565b60405161035d91906131d8565b60405180910390f35b34801561037257600080fd5b5061038d600480360381019061038891906132fe565b6109d1565b005b34801561039b57600080fd5b506103a4610e06565b005b3480156103b257600080fd5b506103bb610f2a565b6040516103c89190613021565b60405180910390f35b3480156103dd57600080fd5b506103e6610f30565b6040516103f3919061335a565b60405180910390f35b34801561040857600080fd5b50610411610f39565b60405161041e91906131d8565b60405180910390f35b34801561043357600080fd5b5061043c610f4c565b6040516104499190613384565b60405180910390f35b34801561045e57600080fd5b50610467610f72565b005b34801561047557600080fd5b5061047e611147565b60405161048b91906133ae565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906133c9565b61116d565b6040516104c89190613021565b60405180910390f35b3480156104dd57600080fd5b506104e66111b6565b005b3480156104f457600080fd5b506104fd611309565b60405161050a91906133ae565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906133c9565b61132f565b60405161054791906131d8565b60405180910390f35b34801561055c57600080fd5b5061056561134f565b6040516105729190613021565b60405180910390f35b34801561058757600080fd5b50610590611355565b60405161059d9190613021565b60405180910390f35b3480156105b257600080fd5b506105bb61135b565b6040516105c89190613384565b60405180910390f35b3480156105dd57600080fd5b506105e6611384565b6040516105f391906130cc565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061317d565b6113c1565b60405161063091906131d8565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906133c9565b6113df565b005b34801561066e57600080fd5b5061067761151b565b005b34801561068557600080fd5b506106a0600480360381019061069b919061317d565b6116e0565b005b3480156106ae57600080fd5b506106c960048036038101906106c491906133c9565b6119a6565b005b3480156106d757600080fd5b506106e0611c6b565b6040516106ed9190613021565b60405180910390f35b34801561070257600080fd5b5061070b611c71565b60405161071891906133ae565b60405180910390f35b34801561072d57600080fd5b50610748600480360381019061074391906133f6565b611c97565b6040516107559190613021565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613436565b611d1e565b005b60015481565b60606040518060400160405280600a81526020017f4d6167656e746120414900000000000000000000000000000000000000000000815250905090565b60006107de6107d7611e3c565b8484611e44565b6001905092915050565b6107f0611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610874906134af565b60405180910390fd5b600f60179054906101000a900460ff1615600f60176101000a81548160ff021916908315150217905550565b60025481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6108e59190613631565b629896806108f3919061367c565b905090565b600061090584848461200d565b6109c684610911611e3c565b6109c1856040518060600160405280602881526020016141f860289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610977611e3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129199092919063ffffffff16565b611e44565b600190509392505050565b6109d961135b565b73ffffffffffffffffffffffffffffffffffffffff166109f7611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480610a6d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a55611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610acc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b2b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b13611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061370a565b60405180910390fd5b60018103610c4857600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613776565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e02565b60028103610d2657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790613776565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e01565b60038103610e0057600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590613776565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5050565b610e0e611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e92906134af565b60405180910390fd5b600f60149054906101000a900460ff1615610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906137e2565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff02191690831515021790555043600d81905550565b600c5481565b60006012905090565b600f60179054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f7a61135b565b73ffffffffffffffffffffffffffffffffffffffff16610f98611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061100e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff6611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061106d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611055611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806110cc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b61110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061370a565b60405180910390fd5b60006111163061116d565b9050600081111561112b5761112a8161297d565b5b600047905060008111156111435761114281612c17565b5b5050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111be611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611242906134af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60035481565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4d41474149000000000000000000000000000000000000000000000000000000815250905090565b60006113d56113ce611e3c565b848461200d565b6001905092915050565b6113e7611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b906134af565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61152361135b565b73ffffffffffffffffffffffffffffffffffffffff16611541611e3c565b73ffffffffffffffffffffffffffffffffffffffff1614806115b75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661159f611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116165750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115fe611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661165d611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b6116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061370a565b60405180910390fd5b600f60169054906101000a900460ff1615600f60166101000a81548160ff021916908315150217905550565b6116e861135b565b73ffffffffffffffffffffffffffffffffffffffff16611706611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061177c5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611764611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806117db5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c3611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061183a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611822611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118709061370a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611922576000803373ffffffffffffffffffffffffffffffffffffffff16836040516118d490613833565b60006040518083038185875af1925050503d8060008114611911576040519150601f19603f3d011682016040523d82523d6000602084013e611916565b606091505b509150915050506119a2565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161195d929190613848565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061389d565b505b5050565b6119ae61135b565b73ffffffffffffffffffffffffffffffffffffffff166119cc611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480611a425750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2a611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611aa15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a89611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b005750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ae8611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b369061370a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9093e8bca456e0b9f6cfb394c1878491c2f74c371a40dfb714f275daefc9627881600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16604051611c609291906138ca565b60405180910390a150565b600d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d26611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906134af565b60405180910390fd5b6032811115611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613965565b60405180910390fd5b7fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad85605600c5482604051611e2a929190613985565b60405180910390a180600c8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90613a20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ab2565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120009190613021565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613bd6565b60405180910390fd5b6000811161212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590613c68565b60405180910390fd5b600061213861135b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121a6575061217661135b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156125b157600f60149054906101000a900460ff166121fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f190613cfa565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122b55750600f60179054906101000a900460ff165b156123965760045461230f83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b1115612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790613d8c565b60405180910390fd5b600354821115612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90613e1e565b60405180910390fd5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561241b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124545761244d606461243f612430612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90506124d7565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124d6576124d360646124c56124b6612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90505b5b60006124e23061116d565b9050600f60159054906101000a900460ff1615801561254e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156125665750600f60169054906101000a900460ff165b8015612573575060015481115b156125af576125956125908461258b84600254612f42565b612f42565b61297d565b600047905060008111156125ad576125ac47612c17565b5b505b505b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126525750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561265c57600090505b6000811115612760576126b781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127579190613021565b60405180910390a35b6127b282600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285961280b8284612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128fe8486612f5b90919063ffffffff16565b60405161290b9190613021565b60405180910390a350505050565b6000838311158290612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295891906130cc565b60405180910390fd5b50600083856129709190613e3e565b9050809150509392505050565b6001600f60156101000a81548160ff021916908315150217905550600f60149054906101000a900460ff1615806129b45750600081145b612bf9576000600267ffffffffffffffff8111156129d5576129d4613e72565b5b604051908082528060200260200182016040528015612a035781602001602082028036833780820191505090505b5090503081600081518110612a1b57612a1a613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae69190613ee5565b81600181518110612afa57612af9613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6130600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e44565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc595949392919061400b565b600060405180830381600087803b158015612bdf57600080fd5b505af1158015612bf3573d6000803e3d6000fd5b50505050505b6000600f60156101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612c7a6064612c6c602886612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ca5573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d096064612cfb601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612d34573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d986064612d8a601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612dc3573d6000803e3d6000fd5b5050565b6000808284612dd69190614065565b905083811015612e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e12906140e5565b60405180910390fd5b8091505092915050565b600080600c5414612e3a57600c549050612e7b565b6005600d5443612e4a9190613e3e565b11612e5857601e9050612e7b565b600a600d5443612e689190613e3e565b11612e765760149050612e7b565b600290505b90565b6000808303612e905760009050612ef2565b60008284612e9e919061367c565b9050828482612ead9190614134565b14612eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee4906141d7565b60405180910390fd5b809150505b92915050565b6000612f3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa5565b905092915050565b6000818311612f515782612f53565b815b905092915050565b6000612f9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612919565b905092915050565b60008083118290612fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe391906130cc565b60405180910390fd5b5060008385612ffb9190614134565b9050809150509392505050565b6000819050919050565b61301b81613008565b82525050565b60006020820190506130366000830184613012565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b6000601f19601f8301169050919050565b600061309e8261303c565b6130a88185613047565b93506130b8818560208601613058565b6130c181613082565b840191505092915050565b600060208201905081810360008301526130e68184613093565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061311e826130f3565b9050919050565b61312e81613113565b811461313957600080fd5b50565b60008135905061314b81613125565b92915050565b61315a81613008565b811461316557600080fd5b50565b60008135905061317781613151565b92915050565b60008060408385031215613194576131936130ee565b5b60006131a28582860161313c565b92505060206131b385828601613168565b9150509250929050565b60008115159050919050565b6131d2816131bd565b82525050565b60006020820190506131ed60008301846131c9565b92915050565b6000819050919050565b600061321861321361320e846130f3565b6131f3565b6130f3565b9050919050565b600061322a826131fd565b9050919050565b600061323c8261321f565b9050919050565b61324c81613231565b82525050565b60006020820190506132676000830184613243565b92915050565b600080600060608486031215613286576132856130ee565b5b60006132948682870161313c565b93505060206132a58682870161313c565b92505060406132b686828701613168565b9150509250925092565b60006132cb826130f3565b9050919050565b6132db816132c0565b81146132e657600080fd5b50565b6000813590506132f8816132d2565b92915050565b60008060408385031215613315576133146130ee565b5b6000613323858286016132e9565b925050602061333485828601613168565b9150509250929050565b600060ff82169050919050565b6133548161333e565b82525050565b600060208201905061336f600083018461334b565b92915050565b61337e81613113565b82525050565b60006020820190506133996000830184613375565b92915050565b6133a8816132c0565b82525050565b60006020820190506133c3600083018461339f565b92915050565b6000602082840312156133df576133de6130ee565b5b60006133ed8482850161313c565b91505092915050565b6000806040838503121561340d5761340c6130ee565b5b600061341b8582860161313c565b925050602061342c8582860161313c565b9150509250929050565b60006020828403121561344c5761344b6130ee565b5b600061345a84828501613168565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613499602083613047565b91506134a482613463565b602082019050919050565b600060208201905081810360008301526134c88161348c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561355557808604811115613531576135306134cf565b5b60018516156135405780820291505b808102905061354e856134fe565b9450613515565b94509492505050565b60008261356e576001905061362a565b8161357c576000905061362a565b8160018114613592576002811461359c576135cb565b600191505061362a565b60ff8411156135ae576135ad6134cf565b5b8360020a9150848211156135c5576135c46134cf565b5b5061362a565b5060208310610133831016604e8410600b84101617156136005782820a9050838111156135fb576135fa6134cf565b5b61362a565b61360d848484600161350b565b92509050818404811115613624576136236134cf565b5b81810290505b9392505050565b600061363c82613008565b91506136478361333e565b92506136747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461355e565b905092915050565b600061368782613008565b915061369283613008565b92508282026136a081613008565b915082820484148315176136b7576136b66134cf565b5b5092915050565b7f6f6e6c79206f776e6572206f72207461782077616c6c65747300000000000000600082015250565b60006136f4601983613047565b91506136ff826136be565b602082019050919050565b60006020820190508181036000830152613723816136e7565b9050919050565b7f6e6f742076616c69640000000000000000000000000000000000000000000000600082015250565b6000613760600983613047565b915061376b8261372a565b602082019050919050565b6000602082019050818103600083015261378f81613753565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006137cc601783613047565b91506137d782613796565b602082019050919050565b600060208201905081810360008301526137fb816137bf565b9050919050565b600081905092915050565b50565b600061381d600083613802565b91506138288261380d565b600082019050919050565b600061383e82613810565b9150819050919050565b600060408201905061385d6000830185613375565b61386a6020830184613012565b9392505050565b61387a816131bd565b811461388557600080fd5b50565b60008151905061389781613871565b92915050565b6000602082840312156138b3576138b26130ee565b5b60006138c184828501613888565b91505092915050565b60006040820190506138df6000830185613375565b6138ec60208301846131c9565b9392505050565b7f546178206d757374206265206c657373207468616e206f7220657175616c207460008201527f6f20353025000000000000000000000000000000000000000000000000000000602082015250565b600061394f602583613047565b915061395a826138f3565b604082019050919050565b6000602082019050818103600083015261397e81613942565b9050919050565b600060408201905061399a6000830185613012565b6139a76020830184613012565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a0a602483613047565b9150613a15826139ae565b604082019050919050565b60006020820190508181036000830152613a39816139fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9c602283613047565b9150613aa782613a40565b604082019050919050565b60006020820190508181036000830152613acb81613a8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b2e602583613047565b9150613b3982613ad2565b604082019050919050565b60006020820190508181036000830152613b5d81613b21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc0602383613047565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c52602983613047565b9150613c5d82613bf6565b604082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f45524332303a2054726164696e67206973206e6f74207374617274656420796560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce4602183613047565b9150613cef82613c88565b604082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784160008201527f646472657373416d6f756e740000000000000000000000000000000000000000602082015250565b6000613d76602c83613047565b9150613d8182613d1a565b604082019050919050565b60006020820190508181036000830152613da581613d69565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e7400000000000000000000000000000000000000000000000000602082015250565b6000613e08602783613047565b9150613e1382613dac565b604082019050919050565b60006020820190508181036000830152613e3781613dfb565b9050919050565b6000613e4982613008565b9150613e5483613008565b9250828203905081811115613e6c57613e6b6134cf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613edf81613125565b92915050565b600060208284031215613efb57613efa6130ee565b5b6000613f0984828501613ed0565b91505092915050565b6000819050919050565b6000613f37613f32613f2d84613f12565b6131f3565b613008565b9050919050565b613f4781613f1c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8281613113565b82525050565b6000613f948383613f79565b60208301905092915050565b6000602082019050919050565b6000613fb882613f4d565b613fc28185613f58565b9350613fcd83613f69565b8060005b83811015613ffe578151613fe58882613f88565b9750613ff083613fa0565b925050600181019050613fd1565b5085935050505092915050565b600060a0820190506140206000830188613012565b61402d6020830187613f3e565b818103604083015261403f8186613fad565b905061404e6060830185613375565b61405b6080830184613012565b9695505050505050565b600061407082613008565b915061407b83613008565b9250828201905080821115614093576140926134cf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006140cf601b83613047565b91506140da82614099565b602082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061413f82613008565b915061414a83613008565b92508261415a57614159614105565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c1602183613047565b91506141cc82614165565b604082019050919050565b600060208201905081810360008301526141f0816141b4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee4a914f1b6db1dead6db52230b25402b8bf51e3ffffb0a0d396d5799e72708864736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2e28a511161006f578063d2e28a51146106a2578063d798cbd2146106cb578063dc871a66146106f6578063dd62ed3e14610721578063f81ff81d1461075e576101f9565b8063a9059cbb146105fc578063ad91542014610639578063bd8abd7314610662578063ce1d022f14610679576101f9565b80637d1db4a5116100dc5780637d1db4a514610550578063855677381461057b5780638da5cb5b146105a657806395d89b41146105d1576101f9565b806370a0823114610494578063715018a6146104d157806372be2693146104e8578063768dc71014610513576101f9565b8063242e18d8116101855780633582ad23116101545780633582ad23146103fc57806349bd5a5e1461042757806351bc3c85146104525780636d71c90f14610469576101f9565b8063242e18d814610366578063293230b81461038f5780632e088214146103a6578063313ce567146103d1576101f9565b80630faee56f116101c15780630faee56f146102a85780631694505e146102d357806318160ddd146102fe57806323b872dd14610329576101f9565b8063033583b4146101fe57806306fdde0314610229578063095ea7b3146102545780630c08e25514610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610787565b6040516102209190613021565b60405180910390f35b34801561023557600080fd5b5061023e61078d565b60405161024b91906130cc565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061317d565b6107ca565b60405161028891906131d8565b60405180910390f35b34801561029d57600080fd5b506102a66107e8565b005b3480156102b457600080fd5b506102bd6108a9565b6040516102ca9190613021565b60405180910390f35b3480156102df57600080fd5b506102e86108af565b6040516102f59190613252565b60405180910390f35b34801561030a57600080fd5b506103136108d5565b6040516103209190613021565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b919061326d565b6108f8565b60405161035d91906131d8565b60405180910390f35b34801561037257600080fd5b5061038d600480360381019061038891906132fe565b6109d1565b005b34801561039b57600080fd5b506103a4610e06565b005b3480156103b257600080fd5b506103bb610f2a565b6040516103c89190613021565b60405180910390f35b3480156103dd57600080fd5b506103e6610f30565b6040516103f3919061335a565b60405180910390f35b34801561040857600080fd5b50610411610f39565b60405161041e91906131d8565b60405180910390f35b34801561043357600080fd5b5061043c610f4c565b6040516104499190613384565b60405180910390f35b34801561045e57600080fd5b50610467610f72565b005b34801561047557600080fd5b5061047e611147565b60405161048b91906133ae565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906133c9565b61116d565b6040516104c89190613021565b60405180910390f35b3480156104dd57600080fd5b506104e66111b6565b005b3480156104f457600080fd5b506104fd611309565b60405161050a91906133ae565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906133c9565b61132f565b60405161054791906131d8565b60405180910390f35b34801561055c57600080fd5b5061056561134f565b6040516105729190613021565b60405180910390f35b34801561058757600080fd5b50610590611355565b60405161059d9190613021565b60405180910390f35b3480156105b257600080fd5b506105bb61135b565b6040516105c89190613384565b60405180910390f35b3480156105dd57600080fd5b506105e6611384565b6040516105f391906130cc565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061317d565b6113c1565b60405161063091906131d8565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906133c9565b6113df565b005b34801561066e57600080fd5b5061067761151b565b005b34801561068557600080fd5b506106a0600480360381019061069b919061317d565b6116e0565b005b3480156106ae57600080fd5b506106c960048036038101906106c491906133c9565b6119a6565b005b3480156106d757600080fd5b506106e0611c6b565b6040516106ed9190613021565b60405180910390f35b34801561070257600080fd5b5061070b611c71565b60405161071891906133ae565b60405180910390f35b34801561072d57600080fd5b50610748600480360381019061074391906133f6565b611c97565b6040516107559190613021565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613436565b611d1e565b005b60015481565b60606040518060400160405280600a81526020017f4d6167656e746120414900000000000000000000000000000000000000000000815250905090565b60006107de6107d7611e3c565b8484611e44565b6001905092915050565b6107f0611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610874906134af565b60405180910390fd5b600f60179054906101000a900460ff1615600f60176101000a81548160ff021916908315150217905550565b60025481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6108e59190613631565b629896806108f3919061367c565b905090565b600061090584848461200d565b6109c684610911611e3c565b6109c1856040518060600160405280602881526020016141f860289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610977611e3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129199092919063ffffffff16565b611e44565b600190509392505050565b6109d961135b565b73ffffffffffffffffffffffffffffffffffffffff166109f7611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480610a6d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a55611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610acc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b2b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b13611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061370a565b60405180910390fd5b60018103610c4857600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613776565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e02565b60028103610d2657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790613776565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e01565b60038103610e0057600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590613776565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5050565b610e0e611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e92906134af565b60405180910390fd5b600f60149054906101000a900460ff1615610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906137e2565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff02191690831515021790555043600d81905550565b600c5481565b60006012905090565b600f60179054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f7a61135b565b73ffffffffffffffffffffffffffffffffffffffff16610f98611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061100e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff6611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061106d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611055611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806110cc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b61110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061370a565b60405180910390fd5b60006111163061116d565b9050600081111561112b5761112a8161297d565b5b600047905060008111156111435761114281612c17565b5b5050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111be611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611242906134af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60035481565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4d41474149000000000000000000000000000000000000000000000000000000815250905090565b60006113d56113ce611e3c565b848461200d565b6001905092915050565b6113e7611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b906134af565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61152361135b565b73ffffffffffffffffffffffffffffffffffffffff16611541611e3c565b73ffffffffffffffffffffffffffffffffffffffff1614806115b75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661159f611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116165750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115fe611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661165d611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b6116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061370a565b60405180910390fd5b600f60169054906101000a900460ff1615600f60166101000a81548160ff021916908315150217905550565b6116e861135b565b73ffffffffffffffffffffffffffffffffffffffff16611706611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061177c5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611764611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806117db5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c3611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061183a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611822611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118709061370a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611922576000803373ffffffffffffffffffffffffffffffffffffffff16836040516118d490613833565b60006040518083038185875af1925050503d8060008114611911576040519150601f19603f3d011682016040523d82523d6000602084013e611916565b606091505b509150915050506119a2565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161195d929190613848565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061389d565b505b5050565b6119ae61135b565b73ffffffffffffffffffffffffffffffffffffffff166119cc611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480611a425750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2a611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611aa15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a89611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b005750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ae8611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b369061370a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9093e8bca456e0b9f6cfb394c1878491c2f74c371a40dfb714f275daefc9627881600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16604051611c609291906138ca565b60405180910390a150565b600d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d26611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906134af565b60405180910390fd5b6032811115611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613965565b60405180910390fd5b7fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad85605600c5482604051611e2a929190613985565b60405180910390a180600c8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90613a20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ab2565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120009190613021565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613bd6565b60405180910390fd5b6000811161212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590613c68565b60405180910390fd5b600061213861135b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121a6575061217661135b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156125b157600f60149054906101000a900460ff166121fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f190613cfa565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122b55750600f60179054906101000a900460ff165b156123965760045461230f83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b1115612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790613d8c565b60405180910390fd5b600354821115612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90613e1e565b60405180910390fd5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561241b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124545761244d606461243f612430612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90506124d7565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124d6576124d360646124c56124b6612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90505b5b60006124e23061116d565b9050600f60159054906101000a900460ff1615801561254e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156125665750600f60169054906101000a900460ff165b8015612573575060015481115b156125af576125956125908461258b84600254612f42565b612f42565b61297d565b600047905060008111156125ad576125ac47612c17565b5b505b505b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126525750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561265c57600090505b6000811115612760576126b781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127579190613021565b60405180910390a35b6127b282600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285961280b8284612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128fe8486612f5b90919063ffffffff16565b60405161290b9190613021565b60405180910390a350505050565b6000838311158290612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295891906130cc565b60405180910390fd5b50600083856129709190613e3e565b9050809150509392505050565b6001600f60156101000a81548160ff021916908315150217905550600f60149054906101000a900460ff1615806129b45750600081145b612bf9576000600267ffffffffffffffff8111156129d5576129d4613e72565b5b604051908082528060200260200182016040528015612a035781602001602082028036833780820191505090505b5090503081600081518110612a1b57612a1a613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae69190613ee5565b81600181518110612afa57612af9613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6130600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e44565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc595949392919061400b565b600060405180830381600087803b158015612bdf57600080fd5b505af1158015612bf3573d6000803e3d6000fd5b50505050505b6000600f60156101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612c7a6064612c6c602886612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ca5573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d096064612cfb601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612d34573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d986064612d8a601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612dc3573d6000803e3d6000fd5b5050565b6000808284612dd69190614065565b905083811015612e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e12906140e5565b60405180910390fd5b8091505092915050565b600080600c5414612e3a57600c549050612e7b565b6005600d5443612e4a9190613e3e565b11612e5857601e9050612e7b565b600a600d5443612e689190613e3e565b11612e765760149050612e7b565b600290505b90565b6000808303612e905760009050612ef2565b60008284612e9e919061367c565b9050828482612ead9190614134565b14612eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee4906141d7565b60405180910390fd5b809150505b92915050565b6000612f3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa5565b905092915050565b6000818311612f515782612f53565b815b905092915050565b6000612f9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612919565b905092915050565b60008083118290612fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe391906130cc565b60405180910390fd5b5060008385612ffb9190614134565b9050809150509392505050565b6000819050919050565b61301b81613008565b82525050565b60006020820190506130366000830184613012565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b6000601f19601f8301169050919050565b600061309e8261303c565b6130a88185613047565b93506130b8818560208601613058565b6130c181613082565b840191505092915050565b600060208201905081810360008301526130e68184613093565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061311e826130f3565b9050919050565b61312e81613113565b811461313957600080fd5b50565b60008135905061314b81613125565b92915050565b61315a81613008565b811461316557600080fd5b50565b60008135905061317781613151565b92915050565b60008060408385031215613194576131936130ee565b5b60006131a28582860161313c565b92505060206131b385828601613168565b9150509250929050565b60008115159050919050565b6131d2816131bd565b82525050565b60006020820190506131ed60008301846131c9565b92915050565b6000819050919050565b600061321861321361320e846130f3565b6131f3565b6130f3565b9050919050565b600061322a826131fd565b9050919050565b600061323c8261321f565b9050919050565b61324c81613231565b82525050565b60006020820190506132676000830184613243565b92915050565b600080600060608486031215613286576132856130ee565b5b60006132948682870161313c565b93505060206132a58682870161313c565b92505060406132b686828701613168565b9150509250925092565b60006132cb826130f3565b9050919050565b6132db816132c0565b81146132e657600080fd5b50565b6000813590506132f8816132d2565b92915050565b60008060408385031215613315576133146130ee565b5b6000613323858286016132e9565b925050602061333485828601613168565b9150509250929050565b600060ff82169050919050565b6133548161333e565b82525050565b600060208201905061336f600083018461334b565b92915050565b61337e81613113565b82525050565b60006020820190506133996000830184613375565b92915050565b6133a8816132c0565b82525050565b60006020820190506133c3600083018461339f565b92915050565b6000602082840312156133df576133de6130ee565b5b60006133ed8482850161313c565b91505092915050565b6000806040838503121561340d5761340c6130ee565b5b600061341b8582860161313c565b925050602061342c8582860161313c565b9150509250929050565b60006020828403121561344c5761344b6130ee565b5b600061345a84828501613168565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613499602083613047565b91506134a482613463565b602082019050919050565b600060208201905081810360008301526134c88161348c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561355557808604811115613531576135306134cf565b5b60018516156135405780820291505b808102905061354e856134fe565b9450613515565b94509492505050565b60008261356e576001905061362a565b8161357c576000905061362a565b8160018114613592576002811461359c576135cb565b600191505061362a565b60ff8411156135ae576135ad6134cf565b5b8360020a9150848211156135c5576135c46134cf565b5b5061362a565b5060208310610133831016604e8410600b84101617156136005782820a9050838111156135fb576135fa6134cf565b5b61362a565b61360d848484600161350b565b92509050818404811115613624576136236134cf565b5b81810290505b9392505050565b600061363c82613008565b91506136478361333e565b92506136747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461355e565b905092915050565b600061368782613008565b915061369283613008565b92508282026136a081613008565b915082820484148315176136b7576136b66134cf565b5b5092915050565b7f6f6e6c79206f776e6572206f72207461782077616c6c65747300000000000000600082015250565b60006136f4601983613047565b91506136ff826136be565b602082019050919050565b60006020820190508181036000830152613723816136e7565b9050919050565b7f6e6f742076616c69640000000000000000000000000000000000000000000000600082015250565b6000613760600983613047565b915061376b8261372a565b602082019050919050565b6000602082019050818103600083015261378f81613753565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006137cc601783613047565b91506137d782613796565b602082019050919050565b600060208201905081810360008301526137fb816137bf565b9050919050565b600081905092915050565b50565b600061381d600083613802565b91506138288261380d565b600082019050919050565b600061383e82613810565b9150819050919050565b600060408201905061385d6000830185613375565b61386a6020830184613012565b9392505050565b61387a816131bd565b811461388557600080fd5b50565b60008151905061389781613871565b92915050565b6000602082840312156138b3576138b26130ee565b5b60006138c184828501613888565b91505092915050565b60006040820190506138df6000830185613375565b6138ec60208301846131c9565b9392505050565b7f546178206d757374206265206c657373207468616e206f7220657175616c207460008201527f6f20353025000000000000000000000000000000000000000000000000000000602082015250565b600061394f602583613047565b915061395a826138f3565b604082019050919050565b6000602082019050818103600083015261397e81613942565b9050919050565b600060408201905061399a6000830185613012565b6139a76020830184613012565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a0a602483613047565b9150613a15826139ae565b604082019050919050565b60006020820190508181036000830152613a39816139fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9c602283613047565b9150613aa782613a40565b604082019050919050565b60006020820190508181036000830152613acb81613a8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b2e602583613047565b9150613b3982613ad2565b604082019050919050565b60006020820190508181036000830152613b5d81613b21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc0602383613047565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c52602983613047565b9150613c5d82613bf6565b604082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f45524332303a2054726164696e67206973206e6f74207374617274656420796560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce4602183613047565b9150613cef82613c88565b604082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784160008201527f646472657373416d6f756e740000000000000000000000000000000000000000602082015250565b6000613d76602c83613047565b9150613d8182613d1a565b604082019050919050565b60006020820190508181036000830152613da581613d69565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e7400000000000000000000000000000000000000000000000000602082015250565b6000613e08602783613047565b9150613e1382613dac565b604082019050919050565b60006020820190508181036000830152613e3781613dfb565b9050919050565b6000613e4982613008565b9150613e5483613008565b9250828203905081811115613e6c57613e6b6134cf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613edf81613125565b92915050565b600060208284031215613efb57613efa6130ee565b5b6000613f0984828501613ed0565b91505092915050565b6000819050919050565b6000613f37613f32613f2d84613f12565b6131f3565b613008565b9050919050565b613f4781613f1c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8281613113565b82525050565b6000613f948383613f79565b60208301905092915050565b6000602082019050919050565b6000613fb882613f4d565b613fc28185613f58565b9350613fcd83613f69565b8060005b83811015613ffe578151613fe58882613f88565b9750613ff083613fa0565b925050600181019050613fd1565b5085935050505092915050565b600060a0820190506140206000830188613012565b61402d6020830187613f3e565b818103604083015261403f8186613fad565b905061404e6060830185613375565b61405b6080830184613012565b9695505050505050565b600061407082613008565b915061407b83613008565b9250828201905080821115614093576140926134cf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006140cf601b83613047565b91506140da82614099565b602082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061413f82613008565b915061414a83613008565b92508261415a57614159614105565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c1602183613047565b91506141cc82614165565b604082019050919050565b600060208201905081810360008301526141f0816141b4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee4a914f1b6db1dead6db52230b25402b8bf51e3ffffb0a0d396d5799e72708864736f6c63430008130033

Deployed Bytecode Sourcemap

4164:14767:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9780:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10840:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18836:92;;;;;;;;;;;;;:::i;:::-;;5638:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7376:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10057:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11009:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18250:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16449:219;;;;;;;;;;;;;:::i;:::-;;7180:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9966:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7895:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16041:341;;;;;;;;;;;;;:::i;:::-;;7035:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10160:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3188:148;;;;;;;;;;;;;:::i;:::-;;6950:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6460:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5770;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5878:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2974:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9871:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10287:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17092:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18094:98;;;;;;;;;;;;;:::i;:::-;;17316:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17764:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7273:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10462:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16785:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5510:57;;;;:::o;9780:83::-;9817:13;9850:5;;;;;;;;;;;;;;;;;9843:12;;9780:83;:::o;10840:161::-;10915:4;10932:39;10941:12;:10;:12::i;:::-;10955:7;10964:6;10932:8;:39::i;:::-;10989:4;10982:11;;10840:161;;;;:::o;18836:92::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18907:13:::1;;;;;;;;;;;18906:14;18890:13;;:30;;;;;;;;;;;;;;;;;;18836:92::o:0;5638:52::-;;;;:::o;7376:41::-;;;;;;;;;;;;;:::o;10057:95::-;10110:7;5146:2;5248;:13;;;;:::i;:::-;5235:10;:26;;;;:::i;:::-;10130:14;;10057:95;:::o;11009:313::-;11107:4;11124:36;11134:6;11142:9;11153:6;11124:9;:36::i;:::-;11171:121;11180:6;11188:12;:10;:12::i;:::-;11202:89;11240:6;11202:89;;;;;;;;;;;;;;;;;:11;:19;11214:6;11202:19;;;;;;;;;;;;;;;:33;11222:12;:10;:12::i;:::-;11202:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11171:8;:121::i;:::-;11310:4;11303:11;;11009:313;;;;;:::o;18250:500::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;18362:1:::1;18353:5;:10:::0;18349:394:::1;;18401:12;;;;;;;;;;;18387:26;;:10;:26;;;18379:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18457:6;18442:12;;:21;;;;;;;;;;;;;;;;;;18349:394;;;18494:1;18485:5;:10:::0;18481:262:::1;;18533:13;;;;;;;;;;;18519:27;;:10;:27;;;18511:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18591:6;18575:13;;:22;;;;;;;;;;;;;;;;;;18481:262;;;18628:1;18619:5;:10:::0;18615:128:::1;;18667:13;;;;;;;;;;;18653:27;;:10;:27;;;18645:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18725:6;18709:13;;:22;;;;;;;;;;;;;;;;;;18615:128;18481:262;18349:394;18250:500:::0;;:::o;16449:219::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16512:14:::1;;;;;;;;;;;16511:15;16503:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16581:4;16567:11;;:18;;;;;;;;;;;;;;;;;;16613:4;16596:14;;:21;;;;;;;;;;;;;;;;;;16648:12;16628:17;:32;;;;16449:219::o:0;7180:29::-;;;;:::o;9966:83::-;10007:5;5146:2;10025:16;;9966:83;:::o;7895:32::-;;;;;;;;;;;;;:::o;7498:28::-;;;;;;;;;;;;;:::o;16041:341::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;16098:20:::1;16121:24;16139:4;16121:9;:24::i;:::-;16098:47;;16175:1;16160:12;:16;16156:71;;;16192:23;16202:12;16192:9;:23::i;:::-;16156:71;16239:18;16260:21;16239:42;;16309:1;16296:10;:14;16292:83;;;16326:37;16352:10;16326:25;:37::i;:::-;16292:83;16087:295;;16041:341::o:0;7035:36::-;;;;;;;;;;;;;:::o;10160:119::-;10226:7;10253:9;:18;10263:7;10253:18;;;;;;;;;;;;;;;;10246:25;;10160:119;;;:::o;3188:148::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3295:1:::1;3258:40;;3279:6;::::0;::::1;;;;;;;;3258:40;;;;;;;;;;;;3326:1;3309:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3188:148::o:0;6950:35::-;;;;;;;;;;;;;:::o;6460:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;5770:::-;;;;:::o;5878:56::-;;;;:::o;2974:79::-;3012:7;3039:6;;;;;;;;;;;3032:13;;2974:79;:::o;9871:87::-;9910:13;9943:7;;;;;;;;;;;;;;;;;9936:14;;9871:87;:::o;10287:167::-;10365:4;10382:42;10392:12;:10;:12::i;:::-;10406:9;10417:6;10382:9;:42::i;:::-;10442:4;10435:11;;10287:167;;;;:::o;17092:146::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17203:18:::1;:27;17222:7;17203:27;;;;;;;;;;;;;;;;;;;;;;;;;17202:28;17172:18;:27;17191:7;17172:27;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;17092:146:::0;:::o;18094:98::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;18173:11:::1;;;;;;;;;;;18172:12;18158:11;;:26;;;;;;;;;;;;;;;;;;18094:98::o:0;17316:303::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;17431:1:::1;17414:19;;:5;:19;;::::0;17410:202:::1;;17450:9;17461:17:::0;17490:10:::1;17482:24;;17514:6;17482:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17449:76;;;;17434:103;;17410:202;;;17565:5;17558:22;;;17581:10;17593:6;17558:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17410:202;17316:303:::0;;:::o;17764:255::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;17890:16:::1;:33;17907:15;17890:33;;;;;;;;;;;;;;;;;;;;;;;;;17889:34;17853:16;:33;17870:15;17853:33;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;17939:72;17960:15;17977:16;:33;17994:15;17977:33;;;;;;;;;;;;;;;;;;;;;;;;;17939:72;;;;;;;:::i;:::-;;;;;;;;17764:255:::0;:::o;7273:32::-;;;;:::o;6992:36::-;;;;;;;;;;;;;:::o;10462:143::-;10543:7;10570:11;:18;10582:5;10570:18;;;;;;;;;;;;;;;:27;10589:7;10570:27;;;;;;;;;;;;;;;;10563:34;;10462:143;;;;:::o;16785:205::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16868:2:::1;16861:3;:9;;16853:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16928:27;16939:10;;16951:3;16928:27;;;;;;;:::i;:::-;;;;;;;;16979:3;16966:10;:16;;;;16785:205:::0;:::o;732:98::-;785:7;812:10;805:17;;732:98;:::o;11330:335::-;11440:1;11423:19;;:5;:19;;;11415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11521:1;11502:21;;:7;:21;;;11494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11603:6;11573:11;:18;11585:5;11573:18;;;;;;;;;;;;;;;:27;11592:7;11573:27;;;;;;;;;;;;;;;:36;;;;11641:7;11625:32;;11634:5;11625:32;;;11650:6;11625:32;;;;;;:::i;:::-;;;;;;;;11330:335;;;:::o;11673:2032::-;11777:1;11761:18;;:4;:18;;;11753:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11854:1;11840:16;;:2;:16;;;11832:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11924:1;11915:6;:10;11907:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11984:15;12026:7;:5;:7::i;:::-;12018:15;;:4;:15;;;;:32;;;;;12043:7;:5;:7::i;:::-;12037:13;;:2;:13;;;;12018:32;12014:1224;;;12075:14;;;;;;;;;;;12067:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12148:16;:22;12165:4;12148:22;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;12175:18;:22;12194:2;12175:22;;;;;;;;;;;;;;;;;;;;;;;;;12174:23;12148:49;:66;;;;;12201:13;;;;;;;;;;;12148:66;12144:302;;;12271:17;;12242:25;12260:6;12242:9;:13;12252:2;12242:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;:46;;12234:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12374:12;;12364:6;:22;;12356:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12144:302;12481:16;:20;12498:2;12481:20;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;12521:4;12505:21;;:4;:21;;;;12481:45;12477:257;;;12556:42;12594:3;12556:33;12567:21;:19;:21::i;:::-;12556:6;:10;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;12546:52;;12477:257;;;12624:16;:22;12641:4;12624:22;;;;;;;;;;;;;;;;;;;;;;;;;12620:114;;;12676:42;12714:3;12676:33;12687:21;:19;:21::i;:::-;12676:6;:10;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;12666:52;;12620:114;12477:257;12750:28;12781:24;12799:4;12781:9;:24::i;:::-;12750:55;;12825:6;;;;;;;;;;;12824:7;:30;;;;;12841:13;;;;;;;;;;;12835:19;;:2;:19;;;12824:30;:45;;;;;12858:11;;;;;;;;;;;12824:45;:90;;;;;12896:18;;12873:20;:41;12824:90;12820:407;;;12935:70;12945:59;12953:6;12961:42;12969:20;12991:11;;12961:7;:42::i;:::-;12945:7;:59::i;:::-;12935:9;:70::i;:::-;13024:26;13053:21;13024:50;;13118:1;13097:18;:22;13093:119;;;13144:48;13170:21;13144:25;:48::i;:::-;13093:119;12916:311;12820:407;12052:1186;12014:1224;13254:18;:24;13273:4;13254:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13282:18;:22;13301:2;13282:22;;;;;;;;;;;;;;;;;;;;;;;;;13254:50;13250:93;;;13330:1;13320:11;;13250:93;13369:1;13359:7;:11;13355:165;;;13413:37;13442:7;13413:9;:24;13431:4;13413:24;;;;;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;13386:9;:24;13404:4;13386:24;;;;;;;;;;;;;;;:64;;;;13493:4;13470:38;;13479:4;13470:38;;;13500:7;13470:38;;;;;;:::i;:::-;;;;;;;;13355:165;13550:27;13570:6;13550:9;:15;13560:4;13550:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13532:9;:15;13542:4;13532:15;;;;;;;;;;;;;;;:45;;;;13604:38;13622:19;13633:7;13622:6;:10;;:19;;;;:::i;:::-;13604:9;:13;13614:2;13604:13;;;;;;;;;;;;;;;;:17;;:38;;;;:::i;:::-;13588:9;:13;13598:2;13588:13;;;;;;;;;;;;;;;:54;;;;13673:2;13658:39;;13667:4;13658:39;;;13677:19;13688:7;13677:6;:10;;:19;;;;:::i;:::-;13658:39;;;;;;:::i;:::-;;;;;;;;11742:1963;11673:2032;;;:::o;1869:190::-;1955:7;1988:1;1983;:6;;1991:12;1975:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2015:9;2031:1;2027;:5;;;;:::i;:::-;2015:17;;2050:1;2043:8;;;1869:190;;;;;:::o;14831:535::-;8277:4;8268:6;;:13;;;;;;;;;;;;;;;;;;14904:14:::1;;;;;;;;;;;14903:15;:35;;;;14937:1;14922:11;:16;14903:35;14940:7;14899:48;14959:21;14997:1;14983:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14959:40;;15028:4;15010;15015:1;15010:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15054:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15044:4;15049:1;15044:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15089:62;15106:4;15121:15;;;;;;;;;;;15139:11;15089:8;:62::i;:::-;15162:15;;;;;;;;;;;:66;;;15243:11;15269:1;15285:4;15312;15332:15;15162:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14888:478;8292:1;8313:5:::0;8304:6;;:14;;;;;;;;;;;;;;;;;;14831:535;:::o;15482:240::-;15552:12;;;;;;;;;;;:21;;:46;15574:23;15593:3;15574:14;15585:2;15574:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;15552:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15609:13;;;;;;;;;;;:22;;:47;15632:23;15651:3;15632:14;15643:2;15632:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;15609:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15667:13;;;;;;;;;;;:22;;:47;15690:23;15709:3;15690:14;15701:2;15690:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;15667:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15482:240;:::o;1538:179::-;1596:7;1616:9;1632:1;1628;:5;;;;:::i;:::-;1616:17;;1657:1;1652;:6;;1644:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1708:1;1701:8;;;1538:179;;;;:::o;14097:331::-;14151:7;14189:1;14175:10;;:15;14171:38;;14199:10;;14192:17;;;;14171:38;14262:1;14241:17;;14226:12;:32;;;;:::i;:::-;:37;14222:165;;14287:2;14280:9;;;;14222:165;14347:2;14326:17;;14311:12;:32;;;;:::i;:::-;:38;14307:80;;14373:2;14366:9;;;;14307:80;14419:1;14412:8;;14097:331;;:::o;2067:246::-;2125:7;2154:1;2149;:6;2145:47;;2179:1;2172:8;;;;2145:47;2202:9;2218:1;2214;:5;;;;:::i;:::-;2202:17;;2247:1;2242;2238;:5;;;;:::i;:::-;:10;2230:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:1;2297:8;;;2067:246;;;;;:::o;2321:132::-;2379:7;2406:39;2410:1;2413;2406:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2399:46;;2321:132;;;;:::o;14607:110::-;14668:7;14699:1;14695;:5;14694:15;;14708:1;14694:15;;;14704:1;14694:15;14687:22;;14607:110;;;;:::o;1725:136::-;1783:7;1810:43;1814:1;1817;1810:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1803:50;;1725:136;;;;:::o;2461:189::-;2547:7;2579:1;2575;:5;2582:12;2567:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2606:9;2622:1;2618;:5;;;;:::i;:::-;2606:17;;2641:1;2634:8;;;2461:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:104::-;5441:7;5470:24;5488:5;5470:24;:::i;:::-;5459:35;;5396:104;;;:::o;5506:138::-;5587:32;5613:5;5587:32;:::i;:::-;5580:5;5577:43;5567:71;;5634:1;5631;5624:12;5567:71;5506:138;:::o;5650:155::-;5704:5;5742:6;5729:20;5720:29;;5758:41;5793:5;5758:41;:::i;:::-;5650:155;;;;:::o;5811:490::-;5887:6;5895;5944:2;5932:9;5923:7;5919:23;5915:32;5912:119;;;5950:79;;:::i;:::-;5912:119;6070:1;6095:61;6148:7;6139:6;6128:9;6124:22;6095:61;:::i;:::-;6085:71;;6041:125;6205:2;6231:53;6276:7;6267:6;6256:9;6252:22;6231:53;:::i;:::-;6221:63;;6176:118;5811:490;;;;;:::o;6307:86::-;6342:7;6382:4;6375:5;6371:16;6360:27;;6307:86;;;:::o;6399:112::-;6482:22;6498:5;6482:22;:::i;:::-;6477:3;6470:35;6399:112;;:::o;6517:214::-;6606:4;6644:2;6633:9;6629:18;6621:26;;6657:67;6721:1;6710:9;6706:17;6697:6;6657:67;:::i;:::-;6517:214;;;;:::o;6737:118::-;6824:24;6842:5;6824:24;:::i;:::-;6819:3;6812:37;6737:118;;:::o;6861:222::-;6954:4;6992:2;6981:9;6977:18;6969:26;;7005:71;7073:1;7062:9;7058:17;7049:6;7005:71;:::i;:::-;6861:222;;;;:::o;7089:142::-;7192:32;7218:5;7192:32;:::i;:::-;7187:3;7180:45;7089:142;;:::o;7237:254::-;7346:4;7384:2;7373:9;7369:18;7361:26;;7397:87;7481:1;7470:9;7466:17;7457:6;7397:87;:::i;:::-;7237:254;;;;:::o;7497:329::-;7556:6;7605:2;7593:9;7584:7;7580:23;7576:32;7573:119;;;7611:79;;:::i;:::-;7573:119;7731:1;7756:53;7801:7;7792:6;7781:9;7777:22;7756:53;:::i;:::-;7746:63;;7702:117;7497:329;;;;:::o;7832:474::-;7900:6;7908;7957:2;7945:9;7936:7;7932:23;7928:32;7925:119;;;7963:79;;:::i;:::-;7925:119;8083:1;8108:53;8153:7;8144:6;8133:9;8129:22;8108:53;:::i;:::-;8098:63;;8054:117;8210:2;8236:53;8281:7;8272:6;8261:9;8257:22;8236:53;:::i;:::-;8226:63;;8181:118;7832:474;;;;;:::o;8312:329::-;8371:6;8420:2;8408:9;8399:7;8395:23;8391:32;8388:119;;;8426:79;;:::i;:::-;8388:119;8546:1;8571:53;8616:7;8607:6;8596:9;8592:22;8571:53;:::i;:::-;8561:63;;8517:117;8312:329;;;;:::o;8647:182::-;8787:34;8783:1;8775:6;8771:14;8764:58;8647:182;:::o;8835:366::-;8977:3;8998:67;9062:2;9057:3;8998:67;:::i;:::-;8991:74;;9074:93;9163:3;9074:93;:::i;:::-;9192:2;9187:3;9183:12;9176:19;;8835:366;;;:::o;9207:419::-;9373:4;9411:2;9400:9;9396:18;9388:26;;9460:9;9454:4;9450:20;9446:1;9435:9;9431:17;9424:47;9488:131;9614:4;9488:131;:::i;:::-;9480:139;;9207:419;;;:::o;9632:180::-;9680:77;9677:1;9670:88;9777:4;9774:1;9767:15;9801:4;9798:1;9791:15;9818:102;9860:8;9907:5;9904:1;9900:13;9879:34;;9818:102;;;:::o;9926:848::-;9987:5;9994:4;10018:6;10009:15;;10042:5;10033:14;;10056:712;10077:1;10067:8;10064:15;10056:712;;;10172:4;10167:3;10163:14;10157:4;10154:24;10151:50;;;10181:18;;:::i;:::-;10151:50;10231:1;10221:8;10217:16;10214:451;;;10646:4;10639:5;10635:16;10626:25;;10214:451;10696:4;10690;10686:15;10678:23;;10726:32;10749:8;10726:32;:::i;:::-;10714:44;;10056:712;;;9926:848;;;;;;;:::o;10780:1073::-;10834:5;11025:8;11015:40;;11046:1;11037:10;;11048:5;;11015:40;11074:4;11064:36;;11091:1;11082:10;;11093:5;;11064:36;11160:4;11208:1;11203:27;;;;11244:1;11239:191;;;;11153:277;;11203:27;11221:1;11212:10;;11223:5;;;11239:191;11284:3;11274:8;11271:17;11268:43;;;11291:18;;:::i;:::-;11268:43;11340:8;11337:1;11333:16;11324:25;;11375:3;11368:5;11365:14;11362:40;;;11382:18;;:::i;:::-;11362:40;11415:5;;;11153:277;;11539:2;11529:8;11526:16;11520:3;11514:4;11511:13;11507:36;11489:2;11479:8;11476:16;11471:2;11465:4;11462:12;11458:35;11442:111;11439:246;;;11595:8;11589:4;11585:19;11576:28;;11630:3;11623:5;11620:14;11617:40;;;11637:18;;:::i;:::-;11617:40;11670:5;;11439:246;11710:42;11748:3;11738:8;11732:4;11729:1;11710:42;:::i;:::-;11695:57;;;;11784:4;11779:3;11775:14;11768:5;11765:25;11762:51;;;11793:18;;:::i;:::-;11762:51;11842:4;11835:5;11831:16;11822:25;;10780:1073;;;;;;:::o;11859:281::-;11917:5;11941:23;11959:4;11941:23;:::i;:::-;11933:31;;11985:25;12001:8;11985:25;:::i;:::-;11973:37;;12029:104;12066:66;12056:8;12050:4;12029:104;:::i;:::-;12020:113;;11859:281;;;;:::o;12146:410::-;12186:7;12209:20;12227:1;12209:20;:::i;:::-;12204:25;;12243:20;12261:1;12243:20;:::i;:::-;12238:25;;12298:1;12295;12291:9;12320:30;12338:11;12320:30;:::i;:::-;12309:41;;12499:1;12490:7;12486:15;12483:1;12480:22;12460:1;12453:9;12433:83;12410:139;;12529:18;;:::i;:::-;12410:139;12194:362;12146:410;;;;:::o;12562:175::-;12702:27;12698:1;12690:6;12686:14;12679:51;12562:175;:::o;12743:366::-;12885:3;12906:67;12970:2;12965:3;12906:67;:::i;:::-;12899:74;;12982:93;13071:3;12982:93;:::i;:::-;13100:2;13095:3;13091:12;13084:19;;12743:366;;;:::o;13115:419::-;13281:4;13319:2;13308:9;13304:18;13296:26;;13368:9;13362:4;13358:20;13354:1;13343:9;13339:17;13332:47;13396:131;13522:4;13396:131;:::i;:::-;13388:139;;13115:419;;;:::o;13540:159::-;13680:11;13676:1;13668:6;13664:14;13657:35;13540:159;:::o;13705:365::-;13847:3;13868:66;13932:1;13927:3;13868:66;:::i;:::-;13861:73;;13943:93;14032:3;13943:93;:::i;:::-;14061:2;14056:3;14052:12;14045:19;;13705:365;;;:::o;14076:419::-;14242:4;14280:2;14269:9;14265:18;14257:26;;14329:9;14323:4;14319:20;14315:1;14304:9;14300:17;14293:47;14357:131;14483:4;14357:131;:::i;:::-;14349:139;;14076:419;;;:::o;14501:173::-;14641:25;14637:1;14629:6;14625:14;14618:49;14501:173;:::o;14680:366::-;14822:3;14843:67;14907:2;14902:3;14843:67;:::i;:::-;14836:74;;14919:93;15008:3;14919:93;:::i;:::-;15037:2;15032:3;15028:12;15021:19;;14680:366;;;:::o;15052:419::-;15218:4;15256:2;15245:9;15241:18;15233:26;;15305:9;15299:4;15295:20;15291:1;15280:9;15276:17;15269:47;15333:131;15459:4;15333:131;:::i;:::-;15325:139;;15052:419;;;:::o;15477:147::-;15578:11;15615:3;15600:18;;15477:147;;;;:::o;15630:114::-;;:::o;15750:398::-;15909:3;15930:83;16011:1;16006:3;15930:83;:::i;:::-;15923:90;;16022:93;16111:3;16022:93;:::i;:::-;16140:1;16135:3;16131:11;16124:18;;15750:398;;;:::o;16154:379::-;16338:3;16360:147;16503:3;16360:147;:::i;:::-;16353:154;;16524:3;16517:10;;16154:379;;;:::o;16539:332::-;16660:4;16698:2;16687:9;16683:18;16675:26;;16711:71;16779:1;16768:9;16764:17;16755:6;16711:71;:::i;:::-;16792:72;16860:2;16849:9;16845:18;16836:6;16792:72;:::i;:::-;16539:332;;;;;:::o;16877:116::-;16947:21;16962:5;16947:21;:::i;:::-;16940:5;16937:32;16927:60;;16983:1;16980;16973:12;16927:60;16877:116;:::o;16999:137::-;17053:5;17084:6;17078:13;17069:22;;17100:30;17124:5;17100:30;:::i;:::-;16999:137;;;;:::o;17142:345::-;17209:6;17258:2;17246:9;17237:7;17233:23;17229:32;17226:119;;;17264:79;;:::i;:::-;17226:119;17384:1;17409:61;17462:7;17453:6;17442:9;17438:22;17409:61;:::i;:::-;17399:71;;17355:125;17142:345;;;;:::o;17493:320::-;17608:4;17646:2;17635:9;17631:18;17623:26;;17659:71;17727:1;17716:9;17712:17;17703:6;17659:71;:::i;:::-;17740:66;17802:2;17791:9;17787:18;17778:6;17740:66;:::i;:::-;17493:320;;;;;:::o;17819:224::-;17959:34;17955:1;17947:6;17943:14;17936:58;18028:7;18023:2;18015:6;18011:15;18004:32;17819:224;:::o;18049:366::-;18191:3;18212:67;18276:2;18271:3;18212:67;:::i;:::-;18205:74;;18288:93;18377:3;18288:93;:::i;:::-;18406:2;18401:3;18397:12;18390:19;;18049:366;;;:::o;18421:419::-;18587:4;18625:2;18614:9;18610:18;18602:26;;18674:9;18668:4;18664:20;18660:1;18649:9;18645:17;18638:47;18702:131;18828:4;18702:131;:::i;:::-;18694:139;;18421:419;;;:::o;18846:332::-;18967:4;19005:2;18994:9;18990:18;18982:26;;19018:71;19086:1;19075:9;19071:17;19062:6;19018:71;:::i;:::-;19099:72;19167:2;19156:9;19152:18;19143:6;19099:72;:::i;:::-;18846:332;;;;;:::o;19184:223::-;19324:34;19320:1;19312:6;19308:14;19301:58;19393:6;19388:2;19380:6;19376:15;19369:31;19184:223;:::o;19413:366::-;19555:3;19576:67;19640:2;19635:3;19576:67;:::i;:::-;19569:74;;19652:93;19741:3;19652:93;:::i;:::-;19770:2;19765:3;19761:12;19754:19;;19413:366;;;:::o;19785:419::-;19951:4;19989:2;19978:9;19974:18;19966:26;;20038:9;20032:4;20028:20;20024:1;20013:9;20009:17;20002:47;20066:131;20192:4;20066:131;:::i;:::-;20058:139;;19785:419;;;:::o;20210:221::-;20350:34;20346:1;20338:6;20334:14;20327:58;20419:4;20414:2;20406:6;20402:15;20395:29;20210:221;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:224::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:7;21438:2;21430:6;21426:15;21419:32;21234:224;:::o;21464:366::-;21606:3;21627:67;21691:2;21686:3;21627:67;:::i;:::-;21620:74;;21703:93;21792:3;21703:93;:::i;:::-;21821:2;21816:3;21812:12;21805:19;;21464:366;;;:::o;21836:419::-;22002:4;22040:2;22029:9;22025:18;22017:26;;22089:9;22083:4;22079:20;22075:1;22064:9;22060:17;22053:47;22117:131;22243:4;22117:131;:::i;:::-;22109:139;;21836:419;;;:::o;22261:222::-;22401:34;22397:1;22389:6;22385:14;22378:58;22470:5;22465:2;22457:6;22453:15;22446:30;22261:222;:::o;22489:366::-;22631:3;22652:67;22716:2;22711:3;22652:67;:::i;:::-;22645:74;;22728:93;22817:3;22728:93;:::i;:::-;22846:2;22841:3;22837:12;22830:19;;22489:366;;;:::o;22861:419::-;23027:4;23065:2;23054:9;23050:18;23042:26;;23114:9;23108:4;23104:20;23100:1;23089:9;23085:17;23078:47;23142:131;23268:4;23142:131;:::i;:::-;23134:139;;22861:419;;;:::o;23286:228::-;23426:34;23422:1;23414:6;23410:14;23403:58;23495:11;23490:2;23482:6;23478:15;23471:36;23286:228;:::o;23520:366::-;23662:3;23683:67;23747:2;23742:3;23683:67;:::i;:::-;23676:74;;23759:93;23848:3;23759:93;:::i;:::-;23877:2;23872:3;23868:12;23861:19;;23520:366;;;:::o;23892:419::-;24058:4;24096:2;24085:9;24081:18;24073:26;;24145:9;24139:4;24135:20;24131:1;24120:9;24116:17;24109:47;24173:131;24299:4;24173:131;:::i;:::-;24165:139;;23892:419;;;:::o;24317:220::-;24457:34;24453:1;24445:6;24441:14;24434:58;24526:3;24521:2;24513:6;24509:15;24502:28;24317:220;:::o;24543:366::-;24685:3;24706:67;24770:2;24765:3;24706:67;:::i;:::-;24699:74;;24782:93;24871:3;24782:93;:::i;:::-;24900:2;24895:3;24891:12;24884:19;;24543:366;;;:::o;24915:419::-;25081:4;25119:2;25108:9;25104:18;25096:26;;25168:9;25162:4;25158:20;25154:1;25143:9;25139:17;25132:47;25196:131;25322:4;25196:131;:::i;:::-;25188:139;;24915:419;;;:::o;25340:231::-;25480:34;25476:1;25468:6;25464:14;25457:58;25549:14;25544:2;25536:6;25532:15;25525:39;25340:231;:::o;25577:366::-;25719:3;25740:67;25804:2;25799:3;25740:67;:::i;:::-;25733:74;;25816:93;25905:3;25816:93;:::i;:::-;25934:2;25929:3;25925:12;25918:19;;25577:366;;;:::o;25949:419::-;26115:4;26153:2;26142:9;26138:18;26130:26;;26202:9;26196:4;26192:20;26188:1;26177:9;26173:17;26166:47;26230:131;26356:4;26230:131;:::i;:::-;26222:139;;25949:419;;;:::o;26374:226::-;26514:34;26510:1;26502:6;26498:14;26491:58;26583:9;26578:2;26570:6;26566:15;26559:34;26374:226;:::o;26606:366::-;26748:3;26769:67;26833:2;26828:3;26769:67;:::i;:::-;26762:74;;26845:93;26934:3;26845:93;:::i;:::-;26963:2;26958:3;26954:12;26947:19;;26606:366;;;:::o;26978:419::-;27144:4;27182:2;27171:9;27167:18;27159:26;;27231:9;27225:4;27221:20;27217:1;27206:9;27202:17;27195:47;27259:131;27385:4;27259:131;:::i;:::-;27251:139;;26978:419;;;:::o;27403:194::-;27443:4;27463:20;27481:1;27463:20;:::i;:::-;27458:25;;27497:20;27515:1;27497:20;:::i;:::-;27492:25;;27541:1;27538;27534:9;27526:17;;27565:1;27559:4;27556:11;27553:37;;;27570:18;;:::i;:::-;27553:37;27403:194;;;;:::o;27603:180::-;27651:77;27648:1;27641:88;27748:4;27745:1;27738:15;27772:4;27769:1;27762:15;27789:180;27837:77;27834:1;27827:88;27934:4;27931:1;27924:15;27958:4;27955:1;27948:15;27975:143;28032:5;28063:6;28057:13;28048:22;;28079:33;28106:5;28079:33;:::i;:::-;27975:143;;;;:::o;28124:351::-;28194:6;28243:2;28231:9;28222:7;28218:23;28214:32;28211:119;;;28249:79;;:::i;:::-;28211:119;28369:1;28394:64;28450:7;28441:6;28430:9;28426:22;28394:64;:::i;:::-;28384:74;;28340:128;28124:351;;;;:::o;28481:85::-;28526:7;28555:5;28544:16;;28481:85;;;:::o;28572:158::-;28630:9;28663:61;28681:42;28690:32;28716:5;28690:32;:::i;:::-;28681:42;:::i;:::-;28663:61;:::i;:::-;28650:74;;28572:158;;;:::o;28736:147::-;28831:45;28870:5;28831:45;:::i;:::-;28826:3;28819:58;28736:147;;:::o;28889:114::-;28956:6;28990:5;28984:12;28974:22;;28889:114;;;:::o;29009:184::-;29108:11;29142:6;29137:3;29130:19;29182:4;29177:3;29173:14;29158:29;;29009:184;;;;:::o;29199:132::-;29266:4;29289:3;29281:11;;29319:4;29314:3;29310:14;29302:22;;29199:132;;;:::o;29337:108::-;29414:24;29432:5;29414:24;:::i;:::-;29409:3;29402:37;29337:108;;:::o;29451:179::-;29520:10;29541:46;29583:3;29575:6;29541:46;:::i;:::-;29619:4;29614:3;29610:14;29596:28;;29451:179;;;;:::o;29636:113::-;29706:4;29738;29733:3;29729:14;29721:22;;29636:113;;;:::o;29785:732::-;29904:3;29933:54;29981:5;29933:54;:::i;:::-;30003:86;30082:6;30077:3;30003:86;:::i;:::-;29996:93;;30113:56;30163:5;30113:56;:::i;:::-;30192:7;30223:1;30208:284;30233:6;30230:1;30227:13;30208:284;;;30309:6;30303:13;30336:63;30395:3;30380:13;30336:63;:::i;:::-;30329:70;;30422:60;30475:6;30422:60;:::i;:::-;30412:70;;30268:224;30255:1;30252;30248:9;30243:14;;30208:284;;;30212:14;30508:3;30501:10;;29909:608;;;29785:732;;;;:::o;30523:831::-;30786:4;30824:3;30813:9;30809:19;30801:27;;30838:71;30906:1;30895:9;30891:17;30882:6;30838:71;:::i;:::-;30919:80;30995:2;30984:9;30980:18;30971:6;30919:80;:::i;:::-;31046:9;31040:4;31036:20;31031:2;31020:9;31016:18;31009:48;31074:108;31177:4;31168:6;31074:108;:::i;:::-;31066:116;;31192:72;31260:2;31249:9;31245:18;31236:6;31192:72;:::i;:::-;31274:73;31342:3;31331:9;31327:19;31318:6;31274:73;:::i;:::-;30523:831;;;;;;;;:::o;31360:191::-;31400:3;31419:20;31437:1;31419:20;:::i;:::-;31414:25;;31453:20;31471:1;31453:20;:::i;:::-;31448:25;;31496:1;31493;31489:9;31482:16;;31517:3;31514:1;31511:10;31508:36;;;31524:18;;:::i;:::-;31508:36;31360:191;;;;:::o;31557:177::-;31697:29;31693:1;31685:6;31681:14;31674:53;31557:177;:::o;31740:366::-;31882:3;31903:67;31967:2;31962:3;31903:67;:::i;:::-;31896:74;;31979:93;32068:3;31979:93;:::i;:::-;32097:2;32092:3;32088:12;32081:19;;31740:366;;;:::o;32112:419::-;32278:4;32316:2;32305:9;32301:18;32293:26;;32365:9;32359:4;32355:20;32351:1;32340:9;32336:17;32329:47;32393:131;32519:4;32393:131;:::i;:::-;32385:139;;32112:419;;;:::o;32537:180::-;32585:77;32582:1;32575:88;32682:4;32679:1;32672:15;32706:4;32703:1;32696:15;32723:185;32763:1;32780:20;32798:1;32780:20;:::i;:::-;32775:25;;32814:20;32832:1;32814:20;:::i;:::-;32809:25;;32853:1;32843:35;;32858:18;;:::i;:::-;32843:35;32900:1;32897;32893:9;32888:14;;32723:185;;;;:::o;32914:220::-;33054:34;33050:1;33042:6;33038:14;33031:58;33123:3;33118:2;33110:6;33106:15;33099:28;32914:220;:::o;33140:366::-;33282:3;33303:67;33367:2;33362:3;33303:67;:::i;:::-;33296:74;;33379:93;33468:3;33379:93;:::i;:::-;33497:2;33492:3;33488:12;33481:19;;33140:366;;;:::o;33512:419::-;33678:4;33716:2;33705:9;33701:18;33693:26;;33765:9;33759:4;33755:20;33751:1;33740:9;33736:17;33729:47;33793:131;33919:4;33793:131;:::i;:::-;33785:139;;33512:419;;;:::o

Swarm Source

ipfs://ee4a914f1b6db1dead6db52230b25402b8bf51e3ffffb0a0d396d5799e727088

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.