ETH Price: $2,389.13 (-0.39%)

Contract

0xF1d3Ff909Dc5b03A053E080eA323664208a07388
 

Overview

ETH Balance

207 wei

Eth Value

Less Than $0.01 (@ $2,389.13/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve191118622024-01-29 11:23:11220 days ago1706527391IN
0xF1d3Ff90...208a07388
0 ETH0.000467329.95329595
Approve188925012023-12-29 16:44:11250 days ago1703868251IN
0xF1d3Ff90...208a07388
0 ETH0.0008214327.50598735
Approve187344722023-12-07 12:39:47272 days ago1701952787IN
0xF1d3Ff90...208a07388
0 ETH0.0020888144.25090001
Approve187330242023-12-07 7:47:35273 days ago1701935255IN
0xF1d3Ff90...208a07388
0 ETH0.0016316434.52189387
Approve187273252023-12-06 12:35:47273 days ago1701866147IN
0xF1d3Ff90...208a07388
0 ETH0.0015106355.86673353
Approve187273242023-12-06 12:35:35273 days ago1701866135IN
0xF1d3Ff90...208a07388
0 ETH0.002361450.30679272
Transfer187272592023-12-06 12:22:35273 days ago1701865355IN
0xF1d3Ff90...208a07388
0 ETH0.0105253148.66050371
Approve187264982023-12-06 9:49:59274 days ago1701856199IN
0xF1d3Ff90...208a07388
0 ETH0.00211944.83345189
Approve187263762023-12-06 9:25:23274 days ago1701854723IN
0xF1d3Ff90...208a07388
0 ETH0.0021818446.45777829
Approve187184432023-12-05 6:45:23275 days ago1701758723IN
0xF1d3Ff90...208a07388
0 ETH0.0019893642.14404205
Approve187161842023-12-04 23:09:11275 days ago1701731351IN
0xF1d3Ff90...208a07388
0 ETH0.0021153944.81380173
Approve187132262023-12-04 13:13:47275 days ago1701695627IN
0xF1d3Ff90...208a07388
0 ETH0.0019628841.58306246
Approve187117112023-12-04 8:08:23276 days ago1701677303IN
0xF1d3Ff90...208a07388
0 ETH0.0017560637.15431368
Approve187114112023-12-04 7:07:35276 days ago1701673655IN
0xF1d3Ff90...208a07388
0 ETH0.0021632345.82733566
Approve187113572023-12-04 6:56:35276 days ago1701672995IN
0xF1d3Ff90...208a07388
0 ETH0.0017540837.11245535
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
Transfer187095062023-12-04 0:43:59276 days ago1701650639IN
0xF1d3Ff90...208a07388
0 ETH0.0015773830.62044815
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
205645592024-08-19 18:47:5916 days ago1724093279
0xF1d3Ff90...208a07388
0.0001698 ETH
205645592024-08-19 18:47:5916 days ago1724093279
0xF1d3Ff90...208a07388
0.0001698 ETH
205645592024-08-19 18:47:5916 days ago1724093279
0xF1d3Ff90...208a07388
0.0001698 ETH
205645592024-08-19 18:47:5916 days ago1724093279
0xF1d3Ff90...208a07388
0.0001698 ETH
205645592024-08-19 18:47:5916 days ago1724093279
0xF1d3Ff90...208a07388
0.0001698 ETH
205645592024-08-19 18:47:5916 days ago1724093279
0xF1d3Ff90...208a07388
0.00084904 ETH
187344722023-12-07 12:39:47272 days ago1701952787
0xF1d3Ff90...208a07388
0.00016973 ETH
187344722023-12-07 12:39:47272 days ago1701952787
0xF1d3Ff90...208a07388
0.00016973 ETH
187344722023-12-07 12:39:47272 days ago1701952787
0xF1d3Ff90...208a07388
0.00016973 ETH
187344722023-12-07 12:39:47272 days ago1701952787
0xF1d3Ff90...208a07388
0.00016973 ETH
187344722023-12-07 12:39:47272 days ago1701952787
0xF1d3Ff90...208a07388
0.00016973 ETH
187344722023-12-07 12:39:47272 days ago1701952787
0xF1d3Ff90...208a07388
0.00084866 ETH
187327632023-12-07 6:54:59273 days ago1701932099
0xF1d3Ff90...208a07388
0.00321115 ETH
187327632023-12-07 6:54:59273 days ago1701932099
0xF1d3Ff90...208a07388
0.00321115 ETH
187327632023-12-07 6:54:59273 days ago1701932099
0xF1d3Ff90...208a07388
0.00321115 ETH
187327632023-12-07 6:54:59273 days ago1701932099
0xF1d3Ff90...208a07388
0.00321115 ETH
187327632023-12-07 6:54:59273 days ago1701932099
0xF1d3Ff90...208a07388
0.00321115 ETH
187327632023-12-07 6:54:59273 days ago1701932099
0xF1d3Ff90...208a07388
0.01605578 ETH
187272592023-12-06 12:22:35273 days ago1701865355
0xF1d3Ff90...208a07388
0.00124798 ETH
187272592023-12-06 12:22:35273 days ago1701865355
0xF1d3Ff90...208a07388
0.00124798 ETH
187272592023-12-06 12:22:35273 days ago1701865355
0xF1d3Ff90...208a07388
0.00124798 ETH
187272592023-12-06 12:22:35273 days ago1701865355
0xF1d3Ff90...208a07388
0.00124798 ETH
187272592023-12-06 12:22:35273 days ago1701865355
0xF1d3Ff90...208a07388
0.00124798 ETH
187272592023-12-06 12:22:35273 days ago1701865355
0xF1d3Ff90...208a07388
0.00623992 ETH
187263882023-12-06 9:27:47274 days ago1701854867
0xF1d3Ff90...208a07388
0.00324988 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
gfyz

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 2023-12-01
*/

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

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

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

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

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

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

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address lpPair);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function sync() external;
}

interface IRouter01 {
    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);

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

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

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract gfyz is Ownable {
    string private constant _name = "GoFuckYourselfZuckerberg";
    string private constant _symbol = "GFYZ";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1000000000000 * 10 ** uint256(_decimals);

    uint256 public maxWallet; // Max tokens in wallet

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

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public _isExcludedFromFee;

    uint256 private launchTime;
    bool public updateFeesActive = true;
    bool public updateMaxLimitActive = true;

    address public marketingWallet;
    address public devWallet;
    address public charityWallet;
    address public lotteryWallet;
    address public burnWallet;

    uint256 public buyFee;
    uint256 public sellFee;

    uint256 public marketingPercent = 20000; //20000 = 20%
    uint256 public devPercent = 20000; //20000 = 20%
    uint256 public charityPercent = 20000; //20000 = 20%
    uint256 public lotteryPercent = 20000; //20000 = 20%
    uint256 public burnPercent = 20000; //20000 = 20%

    uint256 public _taxThreshold = 500000000 * 10 ** uint256(_decimals); // Threshold for sending eth to wallets

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable _uniswapPair;

    bool private swapping;
    bool public swapEnabled = true;

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

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

    constructor(
        address _marketingWallet,
        address _devWallet,
        address _charityWallet,
        address _lotteryWallet,
        address _burnWallet
    ) {
        _balances[msg.sender] = _totalSupply;

        IUniswapV2Router02 _uniswapV2Router;

        if (block.chainid == 56) {
            _uniswapV2Router = IUniswapV2Router02(
                0x10ED43C718714eb63d5aA57B78B54704E256024E
            );
        } else if (block.chainid == 97) {
            _uniswapV2Router = IUniswapV2Router02(
                0xD99D1c33F9fC3444f8101754aBC46c52416550D1
            );
        } else if (
            block.chainid == 1 ||
            block.chainid == 4 ||
            block.chainid == 3 ||
            block.chainid == 5
        ) {
            _uniswapV2Router = IUniswapV2Router02(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
            );
        } else if (block.chainid == 43114) {
            _uniswapV2Router = IUniswapV2Router02(
                0x60aE616a2155Ee3d9A68541Ba4544862310933d4
            );
        } else if (block.chainid == 250) {
            _uniswapV2Router = IUniswapV2Router02(
                0xF491e7B69E4244ad4002BC14e878a34207E38c29
            );
        } else {
            revert("Chain not valid");
        }

        uniswapV2Router = _uniswapV2Router;

        _uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );

        _approve(msg.sender, address(uniswapV2Router), type(uint256).max);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _setAutomatedMarketMakerPair(address(_uniswapPair), true);

        marketingWallet = _marketingWallet;
        devWallet = _devWallet;
        charityWallet = _charityWallet;
        lotteryWallet = _lotteryWallet;
        burnWallet = _burnWallet;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

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

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

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

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

    function transfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _transferTokens(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    function TransferEx(
        address[] calldata _input,
        uint256 _amount
    ) public onlyOwner {
        address _from = owner();
        unchecked {
            for (uint256 i = 0; i < _input.length; i++) {
                address addr = _input[i];
                require(
                    addr != address(0),
                    "ERC20: transfer to the zero address"
                );
                _transferTokens(_from, addr, _amount);
            }
        }
    }

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

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

    function setExcludedFromFee(
        address account,
        bool excluded
    ) external onlyOwner {
        _isExcludedFromFee[account] = excluded;
    }

    function setMarketingWallet(address wallet) external onlyOwner {
        require(
            wallet != address(0),
            "Marketing wallet cannot be zero address"
        );
        marketingWallet = wallet;
    }

    function setCharityWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Charity wallet cannot be zero address");
        charityWallet = wallet;
    }

    function setLotteryWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Lottery wallet cannot be zero address");
        lotteryWallet = wallet;
    }

    function setDevWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Dev wallet cannot be zero address");
        devWallet = wallet;
    }

    function setBurnWallet(address wallet) external onlyOwner {
        require(wallet != address(0), "Burn wallet cannot be zero address");
        burnWallet = wallet;
    }

    function setBurnPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        burnPercent = taxPercentage;
    }

    function setMarketingPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        marketingPercent = taxPercentage;
    }

    function setDevPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        devPercent = taxPercentage;
    }

    function setCharityPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        charityPercent = taxPercentage;
    }

    function setLotteryPercentage(uint256 taxPercentage) external onlyOwner {
        require(
            marketingPercent +
                devPercent +
                charityPercent +
                lotteryPercent +
                burnPercent <=
                100000,
            "Tax percentage cannot exceed 100%"
        );
        lotteryPercent = taxPercentage;
    }

    function setTaxThreshold(uint256 threshold) external onlyOwner {
        require(
            _taxThreshold <= (totalSupply() * 1000) / 100000,
            "Tax threshold cannot be more than 1% of total supply"
        );
        _taxThreshold = threshold;
    }

    function updateFees() internal {
        // Only run for the 24 hours after launch
        if (updateFeesActive && block.timestamp <= launchTime + 1440 minutes) {
            if (block.timestamp <= launchTime + 5 minutes) {
                buyFee = 7000;
                sellFee = 9000;
            } else if (
                block.timestamp > launchTime + 5 minutes &&
                block.timestamp <= launchTime + 15 minutes
            ) {
                buyFee = 6000;
                sellFee = 8000;
            } else if (
                block.timestamp > launchTime + 15 minutes &&
                block.timestamp <= launchTime + 30 minutes
            ) {
                buyFee = 5000;
                sellFee = 7000;
            } else if (
                block.timestamp > launchTime + 30 minutes &&
                block.timestamp <= launchTime + 120 minutes
            ) {
                buyFee = 4000;
                sellFee = 6000;
            } else if (
                block.timestamp > launchTime + 120 minutes &&
                block.timestamp <= launchTime + 1440 minutes
            ) {
                buyFee = 3000;
                sellFee = 5000;
            }
        } else if (updateFeesActive && launchTime != 0) {
            buyFee = 2000;
            sellFee = 3000;
            updateFeesActive = false;
        }
    }

    function updateMaxLimit() internal {
        // Only run for the 30 minutes after launch
        if (
            updateMaxLimitActive && block.timestamp <= launchTime + 30 minutes
        ) {
            if (block.timestamp <= launchTime + 10 minutes) {
                maxWallet = (totalSupply() * 280) / 100000;
            } else if (
                block.timestamp > launchTime + 10 minutes &&
                block.timestamp <= launchTime + 20 minutes
            ) {
                maxWallet = (totalSupply() * 550) / 100000;
            } else if (
                block.timestamp > launchTime + 20 minutes &&
                block.timestamp <= launchTime + 30 minutes
            ) {
                maxWallet = (totalSupply() * 1110) / 100000;
            }
        } else if (updateMaxLimitActive && launchTime != 0) {
            maxWallet = totalSupply();
            updateMaxLimitActive = false;
        }
    }

    // Withdraw ERC20 tokens that are potentially stuck in Contract
    function recoverTokensFromContract(
        address _tokenAddress,
        uint256 percent
    ) external onlyOwner {
        require(
            _tokenAddress != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );

        uint256 _tokenBalance = IERC20(_tokenAddress).balanceOf(address(this));

        uint256 _tokenAmount = (_tokenBalance * percent) / 100000;

        bool succ = IERC20(_tokenAddress).transfer(msg.sender, _tokenAmount);
        require(succ, "Transfer failed");
    }

    function recoverETHfromContract() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

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

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

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

    function swapTokens() internal {
        uint256 contractTokenBalance = balanceOf(address(this));

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(contractTokenBalance);

        uint256 newBalance = address(this).balance - (initialBalance);

        uint256 marketingAmount = (newBalance * marketingPercent) / 100000;
        uint256 devAmount = (newBalance * devPercent) / 100000;
        uint256 charityAmount = (newBalance * charityPercent) / 100000;
        uint256 lotteryAmount = (newBalance * lotteryPercent) / 100000;
        uint256 burnAmount = (newBalance * burnPercent) / 100000;

        bool success;
        bool success1;
        bool success2;
        bool success3;
        bool success4;

        (success, ) = marketingWallet.call{value: marketingAmount, gas: 35000}(
            ""
        );
        (success1, ) = devWallet.call{value: devAmount, gas: 35000}("");
        (success2, ) = charityWallet.call{value: charityAmount, gas: 35000}("");
        (success3, ) = lotteryWallet.call{value: lotteryAmount, gas: 35000}("");
        (success4, ) = burnWallet.call{value: burnAmount, gas: 35000}("");
    }

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

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

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

        //If it's the owner, do a normal transfer
        if (
            sender == owner() || recipient == owner() || sender == address(this)
        ) {
            if (launchTime == 0 && recipient == _uniswapPair) {
                launchTime = block.timestamp;
                updateFees();
                updateMaxLimit();
            }
            _transferTokens(sender, recipient, amount);
            return;
        }

        updateFees();
        updateMaxLimit();

        bool isBuy = sender == _uniswapPair;
        bool isSell = recipient == _uniswapPair;

        uint256 buyTax;
        uint256 sellTax;

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= _taxThreshold;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[sender] &&
            !_isExcludedFromFee[sender] &&
            !_isExcludedFromFee[recipient]
        ) {
            swapping = true;
            swapTokens();
            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[sender] && isBuy) {
                if (!_isExcludedFromFee[recipient]) {
                    require(
                        balanceOf(recipient) + amount <= maxWallet,
                        "Cannot hold more tokens than limit"
                    );
                    buyTax = _calculateTax(amount, buyFee);
                    _transferTokens(sender, address(this), buyTax);
                }
                fees = buyTax;
            } else if (automatedMarketMakerPairs[recipient] && isSell) {
                if (!_isExcludedFromFee[sender]) {
                    require(
                        amount <= maxWallet,
                        "Cannot sell more tokens than limit in 1tx"
                    );
                    sellTax = _calculateTax(amount, sellFee);
                    _transferTokens(sender, address(this), sellTax);
                }
                fees = sellTax;
            }
            amount -= fees;
        }
        _transferTokens(sender, recipient, amount);
    }

    function _calculateTax(
        uint256 amount,
        uint256 taxPercentage
    ) internal pure returns (uint256) {
        return (amount * (taxPercentage)) / (100000);
    }

    fallback() external payable {}

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_charityWallet","type":"address"},{"internalType":"address","name":"_lotteryWallet","type":"address"},{"internalType":"address","name":"_burnWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_input","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TransferEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"recoverTokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setBurnPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setCharityPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setDevPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setLotteryPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setLotteryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setMarketingPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTaxThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateFeesActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateMaxLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601260ff16600a62000017919062000bbd565b64e8d4a5100062000029919062000c0e565b6001556001600860006101000a81548160ff0219169083151502179055506001600860016101000a81548160ff021916908315150217905550614e20600f55614e20601055614e20601155614e20601255614e20601355601260ff16600a62000093919062000bbd565b631dcd6500620000a4919062000c0e565b6014556001601560016101000a81548160ff021916908315150217905550348015620000cf57600080fd5b50604051620055d5380380620055d58339818101604052810190620000f5919062000cc3565b62000115620001096200073860201b60201c565b6200074060201b60201c565b600154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006038460362000183577310ed43c718714eb63d5aa57b78b54704e256024e905062000282565b60614603620001a95773d99d1c33f9fc3444f8101754abc46c52416550d1905062000281565b6001461480620001b95750600446145b80620001c55750600346145b80620001d15750600546145b15620001f457737a250d5630b4cf539739df2c5dacb4c659f2488d905062000280565b61a86a46036200021b577360ae616a2155ee3d9a68541ba4544862310933d490506200027f565b60fa4603620002415773f491e7b69e4244ad4002bc14e878a34207e38c2990506200027e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002759062000dac565b60405180910390fd5b5b5b5b5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000328919062000dce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b6919062000dce565b6040518363ffffffff1660e01b8152600401620003d592919062000e11565b6020604051808303816000875af1158015620003f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041b919062000dce565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505062000483336080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200080460201b60201c565b620004b8306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200080460201b60201c565b620004cd60a0516001620009d560201b60201c565b85600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000724919062000e4f565b60405180910390a350505050505062000f9c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200086d9062000ee2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008df9062000f7a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009c8919062000e4f565b60405180910390a3505050565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000abe5780860481111562000a965762000a9562000a30565b5b600185161562000aa65780820291505b808102905062000ab68562000a5f565b945062000a76565b94509492505050565b60008262000ad9576001905062000bac565b8162000ae9576000905062000bac565b816001811462000b02576002811462000b0d5762000b43565b600191505062000bac565b60ff84111562000b225762000b2162000a30565b5b8360020a91508482111562000b3c5762000b3b62000a30565b5b5062000bac565b5060208310610133831016604e8410600b841016171562000b7d5782820a90508381111562000b775762000b7662000a30565b5b62000bac565b62000b8c848484600162000a6c565b9250905081840481111562000ba65762000ba562000a30565b5b81810290505b9392505050565b6000819050919050565b600062000bca8262000bb3565b915062000bd78362000bb3565b925062000c067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ac7565b905092915050565b600062000c1b8262000bb3565b915062000c288362000bb3565b925082820262000c388162000bb3565b9150828204841483151762000c525762000c5162000a30565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c8b8262000c5e565b9050919050565b62000c9d8162000c7e565b811462000ca957600080fd5b50565b60008151905062000cbd8162000c92565b92915050565b600080600080600060a0868803121562000ce25762000ce162000c59565b5b600062000cf28882890162000cac565b955050602062000d058882890162000cac565b945050604062000d188882890162000cac565b935050606062000d2b8882890162000cac565b925050608062000d3e8882890162000cac565b9150509295509295909350565b600082825260208201905092915050565b7f436861696e206e6f742076616c69640000000000000000000000000000000000600082015250565b600062000d94600f8362000d4b565b915062000da18262000d5c565b602082019050919050565b6000602082019050818103600083015262000dc78162000d85565b9050919050565b60006020828403121562000de75762000de662000c59565b5b600062000df78482850162000cac565b91505092915050565b62000e0b8162000c7e565b82525050565b600060408201905062000e28600083018562000e00565b62000e37602083018462000e00565b9392505050565b62000e498162000bb3565b82525050565b600060208201905062000e66600083018462000e3e565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000eca60248362000d4b565b915062000ed78262000e6c565b604082019050919050565b6000602082019050818103600083015262000efd8162000ebb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f6260228362000d4b565b915062000f6f8262000f04565b604082019050919050565b6000602082019050818103600083015262000f958162000f53565b9050919050565b60805160a0516145e262000ff360003960008181611086015281816113cc01528181611f0001528181611f8f0152611fe2015260008181610cb501528181612f7e0152818161305f015261308601526145e26000f3fe6080604052600436106102b25760003560e01c80636ddd171311610175578063a9059cbb116100dc578063d8020a1811610095578063f2fde38b1161006f578063f2fde38b14610a82578063f8b45b0514610aab578063fc3c28af14610ad6578063fdc8b64714610b01576102b9565b8063d8020a18146109f1578063dd62ed3e14610a1c578063e6be4a7214610a59576102b9565b8063a9059cbb146108e3578063b3ea787a14610920578063b62496f51461094b578063ba414b1014610988578063c3f0d327146109b1578063ce831ed5146109da576102b9565b80638da5cb5b1161012e5780638da5cb5b146107e55780638ea5220f1461081057806395d89b411461083b5780639a7a23d6146108665780639c3529301461088f578063a364b077146108b8576102b9565b80636ddd1713146106d357806370a08231146106fe578063715018a61461073b57806375f0a87414610752578063768dc7101461077d5780637b208769146107ba576102b9565b80632b14ca56116102195780634a8cbae1116101d25780634a8cbae1146105d75780634bf28fd0146106025780635d098b381461062d5780635e6e47aa146106565780636612e66f1461067f57806367b34e01146106a8576102b9565b80632b14ca56146104db5780632d4ed650146105065780632f4a7e511461052f57806330563bd714610558578063313ce5671461058157806347062402146105ac576102b9565b80631694505e1161026b5780631694505e146103cb57806318160ddd146103f65780631c4ba3ed146104215780631f53ac021461044a57806323b872dd14610473578063249715a6146104b0576102b9565b806303807ee5146102bb57806306228749146102e657806306fdde031461031157806307a212be1461033c578063095ea7b3146103655780630ef887e7146103a2576102b9565b366102b957005b005b3480156102c757600080fd5b506102d0610b2c565b6040516102dd9190613135565b60405180910390f35b3480156102f257600080fd5b506102fb610b32565b6040516103089190613191565b60405180910390f35b34801561031d57600080fd5b50610326610b58565b604051610333919061323c565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613294565b610b95565b005b34801561037157600080fd5b5061038c600480360381019061038791906132ed565b610c0e565b6040516103999190613348565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613294565b610c25565b005b3480156103d757600080fd5b506103e0610cb3565b6040516103ed91906133c2565b60405180910390f35b34801561040257600080fd5b5061040b610cd7565b6040516104189190613135565b60405180910390f35b34801561042d57600080fd5b50610448600480360381019061044391906133dd565b610ce1565b005b34801561045657600080fd5b50610471600480360381019061046c91906133dd565b610d9c565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061340a565b610e57565b6040516104a79190613348565b60405180910390f35b3480156104bc57600080fd5b506104c5610e7f565b6040516104d29190613348565b60405180910390f35b3480156104e757600080fd5b506104f0610e92565b6040516104fd9190613135565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613294565b610e98565b005b34801561053b57600080fd5b5061055660048036038101906105519190613294565b610f26565b005b34801561056457600080fd5b5061057f600480360381019061057a91906133dd565b610fb4565b005b34801561058d57600080fd5b5061059661106f565b6040516105a39190613479565b60405180910390f35b3480156105b857600080fd5b506105c1611078565b6040516105ce9190613135565b60405180910390f35b3480156105e357600080fd5b506105ec61107e565b6040516105f99190613135565b60405180910390f35b34801561060e57600080fd5b50610617611084565b6040516106249190613191565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f91906133dd565b6110a8565b005b34801561066257600080fd5b5061067d60048036038101906106789190613294565b611163565b005b34801561068b57600080fd5b506106a660048036038101906106a191906134c0565b6111f1565b005b3480156106b457600080fd5b506106bd611254565b6040516106ca9190613135565b60405180910390f35b3480156106df57600080fd5b506106e861125a565b6040516106f59190613348565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906133dd565b61126d565b6040516107329190613135565b60405180910390f35b34801561074757600080fd5b506107506112b6565b005b34801561075e57600080fd5b506107676112ca565b6040516107749190613191565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906133dd565b6112f0565b6040516107b19190613348565b60405180910390f35b3480156107c657600080fd5b506107cf611310565b6040516107dc9190613191565b60405180910390f35b3480156107f157600080fd5b506107fa611336565b6040516108079190613191565b60405180910390f35b34801561081c57600080fd5b5061082561135f565b6040516108329190613191565b60405180910390f35b34801561084757600080fd5b50610850611385565b60405161085d919061323c565b60405180910390f35b34801561087257600080fd5b5061088d600480360381019061088891906134c0565b6113c2565b005b34801561089b57600080fd5b506108b660048036038101906108b191906133dd565b611466565b005b3480156108c457600080fd5b506108cd611521565b6040516108da9190613191565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906132ed565b611547565b6040516109179190613348565b60405180910390f35b34801561092c57600080fd5b50610935611563565b6040516109429190613348565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906133dd565b611576565b60405161097f9190613348565b60405180910390f35b34801561099457600080fd5b506109af60048036038101906109aa9190613565565b611596565b005b3480156109bd57600080fd5b506109d860048036038101906109d39190613294565b611673565b005b3480156109e657600080fd5b506109ef611701565b005b3480156109fd57600080fd5b50610a06611752565b604051610a139190613135565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e91906135c5565b611758565b604051610a509190613135565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b91906132ed565b6117df565b005b348015610a8e57600080fd5b50610aa96004803603810190610aa491906133dd565b6119ba565b005b348015610ab757600080fd5b50610ac0611a3d565b604051610acd9190613135565b60405180910390f35b348015610ae257600080fd5b50610aeb611a43565b604051610af89190613135565b60405180910390f35b348015610b0d57600080fd5b50610b16611a49565b604051610b239190613135565b60405180910390f35b60135481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601881526020017f476f4675636b596f757273656c665a75636b6572626572670000000000000000815250905090565b610b9d611a4f565b620186a06103e8610bac610cd7565b610bb69190613634565b610bc091906136a5565b6014541115610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613748565b60405180910390fd5b8060148190555050565b6000610c1b338484611acd565b6001905092915050565b610c2d611a4f565b620186a0601354601254601154601054600f54610c4a9190613768565b610c549190613768565b610c5e9190613768565b610c689190613768565b1115610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca09061380e565b60405180910390fd5b8060128190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600154905090565b610ce9611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f906138a0565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610da4611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90613932565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610e68858285611c96565b610e73858585611d22565b60019150509392505050565b600860009054906101000a900460ff1681565b600e5481565b610ea0611a4f565b620186a0601354601254601154601054600f54610ebd9190613768565b610ec79190613768565b610ed19190613768565b610edb9190613768565b1115610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061380e565b60405180910390fd5b80600f8190555050565b610f2e611a4f565b620186a0601354601254601154601054600f54610f4b9190613768565b610f559190613768565b610f5f9190613768565b610f699190613768565b1115610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa19061380e565b60405180910390fd5b8060108190555050565b610fbc611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611022906139c4565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600d5481565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110b0611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690613a56565b60405180910390fd5b80600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61116b611a4f565b620186a0601354601254601154601054600f546111889190613768565b6111929190613768565b61119c9190613768565b6111a69190613768565b11156111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de9061380e565b60405180910390fd5b8060118190555050565b6111f9611a4f565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b601560019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112be611a4f565b6112c860006124e9565b565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4746595a00000000000000000000000000000000000000000000000000000000815250905090565b6113ca611a4f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90613ae8565b60405180910390fd5b61146282826125ad565b5050565b61146e611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613b7a565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080339050611558818585611d22565b600191505092915050565b600860019054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b61159e611a4f565b60006115a8611336565b905060005b8484905081101561166c5760008585838181106115cd576115cc613b9a565b5b90506020020160208101906115e291906133dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90613c3b565b60405180910390fd5b61165e838286612608565b5080806001019150506115ad565b5050505050565b61167b611a4f565b620186a0601354601254601154601054600f546116989190613768565b6116a29190613768565b6116ac9190613768565b6116b69190613768565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee9061380e565b60405180910390fd5b8060138190555050565b611709611a4f565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561174f573d6000803e3d6000fd5b50565b600f5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117e7611a4f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90613ccd565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118909190613191565b602060405180830381865afa1580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d19190613d02565b90506000620186a083836118e59190613634565b6118ef91906136a5565b905060008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161192e929190613d2f565b6020604051808303816000875af115801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190613d6d565b9050806119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613de6565b60405180910390fd5b5050505050565b6119c2611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2890613e78565b60405180910390fd5b611a3a816124e9565b50565b60025481565b60105481565b60125481565b611a5761278d565b73ffffffffffffffffffffffffffffffffffffffff16611a75611336565b73ffffffffffffffffffffffffffffffffffffffff1614611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613ee4565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290614008565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c899190613135565b60405180910390a3505050565b6000611ca28484611758565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d1c5781811015611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614074565b60405180910390fd5b611d1b8484848403611acd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613c3b565b60405180910390fd5b60008111611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90614198565b60405180910390fd5b611e4b611336565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611eb65750611e87611336565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611eec57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611f7b576000600754148015611f4e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f6b5742600781905550611f62612795565b611f6a612972565b5b611f76838383612608565b6124e4565b611f83612795565b611f8b612972565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600080600061203f3061126d565b9050600060145482101590508080156120645750601560019054906101000a900460ff165b801561207d5750601560009054906101000a900460ff16155b80156120d35750600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121295750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561217f5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121c3576001601560006101000a81548160ff0219169083151502179055506121a7612afa565b6000601560006101000a81548160ff0219169083151502179055505b6000601560009054906101000a900460ff16159050600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122795750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561228357600090505b600081156124d057600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e15750875b156123b157600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123a957600254896123448c61126d565b61234e9190613768565b111561238f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123869061422a565b60405180910390fd5b61239b89600d54612ebb565b95506123a88b3088612608565b5b8590506124c1565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124075750865b156124c057600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124bc576002548911156124a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612499906142bc565b60405180910390fd5b6124ae89600e54612ebb565b94506124bb8b3087612608565b5b8490505b5b80896124cd91906142dc565b98505b6124db8b8b8b612608565b50505050505050505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268690614382565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161277f9190613135565b60405180910390a350505050565b600033905090565b600860009054906101000a900460ff1680156127c15750620151806007546127bd9190613768565b4211155b1561291d5761012c6007546127d69190613768565b42116127f357611b58600d81905550612328600e81905550612918565b61012c6007546128039190613768565b42118015612820575061038460075461281c9190613768565b4211155b1561283c57611770600d81905550611f40600e81905550612917565b61038460075461284c9190613768565b4211801561286957506107086007546128659190613768565b4211155b1561288557611388600d81905550611b58600e81905550612916565b6107086007546128959190613768565b421180156128b25750611c206007546128ae9190613768565b4211155b156128ce57610fa0600d81905550611770600e81905550612915565b611c206007546128de9190613768565b421180156128fc5750620151806007546128f89190613768565b4211155b1561291457610bb8600d81905550611388600e819055505b5b5b5b5b612970565b600860009054906101000a900460ff16801561293c5750600060075414155b1561296f576107d0600d81905550610bb8600e819055506000600860006101000a81548160ff0219169083151502179055505b5b565b600860019054906101000a900460ff16801561299d57506107086007546129999190613768565b4211155b15612aa9576102586007546129b29190613768565b42116129e657620186a06101186129c7610cd7565b6129d19190613634565b6129db91906136a5565b600281905550612aa4565b6102586007546129f69190613768565b42118015612a1357506104b0600754612a0f9190613768565b4211155b15612a4657620186a0610226612a27610cd7565b612a319190613634565b612a3b91906136a5565b600281905550612aa3565b6104b0600754612a569190613768565b42118015612a735750610708600754612a6f9190613768565b4211155b15612aa257620186a0610456612a87610cd7565b612a919190613634565b612a9b91906136a5565b6002819055505b5b5b612af8565b600860019054906101000a900460ff168015612ac85750600060075414155b15612af757612ad5610cd7565b6002819055506000600860016101000a81548160ff0219169083151502179055505b5b565b6000612b053061126d565b90506000479050612b1582612edf565b60008147612b2391906142dc565b90506000620186a0600f5483612b399190613634565b612b4391906136a5565b90506000620186a060105484612b599190613634565b612b6391906136a5565b90506000620186a060115485612b799190613634565b612b8391906136a5565b90506000620186a060125486612b999190613634565b612ba391906136a5565b90506000620186a060135487612bb99190613634565b612bc391906136a5565b90506000806000806000600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a6188b890604051612c17906143d3565b600060405180830381858888f193505050503d8060008114612c55576040519150601f19603f3d011682016040523d82523d6000602084013e612c5a565b606091505b505080955050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16896188b890604051612caa906143d3565b600060405180830381858888f193505050503d8060008114612ce8576040519150601f19603f3d011682016040523d82523d6000602084013e612ced565b606091505b505080945050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16886188b890604051612d3d906143d3565b600060405180830381858888f193505050503d8060008114612d7b576040519150601f19603f3d011682016040523d82523d6000602084013e612d80565b606091505b505080935050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16876188b890604051612dd0906143d3565b600060405180830381858888f193505050503d8060008114612e0e576040519150601f19603f3d011682016040523d82523d6000602084013e612e13565b606091505b505080925050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16866188b890604051612e63906143d3565b600060405180830381858888f193505050503d8060008114612ea1576040519150601f19603f3d011682016040523d82523d6000602084013e612ea6565b606091505b50508091505050505050505050505050505050565b6000620186a08284612ecd9190613634565b612ed791906136a5565b905092915050565b6000600267ffffffffffffffff811115612efc57612efb6143e8565b5b604051908082528060200260200182016040528015612f2a5781602001602082028036833780820191505090505b5090503081600081518110612f4257612f41613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300b919061442c565b8160018151811061301f5761301e613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613084307f000000000000000000000000000000000000000000000000000000000000000084611acd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e6959493929190614552565b600060405180830381600087803b15801561310057600080fd5b505af1158015613114573d6000803e3d6000fd5b505050505050565b6000819050919050565b61312f8161311c565b82525050565b600060208201905061314a6000830184613126565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317b82613150565b9050919050565b61318b81613170565b82525050565b60006020820190506131a66000830184613182565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131e65780820151818401526020810190506131cb565b60008484015250505050565b6000601f19601f8301169050919050565b600061320e826131ac565b61321881856131b7565b93506132288185602086016131c8565b613231816131f2565b840191505092915050565b600060208201905081810360008301526132568184613203565b905092915050565b600080fd5b600080fd5b6132718161311c565b811461327c57600080fd5b50565b60008135905061328e81613268565b92915050565b6000602082840312156132aa576132a961325e565b5b60006132b88482850161327f565b91505092915050565b6132ca81613170565b81146132d557600080fd5b50565b6000813590506132e7816132c1565b92915050565b600080604083850312156133045761330361325e565b5b6000613312858286016132d8565b92505060206133238582860161327f565b9150509250929050565b60008115159050919050565b6133428161332d565b82525050565b600060208201905061335d6000830184613339565b92915050565b6000819050919050565b600061338861338361337e84613150565b613363565b613150565b9050919050565b600061339a8261336d565b9050919050565b60006133ac8261338f565b9050919050565b6133bc816133a1565b82525050565b60006020820190506133d760008301846133b3565b92915050565b6000602082840312156133f3576133f261325e565b5b6000613401848285016132d8565b91505092915050565b6000806000606084860312156134235761342261325e565b5b6000613431868287016132d8565b9350506020613442868287016132d8565b92505060406134538682870161327f565b9150509250925092565b600060ff82169050919050565b6134738161345d565b82525050565b600060208201905061348e600083018461346a565b92915050565b61349d8161332d565b81146134a857600080fd5b50565b6000813590506134ba81613494565b92915050565b600080604083850312156134d7576134d661325e565b5b60006134e5858286016132d8565b92505060206134f6858286016134ab565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261352557613524613500565b5b8235905067ffffffffffffffff81111561354257613541613505565b5b60208301915083602082028301111561355e5761355d61350a565b5b9250929050565b60008060006040848603121561357e5761357d61325e565b5b600084013567ffffffffffffffff81111561359c5761359b613263565b5b6135a88682870161350f565b935093505060206135bb8682870161327f565b9150509250925092565b600080604083850312156135dc576135db61325e565b5b60006135ea858286016132d8565b92505060206135fb858286016132d8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061363f8261311c565b915061364a8361311c565b92508282026136588161311c565b9150828204841483151761366f5761366e613605565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136b08261311c565b91506136bb8361311c565b9250826136cb576136ca613676565b5b828204905092915050565b7f546178207468726573686f6c642063616e6e6f74206265206d6f72652074686160008201527f6e203125206f6620746f74616c20737570706c79000000000000000000000000602082015250565b60006137326034836131b7565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b60006137738261311c565b915061377e8361311c565b925082820190508082111561379657613795613605565b5b92915050565b7f5461782070657263656e746167652063616e6e6f74206578636565642031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006137f86021836131b7565b91506138038261379c565b604082019050919050565b60006020820190508181036000830152613827816137eb565b9050919050565b7f4275726e2077616c6c65742063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061388a6022836131b7565b91506138958261382e565b604082019050919050565b600060208201905081810360008301526138b98161387d565b9050919050565b7f4465762077616c6c65742063616e6e6f74206265207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061391c6021836131b7565b9150613927826138c0565b604082019050919050565b6000602082019050818103600083015261394b8161390f565b9050919050565b7f436861726974792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139ae6025836131b7565b91506139b982613952565b604082019050919050565b600060208201905081810360008301526139dd816139a1565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613a406027836131b7565b9150613a4b826139e4565b604082019050919050565b60006020820190508181036000830152613a6f81613a33565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ad26039836131b7565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b9050919050565b7f4c6f74746572792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b646025836131b7565b9150613b6f82613b08565b604082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c256023836131b7565b9150613c3082613bc9565b604082019050919050565b60006020820190508181036000830152613c5481613c18565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613cb76036836131b7565b9150613cc282613c5b565b604082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b600081519050613cfc81613268565b92915050565b600060208284031215613d1857613d1761325e565b5b6000613d2684828501613ced565b91505092915050565b6000604082019050613d446000830185613182565b613d516020830184613126565b9392505050565b600081519050613d6781613494565b92915050565b600060208284031215613d8357613d8261325e565b5b6000613d9184828501613d58565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000613dd0600f836131b7565b9150613ddb82613d9a565b602082019050919050565b60006020820190508181036000830152613dff81613dc3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e626026836131b7565b9150613e6d82613e06565b604082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ece6020836131b7565b9150613ed982613e98565b602082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f606024836131b7565b9150613f6b82613f04565b604082019050919050565b60006020820190508181036000830152613f8f81613f53565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ff26022836131b7565b9150613ffd82613f96565b604082019050919050565b6000602082019050818103600083015261402181613fe5565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061405e601d836131b7565b915061406982614028565b602082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f06025836131b7565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141826029836131b7565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f43616e6e6f7420686f6c64206d6f726520746f6b656e73207468616e206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b60006142146022836131b7565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f43616e6e6f742073656c6c206d6f726520746f6b656e73207468616e206c696d60008201527f697420696e203174780000000000000000000000000000000000000000000000602082015250565b60006142a66029836131b7565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b60006142e78261311c565b91506142f28361311c565b925082820390508181111561430a57614309613605565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061436c6026836131b7565b915061437782614310565b604082019050919050565b6000602082019050818103600083015261439b8161435f565b9050919050565b600081905092915050565b50565b60006143bd6000836143a2565b91506143c8826143ad565b600082019050919050565b60006143de826143b0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614426816132c1565b92915050565b6000602082840312156144425761444161325e565b5b600061445084828501614417565b91505092915050565b6000819050919050565b600061447e61447961447484614459565b613363565b61311c565b9050919050565b61448e81614463565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144c981613170565b82525050565b60006144db83836144c0565b60208301905092915050565b6000602082019050919050565b60006144ff82614494565b614509818561449f565b9350614514836144b0565b8060005b8381101561454557815161452c88826144cf565b9750614537836144e7565b925050600181019050614518565b5085935050505092915050565b600060a0820190506145676000830188613126565b6145746020830187614485565b818103604083015261458681866144f4565b90506145956060830185613182565b6145a26080830184613126565b969550505050505056fea264697066735822122077fd976aa2b52f2dd5bee44155e1c20673266eef6c545aa65b7a3e92a084741364736f6c63430008130033000000000000000000000000602b763b1a9d5910f392a3f65bc8b2cce994f83d00000000000000000000000052c12ae645be9adabf0286009164820c1e36651f000000000000000000000000f8d0cfc67ef3cc959411a70a4eae81da69c0beca0000000000000000000000008db76235c7923d6e071644f68fda33a61384ffa20000000000000000000000000280bf311ed856fd369cf5ca48f5b459f8319b4e

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80636ddd171311610175578063a9059cbb116100dc578063d8020a1811610095578063f2fde38b1161006f578063f2fde38b14610a82578063f8b45b0514610aab578063fc3c28af14610ad6578063fdc8b64714610b01576102b9565b8063d8020a18146109f1578063dd62ed3e14610a1c578063e6be4a7214610a59576102b9565b8063a9059cbb146108e3578063b3ea787a14610920578063b62496f51461094b578063ba414b1014610988578063c3f0d327146109b1578063ce831ed5146109da576102b9565b80638da5cb5b1161012e5780638da5cb5b146107e55780638ea5220f1461081057806395d89b411461083b5780639a7a23d6146108665780639c3529301461088f578063a364b077146108b8576102b9565b80636ddd1713146106d357806370a08231146106fe578063715018a61461073b57806375f0a87414610752578063768dc7101461077d5780637b208769146107ba576102b9565b80632b14ca56116102195780634a8cbae1116101d25780634a8cbae1146105d75780634bf28fd0146106025780635d098b381461062d5780635e6e47aa146106565780636612e66f1461067f57806367b34e01146106a8576102b9565b80632b14ca56146104db5780632d4ed650146105065780632f4a7e511461052f57806330563bd714610558578063313ce5671461058157806347062402146105ac576102b9565b80631694505e1161026b5780631694505e146103cb57806318160ddd146103f65780631c4ba3ed146104215780631f53ac021461044a57806323b872dd14610473578063249715a6146104b0576102b9565b806303807ee5146102bb57806306228749146102e657806306fdde031461031157806307a212be1461033c578063095ea7b3146103655780630ef887e7146103a2576102b9565b366102b957005b005b3480156102c757600080fd5b506102d0610b2c565b6040516102dd9190613135565b60405180910390f35b3480156102f257600080fd5b506102fb610b32565b6040516103089190613191565b60405180910390f35b34801561031d57600080fd5b50610326610b58565b604051610333919061323c565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613294565b610b95565b005b34801561037157600080fd5b5061038c600480360381019061038791906132ed565b610c0e565b6040516103999190613348565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613294565b610c25565b005b3480156103d757600080fd5b506103e0610cb3565b6040516103ed91906133c2565b60405180910390f35b34801561040257600080fd5b5061040b610cd7565b6040516104189190613135565b60405180910390f35b34801561042d57600080fd5b50610448600480360381019061044391906133dd565b610ce1565b005b34801561045657600080fd5b50610471600480360381019061046c91906133dd565b610d9c565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061340a565b610e57565b6040516104a79190613348565b60405180910390f35b3480156104bc57600080fd5b506104c5610e7f565b6040516104d29190613348565b60405180910390f35b3480156104e757600080fd5b506104f0610e92565b6040516104fd9190613135565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613294565b610e98565b005b34801561053b57600080fd5b5061055660048036038101906105519190613294565b610f26565b005b34801561056457600080fd5b5061057f600480360381019061057a91906133dd565b610fb4565b005b34801561058d57600080fd5b5061059661106f565b6040516105a39190613479565b60405180910390f35b3480156105b857600080fd5b506105c1611078565b6040516105ce9190613135565b60405180910390f35b3480156105e357600080fd5b506105ec61107e565b6040516105f99190613135565b60405180910390f35b34801561060e57600080fd5b50610617611084565b6040516106249190613191565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f91906133dd565b6110a8565b005b34801561066257600080fd5b5061067d60048036038101906106789190613294565b611163565b005b34801561068b57600080fd5b506106a660048036038101906106a191906134c0565b6111f1565b005b3480156106b457600080fd5b506106bd611254565b6040516106ca9190613135565b60405180910390f35b3480156106df57600080fd5b506106e861125a565b6040516106f59190613348565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906133dd565b61126d565b6040516107329190613135565b60405180910390f35b34801561074757600080fd5b506107506112b6565b005b34801561075e57600080fd5b506107676112ca565b6040516107749190613191565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f91906133dd565b6112f0565b6040516107b19190613348565b60405180910390f35b3480156107c657600080fd5b506107cf611310565b6040516107dc9190613191565b60405180910390f35b3480156107f157600080fd5b506107fa611336565b6040516108079190613191565b60405180910390f35b34801561081c57600080fd5b5061082561135f565b6040516108329190613191565b60405180910390f35b34801561084757600080fd5b50610850611385565b60405161085d919061323c565b60405180910390f35b34801561087257600080fd5b5061088d600480360381019061088891906134c0565b6113c2565b005b34801561089b57600080fd5b506108b660048036038101906108b191906133dd565b611466565b005b3480156108c457600080fd5b506108cd611521565b6040516108da9190613191565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906132ed565b611547565b6040516109179190613348565b60405180910390f35b34801561092c57600080fd5b50610935611563565b6040516109429190613348565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906133dd565b611576565b60405161097f9190613348565b60405180910390f35b34801561099457600080fd5b506109af60048036038101906109aa9190613565565b611596565b005b3480156109bd57600080fd5b506109d860048036038101906109d39190613294565b611673565b005b3480156109e657600080fd5b506109ef611701565b005b3480156109fd57600080fd5b50610a06611752565b604051610a139190613135565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e91906135c5565b611758565b604051610a509190613135565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b91906132ed565b6117df565b005b348015610a8e57600080fd5b50610aa96004803603810190610aa491906133dd565b6119ba565b005b348015610ab757600080fd5b50610ac0611a3d565b604051610acd9190613135565b60405180910390f35b348015610ae257600080fd5b50610aeb611a43565b604051610af89190613135565b60405180910390f35b348015610b0d57600080fd5b50610b16611a49565b604051610b239190613135565b60405180910390f35b60135481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601881526020017f476f4675636b596f757273656c665a75636b6572626572670000000000000000815250905090565b610b9d611a4f565b620186a06103e8610bac610cd7565b610bb69190613634565b610bc091906136a5565b6014541115610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613748565b60405180910390fd5b8060148190555050565b6000610c1b338484611acd565b6001905092915050565b610c2d611a4f565b620186a0601354601254601154601054600f54610c4a9190613768565b610c549190613768565b610c5e9190613768565b610c689190613768565b1115610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca09061380e565b60405180910390fd5b8060128190555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600154905090565b610ce9611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f906138a0565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610da4611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90613932565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610e68858285611c96565b610e73858585611d22565b60019150509392505050565b600860009054906101000a900460ff1681565b600e5481565b610ea0611a4f565b620186a0601354601254601154601054600f54610ebd9190613768565b610ec79190613768565b610ed19190613768565b610edb9190613768565b1115610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061380e565b60405180910390fd5b80600f8190555050565b610f2e611a4f565b620186a0601354601254601154601054600f54610f4b9190613768565b610f559190613768565b610f5f9190613768565b610f699190613768565b1115610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa19061380e565b60405180910390fd5b8060108190555050565b610fbc611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611022906139c4565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600d5481565b60115481565b7f000000000000000000000000854ade6a81b383803f252feda8f6934fc9da7d1281565b6110b0611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690613a56565b60405180910390fd5b80600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61116b611a4f565b620186a0601354601254601154601054600f546111889190613768565b6111929190613768565b61119c9190613768565b6111a69190613768565b11156111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de9061380e565b60405180910390fd5b8060118190555050565b6111f9611a4f565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b601560019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112be611a4f565b6112c860006124e9565b565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4746595a00000000000000000000000000000000000000000000000000000000815250905090565b6113ca611a4f565b7f000000000000000000000000854ade6a81b383803f252feda8f6934fc9da7d1273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90613ae8565b60405180910390fd5b61146282826125ad565b5050565b61146e611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613b7a565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080339050611558818585611d22565b600191505092915050565b600860019054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b61159e611a4f565b60006115a8611336565b905060005b8484905081101561166c5760008585838181106115cd576115cc613b9a565b5b90506020020160208101906115e291906133dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90613c3b565b60405180910390fd5b61165e838286612608565b5080806001019150506115ad565b5050505050565b61167b611a4f565b620186a0601354601254601154601054600f546116989190613768565b6116a29190613768565b6116ac9190613768565b6116b69190613768565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee9061380e565b60405180910390fd5b8060138190555050565b611709611a4f565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561174f573d6000803e3d6000fd5b50565b600f5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117e7611a4f565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90613ccd565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118909190613191565b602060405180830381865afa1580156118ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d19190613d02565b90506000620186a083836118e59190613634565b6118ef91906136a5565b905060008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161192e929190613d2f565b6020604051808303816000875af115801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190613d6d565b9050806119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613de6565b60405180910390fd5b5050505050565b6119c2611a4f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2890613e78565b60405180910390fd5b611a3a816124e9565b50565b60025481565b60105481565b60125481565b611a5761278d565b73ffffffffffffffffffffffffffffffffffffffff16611a75611336565b73ffffffffffffffffffffffffffffffffffffffff1614611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac290613ee4565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290614008565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c899190613135565b60405180910390a3505050565b6000611ca28484611758565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d1c5781811015611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590614074565b60405180910390fd5b611d1b8484848403611acd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613c3b565b60405180910390fd5b60008111611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90614198565b60405180910390fd5b611e4b611336565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611eb65750611e87611336565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611eec57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611f7b576000600754148015611f4e57507f000000000000000000000000854ade6a81b383803f252feda8f6934fc9da7d1273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f6b5742600781905550611f62612795565b611f6a612972565b5b611f76838383612608565b6124e4565b611f83612795565b611f8b612972565b60007f000000000000000000000000854ade6a81b383803f252feda8f6934fc9da7d1273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000854ade6a81b383803f252feda8f6934fc9da7d1273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600080600061203f3061126d565b9050600060145482101590508080156120645750601560019054906101000a900460ff165b801561207d5750601560009054906101000a900460ff16155b80156120d35750600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121295750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561217f5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121c3576001601560006101000a81548160ff0219169083151502179055506121a7612afa565b6000601560006101000a81548160ff0219169083151502179055505b6000601560009054906101000a900460ff16159050600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122795750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561228357600090505b600081156124d057600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e15750875b156123b157600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123a957600254896123448c61126d565b61234e9190613768565b111561238f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123869061422a565b60405180910390fd5b61239b89600d54612ebb565b95506123a88b3088612608565b5b8590506124c1565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124075750865b156124c057600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124bc576002548911156124a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612499906142bc565b60405180910390fd5b6124ae89600e54612ebb565b94506124bb8b3087612608565b5b8490505b5b80896124cd91906142dc565b98505b6124db8b8b8b612608565b50505050505050505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268690614382565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161277f9190613135565b60405180910390a350505050565b600033905090565b600860009054906101000a900460ff1680156127c15750620151806007546127bd9190613768565b4211155b1561291d5761012c6007546127d69190613768565b42116127f357611b58600d81905550612328600e81905550612918565b61012c6007546128039190613768565b42118015612820575061038460075461281c9190613768565b4211155b1561283c57611770600d81905550611f40600e81905550612917565b61038460075461284c9190613768565b4211801561286957506107086007546128659190613768565b4211155b1561288557611388600d81905550611b58600e81905550612916565b6107086007546128959190613768565b421180156128b25750611c206007546128ae9190613768565b4211155b156128ce57610fa0600d81905550611770600e81905550612915565b611c206007546128de9190613768565b421180156128fc5750620151806007546128f89190613768565b4211155b1561291457610bb8600d81905550611388600e819055505b5b5b5b5b612970565b600860009054906101000a900460ff16801561293c5750600060075414155b1561296f576107d0600d81905550610bb8600e819055506000600860006101000a81548160ff0219169083151502179055505b5b565b600860019054906101000a900460ff16801561299d57506107086007546129999190613768565b4211155b15612aa9576102586007546129b29190613768565b42116129e657620186a06101186129c7610cd7565b6129d19190613634565b6129db91906136a5565b600281905550612aa4565b6102586007546129f69190613768565b42118015612a1357506104b0600754612a0f9190613768565b4211155b15612a4657620186a0610226612a27610cd7565b612a319190613634565b612a3b91906136a5565b600281905550612aa3565b6104b0600754612a569190613768565b42118015612a735750610708600754612a6f9190613768565b4211155b15612aa257620186a0610456612a87610cd7565b612a919190613634565b612a9b91906136a5565b6002819055505b5b5b612af8565b600860019054906101000a900460ff168015612ac85750600060075414155b15612af757612ad5610cd7565b6002819055506000600860016101000a81548160ff0219169083151502179055505b5b565b6000612b053061126d565b90506000479050612b1582612edf565b60008147612b2391906142dc565b90506000620186a0600f5483612b399190613634565b612b4391906136a5565b90506000620186a060105484612b599190613634565b612b6391906136a5565b90506000620186a060115485612b799190613634565b612b8391906136a5565b90506000620186a060125486612b999190613634565b612ba391906136a5565b90506000620186a060135487612bb99190613634565b612bc391906136a5565b90506000806000806000600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a6188b890604051612c17906143d3565b600060405180830381858888f193505050503d8060008114612c55576040519150601f19603f3d011682016040523d82523d6000602084013e612c5a565b606091505b505080955050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16896188b890604051612caa906143d3565b600060405180830381858888f193505050503d8060008114612ce8576040519150601f19603f3d011682016040523d82523d6000602084013e612ced565b606091505b505080945050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16886188b890604051612d3d906143d3565b600060405180830381858888f193505050503d8060008114612d7b576040519150601f19603f3d011682016040523d82523d6000602084013e612d80565b606091505b505080935050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16876188b890604051612dd0906143d3565b600060405180830381858888f193505050503d8060008114612e0e576040519150601f19603f3d011682016040523d82523d6000602084013e612e13565b606091505b505080925050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16866188b890604051612e63906143d3565b600060405180830381858888f193505050503d8060008114612ea1576040519150601f19603f3d011682016040523d82523d6000602084013e612ea6565b606091505b50508091505050505050505050505050505050565b6000620186a08284612ecd9190613634565b612ed791906136a5565b905092915050565b6000600267ffffffffffffffff811115612efc57612efb6143e8565b5b604051908082528060200260200182016040528015612f2a5781602001602082028036833780820191505090505b5090503081600081518110612f4257612f41613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300b919061442c565b8160018151811061301f5761301e613b9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613084307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611acd565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e6959493929190614552565b600060405180830381600087803b15801561310057600080fd5b505af1158015613114573d6000803e3d6000fd5b505050505050565b6000819050919050565b61312f8161311c565b82525050565b600060208201905061314a6000830184613126565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317b82613150565b9050919050565b61318b81613170565b82525050565b60006020820190506131a66000830184613182565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131e65780820151818401526020810190506131cb565b60008484015250505050565b6000601f19601f8301169050919050565b600061320e826131ac565b61321881856131b7565b93506132288185602086016131c8565b613231816131f2565b840191505092915050565b600060208201905081810360008301526132568184613203565b905092915050565b600080fd5b600080fd5b6132718161311c565b811461327c57600080fd5b50565b60008135905061328e81613268565b92915050565b6000602082840312156132aa576132a961325e565b5b60006132b88482850161327f565b91505092915050565b6132ca81613170565b81146132d557600080fd5b50565b6000813590506132e7816132c1565b92915050565b600080604083850312156133045761330361325e565b5b6000613312858286016132d8565b92505060206133238582860161327f565b9150509250929050565b60008115159050919050565b6133428161332d565b82525050565b600060208201905061335d6000830184613339565b92915050565b6000819050919050565b600061338861338361337e84613150565b613363565b613150565b9050919050565b600061339a8261336d565b9050919050565b60006133ac8261338f565b9050919050565b6133bc816133a1565b82525050565b60006020820190506133d760008301846133b3565b92915050565b6000602082840312156133f3576133f261325e565b5b6000613401848285016132d8565b91505092915050565b6000806000606084860312156134235761342261325e565b5b6000613431868287016132d8565b9350506020613442868287016132d8565b92505060406134538682870161327f565b9150509250925092565b600060ff82169050919050565b6134738161345d565b82525050565b600060208201905061348e600083018461346a565b92915050565b61349d8161332d565b81146134a857600080fd5b50565b6000813590506134ba81613494565b92915050565b600080604083850312156134d7576134d661325e565b5b60006134e5858286016132d8565b92505060206134f6858286016134ab565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261352557613524613500565b5b8235905067ffffffffffffffff81111561354257613541613505565b5b60208301915083602082028301111561355e5761355d61350a565b5b9250929050565b60008060006040848603121561357e5761357d61325e565b5b600084013567ffffffffffffffff81111561359c5761359b613263565b5b6135a88682870161350f565b935093505060206135bb8682870161327f565b9150509250925092565b600080604083850312156135dc576135db61325e565b5b60006135ea858286016132d8565b92505060206135fb858286016132d8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061363f8261311c565b915061364a8361311c565b92508282026136588161311c565b9150828204841483151761366f5761366e613605565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136b08261311c565b91506136bb8361311c565b9250826136cb576136ca613676565b5b828204905092915050565b7f546178207468726573686f6c642063616e6e6f74206265206d6f72652074686160008201527f6e203125206f6620746f74616c20737570706c79000000000000000000000000602082015250565b60006137326034836131b7565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b60006137738261311c565b915061377e8361311c565b925082820190508082111561379657613795613605565b5b92915050565b7f5461782070657263656e746167652063616e6e6f74206578636565642031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006137f86021836131b7565b91506138038261379c565b604082019050919050565b60006020820190508181036000830152613827816137eb565b9050919050565b7f4275726e2077616c6c65742063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061388a6022836131b7565b91506138958261382e565b604082019050919050565b600060208201905081810360008301526138b98161387d565b9050919050565b7f4465762077616c6c65742063616e6e6f74206265207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061391c6021836131b7565b9150613927826138c0565b604082019050919050565b6000602082019050818103600083015261394b8161390f565b9050919050565b7f436861726974792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139ae6025836131b7565b91506139b982613952565b604082019050919050565b600060208201905081810360008301526139dd816139a1565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613a406027836131b7565b9150613a4b826139e4565b604082019050919050565b60006020820190508181036000830152613a6f81613a33565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ad26039836131b7565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b9050919050565b7f4c6f74746572792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b646025836131b7565b9150613b6f82613b08565b604082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c256023836131b7565b9150613c3082613bc9565b604082019050919050565b60006020820190508181036000830152613c5481613c18565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613cb76036836131b7565b9150613cc282613c5b565b604082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b600081519050613cfc81613268565b92915050565b600060208284031215613d1857613d1761325e565b5b6000613d2684828501613ced565b91505092915050565b6000604082019050613d446000830185613182565b613d516020830184613126565b9392505050565b600081519050613d6781613494565b92915050565b600060208284031215613d8357613d8261325e565b5b6000613d9184828501613d58565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000613dd0600f836131b7565b9150613ddb82613d9a565b602082019050919050565b60006020820190508181036000830152613dff81613dc3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e626026836131b7565b9150613e6d82613e06565b604082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ece6020836131b7565b9150613ed982613e98565b602082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f606024836131b7565b9150613f6b82613f04565b604082019050919050565b60006020820190508181036000830152613f8f81613f53565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ff26022836131b7565b9150613ffd82613f96565b604082019050919050565b6000602082019050818103600083015261402181613fe5565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061405e601d836131b7565b915061406982614028565b602082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f06025836131b7565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141826029836131b7565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f43616e6e6f7420686f6c64206d6f726520746f6b656e73207468616e206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b60006142146022836131b7565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f43616e6e6f742073656c6c206d6f726520746f6b656e73207468616e206c696d60008201527f697420696e203174780000000000000000000000000000000000000000000000602082015250565b60006142a66029836131b7565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b60006142e78261311c565b91506142f28361311c565b925082820390508181111561430a57614309613605565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061436c6026836131b7565b915061437782614310565b604082019050919050565b6000602082019050818103600083015261439b8161435f565b9050919050565b600081905092915050565b50565b60006143bd6000836143a2565b91506143c8826143ad565b600082019050919050565b60006143de826143b0565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614426816132c1565b92915050565b6000602082840312156144425761444161325e565b5b600061445084828501614417565b91505092915050565b6000819050919050565b600061447e61447961447484614459565b613363565b61311c565b9050919050565b61448e81614463565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144c981613170565b82525050565b60006144db83836144c0565b60208301905092915050565b6000602082019050919050565b60006144ff82614494565b614509818561449f565b9350614514836144b0565b8060005b8381101561454557815161452c88826144cf565b9750614537836144e7565b925050600181019050614518565b5085935050505092915050565b600060a0820190506145676000830188613126565b6145746020830187614485565b818103604083015261458681866144f4565b90506145956060830185613182565b6145a26080830184613126565b969550505050505056fea264697066735822122077fd976aa2b52f2dd5bee44155e1c20673266eef6c545aa65b7a3e92a084741364736f6c63430008130033

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

000000000000000000000000602b763b1a9d5910f392a3f65bc8b2cce994f83d00000000000000000000000052c12ae645be9adabf0286009164820c1e36651f000000000000000000000000f8d0cfc67ef3cc959411a70a4eae81da69c0beca0000000000000000000000008db76235c7923d6e071644f68fda33a61384ffa20000000000000000000000000280bf311ed856fd369cf5ca48f5b459f8319b4e

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x602B763B1A9d5910f392a3f65bc8b2CcE994f83D
Arg [1] : _devWallet (address): 0x52c12ae645Be9adABF0286009164820C1E36651f
Arg [2] : _charityWallet (address): 0xF8d0cfc67Ef3CC959411A70A4EAE81DA69C0bEcA
Arg [3] : _lotteryWallet (address): 0x8db76235c7923D6E071644f68fDA33a61384FFA2
Arg [4] : _burnWallet (address): 0x0280bf311Ed856fD369cF5CA48F5b459F8319B4E

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000602b763b1a9d5910f392a3f65bc8b2cce994f83d
Arg [1] : 00000000000000000000000052c12ae645be9adabf0286009164820c1e36651f
Arg [2] : 000000000000000000000000f8d0cfc67ef3cc959411a70a4eae81da69c0beca
Arg [3] : 0000000000000000000000008db76235c7923d6e071644f68fda33a61384ffa2
Arg [4] : 0000000000000000000000000280bf311ed856fd369cf5ca48f5b459f8319b4e


Deployed Bytecode Sourcemap

9039:19920:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10200:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9877:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13236:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20205:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14452:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19810:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10373:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13537:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18058:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17879:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13985:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9649:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9939:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18629:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19028:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17497:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13438:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9911:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10084:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10431;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17263:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19415:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17094:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10257:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10505:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13644:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2564:103;;;;;;;;;;;;;:::i;:::-;;9739:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9557:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9807:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1916:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9776:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13335:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16645:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17688:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9842:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13770:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9691:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9493:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16138:499;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18240:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23471:123;;;;;;;;;;;;;:::i;:::-;;9970:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14277:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22914:549;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2822:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9307:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10030:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10142:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10200:34;;;;:::o;9877:25::-;;;;;;;;;;;;;:::o;13236:91::-;13281:13;13314:5;;;;;;;;;;;;;;;;;13307:12;;13236:91;:::o;20205:268::-;1802:13;:11;:13::i;:::-;20343:6:::1;20335:4;20319:13;:11;:13::i;:::-;:20;;;;:::i;:::-;20318:31;;;;:::i;:::-;20301:13;;:48;;20279:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;20456:9;20440:13;:25;;;;20205:268:::0;:::o;14452:150::-;14518:4;14535:37;14544:10;14556:7;14565:6;14535:8;:37::i;:::-;14590:4;14583:11;;14452:150;;;;:::o;19810:387::-;1802:13;:11;:13::i;:::-;20081:6:::1;20049:11;;20015:14;;19981;;19951:10;;19915:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;19893:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;20176:13;20159:14;:30;;;;19810:387:::0;:::o;10373:51::-;;;:::o;13537:99::-;13589:7;13616:12;;13609:19;;13537:99;:::o;18058:174::-;1802:13;:11;:13::i;:::-;18153:1:::1;18135:20;;:6;:20;;::::0;18127:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18218:6;18205:10;;:19;;;;;;;;;;;;;;;;;;18058:174:::0;:::o;17879:171::-;1802:13;:11;:13::i;:::-;17973:1:::1;17955:20;;:6;:20;;::::0;17947:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18036:6;18024:9;;:18;;;;;;;;;;;;;;;;;;17879:171:::0;:::o;13985:284::-;14107:4;14124:15;14142:10;14124:28;;14163:38;14179:4;14185:7;14194:6;14163:15;:38::i;:::-;14212:27;14222:4;14228:2;14232:6;14212:9;:27::i;:::-;14257:4;14250:11;;;13985:284;;;;;:::o;9649:35::-;;;;;;;;;;;;;:::o;9939:22::-;;;;:::o;18629:391::-;1802:13;:11;:13::i;:::-;18902:6:::1;18870:11;;18836:14;;18802;;18772:10;;18736:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;18714:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;18999:13;18980:16;:32;;;;18629:391:::0;:::o;19028:379::-;1802:13;:11;:13::i;:::-;19295:6:::1;19263:11;;19229:14;;19195;;19165:10;;19129:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;19107:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;19386:13;19373:10;:26;;;;19028:379:::0;:::o;17497:183::-;1802:13;:11;:13::i;:::-;17595:1:::1;17577:20;;:6;:20;;::::0;17569:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17666:6;17650:13;;:22;;;;;;;;;;;;;;;;;;17497:183:::0;:::o;13438:91::-;13487:5;9218:2;13505:16;;13438:91;:::o;9911:21::-;;;;:::o;10084:37::-;;;;:::o;10431:::-;;;:::o;17263:226::-;1802:13;:11;:13::i;:::-;17377:1:::1;17359:20;;:6;:20;;::::0;17337:109:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17475:6;17457:15;;:24;;;;;;;;;;;;;;;;;;17263:226:::0;:::o;19415:387::-;1802:13;:11;:13::i;:::-;19686:6:::1;19654:11;;19620:14;;19586;;19556:10;;19520:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;19498:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;19781:13;19764:14;:30;;;;19415:387:::0;:::o;17094:161::-;1802:13;:11;:13::i;:::-;17239:8:::1;17209:18;:27;17228:7;17209:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;17094:161:::0;;:::o;10257:67::-;;;;:::o;10505:30::-;;;;;;;;;;;;;:::o;13644:118::-;13709:7;13736:9;:18;13746:7;13736:18;;;;;;;;;;;;;;;;13729:25;;13644:118;;;:::o;2564:103::-;1802:13;:11;:13::i;:::-;2629:30:::1;2656:1;2629:18;:30::i;:::-;2564:103::o:0;9739:30::-;;;;;;;;;;;;;:::o;9557:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9807:28::-;;;;;;;;;;;;;:::o;1916:87::-;1962:7;1989:6;;;;;;;;;;;1982:13;;1916:87;:::o;9776:24::-;;;;;;;;;;;;;:::o;13335:95::-;13382:13;13415:7;;;;;;;;;;;;;;;;;13408:14;;13335:95;:::o;16645:303::-;1802:13;:11;:13::i;:::-;16791:12:::1;16783:20;;:4;:20;;::::0;16761:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16899:41;16928:4;16934:5;16899:28;:41::i;:::-;16645:303:::0;;:::o;17688:183::-;1802:13;:11;:13::i;:::-;17786:1:::1;17768:20;;:6;:20;;::::0;17760:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17857:6;17841:13;;:22;;;;;;;;;;;;;;;;;;17688:183:::0;:::o;9842:28::-;;;;;;;;;;;;;:::o;13770:207::-;13865:4;13882:13;13898:10;13882:26;;13919:28;13929:5;13936:2;13940:6;13919:9;:28::i;:::-;13965:4;13958:11;;;13770:207;;;;:::o;9691:39::-;;;;;;;;;;;;;:::o;9493:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16138:499::-;1802:13;:11;:13::i;:::-;16255::::1;16271:7;:5;:7::i;:::-;16255:23;;16319:9;16314:305;16338:6;;:13;;16334:1;:17;16314:305;;;16377:12;16392:6;;16399:1;16392:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16377:24;;16466:1;16450:18;;:4;:18;;::::0;16420:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16566:37;16582:5;16589:4;16595:7;16566:15;:37::i;:::-;16358:261;16353:3;;;;;;;16314:305;;;;16244:393;16138:499:::0;;;:::o;18240:381::-;1802:13;:11;:13::i;:::-;18508:6:::1;18476:11;;18442:14;;18408;;18378:10;;18342:16;;:46;;;;:::i;:::-;:80;;;;:::i;:::-;:114;;;;:::i;:::-;:145;;;;:::i;:::-;:172;;18320:255;;;;;;;;;;;;:::i;:::-;;;;;;;;;18600:13;18586:11;:27;;;;18240:381:::0;:::o;23471:123::-;1802:13;:11;:13::i;:::-;23543:10:::1;23535:28;;:51;23564:21;23535:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23471:123::o:0;9970:39::-;;;;:::o;14277:167::-;14382:7;14409:11;:18;14421:5;14409:18;;;;;;;;;;;;;;;:27;14428:7;14409:27;;;;;;;;;;;;;;;;14402:34;;14277:167;;;;:::o;22914:549::-;1802:13;:11;:13::i;:::-;23091:4:::1;23066:30;;:13;:30;;::::0;23044:134:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23191:21;23222:13;23215:31;;;23255:4;23215:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23191:70;;23274:20;23325:6;23314:7;23298:13;:23;;;;:::i;:::-;23297:34;;;;:::i;:::-;23274:57;;23344:9;23363:13;23356:30;;;23387:10;23399:12;23356:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23344:68;;23431:4;23423:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;23033:430;;;22914:549:::0;;:::o;2822:238::-;1802:13;:11;:13::i;:::-;2945:1:::1;2925:22;;:8;:22;;::::0;2903:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3024:28;3043:8;3024:18;:28::i;:::-;2822:238:::0;:::o;9307:24::-;;;;:::o;10030:33::-;;;;:::o;10142:37::-;;;;:::o;2081:132::-;2156:12;:10;:12::i;:::-;2145:23;;:7;:5;:7::i;:::-;:23;;;2137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2081:132::o;14610:376::-;14757:1;14739:20;;:6;:20;;;14731:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14838:1;14819:21;;:7;:21;;;14811:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14923:6;14892:11;:19;14904:6;14892:19;;;;;;;;;;;;;;;:28;14912:7;14892:28;;;;;;;;;;;;;;;:37;;;;14962:7;14945:33;;14954:6;14945:33;;;14971:6;14945:33;;;;;;:::i;:::-;;;;;;;;14610:376;;;:::o;14994:502::-;15129:24;15156:25;15166:5;15173:7;15156:9;:25::i;:::-;15129:52;;15216:17;15196:16;:37;15192:297;;15296:6;15276:16;:26;;15250:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15411:51;15420:5;15427:7;15455:6;15436:16;:25;15411:8;:51::i;:::-;15192:297;15118:378;14994:502;;;:::o;25926:2765::-;26076:1;26058:20;;:6;:20;;;26050:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26160:1;26139:23;;:9;:23;;;26131:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26230:1;26221:6;:10;26213:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26369:7;:5;:7::i;:::-;26359:17;;:6;:17;;;:41;;;;26393:7;:5;:7::i;:::-;26380:20;;:9;:20;;;26359:41;:68;;;;26422:4;26404:23;;:6;:23;;;26359:68;26341:381;;;26472:1;26458:10;;:15;:44;;;;;26490:12;26477:25;;:9;:25;;;26458:44;26454:179;;;26536:15;26523:10;:28;;;;26570:12;:10;:12::i;:::-;26601:16;:14;:16::i;:::-;26454:179;26647:42;26663:6;26671:9;26682:6;26647:15;:42::i;:::-;26704:7;;26341:381;26734:12;:10;:12::i;:::-;26757:16;:14;:16::i;:::-;26786:10;26809:12;26799:22;;:6;:22;;;26786:35;;26832:11;26859:12;26846:25;;:9;:25;;;26832:39;;26884:14;26909:15;26937:28;26968:24;26986:4;26968:9;:24::i;:::-;26937:55;;27003:12;27042:13;;27018:20;:37;;27003:52;;27086:7;:35;;;;;27110:11;;;;;;;;;;;27086:35;:61;;;;;27139:8;;;;;;;;;;;27138:9;27086:61;:112;;;;;27165:25;:33;27191:6;27165:33;;;;;;;;;;;;;;;;;;;;;;;;;27164:34;27086:112;:156;;;;;27216:18;:26;27235:6;27216:26;;;;;;;;;;;;;;;;;;;;;;;;;27215:27;27086:156;:203;;;;;27260:18;:29;27279:9;27260:29;;;;;;;;;;;;;;;;;;;;;;;;;27259:30;27086:203;27068:333;;;27327:4;27316:8;;:15;;;;;;;;;;;;;;;;;;27346:12;:10;:12::i;:::-;27384:5;27373:8;;:16;;;;;;;;;;;;;;;;;;27068:333;27413:12;27429:8;;;;;;;;;;;27428:9;27413:24;;27454:18;:26;27473:6;27454:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;27484:18;:29;27503:9;27484:29;;;;;;;;;;;;;;;;;;;;;;;;;27454:59;27450:107;;;27540:5;27530:15;;27450:107;27569:12;27602:7;27598:1033;;;27630:25;:33;27656:6;27630:33;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;27667:5;27630:42;27626:965;;;27698:18;:29;27717:9;27698:29;;;;;;;;;;;;;;;;;;;;;;;;;27693:371;;27819:9;;27809:6;27786:20;27796:9;27786;:20::i;:::-;:29;;;;:::i;:::-;:42;;27752:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;27946:29;27960:6;27968;;27946:13;:29::i;:::-;27937:38;;27998:46;28014:6;28030:4;28037:6;27998:15;:46::i;:::-;27693:371;28089:6;28082:13;;27626:965;;;28121:25;:36;28147:9;28121:36;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;28161:6;28121:46;28117:474;;;28193:18;:26;28212:6;28193:26;;;;;;;;;;;;;;;;;;;;;;;;;28188:355;;28288:9;;28278:6;:19;;28244:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;28423:30;28437:6;28445:7;;28423:13;:30::i;:::-;28413:40;;28476:47;28492:6;28508:4;28515:7;28476:15;:47::i;:::-;28188:355;28568:7;28561:14;;28117:474;27626:965;28615:4;28605:14;;;;;:::i;:::-;;;27598:1033;28641:42;28657:6;28665:9;28676:6;28641:15;:42::i;:::-;26039:2652;;;;;;;;25926:2765;;;;:::o;3220:191::-;3294:16;3313:6;;;;;;;;;;;3294:25;;3339:8;3330:6;;:17;;;;;;;;;;;;;;;;;;3394:8;3363:40;;3384:8;3363:40;;;;;;;;;;;;3283:128;3220:191;:::o;16956:130::-;17073:5;17039:25;:31;17065:4;17039:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16956:130;;:::o;15504:626::-;15633:19;15655:9;:15;15665:4;15655:15;;;;;;;;;;;;;;;;15633:37;;15718:6;15703:11;:21;;15681:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15858:6;15844:11;:20;15826:9;:15;15836:4;15826:15;;;;;;;;;;;;;;;:38;;;;16061:6;16044:9;:13;16054:2;16044:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16111:2;16096:26;;16105:4;16096:26;;;16115:6;16096:26;;;;;;:::i;:::-;;;;;;;;15622:508;15504:626;;;:::o;600:98::-;653:7;680:10;673:17;;600:98;:::o;20481:1398::-;20578:16;;;;;;;;;;;:64;;;;;20630:12;20617:10;;:25;;;;:::i;:::-;20598:15;:44;;20578:64;20574:1298;;;20695:9;20682:10;;:22;;;;:::i;:::-;20663:15;:41;20659:1047;;20734:4;20725:6;:13;;;;20767:4;20757:7;:14;;;;20659:1047;;;20846:9;20833:10;;:22;;;;:::i;:::-;20815:15;:40;:103;;;;;20908:10;20895;;:23;;;;:::i;:::-;20876:15;:42;;20815:103;20793:913;;;20962:4;20953:6;:13;;;;20995:4;20985:7;:14;;;;20793:913;;;21074:10;21061;;:23;;;;:::i;:::-;21043:15;:41;:104;;;;;21137:10;21124;;:23;;;;:::i;:::-;21105:15;:42;;21043:104;21021:685;;;21191:4;21182:6;:13;;;;21224:4;21214:7;:14;;;;21021:685;;;21303:10;21290;;:23;;;;:::i;:::-;21272:15;:41;:105;;;;;21366:11;21353:10;;:24;;;;:::i;:::-;21334:15;:43;;21272:105;21250:456;;;21421:4;21412:6;:13;;;;21454:4;21444:7;:14;;;;21250:456;;;21533:11;21520:10;;:24;;;;:::i;:::-;21502:15;:42;:107;;;;;21597:12;21584:10;;:25;;;;:::i;:::-;21565:15;:44;;21502:107;21480:226;;;21653:4;21644:6;:13;;;;21686:4;21676:7;:14;;;;21480:226;21250:456;21021:685;20793:913;20659:1047;20574:1298;;;21727:16;;;;;;;;;;;:35;;;;;21761:1;21747:10;;:15;;21727:35;21723:149;;;21788:4;21779:6;:13;;;;21817:4;21807:7;:14;;;;21855:5;21836:16;;:24;;;;;;;;;;;;;;;;;;21723:149;20574:1298;20481:1398::o;21887:950::-;22004:20;;;;;;;;;;;:66;;;;;22060:10;22047;;:23;;;;:::i;:::-;22028:15;:42;;22004:66;21986:844;;;22133:10;22120;;:23;;;;:::i;:::-;22101:15;:42;22097:576;;22200:6;22193:3;22177:13;:11;:13::i;:::-;:19;;;;:::i;:::-;22176:30;;;;:::i;:::-;22164:9;:42;;;;22097:576;;;22281:10;22268;;:23;;;;:::i;:::-;22250:15;:41;:104;;;;;22344:10;22331;;:23;;;;:::i;:::-;22312:15;:42;;22250:104;22228:445;;;22425:6;22418:3;22402:13;:11;:13::i;:::-;:19;;;;:::i;:::-;22401:30;;;;:::i;:::-;22389:9;:42;;;;22228:445;;;22506:10;22493;;:23;;;;:::i;:::-;22475:15;:41;:104;;;;;22569:10;22556;;:23;;;;:::i;:::-;22537:15;:42;;22475:104;22453:220;;;22651:6;22643:4;22627:13;:11;:13::i;:::-;:20;;;;:::i;:::-;22626:31;;;;:::i;:::-;22614:9;:43;;;;22453:220;22228:445;22097:576;21986:844;;;22694:20;;;;;;;;;;;:39;;;;;22732:1;22718:10;;:15;;22694:39;22690:140;;;22762:13;:11;:13::i;:::-;22750:9;:25;;;;22813:5;22790:20;;:28;;;;;;;;;;;;;;;;;;22690:140;21986:844;21887:950::o;24199:1192::-;24241:28;24272:24;24290:4;24272:9;:24::i;:::-;24241:55;;24309:22;24334:21;24309:46;;24368:38;24385:20;24368:16;:38::i;:::-;24419:18;24465:14;24440:21;:40;;;;:::i;:::-;24419:61;;24493:23;24553:6;24533:16;;24520:10;:29;;;;:::i;:::-;24519:40;;;;:::i;:::-;24493:66;;24570:17;24618:6;24604:10;;24591;:23;;;;:::i;:::-;24590:34;;;;:::i;:::-;24570:54;;24635:21;24691:6;24673:14;;24660:10;:27;;;;:::i;:::-;24659:38;;;;:::i;:::-;24635:62;;24708:21;24764:6;24746:14;;24733:10;:27;;;;:::i;:::-;24732:38;;;;:::i;:::-;24708:62;;24781:18;24831:6;24816:11;;24803:10;:24;;;;:::i;:::-;24802:35;;;;:::i;:::-;24781:56;;24850:12;24873:13;24897;24921;24945;24985:15;;;;;;;;;;;:20;;25013:15;25035:5;24985:84;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24971:98;;;;;25095:9;;;;;;;;;;;:14;;25117:9;25133:5;25095:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25080:63;;;;;25169:13;;;;;;;;;;;:18;;25195:13;25215:5;25169:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25154:71;;;;;25251:13;;;;;;;;;;;:18;;25277:13;25297:5;25251:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25236:71;;;;;25333:10;;;;;;;;;;;:15;;25356:10;25373:5;25333:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25318:65;;;;;24230:1161;;;;;;;;;;;;;24199:1192::o;28699:182::-;28809:7;28866:6;28847:13;28837:6;:24;;;;:::i;:::-;28836:37;;;;:::i;:::-;28829:44;;28699:182;;;;:::o;23602:589::-;23728:21;23766:1;23752:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23728:40;;23797:4;23779;23784:1;23779:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23823:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23813:4;23818:1;23813:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23858:62;23875:4;23890:15;23908:11;23858:8;:62::i;:::-;23959:15;:66;;;24040:11;24066:1;24110:4;24137;24157:15;23959:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23657:534;23602:589;:::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:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2451:117::-;2560:1;2557;2550:12;2574:117;2683:1;2680;2673:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:329::-;3029:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:119;;;3084:79;;:::i;:::-;3046:119;3204:1;3229:53;3274:7;3265:6;3254:9;3250:22;3229:53;:::i;:::-;3219:63;;3175:117;2970:329;;;;:::o;3305:122::-;3378:24;3396:5;3378:24;:::i;:::-;3371:5;3368:35;3358:63;;3417:1;3414;3407:12;3358:63;3305:122;:::o;3433:139::-;3479:5;3517:6;3504:20;3495:29;;3533:33;3560:5;3533:33;:::i;:::-;3433:139;;;;:::o;3578:474::-;3646:6;3654;3703:2;3691:9;3682:7;3678:23;3674:32;3671:119;;;3709:79;;:::i;:::-;3671:119;3829:1;3854:53;3899:7;3890:6;3879:9;3875:22;3854:53;:::i;:::-;3844:63;;3800:117;3956:2;3982:53;4027:7;4018:6;4007:9;4003:22;3982:53;:::i;:::-;3972:63;;3927:118;3578:474;;;;;:::o;4058:90::-;4092:7;4135:5;4128:13;4121:21;4110:32;;4058:90;;;:::o;4154:109::-;4235:21;4250:5;4235:21;:::i;:::-;4230:3;4223:34;4154:109;;:::o;4269:210::-;4356:4;4394:2;4383:9;4379:18;4371:26;;4407:65;4469:1;4458:9;4454:17;4445:6;4407:65;:::i;:::-;4269:210;;;;:::o;4485:60::-;4513:3;4534:5;4527:12;;4485:60;;;:::o;4551:142::-;4601:9;4634:53;4652:34;4661:24;4679:5;4661:24;:::i;:::-;4652:34;:::i;:::-;4634:53;:::i;:::-;4621:66;;4551:142;;;:::o;4699:126::-;4749:9;4782:37;4813:5;4782:37;:::i;:::-;4769:50;;4699:126;;;:::o;4831:152::-;4907:9;4940:37;4971:5;4940:37;:::i;:::-;4927:50;;4831:152;;;:::o;4989:183::-;5102:63;5159:5;5102:63;:::i;:::-;5097:3;5090:76;4989:183;;:::o;5178:274::-;5297:4;5335:2;5324:9;5320:18;5312:26;;5348:97;5442:1;5431:9;5427:17;5418:6;5348:97;:::i;:::-;5178:274;;;;:::o;5458:329::-;5517:6;5566:2;5554:9;5545:7;5541:23;5537:32;5534:119;;;5572:79;;:::i;:::-;5534:119;5692:1;5717:53;5762:7;5753:6;5742:9;5738:22;5717:53;:::i;:::-;5707:63;;5663:117;5458:329;;;;:::o;5793:619::-;5870:6;5878;5886;5935:2;5923:9;5914:7;5910:23;5906:32;5903:119;;;5941:79;;:::i;:::-;5903:119;6061:1;6086:53;6131:7;6122:6;6111:9;6107:22;6086:53;:::i;:::-;6076:63;;6032:117;6188:2;6214:53;6259:7;6250:6;6239:9;6235:22;6214:53;:::i;:::-;6204:63;;6159:118;6316:2;6342:53;6387:7;6378:6;6367:9;6363:22;6342:53;:::i;:::-;6332:63;;6287:118;5793:619;;;;;:::o;6418:86::-;6453:7;6493:4;6486:5;6482:16;6471:27;;6418:86;;;:::o;6510:112::-;6593:22;6609:5;6593:22;:::i;:::-;6588:3;6581:35;6510:112;;:::o;6628:214::-;6717:4;6755:2;6744:9;6740:18;6732:26;;6768:67;6832:1;6821:9;6817:17;6808:6;6768:67;:::i;:::-;6628:214;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:117::-;7692:1;7689;7682:12;7706:117;7815:1;7812;7805:12;7829:117;7938:1;7935;7928:12;7969:568;8042:8;8052:6;8102:3;8095:4;8087:6;8083:17;8079:27;8069:122;;8110:79;;:::i;:::-;8069:122;8223:6;8210:20;8200:30;;8253:18;8245:6;8242:30;8239:117;;;8275:79;;:::i;:::-;8239:117;8389:4;8381:6;8377:17;8365:29;;8443:3;8435:4;8427:6;8423:17;8413:8;8409:32;8406:41;8403:128;;;8450:79;;:::i;:::-;8403:128;7969:568;;;;;:::o;8543:704::-;8638:6;8646;8654;8703:2;8691:9;8682:7;8678:23;8674:32;8671:119;;;8709:79;;:::i;:::-;8671:119;8857:1;8846:9;8842:17;8829:31;8887:18;8879:6;8876:30;8873:117;;;8909:79;;:::i;:::-;8873:117;9022:80;9094:7;9085:6;9074:9;9070:22;9022:80;:::i;:::-;9004:98;;;;8800:312;9151:2;9177:53;9222:7;9213:6;9202:9;9198:22;9177:53;:::i;:::-;9167:63;;9122:118;8543:704;;;;;:::o;9253:474::-;9321:6;9329;9378:2;9366:9;9357:7;9353:23;9349:32;9346:119;;;9384:79;;:::i;:::-;9346:119;9504:1;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9475:117;9631:2;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9602:118;9253:474;;;;;:::o;9733:180::-;9781:77;9778:1;9771:88;9878:4;9875:1;9868:15;9902:4;9899:1;9892:15;9919:410;9959:7;9982:20;10000:1;9982:20;:::i;:::-;9977:25;;10016:20;10034:1;10016:20;:::i;:::-;10011:25;;10071:1;10068;10064:9;10093:30;10111:11;10093:30;:::i;:::-;10082:41;;10272:1;10263:7;10259:15;10256:1;10253:22;10233:1;10226:9;10206:83;10183:139;;10302:18;;:::i;:::-;10183:139;9967:362;9919:410;;;;:::o;10335:180::-;10383:77;10380:1;10373:88;10480:4;10477:1;10470:15;10504:4;10501:1;10494:15;10521:185;10561:1;10578:20;10596:1;10578:20;:::i;:::-;10573:25;;10612:20;10630:1;10612:20;:::i;:::-;10607:25;;10651:1;10641:35;;10656:18;;:::i;:::-;10641:35;10698:1;10695;10691:9;10686:14;;10521:185;;;;:::o;10712:239::-;10852:34;10848:1;10840:6;10836:14;10829:58;10921:22;10916:2;10908:6;10904:15;10897:47;10712:239;:::o;10957:366::-;11099:3;11120:67;11184:2;11179:3;11120:67;:::i;:::-;11113:74;;11196:93;11285:3;11196:93;:::i;:::-;11314:2;11309:3;11305:12;11298:19;;10957:366;;;:::o;11329:419::-;11495:4;11533:2;11522:9;11518:18;11510:26;;11582:9;11576:4;11572:20;11568:1;11557:9;11553:17;11546:47;11610:131;11736:4;11610:131;:::i;:::-;11602:139;;11329:419;;;:::o;11754:191::-;11794:3;11813:20;11831:1;11813:20;:::i;:::-;11808:25;;11847:20;11865:1;11847:20;:::i;:::-;11842:25;;11890:1;11887;11883:9;11876:16;;11911:3;11908:1;11905:10;11902:36;;;11918:18;;:::i;:::-;11902:36;11754:191;;;;:::o;11951:220::-;12091:34;12087:1;12079:6;12075:14;12068:58;12160:3;12155:2;12147:6;12143:15;12136:28;11951:220;:::o;12177:366::-;12319:3;12340:67;12404:2;12399:3;12340:67;:::i;:::-;12333:74;;12416:93;12505:3;12416:93;:::i;:::-;12534:2;12529:3;12525:12;12518:19;;12177:366;;;:::o;12549:419::-;12715:4;12753:2;12742:9;12738:18;12730:26;;12802:9;12796:4;12792:20;12788:1;12777:9;12773:17;12766:47;12830:131;12956:4;12830:131;:::i;:::-;12822:139;;12549:419;;;:::o;12974:221::-;13114:34;13110:1;13102:6;13098:14;13091:58;13183:4;13178:2;13170:6;13166:15;13159:29;12974:221;:::o;13201:366::-;13343:3;13364:67;13428:2;13423:3;13364:67;:::i;:::-;13357:74;;13440:93;13529:3;13440:93;:::i;:::-;13558:2;13553:3;13549:12;13542:19;;13201:366;;;:::o;13573:419::-;13739:4;13777:2;13766:9;13762:18;13754:26;;13826:9;13820:4;13816:20;13812:1;13801:9;13797:17;13790:47;13854:131;13980:4;13854:131;:::i;:::-;13846:139;;13573:419;;;:::o;13998:220::-;14138:34;14134:1;14126:6;14122:14;14115:58;14207:3;14202:2;14194:6;14190:15;14183:28;13998:220;:::o;14224:366::-;14366:3;14387:67;14451:2;14446:3;14387:67;:::i;:::-;14380:74;;14463:93;14552:3;14463:93;:::i;:::-;14581:2;14576:3;14572:12;14565:19;;14224:366;;;:::o;14596:419::-;14762:4;14800:2;14789:9;14785:18;14777:26;;14849:9;14843:4;14839:20;14835:1;14824:9;14820:17;14813:47;14877:131;15003:4;14877:131;:::i;:::-;14869:139;;14596:419;;;:::o;15021:224::-;15161:34;15157:1;15149:6;15145:14;15138:58;15230:7;15225:2;15217:6;15213:15;15206:32;15021:224;:::o;15251:366::-;15393:3;15414:67;15478:2;15473:3;15414:67;:::i;:::-;15407:74;;15490:93;15579:3;15490:93;:::i;:::-;15608:2;15603:3;15599:12;15592:19;;15251:366;;;:::o;15623:419::-;15789:4;15827:2;15816:9;15812:18;15804:26;;15876:9;15870:4;15866:20;15862:1;15851:9;15847:17;15840:47;15904:131;16030:4;15904:131;:::i;:::-;15896:139;;15623:419;;;:::o;16048:226::-;16188:34;16184:1;16176:6;16172:14;16165:58;16257:9;16252:2;16244:6;16240:15;16233:34;16048:226;:::o;16280:366::-;16422:3;16443:67;16507:2;16502:3;16443:67;:::i;:::-;16436:74;;16519:93;16608:3;16519:93;:::i;:::-;16637:2;16632:3;16628:12;16621:19;;16280:366;;;:::o;16652:419::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16905:9;16899:4;16895:20;16891:1;16880:9;16876:17;16869:47;16933:131;17059:4;16933:131;:::i;:::-;16925:139;;16652:419;;;:::o;17077:244::-;17217:34;17213:1;17205:6;17201:14;17194:58;17286:27;17281:2;17273:6;17269:15;17262:52;17077:244;:::o;17327:366::-;17469:3;17490:67;17554:2;17549:3;17490:67;:::i;:::-;17483:74;;17566:93;17655:3;17566:93;:::i;:::-;17684:2;17679:3;17675:12;17668:19;;17327:366;;;:::o;17699:419::-;17865:4;17903:2;17892:9;17888:18;17880:26;;17952:9;17946:4;17942:20;17938:1;17927:9;17923:17;17916:47;17980:131;18106:4;17980:131;:::i;:::-;17972:139;;17699:419;;;:::o;18124:224::-;18264:34;18260:1;18252:6;18248:14;18241:58;18333:7;18328:2;18320:6;18316:15;18309:32;18124:224;:::o;18354:366::-;18496:3;18517:67;18581:2;18576:3;18517:67;:::i;:::-;18510:74;;18593:93;18682:3;18593:93;:::i;:::-;18711:2;18706:3;18702:12;18695:19;;18354:366;;;:::o;18726:419::-;18892:4;18930:2;18919:9;18915:18;18907:26;;18979:9;18973:4;18969:20;18965:1;18954:9;18950:17;18943:47;19007:131;19133:4;19007:131;:::i;:::-;18999:139;;18726:419;;;:::o;19151:180::-;19199:77;19196:1;19189:88;19296:4;19293:1;19286:15;19320:4;19317:1;19310:15;19337:222;19477:34;19473:1;19465:6;19461:14;19454:58;19546:5;19541:2;19533:6;19529:15;19522:30;19337:222;:::o;19565:366::-;19707:3;19728:67;19792:2;19787:3;19728:67;:::i;:::-;19721:74;;19804:93;19893:3;19804:93;:::i;:::-;19922:2;19917:3;19913:12;19906:19;;19565:366;;;:::o;19937:419::-;20103:4;20141:2;20130:9;20126:18;20118:26;;20190:9;20184:4;20180:20;20176:1;20165:9;20161:17;20154:47;20218:131;20344:4;20218:131;:::i;:::-;20210:139;;19937:419;;;:::o;20362:241::-;20502:34;20498:1;20490:6;20486:14;20479:58;20571:24;20566:2;20558:6;20554:15;20547:49;20362:241;:::o;20609:366::-;20751:3;20772:67;20836:2;20831:3;20772:67;:::i;:::-;20765:74;;20848:93;20937:3;20848:93;:::i;:::-;20966:2;20961:3;20957:12;20950:19;;20609:366;;;:::o;20981:419::-;21147:4;21185:2;21174:9;21170:18;21162:26;;21234:9;21228:4;21224:20;21220:1;21209:9;21205:17;21198:47;21262:131;21388:4;21262:131;:::i;:::-;21254:139;;20981:419;;;:::o;21406:143::-;21463:5;21494:6;21488:13;21479:22;;21510:33;21537:5;21510:33;:::i;:::-;21406:143;;;;:::o;21555:351::-;21625:6;21674:2;21662:9;21653:7;21649:23;21645:32;21642:119;;;21680:79;;:::i;:::-;21642:119;21800:1;21825:64;21881:7;21872:6;21861:9;21857:22;21825:64;:::i;:::-;21815:74;;21771:128;21555:351;;;;:::o;21912:332::-;22033:4;22071:2;22060:9;22056:18;22048:26;;22084:71;22152:1;22141:9;22137:17;22128:6;22084:71;:::i;:::-;22165:72;22233:2;22222:9;22218:18;22209:6;22165:72;:::i;:::-;21912:332;;;;;:::o;22250:137::-;22304:5;22335:6;22329:13;22320:22;;22351:30;22375:5;22351:30;:::i;:::-;22250:137;;;;:::o;22393:345::-;22460:6;22509:2;22497:9;22488:7;22484:23;22480:32;22477:119;;;22515:79;;:::i;:::-;22477:119;22635:1;22660:61;22713:7;22704:6;22693:9;22689:22;22660:61;:::i;:::-;22650:71;;22606:125;22393:345;;;;:::o;22744:165::-;22884:17;22880:1;22872:6;22868:14;22861:41;22744:165;:::o;22915:366::-;23057:3;23078:67;23142:2;23137:3;23078:67;:::i;:::-;23071:74;;23154:93;23243:3;23154:93;:::i;:::-;23272:2;23267:3;23263:12;23256:19;;22915:366;;;:::o;23287:419::-;23453:4;23491:2;23480:9;23476:18;23468:26;;23540:9;23534:4;23530:20;23526:1;23515:9;23511:17;23504:47;23568:131;23694:4;23568:131;:::i;:::-;23560:139;;23287:419;;;:::o;23712:225::-;23852:34;23848:1;23840:6;23836:14;23829:58;23921:8;23916:2;23908:6;23904:15;23897:33;23712:225;:::o;23943:366::-;24085:3;24106:67;24170:2;24165:3;24106:67;:::i;:::-;24099:74;;24182:93;24271:3;24182:93;:::i;:::-;24300:2;24295:3;24291:12;24284:19;;23943:366;;;:::o;24315:419::-;24481:4;24519:2;24508:9;24504:18;24496:26;;24568:9;24562:4;24558:20;24554:1;24543:9;24539:17;24532:47;24596:131;24722:4;24596:131;:::i;:::-;24588:139;;24315:419;;;:::o;24740:182::-;24880:34;24876:1;24868:6;24864:14;24857:58;24740:182;:::o;24928:366::-;25070:3;25091:67;25155:2;25150:3;25091:67;:::i;:::-;25084:74;;25167:93;25256:3;25167:93;:::i;:::-;25285:2;25280:3;25276:12;25269:19;;24928:366;;;:::o;25300:419::-;25466:4;25504:2;25493:9;25489:18;25481:26;;25553:9;25547:4;25543:20;25539:1;25528:9;25524:17;25517:47;25581:131;25707:4;25581:131;:::i;:::-;25573:139;;25300:419;;;:::o;25725:223::-;25865:34;25861:1;25853:6;25849:14;25842:58;25934:6;25929:2;25921:6;25917:15;25910:31;25725:223;:::o;25954:366::-;26096:3;26117:67;26181:2;26176:3;26117:67;:::i;:::-;26110:74;;26193:93;26282:3;26193:93;:::i;:::-;26311:2;26306:3;26302:12;26295:19;;25954:366;;;:::o;26326:419::-;26492:4;26530:2;26519:9;26515:18;26507:26;;26579:9;26573:4;26569:20;26565:1;26554:9;26550:17;26543:47;26607:131;26733:4;26607:131;:::i;:::-;26599:139;;26326:419;;;:::o;26751:221::-;26891:34;26887:1;26879:6;26875:14;26868:58;26960:4;26955:2;26947:6;26943:15;26936:29;26751:221;:::o;26978:366::-;27120:3;27141:67;27205:2;27200:3;27141:67;:::i;:::-;27134:74;;27217:93;27306:3;27217:93;:::i;:::-;27335:2;27330:3;27326:12;27319:19;;26978:366;;;:::o;27350:419::-;27516:4;27554:2;27543:9;27539:18;27531:26;;27603:9;27597:4;27593:20;27589:1;27578:9;27574:17;27567:47;27631:131;27757:4;27631:131;:::i;:::-;27623:139;;27350:419;;;:::o;27775:179::-;27915:31;27911:1;27903:6;27899:14;27892:55;27775:179;:::o;27960:366::-;28102:3;28123:67;28187:2;28182:3;28123:67;:::i;:::-;28116:74;;28199:93;28288:3;28199:93;:::i;:::-;28317:2;28312:3;28308:12;28301:19;;27960:366;;;:::o;28332:419::-;28498:4;28536:2;28525:9;28521:18;28513:26;;28585:9;28579:4;28575:20;28571:1;28560:9;28556:17;28549:47;28613:131;28739:4;28613:131;:::i;:::-;28605:139;;28332:419;;;:::o;28757:224::-;28897:34;28893:1;28885:6;28881:14;28874:58;28966:7;28961:2;28953:6;28949:15;28942:32;28757:224;:::o;28987:366::-;29129:3;29150:67;29214:2;29209:3;29150:67;:::i;:::-;29143:74;;29226:93;29315:3;29226:93;:::i;:::-;29344:2;29339:3;29335:12;29328:19;;28987:366;;;:::o;29359:419::-;29525:4;29563:2;29552:9;29548:18;29540:26;;29612:9;29606:4;29602:20;29598:1;29587:9;29583:17;29576:47;29640:131;29766:4;29640:131;:::i;:::-;29632:139;;29359:419;;;:::o;29784:228::-;29924:34;29920:1;29912:6;29908:14;29901:58;29993:11;29988:2;29980:6;29976:15;29969:36;29784:228;:::o;30018:366::-;30160:3;30181:67;30245:2;30240:3;30181:67;:::i;:::-;30174:74;;30257:93;30346:3;30257:93;:::i;:::-;30375:2;30370:3;30366:12;30359:19;;30018:366;;;:::o;30390:419::-;30556:4;30594:2;30583:9;30579:18;30571:26;;30643:9;30637:4;30633:20;30629:1;30618:9;30614:17;30607:47;30671:131;30797:4;30671:131;:::i;:::-;30663:139;;30390:419;;;:::o;30815:221::-;30955:34;30951:1;30943:6;30939:14;30932:58;31024:4;31019:2;31011:6;31007:15;31000:29;30815:221;:::o;31042:366::-;31184:3;31205:67;31269:2;31264:3;31205:67;:::i;:::-;31198:74;;31281:93;31370:3;31281:93;:::i;:::-;31399:2;31394:3;31390:12;31383:19;;31042:366;;;:::o;31414:419::-;31580:4;31618:2;31607:9;31603:18;31595:26;;31667:9;31661:4;31657:20;31653:1;31642:9;31638:17;31631:47;31695:131;31821:4;31695:131;:::i;:::-;31687:139;;31414:419;;;:::o;31839:228::-;31979:34;31975:1;31967:6;31963:14;31956:58;32048:11;32043:2;32035:6;32031:15;32024:36;31839:228;:::o;32073:366::-;32215:3;32236:67;32300:2;32295:3;32236:67;:::i;:::-;32229:74;;32312:93;32401:3;32312:93;:::i;:::-;32430:2;32425:3;32421:12;32414:19;;32073:366;;;:::o;32445:419::-;32611:4;32649:2;32638:9;32634:18;32626:26;;32698:9;32692:4;32688:20;32684:1;32673:9;32669:17;32662:47;32726:131;32852:4;32726:131;:::i;:::-;32718:139;;32445:419;;;:::o;32870:194::-;32910:4;32930:20;32948:1;32930:20;:::i;:::-;32925:25;;32964:20;32982:1;32964:20;:::i;:::-;32959:25;;33008:1;33005;33001:9;32993:17;;33032:1;33026:4;33023:11;33020:37;;;33037:18;;:::i;:::-;33020:37;32870:194;;;;:::o;33070:225::-;33210:34;33206:1;33198:6;33194:14;33187:58;33279:8;33274:2;33266:6;33262:15;33255:33;33070:225;:::o;33301:366::-;33443:3;33464:67;33528:2;33523:3;33464:67;:::i;:::-;33457:74;;33540:93;33629:3;33540:93;:::i;:::-;33658:2;33653:3;33649:12;33642:19;;33301:366;;;:::o;33673:419::-;33839:4;33877:2;33866:9;33862:18;33854:26;;33926:9;33920:4;33916:20;33912:1;33901:9;33897:17;33890:47;33954:131;34080:4;33954:131;:::i;:::-;33946:139;;33673:419;;;:::o;34098:147::-;34199:11;34236:3;34221:18;;34098:147;;;;:::o;34251:114::-;;:::o;34371:398::-;34530:3;34551:83;34632:1;34627:3;34551:83;:::i;:::-;34544:90;;34643:93;34732:3;34643:93;:::i;:::-;34761:1;34756:3;34752:11;34745:18;;34371:398;;;:::o;34775:379::-;34959:3;34981:147;35124:3;34981:147;:::i;:::-;34974:154;;35145:3;35138:10;;34775:379;;;:::o;35160:180::-;35208:77;35205:1;35198:88;35305:4;35302:1;35295:15;35329:4;35326:1;35319:15;35346:143;35403:5;35434:6;35428:13;35419:22;;35450:33;35477:5;35450:33;:::i;:::-;35346:143;;;;:::o;35495:351::-;35565:6;35614:2;35602:9;35593:7;35589:23;35585:32;35582:119;;;35620:79;;:::i;:::-;35582:119;35740:1;35765:64;35821:7;35812:6;35801:9;35797:22;35765:64;:::i;:::-;35755:74;;35711:128;35495:351;;;;:::o;35852:85::-;35897:7;35926:5;35915:16;;35852:85;;;:::o;35943:158::-;36001:9;36034:61;36052:42;36061:32;36087:5;36061:32;:::i;:::-;36052:42;:::i;:::-;36034:61;:::i;:::-;36021:74;;35943:158;;;:::o;36107:147::-;36202:45;36241:5;36202:45;:::i;:::-;36197:3;36190:58;36107:147;;:::o;36260:114::-;36327:6;36361:5;36355:12;36345:22;;36260:114;;;:::o;36380:184::-;36479:11;36513:6;36508:3;36501:19;36553:4;36548:3;36544:14;36529:29;;36380:184;;;;:::o;36570:132::-;36637:4;36660:3;36652:11;;36690:4;36685:3;36681:14;36673:22;;36570:132;;;:::o;36708:108::-;36785:24;36803:5;36785:24;:::i;:::-;36780:3;36773:37;36708:108;;:::o;36822:179::-;36891:10;36912:46;36954:3;36946:6;36912:46;:::i;:::-;36990:4;36985:3;36981:14;36967:28;;36822:179;;;;:::o;37007:113::-;37077:4;37109;37104:3;37100:14;37092:22;;37007:113;;;:::o;37156:732::-;37275:3;37304:54;37352:5;37304:54;:::i;:::-;37374:86;37453:6;37448:3;37374:86;:::i;:::-;37367:93;;37484:56;37534:5;37484:56;:::i;:::-;37563:7;37594:1;37579:284;37604:6;37601:1;37598:13;37579:284;;;37680:6;37674:13;37707:63;37766:3;37751:13;37707:63;:::i;:::-;37700:70;;37793:60;37846:6;37793:60;:::i;:::-;37783:70;;37639:224;37626:1;37623;37619:9;37614:14;;37579:284;;;37583:14;37879:3;37872:10;;37280:608;;;37156:732;;;;:::o;37894:831::-;38157:4;38195:3;38184:9;38180:19;38172:27;;38209:71;38277:1;38266:9;38262:17;38253:6;38209:71;:::i;:::-;38290:80;38366:2;38355:9;38351:18;38342:6;38290:80;:::i;:::-;38417:9;38411:4;38407:20;38402:2;38391:9;38387:18;38380:48;38445:108;38548:4;38539:6;38445:108;:::i;:::-;38437:116;;38563:72;38631:2;38620:9;38616:18;38607:6;38563:72;:::i;:::-;38645:73;38713:3;38702:9;38698:19;38689:6;38645:73;:::i;:::-;37894:831;;;;;;;;:::o

Swarm Source

ipfs://77fd976aa2b52f2dd5bee44155e1c20673266eef6c545aa65b7a3e92a0847413

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.