S Price: $0.714902 (-1.74%)

Contract

0xe5A372d4cf1E2ba5233A4B608cB9b083fB866499

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Take All Funds101595212025-02-25 22:54:1029 hrs ago1740524050IN
0xe5A372d4...3fB866499
0 S0.00194355.01
User Emergency W...101594852025-02-25 22:53:5829 hrs ago1740524038IN
0xe5A372d4...3fB866499
0 S0.0028583755.01
Emergency Withdr...101594682025-02-25 22:53:5329 hrs ago1740524033IN
0xe5A372d4...3fB866499
0 S0.0084306155.01
_recover Sonic F...101587592025-02-25 22:49:3729 hrs ago1740523777IN
0xe5A372d4...3fB866499
0 S0.0095478155.01
_get Rewards101586742025-02-25 22:49:0429 hrs ago1740523744IN
0xe5A372d4...3fB866499
0 S0.0114254860.5
Compound101584822025-02-25 22:47:5929 hrs ago1740523679IN
0xe5A372d4...3fB866499
0 S0.2193286755.08
Deposit101564702025-02-25 22:36:3529 hrs ago1740522995IN
0xe5A372d4...3fB866499
0 S0.017547456.19
Add Funds101564062025-02-25 22:36:1429 hrs ago1740522974IN
0xe5A372d4...3fB866499
2 S0.0013566555.01

Latest 7 internal transactions

Parent Transaction Hash Block From To
101595212025-02-25 22:54:1029 hrs ago1740524050
0xe5A372d4...3fB866499
2.00071406 S
101587592025-02-25 22:49:3729 hrs ago1740523777
0xe5A372d4...3fB866499
0.0021422 S
101586742025-02-25 22:49:0429 hrs ago1740523744
0xe5A372d4...3fB866499
1.99857186 S
101586742025-02-25 22:49:0429 hrs ago1740523744
0xe5A372d4...3fB866499
2 S
101584822025-02-25 22:47:5929 hrs ago1740523679
0xe5A372d4...3fB866499
0.00195623 S
101584822025-02-25 22:47:5929 hrs ago1740523679
0xe5A372d4...3fB866499
1.99869584 S
101584822025-02-25 22:47:5929 hrs ago1740523679
0xe5A372d4...3fB866499
2 S
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vault

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-02-25
*/

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

abstract contract ReentrancyGuard {
    uint256 private constant NOT_ENTERED = 1;
    uint256 private constant ENTERED = 2;

    uint256 private _status;

    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    receive() external payable {}

    fallback() external payable {}

    function _nonReentrantBefore() private {
        if (_status == ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        _status = ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = NOT_ENTERED;
    }

    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == ENTERED;
    }
}

contract Vault is ReentrancyGuard {
    ISnakePool public pool;
    IRouter public router;
    IOracle public gsnakeOracle;
    IERC20 public token0;
    IERC20 public token1;
    IERC20 public stakeToken;
    IERC20 public rewardToken;
    IERC20 public wrappedSonic;
    address private treasury;
    address private owner;
    bool public active = true;
    bool public emergencyWithdrawn = false;
    uint256 public depositFee = 2;
    uint256 public vaultFee;
    uint256 private lpPerTicket;
    uint256 public totalTickets;
    uint256 public compoundedAt;
    uint256 public snakePoolId;

    mapping(address => uint256) public userTickets; // Number of tickets per user

    event Deposit(address indexed user, uint256 amount, uint256 tickets);
    event Withdraw(address indexed user, uint256 amount);
    event Compound(uint256 rewardAmount, uint256 lpAmount);
    event ActiveStatusChanged(bool newStatus);

    constructor(
        address _treasury,
        uint256 _vaultFee,
        address _pool,
        address _router,
        address _gsnakeOracle,
        IERC20 _stakeToken,
        IERC20 _rewardToken,
        IERC20 _token0,
        IERC20 _token1,
        uint256 _snakePoolId
    ) {
        treasury = _treasury;
        vaultFee = _vaultFee;
        pool = ISnakePool(_pool);
        router = IRouter(_router);
        gsnakeOracle = IOracle(_gsnakeOracle);
        stakeToken = _stakeToken;
        rewardToken = _rewardToken;
        owner = msg.sender;
        lpPerTicket = 1e18;
        token0 = _token0;
        token1 = _token1;
        wrappedSonic = IERC20(0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38);
        snakePoolId = _snakePoolId;

        require(_vaultFee <= 100, "Invalid fee distribution");

        rewardToken.approve(address(router), type(uint256).max);
        token0.approve(address(router), type(uint256).max);
        token1.approve(address(router), type(uint256).max);
        stakeToken.approve(address(pool), type(uint256).max);
    }

    modifier whenActive() {
        require(active, "Vault is not active");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Not the owner");
        _;
    }

    function toggleActive() external onlyOwner {
        active = !active;
        emit ActiveStatusChanged(active);
    }

    function _swapRewardToSonic(uint256 rewardAmountIn) public returns (uint256 sonicReceived) {
        IRouter.route[] memory path = new IRouter.route[](1);
        path[0] = IRouter.route(address(rewardToken), address(wrappedSonic), false);

        uint[] memory amounts = router.swapExactTokensForTokens(
            rewardAmountIn,
            1,
            path,
            address(this),
            block.timestamp
        );
        uint256 wrappedSonicReceived = amounts[amounts.length - 1];

        IWETH(address(wrappedSonic)).withdraw(wrappedSonicReceived);

        sonicReceived = wrappedSonicReceived;
    }

    function _harvest() internal returns (uint256) {
        require(address(this).balance > 0, "No funds to harvest");
        require(pool.pendingShareAndPendingRewards(snakePoolId, address(this)) > pool.minClaimThreshold(), "No rewards to harvest");

        uint256 balanceBefore = address(this).balance;
        pool.harvest{value: balanceBefore}(snakePoolId);
        uint256 balanceAfter = address(this).balance;

        return balanceBefore - balanceAfter;
    }

    function _getRewards() public returns (uint256 feePaid, uint256 rewards) {
        uint256 amountSonicToPay = _harvest();

        feePaid = amountSonicToPay;
        rewards = rewardToken.balanceOf(address(this));
    }

    function _swapToken0ForToken1(uint256 amount) public returns (uint256 token1Received) {
        require(amount > 0, "No token0 to swap");
        IRouter.route[] memory path = new IRouter.route[](1);
        path[0] = IRouter.route(address(token0), address(token1), true);
        router.swapExactTokensForTokens(
            amount,
            1,
            path,
            address(this),
            block.timestamp
        );
        token1Received = token1.balanceOf(address(this));
    }

    function _swapToken1ForToken0(uint256 amount) public returns (uint256 token0Received) {
        require(amount > 0, "No token1 to swap");
        IRouter.route[] memory path = new IRouter.route[](1);
        path[0] = IRouter.route(address(token1), address(token0), true);
        router.swapExactTokensForTokens(
            amount,
            1,
            path,
            address(this),
            block.timestamp
        );
        token0Received = token0.balanceOf(address(this));
    }

    function _swapLPToToken0(uint256 rewardAmount) internal returns (uint256) {
        require(rewardAmount > 0, "No token to swap");

        IRouter.route[] memory path = new IRouter.route[](1);
        path[0] = IRouter.route(address(rewardToken), address(token0), false);
        router.swapExactTokensForTokens(
            rewardAmount,
            1,
            path,
            address(this),
            block.timestamp
        );

        return token0.balanceOf(address(this));
    }

    function _swapLPToToken1(uint256 rewardAmount) internal returns (uint256) {
        require(rewardAmount > 0, "No token to swap");

        IRouter.route[] memory path = new IRouter.route[](2);
        path[0] = IRouter.route(address(rewardToken), address(token0), false);
        path[1] = IRouter.route(address(token0), address(token1), true);
        router.swapExactTokensForTokens(
            rewardAmount,
            1,
            path,
            address(this),
            block.timestamp
        );

        return token1.balanceOf(address(this));
    }

    function _addLiquidity() public returns (uint256) {
        uint256 token0Balance = IERC20(token0).balanceOf(address(this));
        uint256 token1Balance = IERC20(token1).balanceOf(address(this));

        // add liquidity
        require(token0Balance > 0, "Insufficient balance for Token0 to provide liquidity");
        require(token1Balance > 0, "Insufficient balance for Token1 to provide liquidity");
        router.addLiquidity(
            address(token0),
            address(token1),
            true,
            token0Balance,
            token1Balance,
            1,
            1,
            address(this),
            block.timestamp
        );

        return IERC20(stakeToken).balanceOf(address(this));
    }

    function _recoverSonicFee(uint256 feePaid) public returns (uint256, uint256) {
        uint256 requiredSonic = (feePaid * 150) / 100;

        IRouter.route[] memory path = new IRouter.route[](1);
        path[0] = IRouter.route(address(rewardToken), address(wrappedSonic), false);
        uint256[] memory amountsIn = router.getAmountsIn(requiredSonic, path);
        uint256 rewardTokensForSonic = amountsIn[0];

        uint256 sonicReceived = _swapRewardToSonic(rewardTokensForSonic);
        require(sonicReceived >= requiredSonic, "Insufficient sonic received from swap");

        return (sonicReceived, rewardTokensForSonic);
    }

    function addLeftoverLiquidity() external onlyOwner nonReentrant {
        uint256 token0Bal = token0.balanceOf(address(this));
        uint256 token1Bal = token1.balanceOf(address(this));
        require(token0Bal > 0 || token1Bal > 0, "No leftovers to add liquidity");

        (uint256 optimalToken0, uint256 optimalToken1, ) = router.quoteAddLiquidity(
            address(token0),
            address(token1),
            true,
            token0Bal,
            token1Bal
        );

        if (token0Bal > optimalToken0) {
            uint256 excessToken0 = token0Bal - optimalToken0;
            _swapToken0ForToken1(excessToken0);
        } else if (token1Bal > optimalToken1) {
            uint256 excessToken1 = token1Bal - optimalToken1;
            _swapToken1ForToken0(excessToken1);
        }

        uint256 stakeAmount = _addLiquidity();
        require(stakeAmount > 0, "No LP tokens received");

        if (stakeToken.balanceOf(address(this)) > 0) {
            _innerDeposit();
        }
    }

    function _updateVault() public returns (uint256) {
        uint256 totalLp = totalDeposits();
        uint256 netRewardTokens = 0;

        if (totalTickets > 0 && totalLp > 0) {
            uint256 rewardAmount = 0;
            uint256 feePaid = 0;
            if (pool.pendingShareAndPendingRewards(snakePoolId, address(this)) > pool.minClaimThreshold()) {
                (feePaid, rewardAmount) = _getRewards();
            }
            if (rewardAmount > 0) {
                (, uint256 rewardTokensForSonic) = _recoverSonicFee(feePaid);

                uint256 remainingReward = rewardAmount - rewardTokensForSonic;
                uint256 compoundAmount = (remainingReward * vaultFee) / 1000;
                rewardToken.transfer(treasury, compoundAmount);
                remainingReward = remainingReward - compoundAmount;

                (uint112 reserve0, uint112 reserve1, ) = IPair(address(stakeToken)).getReserves();

                uint256 rewardForToken0 = (remainingReward * uint256(reserve0)) / (uint256(reserve0) + uint256(reserve1));
                uint256 rewardForToken1 = remainingReward - rewardForToken0;

                uint256 token0Amount = _swapLPToToken0(rewardForToken0);
                //uint256 token1Amount = _swapLPToToken1(rewardForToken1);
                uint256 token1Amount = rewardForToken1;

                (uint256 optimalToken0, uint256 optimalToken1, ) = router.quoteAddLiquidity(
                    address(token0),
                    address(token1),
                    true,
                    token0Amount,
                    token1Amount
                );

                if (token0Amount > optimalToken0) {
                    uint256 excessToken0 = token0Amount - optimalToken0;
                    _swapToken0ForToken1(excessToken0);
                } else if (token1Amount > optimalToken1) {
                    uint256 excessToken1 = token1Amount - optimalToken1;
                    _swapToken1ForToken0(excessToken1);
                }

                uint256 stakeAmount = _addLiquidity();
                require(stakeAmount > 0, "No LP tokens received");

                _innerDeposit();
                compoundedAt = block.timestamp;

                netRewardTokens = remainingReward;
            }
        }
        return netRewardTokens;
    }

    function _innerDeposit() public returns (uint256) {
        uint256 lpAmount = stakeToken.balanceOf(address(this));
        if (lpAmount > 0) {
            pool.deposit(snakePoolId, lpAmount);

            uint256 totalDeps = totalDeposits();
            lpPerTicket = (totalDeps * 1e18) / totalTickets;
        }

        return lpPerTicket;
    }

    function _withdraw(uint256 amount) internal {
        if (totalTickets != 0) {
            _updateVault();
        }

        uint256 tickets = userTickets[msg.sender];
        require(tickets > 0, "No tickets to withdraw");

        uint256 userLp = (tickets * lpPerTicket) / 1e18;
        require(userLp >= amount, "Insufficient balance");

        uint256 withdrawTickets = (amount * 1e18) / lpPerTicket;
        userTickets[msg.sender] -= withdrawTickets;
        totalTickets -= withdrawTickets;

        pool.withdraw(snakePoolId, amount);
        stakeToken.transfer(msg.sender, amount);

        emit Withdraw(msg.sender, amount);
    }

    function deposit(uint256 amount) external nonReentrant whenActive {
        if (totalTickets != 0) {
            _updateVault();
        }

        stakeToken.transferFrom(msg.sender, address(this), amount);

        uint256 fee = (amount * depositFee) / 1000;
        stakeToken.transfer(treasury, fee);
        amount -= fee;

        (uint256 amountBefore,) = pool.userInfo(snakePoolId, address(this));
        pool.deposit(snakePoolId, amount);
        (uint256 amountAfter ,) = pool.userInfo(snakePoolId, address(this));

        uint256 depositedAmount = amountAfter - amountBefore;
        uint256 tickets = (depositedAmount * 1e18) / lpPerTicket;
        userTickets[msg.sender] += tickets;
        totalTickets += tickets;

        emit Deposit(msg.sender, depositedAmount, tickets);
    }

    function withdraw(uint256 amount) external nonReentrant {
        require(!emergencyWithdrawn, "Use userEmergencyWithdraw instead");
        _withdraw(amount);
    }

    function withdrawAll() external nonReentrant {
        require(!emergencyWithdrawn, "Use userEmergencyWithdraw instead");
        uint256 tickets = userTickets[msg.sender];
        uint256 userLp = (tickets * lpPerTicket) / 1e18;
        _withdraw(userLp);
    }

    function userEmergencyWithdraw() external nonReentrant {
        require(emergencyWithdrawn, "Emergency withdraw not enabled");
        uint256 tickets = userTickets[msg.sender];
        if (tickets == 0) return;

        uint256 userLp = (tickets * lpPerTicket) / 1e18;
        userTickets[msg.sender] = 0;
        totalTickets -= tickets;

        stakeToken.transfer(msg.sender, userLp);

        emit Withdraw(msg.sender, userLp);
    }

    function emergencyWithdraw() external onlyOwner nonReentrant {
        pool.emergencyWithdraw(snakePoolId);
        emergencyWithdrawn = true;
        active = false;

        emit ActiveStatusChanged(active);
    }

    function compound() external whenActive {
        uint256 rewards = _updateVault();
        require(rewards > 0, "No rewards to compound");

        emit Compound(rewardToken.balanceOf(address(this)), rewards);
    }

    function totalDeposits() public view returns (uint256) {
        (uint256 amount,) = pool.userInfo(snakePoolId, address(this));
        return amount;
    }

    function lpForUser(address _user) external view returns (uint256) {
        uint256 tickets = userTickets[_user];
        if (tickets == 0) return 0;

        uint256 _lpPerTicket = lpPerTicket;
        uint256 totalLp = totalDeposits();
        if (totalTickets > 0 && totalLp > 0) {
            uint256 rewardAmount = rewardToken.balanceOf(address(this));
            if (rewardAmount > 0) {
                _lpPerTicket += (rewardAmount * 1e18) / totalTickets;
            }
        }

        return (tickets * _lpPerTicket) / 1e18;
    }

    function addFunds() external payable onlyOwner {
        require(msg.value > 0, "No funds sent");
    }

    function takeFunds(uint256 amount) external onlyOwner nonReentrant {
        require(address(this).balance >= amount, "Insufficient balance");

        (bool sent, ) = payable(owner).call{value: amount}("");
        require(sent, "Transfer failed");
    }

    function takeAllFunds() external onlyOwner nonReentrant {
        uint256 balance = address(this).balance;
        require(balance > 0, "No funds available");

        (bool sent, ) = payable(owner).call{value: balance}("");
        require(sent, "Transfer failed");
    }
}

interface ISnakePool {
    function deposit(uint _pid, uint _amount) external;
    function withdraw(uint _pid, uint _amount) external;
    function emergencyWithdraw(uint _pid) external;
    function harvest(uint _pid) payable external;
    function harvestAll() payable external;

    function userInfo(uint256 _pid, address _user) external view returns (uint256 amount, uint256 rewardDebt);
    function poolInfo(uint256 _pid) external view returns (ISnakePool.PoolInfo memory);
    function pendingRewards(uint256 _pid, address _user) external view returns (uint256);
    function pendingShareAndPendingRewards(uint _pid, address _user) external view returns (uint256);
    function minClaimThreshold() external view returns (uint256);
    function pegStabilityModuleFeeEnabled() external view returns (bool);
    function pegStabilityModuleFee() external view returns (uint256);

    enum GaugeDex {
        NONE,
        SHADOW,
        SWAPX
    }

    struct GaugeInfo {
        bool isGauge;   // If this is a gauge
        address gauge;  // The gauge
        GaugeDex gaugeDex; // Dex of the gauge
    }

    struct PoolInfo {
        IERC20 token; // Address of LP token contract.
        uint256 depFee; // deposit fee that is applied to created pool.
        uint256 allocPoint; // How many allocation points assigned to this pool. GSNAKEs to distribute per block.
        uint256 lastRewardTime; // Last time that GSNAKEs distribution occurs.
        uint256 accGsnakePerShare; // Accumulated GSNAKEs per share, times 1e18. See below.
        bool isStarted; // if lastRewardTime has passed
        GaugeInfo gaugeInfo; // Gauge info (does this pool have a gauge and where is it)
        uint256 poolGsnakePerSec; // rewards per second for pool (acts as allocPoint)
    }
}

interface IOracle {
    function update() external;
    function consult(address _token, uint256 _amountIn) external view returns (uint256 amountOut);
    function twap(address _token, uint256 _amountIn) external view returns (uint256 _amountOut);
}

interface IRouter {
    struct route {
        address from;
        address to;
        bool stable;
    }

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

    function getAmountsIn(
        uint256 amountOut,
        route[] memory routes
    ) external returns (
        uint256[] memory amounts
    );

    function quoteAddLiquidity(
        address tokenA,
        address tokenB,
        bool stable,
        uint256 amountADesired,
        uint256 amountBDesired
    ) external view returns (
        uint256 amountA,
        uint256 amountB,
        uint256 liquidity
    );

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        route[] memory routes,
        address to,
        uint256 deadline
    ) external;
}

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

interface IWETH is IERC20 {
    function withdraw(uint256 wad) external;
}

interface IPair {
    function getReserves()
    external
    view
    returns (
        uint112 _reserve0,
        uint112 _reserve1,
        uint32 _blockTimestampLast
    );
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_vaultFee","type":"uint256"},{"internalType":"address","name":"_pool","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_gsnakeOracle","type":"address"},{"internalType":"contract IERC20","name":"_stakeToken","type":"address"},{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"contract IERC20","name":"_token0","type":"address"},{"internalType":"contract IERC20","name":"_token1","type":"address"},{"internalType":"uint256","name":"_snakePoolId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"}],"name":"ActiveStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpAmount","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tickets","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_addLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_getRewards","outputs":[{"internalType":"uint256","name":"feePaid","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_innerDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feePaid","type":"uint256"}],"name":"_recoverSonicFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardAmountIn","type":"uint256"}],"name":"_swapRewardToSonic","outputs":[{"internalType":"uint256","name":"sonicReceived","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_swapToken0ForToken1","outputs":[{"internalType":"uint256","name":"token1Received","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_swapToken1ForToken0","outputs":[{"internalType":"uint256","name":"token0Received","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_updateVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"active","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addFunds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"addLeftoverLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compoundedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdrawn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gsnakeOracle","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"lpForUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"contract ISnakePool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snakePoolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeAllFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"takeFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"userEmergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wrappedSonic","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506002600b553480156200004c57600080fd5b5060405162005de438038062005de4833981810160405281019062000072919062000816565b600160008190555089600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600c8190555087600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a7640000600d8190555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073039e2fb66102314ce7b64ce5ce3e5183bc94ad38600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060108190555060648911156200037c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000373906200096d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200041d929190620009b1565b6020604051808303816000875af11580156200043d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000463919062000a1b565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040162000505929190620009b1565b6020604051808303816000875af115801562000525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054b919062000a1b565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620005ed929190620009b1565b6020604051808303816000875af11580156200060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000633919062000a1b565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620006d5929190620009b1565b6020604051808303816000875af1158015620006f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200071b919062000a1b565b505050505050505050505062000a4d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200075e8262000731565b9050919050565b620007708162000751565b81146200077c57600080fd5b50565b600081519050620007908162000765565b92915050565b6000819050919050565b620007ab8162000796565b8114620007b757600080fd5b50565b600081519050620007cb81620007a0565b92915050565b6000620007de8262000751565b9050919050565b620007f081620007d1565b8114620007fc57600080fd5b50565b6000815190506200081081620007e5565b92915050565b6000806000806000806000806000806101408b8d0312156200083d576200083c6200072c565b5b60006200084d8d828e016200077f565b9a50506020620008608d828e01620007ba565b9950506040620008738d828e016200077f565b9850506060620008868d828e016200077f565b9750506080620008998d828e016200077f565b96505060a0620008ac8d828e01620007ff565b95505060c0620008bf8d828e01620007ff565b94505060e0620008d28d828e01620007ff565b935050610100620008e68d828e01620007ff565b925050610120620008fa8d828e01620007ba565b9150509295989b9194979a5092959850565b600082825260208201905092915050565b7f496e76616c69642066656520646973747269627574696f6e0000000000000000600082015250565b6000620009556018836200090c565b915062000962826200091d565b602082019050919050565b60006020820190508181036000830152620009888162000946565b9050919050565b6200099a8162000751565b82525050565b620009ab8162000796565b82525050565b6000604082019050620009c860008301856200098f565b620009d76020830184620009a0565b9392505050565b60008115159050919050565b620009f581620009de565b811462000a0157600080fd5b50565b60008151905062000a1581620009ea565b92915050565b60006020828403121562000a345762000a336200072c565b5b600062000a448482850162000a04565b91505092915050565b6153878062000a5d6000396000f3fe60806040526004361061021e5760003560e01c80637d88209711610123578063d21220a7116100ab578063edae9b071161006f578063edae9b0714610758578063f69e204614610795578063f7c618c1146107ac578063f887ea40146107d7578063ff77cce41461080257610225565b8063d21220a714610694578063db2e21bc146106bf578063dd11247e146106d6578063dd94369d14610701578063e28701ee1461072d57610225565b8063a955c7a7116100f2578063a955c7a7146105c1578063b6b55f25146105d8578063b7d122a914610601578063ce75d5651461063e578063cf177bae1461066957610225565b80637d8820971461053857806380017f4e14610563578063853828b6146105a0578063a26759cb146105b757610225565b80632beddd35116101a6578063515464c511610175578063515464c51461045057806351ed6a301461047b57806354098bac146104a657806367a52793146104e45780636b527c0c1461050f57610225565b80632beddd35146103825780632e1a7d4d146103bf578063376bb708146103e8578063395d33841461042557610225565b80630f032450116101ed5780630f032450146102d357806316f0115b146102ea578063229a6663146103155780632760f89b1461034057806329c68dc11461036b57610225565b80630169050d1461022757806301ac145b1461025257806302fb0c5e1461027d5780630dfe1681146102a857610225565b3661022557005b005b34801561023357600080fd5b5061023c610819565b6040516102499190613ea4565b60405180910390f35b34801561025e57600080fd5b5061026761081f565b6040516102749190613ea4565b60405180910390f35b34801561028957600080fd5b50610292610825565b60405161029f9190613eda565b60405180910390f35b3480156102b457600080fd5b506102bd610838565b6040516102ca9190613f74565b60405180910390f35b3480156102df57600080fd5b506102e861085e565b005b3480156102f657600080fd5b506102ff610a86565b60405161030c9190613fb0565b60405180910390f35b34801561032157600080fd5b5061032a610aac565b6040516103379190613ea4565b60405180910390f35b34801561034c57600080fd5b50610355610c25565b6040516103629190613fec565b60405180910390f35b34801561037757600080fd5b50610380610c4b565b005b34801561038e57600080fd5b506103a960048036038101906103a49190614059565b610d4d565b6040516103b69190613ea4565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e191906140b2565b610ed2565b005b3480156103f457600080fd5b5061040f600480360381019061040a91906140b2565b610f3e565b60405161041c9190613ea4565b60405180910390f35b34801561043157600080fd5b5061043a6111d9565b6040516104479190613ea4565b60405180910390f35b34801561045c57600080fd5b5061046561153a565b6040516104729190613ea4565b60405180910390f35b34801561048757600080fd5b50610490611540565b60405161049d9190613f74565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c891906140b2565b611566565b6040516104db9291906140df565b60405180910390f35b3480156104f057600080fd5b506104f96117b5565b6040516105069190613ea4565b60405180910390f35b34801561051b57600080fd5b50610536600480360381019061053191906140b2565b6117bb565b005b34801561054457600080fd5b5061054d611970565b60405161055a9190613ea4565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190614059565b611a1c565b6040516105979190613ea4565b60405180910390f35b3480156105ac57600080fd5b506105b5611a34565b005b6105bf611b0a565b005b3480156105cd57600080fd5b506105d6611bdf565b005b3480156105e457600080fd5b506105ff60048036038101906105fa91906140b2565b61204f565b005b34801561060d57600080fd5b50610628600480360381019061062391906140b2565b61252a565b6040516106359190613ea4565b60405180910390f35b34801561064a57600080fd5b506106536127c5565b6040516106609190613f74565b60405180910390f35b34801561067557600080fd5b5061067e6127eb565b60405161068b9190613ea4565b60405180910390f35b3480156106a057600080fd5b506106a9612d3b565b6040516106b69190613f74565b60405180910390f35b3480156106cb57600080fd5b506106d4612d61565b005b3480156106e257600080fd5b506106eb612f0e565b6040516106f89190613ea4565b60405180910390f35b34801561070d57600080fd5b50610716612f14565b6040516107249291906140df565b60405180910390f35b34801561073957600080fd5b50610742612fc9565b60405161074f9190613eda565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a91906140b2565b612fdc565b60405161078c9190613ea4565b60405180910390f35b3480156107a157600080fd5b506107aa613257565b005b3480156107b857600080fd5b506107c16133cc565b6040516107ce9190613f74565b60405180910390f35b3480156107e357600080fd5b506107ec6133f2565b6040516107f99190614129565b60405180910390f35b34801561080e57600080fd5b50610817613418565b005b600f5481565b600c5481565b600a60149054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108666135d2565b600a60159054906101000a900460ff166108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac906141a1565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036109075750610a7c565b6000670de0b6b3a7640000600d548361092091906141f0565b61092a9190614279565b90506000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600e600082825461098391906142aa565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016109e79291906142ed565b6020604051808303816000875af1158015610a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2a9190614342565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436482604051610a719190613ea4565b60405180910390a250505b610a84613618565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b0a919061436f565b602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b919061439f565b90506000811115610c1c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054836040518363ffffffff1660e01b8152600401610bb59291906140df565b600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050506000610bf1611970565b9050600e54670de0b6b3a764000082610c0a91906141f0565b610c149190614279565b600d81905550505b600d5491505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290614418565b60405180910390fd5b600a60149054906101000a900460ff1615600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff16604051610d439190613eda565b60405180910390a1565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610da4576000915050610ecd565b6000600d5490506000610db5611970565b90506000600e54118015610dc95750600081115b15610ea8576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e2b919061436f565b602060405180830381865afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c919061439f565b90506000811115610ea657600e54670de0b6b3a764000082610e8e91906141f0565b610e989190614279565b83610ea39190614438565b92505b505b670de0b6b3a76400008284610ebd91906141f0565b610ec79190614279565b93505050505b919050565b610eda6135d2565b600a60159054906101000a900460ff1615610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190614500565b60405180910390fd5b610f3381613622565b610f3b613618565b50565b6000808211610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f799061456c565b60405180910390fd5b6000600167ffffffffffffffff811115610f9f57610f9e61458c565b5b604051908082528060200260200182016040528015610fd857816020015b610fc5613e3c565b815260200190600190039081610fbd5790505b5090506040518060600160405280600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600115158152508160008151811061107d5761107c6145bb565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016110ec959493929190614734565b6000604051808303816000875af115801561110b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061113491906148b8565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611190919061436f565b602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d1919061439f565b915050919050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611237919061436f565b602060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611278919061439f565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d7919061436f565b602060405180830381865afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611318919061439f565b90506000821161135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490614973565b60405180910390fd5b600081116113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790614a05565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a47ddc3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001868660018030426040518a63ffffffff1660e01b815260040161145199989796959493929190614a25565b6060604051808303816000875af1158015611470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114949190614ab2565b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114f2919061436f565b602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611533919061439f565b9250505090565b60105481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000606460968561157a91906141f0565b6115849190614279565b90506000600167ffffffffffffffff8111156115a3576115a261458c565b5b6040519080825280602002602001820160405280156115dc57816020015b6115c9613e3c565b8152602001906001900390816115c15790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525081600081518110611681576116806145bb565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5c54e3384846040518363ffffffff1660e01b81526004016116eb929190614b05565b6000604051808303816000875af115801561170a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061173391906148b8565b905060008160008151811061174b5761174a6145bb565b5b60200260200101519050600061176082612fdc565b9050848110156117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90614ba7565b60405180910390fd5b8082965096505050505050915091565b600b5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290614418565b60405180910390fd5b6118536135d2565b80471015611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d90614c13565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516118de90614c64565b60006040518083038185875af1925050503d806000811461191b576040519150601f19603f3d011682016040523d82523d6000602084013e611920565b606091505b5050905080611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90614cc5565b60405180910390fd5b5061196d613618565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016119d2929190614ce5565b6040805180830381865afa1580156119ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a129190614d0e565b5090508091505090565b60116020528060005260406000206000915090505481565b611a3c6135d2565b600a60159054906101000a900460ff1615611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614500565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000670de0b6b3a7640000600d5483611ae991906141f0565b611af39190614279565b9050611afe81613622565b5050611b08613618565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614418565b60405180910390fd5b60003411611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614d9a565b60405180910390fd5b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6690614418565b60405180910390fd5b611c776135d2565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cd4919061436f565b602060405180830381865afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d15919061439f565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d74919061436f565b602060405180830381865afa158015611d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db5919061439f565b90506000821180611dc65750600081115b611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90614e06565b60405180910390fd5b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b8152600401611eb0959493929190614e26565b606060405180830381865afa158015611ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef19190614ab2565b509150915081841115611f1e5760008285611f0c91906142aa565b9050611f1781610f3e565b5050611f43565b80831115611f425760008184611f3491906142aa565b9050611f3f8161252a565b50505b5b6000611f4d6111d9565b905060008111611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614ec5565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fef919061436f565b602060405180830381865afa15801561200c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612030919061439f565b11156120405761203e610aac565b505b505050505061204d613618565b565b6120576135d2565b600a60149054906101000a900460ff166120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90614f31565b60405180910390fd5b6000600e54146120ba576120b86127eb565b505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161211993929190614f51565b6020604051808303816000875af1158015612138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215c9190614342565b5060006103e8600b548361217091906141f0565b61217a9190614279565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016121fb9291906142ed565b6020604051808303816000875af115801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190614342565b50808261224b91906142aa565b91506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016122ae929190614ce5565b6040805180830381865afa1580156122ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ee9190614d0e565b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054856040518363ffffffff1660e01b81526004016123509291906140df565b600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016123e3929190614ce5565b6040805180830381865afa1580156123ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124239190614d0e565b5090506000828261243491906142aa565b90506000600d54670de0b6b3a76400008361244f91906141f0565b6124599190614279565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124aa9190614438565b9250508190555080600e60008282546124c39190614438565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1583836040516125129291906140df565b60405180910390a25050505050612527613618565b50565b600080821161256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614fd4565b60405180910390fd5b6000600167ffffffffffffffff81111561258b5761258a61458c565b5b6040519080825280602002602001820160405280156125c457816020015b6125b1613e3c565b8152602001906001900390816125a95790505b5090506040518060600160405280600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525081600081518110612669576126686145bb565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016126d8959493929190614734565b6000604051808303816000875af11580156126f7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061272091906148b8565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161277c919061436f565b602060405180830381865afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd919061439f565b915050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806127f6611970565b9050600080600e5411801561280b5750600082115b15612d3357600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a4919061439f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401612903929190614ce5565b602060405180830381865afa158015612920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612944919061439f565b111561295b57612952612f14565b80935081925050505b6000821115612d3057600061296f82611566565b9150506000818461298091906142aa565b905060006103e8600c548361299591906141f0565b61299f9190614279565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612a209291906142ed565b6020604051808303816000875af1158015612a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a639190614342565b508082612a7091906142aa565b9150600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b069190615076565b50915091506000816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612b399190614438565b836dffffffffffffffffffffffffffff1686612b5591906141f0565b612b5f9190614279565b905060008186612b6f91906142aa565b90506000612b7c8361393f565b90506000829050600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b8152600401612c2e959493929190614e26565b606060405180830381865afa158015612c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6f9190614ab2565b509150915081841115612c9c5760008285612c8a91906142aa565b9050612c9581610f3e565b5050612cc1565b80831115612cc05760008184612cb291906142aa565b9050612cbd8161252a565b50505b5b6000612ccb6111d9565b905060008111612d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0790614ec5565b60405180910390fd5b612d18610aac565b5042600f819055508a9e505050505050505050505050505b50505b809250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de890614418565b60405180910390fd5b612df96135d2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635312ea8e6010546040518263ffffffff1660e01b8152600401612e569190613ea4565b600060405180830381600087803b158015612e7057600080fd5b505af1158015612e84573d6000803e3d6000fd5b505050506001600a60156101000a81548160ff0219169083151502179055506000600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff16604051612efc9190613eda565b60405180910390a1612f0c613618565b565b600e5481565b6000806000612f21613bda565b9050809250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f81919061436f565b602060405180830381865afa158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc2919061439f565b9150509091565b600a60159054906101000a900460ff1681565b600080600167ffffffffffffffff811115612ffa57612ff961458c565b5b60405190808252806020026020018201604052801561303357816020015b613020613e3c565b8152602001906001900390816130185790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250816000815181106130d8576130d76145bb565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88560018530426040518663ffffffff1660e01b8152600401613149959493929190614734565b6000604051808303816000875af1158015613168573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061319191906148b8565b9050600081600183516131a491906142aa565b815181106131b5576131b46145bb565b5b60200260200101519050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161321a9190613ea4565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b50505050809350505050919050565b600a60149054906101000a900460ff166132a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329d90614f31565b60405180910390fd5b60006132b06127eb565b9050600081116132f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ec90615115565b60405180910390fd5b7fe3c48e43a3cc80f4a0c194845bdd6091fa19b9bb7d22e515c21e9f177e2e22ae600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613371919061436f565b602060405180830381865afa15801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b2919061439f565b826040516133c19291906140df565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349f90614418565b60405180910390fd5b6134b06135d2565b6000479050600081116134f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ef90615181565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161354090614c64565b60006040518083038185875af1925050503d806000811461357d576040519150601f19603f3d011682016040523d82523d6000602084013e613582565b606091505b50509050806135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd90614cc5565b60405180910390fd5b50506135d0613618565b565b60026000540361360e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b6000600e5414613636576136346127eb565b505b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081116136bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b4906151ed565b60405180910390fd5b6000670de0b6b3a7640000600d54836136d691906141f0565b6136e09190614279565b905082811015613725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371c90614c13565b60405180910390fd5b6000600d54670de0b6b3a76400008561373e91906141f0565b6137489190614279565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461379991906142aa565b9250508190555080600e60008282546137b291906142aa565b92505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663441a3e70601054866040518363ffffffff1660e01b81526004016138189291906140df565b600060405180830381600087803b15801561383257600080fd5b505af1158015613846573d6000803e3d6000fd5b50505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b81526004016138a79291906142ed565b6020604051808303816000875af11580156138c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ea9190614342565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364856040516139319190613ea4565b60405180910390a250505050565b6000808211613983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397a90615259565b60405180910390fd5b6000600167ffffffffffffffff8111156139a05761399f61458c565b5b6040519080825280602002602001820160405280156139d957816020015b6139c6613e3c565b8152602001906001900390816139be5790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525081600081518110613a7e57613a7d6145bb565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b8152600401613aed959493929190614734565b6000604051808303816000875af1158015613b0c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613b3591906148b8565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613b91919061436f565b602060405180830381865afa158015613bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd2919061439f565b915050919050565b6000804711613c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c15906152c5565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613caf919061439f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401613d0e929190614ce5565b602060405180830381865afa158015613d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4f919061439f565b11613d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8690615331565b60405180910390fd5b6000479050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddc63262826010546040518363ffffffff1660e01b8152600401613df29190613ea4565b6000604051808303818588803b158015613e0b57600080fd5b505af1158015613e1f573d6000803e3d6000fd5b505050505060004790508082613e3591906142aa565b9250505090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090565b6000819050919050565b613e9e81613e8b565b82525050565b6000602082019050613eb96000830184613e95565b92915050565b60008115159050919050565b613ed481613ebf565b82525050565b6000602082019050613eef6000830184613ecb565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613f3a613f35613f3084613ef5565b613f15565b613ef5565b9050919050565b6000613f4c82613f1f565b9050919050565b6000613f5e82613f41565b9050919050565b613f6e81613f53565b82525050565b6000602082019050613f896000830184613f65565b92915050565b6000613f9a82613f41565b9050919050565b613faa81613f8f565b82525050565b6000602082019050613fc56000830184613fa1565b92915050565b6000613fd682613f41565b9050919050565b613fe681613fcb565b82525050565b60006020820190506140016000830184613fdd565b92915050565b6000604051905090565b600080fd5b600080fd5b600061402682613ef5565b9050919050565b6140368161401b565b811461404157600080fd5b50565b6000813590506140538161402d565b92915050565b60006020828403121561406f5761406e614011565b5b600061407d84828501614044565b91505092915050565b61408f81613e8b565b811461409a57600080fd5b50565b6000813590506140ac81614086565b92915050565b6000602082840312156140c8576140c7614011565b5b60006140d68482850161409d565b91505092915050565b60006040820190506140f46000830185613e95565b6141016020830184613e95565b9392505050565b600061411382613f41565b9050919050565b61412381614108565b82525050565b600060208201905061413e600083018461411a565b92915050565b600082825260208201905092915050565b7f456d657267656e6379207769746864726177206e6f7420656e61626c65640000600082015250565b600061418b601e83614144565b915061419682614155565b602082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006141fb82613e8b565b915061420683613e8b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561423f5761423e6141c1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061428482613e8b565b915061428f83613e8b565b92508261429f5761429e61424a565b5b828204905092915050565b60006142b582613e8b565b91506142c083613e8b565b9250828210156142d3576142d26141c1565b5b828203905092915050565b6142e78161401b565b82525050565b600060408201905061430260008301856142de565b61430f6020830184613e95565b9392505050565b61431f81613ebf565b811461432a57600080fd5b50565b60008151905061433c81614316565b92915050565b60006020828403121561435857614357614011565b5b60006143668482850161432d565b91505092915050565b600060208201905061438460008301846142de565b92915050565b60008151905061439981614086565b92915050565b6000602082840312156143b5576143b4614011565b5b60006143c38482850161438a565b91505092915050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614402600d83614144565b915061440d826143cc565b602082019050919050565b60006020820190508181036000830152614431816143f5565b9050919050565b600061444382613e8b565b915061444e83613e8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614483576144826141c1565b5b828201905092915050565b7f5573652075736572456d657267656e6379576974686472617720696e7374656160008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006144ea602183614144565b91506144f58261448e565b604082019050919050565b60006020820190508181036000830152614519816144dd565b9050919050565b7f4e6f20746f6b656e3020746f2073776170000000000000000000000000000000600082015250565b6000614556601183614144565b915061456182614520565b602082019050919050565b6000602082019050818103600083015261458581614549565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061460f61460a614605846145ea565b613f15565b613e8b565b9050919050565b61461f816145f4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61465a8161401b565b82525050565b61466981613ebf565b82525050565b6060820160008201516146856000850182614651565b5060208201516146986020850182614651565b5060408201516146ab6040850182614660565b50505050565b60006146bd838361466f565b60608301905092915050565b6000602082019050919050565b60006146e182614625565b6146eb8185614630565b93506146f683614641565b8060005b8381101561472757815161470e88826146b1565b9750614719836146c9565b9250506001810190506146fa565b5085935050505092915050565b600060a0820190506147496000830188613e95565b6147566020830187614616565b818103604083015261476881866146d6565b905061477760608301856142de565b6147846080830184613e95565b9695505050505050565b600080fd5b6000601f19601f8301169050919050565b6147ad82614793565b810181811067ffffffffffffffff821117156147cc576147cb61458c565b5b80604052505050565b60006147df614007565b90506147eb82826147a4565b919050565b600067ffffffffffffffff82111561480b5761480a61458c565b5b602082029050602081019050919050565b600080fd5b600061483461482f846147f0565b6147d5565b905080838252602082019050602084028301858111156148575761485661481c565b5b835b81811015614880578061486c888261438a565b845260208401935050602081019050614859565b5050509392505050565b600082601f83011261489f5761489e61478e565b5b81516148af848260208601614821565b91505092915050565b6000602082840312156148ce576148cd614011565b5b600082015167ffffffffffffffff8111156148ec576148eb614016565b5b6148f88482850161488a565b91505092915050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e302060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b600061495d603483614144565b915061496882614901565b604082019050919050565b6000602082019050818103600083015261498c81614950565b9050919050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e312060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b60006149ef603483614144565b91506149fa82614993565b604082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b600061012082019050614a3b600083018c6142de565b614a48602083018b6142de565b614a55604083018a613ecb565b614a626060830189613e95565b614a6f6080830188613e95565b614a7c60a0830187614616565b614a8960c0830186614616565b614a9660e08301856142de565b614aa4610100830184613e95565b9a9950505050505050505050565b600080600060608486031215614acb57614aca614011565b5b6000614ad98682870161438a565b9350506020614aea8682870161438a565b9250506040614afb8682870161438a565b9150509250925092565b6000604082019050614b1a6000830185613e95565b8181036020830152614b2c81846146d6565b90509392505050565b7f496e73756666696369656e7420736f6e69632072656365697665642066726f6d60008201527f2073776170000000000000000000000000000000000000000000000000000000602082015250565b6000614b91602583614144565b9150614b9c82614b35565b604082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614bfd601483614144565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b600081905092915050565b50565b6000614c4e600083614c33565b9150614c5982614c3e565b600082019050919050565b6000614c6f82614c41565b9150819050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000614caf600f83614144565b9150614cba82614c79565b602082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b6000604082019050614cfa6000830185613e95565b614d0760208301846142de565b9392505050565b60008060408385031215614d2557614d24614011565b5b6000614d338582860161438a565b9250506020614d448582860161438a565b9150509250929050565b7f4e6f2066756e64732073656e7400000000000000000000000000000000000000600082015250565b6000614d84600d83614144565b9150614d8f82614d4e565b602082019050919050565b60006020820190508181036000830152614db381614d77565b9050919050565b7f4e6f206c6566746f7665727320746f20616464206c6971756964697479000000600082015250565b6000614df0601d83614144565b9150614dfb82614dba565b602082019050919050565b60006020820190508181036000830152614e1f81614de3565b9050919050565b600060a082019050614e3b60008301886142de565b614e4860208301876142de565b614e556040830186613ecb565b614e626060830185613e95565b614e6f6080830184613e95565b9695505050505050565b7f4e6f204c5020746f6b656e732072656365697665640000000000000000000000600082015250565b6000614eaf601583614144565b9150614eba82614e79565b602082019050919050565b60006020820190508181036000830152614ede81614ea2565b9050919050565b7f5661756c74206973206e6f742061637469766500000000000000000000000000600082015250565b6000614f1b601383614144565b9150614f2682614ee5565b602082019050919050565b60006020820190508181036000830152614f4a81614f0e565b9050919050565b6000606082019050614f6660008301866142de565b614f7360208301856142de565b614f806040830184613e95565b949350505050565b7f4e6f20746f6b656e3120746f2073776170000000000000000000000000000000600082015250565b6000614fbe601183614144565b9150614fc982614f88565b602082019050919050565b60006020820190508181036000830152614fed81614fb1565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61501781614ff4565b811461502257600080fd5b50565b6000815190506150348161500e565b92915050565b600063ffffffff82169050919050565b6150538161503a565b811461505e57600080fd5b50565b6000815190506150708161504a565b92915050565b60008060006060848603121561508f5761508e614011565b5b600061509d86828701615025565b93505060206150ae86828701615025565b92505060406150bf86828701615061565b9150509250925092565b7f4e6f207265776172647320746f20636f6d706f756e6400000000000000000000600082015250565b60006150ff601683614144565b915061510a826150c9565b602082019050919050565b6000602082019050818103600083015261512e816150f2565b9050919050565b7f4e6f2066756e647320617661696c61626c650000000000000000000000000000600082015250565b600061516b601283614144565b915061517682615135565b602082019050919050565b6000602082019050818103600083015261519a8161515e565b9050919050565b7f4e6f207469636b65747320746f20776974686472617700000000000000000000600082015250565b60006151d7601683614144565b91506151e2826151a1565b602082019050919050565b60006020820190508181036000830152615206816151ca565b9050919050565b7f4e6f20746f6b656e20746f207377617000000000000000000000000000000000600082015250565b6000615243601083614144565b915061524e8261520d565b602082019050919050565b6000602082019050818103600083015261527281615236565b9050919050565b7f4e6f2066756e647320746f206861727665737400000000000000000000000000600082015250565b60006152af601383614144565b91506152ba82615279565b602082019050919050565b600060208201905081810360008301526152de816152a2565b9050919050565b7f4e6f207265776172647320746f20686172766573740000000000000000000000600082015250565b600061531b601583614144565b9150615326826152e5565b602082019050919050565b6000602082019050818103600083015261534a8161530e565b905091905056fea2646970667358221220136aed7a454be9363e85397b6d13e0b21ae24943ebe6e2753c61e563a4065b6964736f6c634300080d0033000000000000000000000000b449391f3722fabcdb6183b37cb4350bb97e8aa50000000000000000000000000000000000000000000000000000000000000032000000000000000000000000fe6915a0983a304f4d131da635664030da06bcd20000000000000000000000001d368773735ee1e678950b7a97bca2cafb330cdc000000000000000000000000c6a47895e29284ac769cc9b43a4f39ad768d8837000000000000000000000000b901d7316447c84f4417b8a8268e2822095051e6000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b0000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80637d88209711610123578063d21220a7116100ab578063edae9b071161006f578063edae9b0714610758578063f69e204614610795578063f7c618c1146107ac578063f887ea40146107d7578063ff77cce41461080257610225565b8063d21220a714610694578063db2e21bc146106bf578063dd11247e146106d6578063dd94369d14610701578063e28701ee1461072d57610225565b8063a955c7a7116100f2578063a955c7a7146105c1578063b6b55f25146105d8578063b7d122a914610601578063ce75d5651461063e578063cf177bae1461066957610225565b80637d8820971461053857806380017f4e14610563578063853828b6146105a0578063a26759cb146105b757610225565b80632beddd35116101a6578063515464c511610175578063515464c51461045057806351ed6a301461047b57806354098bac146104a657806367a52793146104e45780636b527c0c1461050f57610225565b80632beddd35146103825780632e1a7d4d146103bf578063376bb708146103e8578063395d33841461042557610225565b80630f032450116101ed5780630f032450146102d357806316f0115b146102ea578063229a6663146103155780632760f89b1461034057806329c68dc11461036b57610225565b80630169050d1461022757806301ac145b1461025257806302fb0c5e1461027d5780630dfe1681146102a857610225565b3661022557005b005b34801561023357600080fd5b5061023c610819565b6040516102499190613ea4565b60405180910390f35b34801561025e57600080fd5b5061026761081f565b6040516102749190613ea4565b60405180910390f35b34801561028957600080fd5b50610292610825565b60405161029f9190613eda565b60405180910390f35b3480156102b457600080fd5b506102bd610838565b6040516102ca9190613f74565b60405180910390f35b3480156102df57600080fd5b506102e861085e565b005b3480156102f657600080fd5b506102ff610a86565b60405161030c9190613fb0565b60405180910390f35b34801561032157600080fd5b5061032a610aac565b6040516103379190613ea4565b60405180910390f35b34801561034c57600080fd5b50610355610c25565b6040516103629190613fec565b60405180910390f35b34801561037757600080fd5b50610380610c4b565b005b34801561038e57600080fd5b506103a960048036038101906103a49190614059565b610d4d565b6040516103b69190613ea4565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e191906140b2565b610ed2565b005b3480156103f457600080fd5b5061040f600480360381019061040a91906140b2565b610f3e565b60405161041c9190613ea4565b60405180910390f35b34801561043157600080fd5b5061043a6111d9565b6040516104479190613ea4565b60405180910390f35b34801561045c57600080fd5b5061046561153a565b6040516104729190613ea4565b60405180910390f35b34801561048757600080fd5b50610490611540565b60405161049d9190613f74565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c891906140b2565b611566565b6040516104db9291906140df565b60405180910390f35b3480156104f057600080fd5b506104f96117b5565b6040516105069190613ea4565b60405180910390f35b34801561051b57600080fd5b50610536600480360381019061053191906140b2565b6117bb565b005b34801561054457600080fd5b5061054d611970565b60405161055a9190613ea4565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190614059565b611a1c565b6040516105979190613ea4565b60405180910390f35b3480156105ac57600080fd5b506105b5611a34565b005b6105bf611b0a565b005b3480156105cd57600080fd5b506105d6611bdf565b005b3480156105e457600080fd5b506105ff60048036038101906105fa91906140b2565b61204f565b005b34801561060d57600080fd5b50610628600480360381019061062391906140b2565b61252a565b6040516106359190613ea4565b60405180910390f35b34801561064a57600080fd5b506106536127c5565b6040516106609190613f74565b60405180910390f35b34801561067557600080fd5b5061067e6127eb565b60405161068b9190613ea4565b60405180910390f35b3480156106a057600080fd5b506106a9612d3b565b6040516106b69190613f74565b60405180910390f35b3480156106cb57600080fd5b506106d4612d61565b005b3480156106e257600080fd5b506106eb612f0e565b6040516106f89190613ea4565b60405180910390f35b34801561070d57600080fd5b50610716612f14565b6040516107249291906140df565b60405180910390f35b34801561073957600080fd5b50610742612fc9565b60405161074f9190613eda565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a91906140b2565b612fdc565b60405161078c9190613ea4565b60405180910390f35b3480156107a157600080fd5b506107aa613257565b005b3480156107b857600080fd5b506107c16133cc565b6040516107ce9190613f74565b60405180910390f35b3480156107e357600080fd5b506107ec6133f2565b6040516107f99190614129565b60405180910390f35b34801561080e57600080fd5b50610817613418565b005b600f5481565b600c5481565b600a60149054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108666135d2565b600a60159054906101000a900460ff166108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac906141a1565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036109075750610a7c565b6000670de0b6b3a7640000600d548361092091906141f0565b61092a9190614279565b90506000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600e600082825461098391906142aa565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016109e79291906142ed565b6020604051808303816000875af1158015610a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2a9190614342565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436482604051610a719190613ea4565b60405180910390a250505b610a84613618565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b0a919061436f565b602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b919061439f565b90506000811115610c1c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054836040518363ffffffff1660e01b8152600401610bb59291906140df565b600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050506000610bf1611970565b9050600e54670de0b6b3a764000082610c0a91906141f0565b610c149190614279565b600d81905550505b600d5491505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290614418565b60405180910390fd5b600a60149054906101000a900460ff1615600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff16604051610d439190613eda565b60405180910390a1565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610da4576000915050610ecd565b6000600d5490506000610db5611970565b90506000600e54118015610dc95750600081115b15610ea8576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e2b919061436f565b602060405180830381865afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c919061439f565b90506000811115610ea657600e54670de0b6b3a764000082610e8e91906141f0565b610e989190614279565b83610ea39190614438565b92505b505b670de0b6b3a76400008284610ebd91906141f0565b610ec79190614279565b93505050505b919050565b610eda6135d2565b600a60159054906101000a900460ff1615610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190614500565b60405180910390fd5b610f3381613622565b610f3b613618565b50565b6000808211610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f799061456c565b60405180910390fd5b6000600167ffffffffffffffff811115610f9f57610f9e61458c565b5b604051908082528060200260200182016040528015610fd857816020015b610fc5613e3c565b815260200190600190039081610fbd5790505b5090506040518060600160405280600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600115158152508160008151811061107d5761107c6145bb565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016110ec959493929190614734565b6000604051808303816000875af115801561110b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061113491906148b8565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611190919061436f565b602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d1919061439f565b915050919050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611237919061436f565b602060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611278919061439f565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d7919061436f565b602060405180830381865afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611318919061439f565b90506000821161135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490614973565b60405180910390fd5b600081116113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790614a05565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a47ddc3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001868660018030426040518a63ffffffff1660e01b815260040161145199989796959493929190614a25565b6060604051808303816000875af1158015611470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114949190614ab2565b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114f2919061436f565b602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611533919061439f565b9250505090565b60105481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000606460968561157a91906141f0565b6115849190614279565b90506000600167ffffffffffffffff8111156115a3576115a261458c565b5b6040519080825280602002602001820160405280156115dc57816020015b6115c9613e3c565b8152602001906001900390816115c15790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525081600081518110611681576116806145bb565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5c54e3384846040518363ffffffff1660e01b81526004016116eb929190614b05565b6000604051808303816000875af115801561170a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061173391906148b8565b905060008160008151811061174b5761174a6145bb565b5b60200260200101519050600061176082612fdc565b9050848110156117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90614ba7565b60405180910390fd5b8082965096505050505050915091565b600b5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290614418565b60405180910390fd5b6118536135d2565b80471015611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d90614c13565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516118de90614c64565b60006040518083038185875af1925050503d806000811461191b576040519150601f19603f3d011682016040523d82523d6000602084013e611920565b606091505b5050905080611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90614cc5565b60405180910390fd5b5061196d613618565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016119d2929190614ce5565b6040805180830381865afa1580156119ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a129190614d0e565b5090508091505090565b60116020528060005260406000206000915090505481565b611a3c6135d2565b600a60159054906101000a900460ff1615611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614500565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000670de0b6b3a7640000600d5483611ae991906141f0565b611af39190614279565b9050611afe81613622565b5050611b08613618565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614418565b60405180910390fd5b60003411611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614d9a565b60405180910390fd5b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6690614418565b60405180910390fd5b611c776135d2565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cd4919061436f565b602060405180830381865afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d15919061439f565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d74919061436f565b602060405180830381865afa158015611d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db5919061439f565b90506000821180611dc65750600081115b611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90614e06565b60405180910390fd5b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b8152600401611eb0959493929190614e26565b606060405180830381865afa158015611ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef19190614ab2565b509150915081841115611f1e5760008285611f0c91906142aa565b9050611f1781610f3e565b5050611f43565b80831115611f425760008184611f3491906142aa565b9050611f3f8161252a565b50505b5b6000611f4d6111d9565b905060008111611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614ec5565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fef919061436f565b602060405180830381865afa15801561200c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612030919061439f565b11156120405761203e610aac565b505b505050505061204d613618565b565b6120576135d2565b600a60149054906101000a900460ff166120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90614f31565b60405180910390fd5b6000600e54146120ba576120b86127eb565b505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161211993929190614f51565b6020604051808303816000875af1158015612138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215c9190614342565b5060006103e8600b548361217091906141f0565b61217a9190614279565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016121fb9291906142ed565b6020604051808303816000875af115801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190614342565b50808261224b91906142aa565b91506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016122ae929190614ce5565b6040805180830381865afa1580156122ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ee9190614d0e565b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054856040518363ffffffff1660e01b81526004016123509291906140df565b600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016123e3929190614ce5565b6040805180830381865afa1580156123ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124239190614d0e565b5090506000828261243491906142aa565b90506000600d54670de0b6b3a76400008361244f91906141f0565b6124599190614279565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124aa9190614438565b9250508190555080600e60008282546124c39190614438565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1583836040516125129291906140df565b60405180910390a25050505050612527613618565b50565b600080821161256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614fd4565b60405180910390fd5b6000600167ffffffffffffffff81111561258b5761258a61458c565b5b6040519080825280602002602001820160405280156125c457816020015b6125b1613e3c565b8152602001906001900390816125a95790505b5090506040518060600160405280600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525081600081518110612669576126686145bb565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016126d8959493929190614734565b6000604051808303816000875af11580156126f7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061272091906148b8565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161277c919061436f565b602060405180830381865afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd919061439f565b915050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806127f6611970565b9050600080600e5411801561280b5750600082115b15612d3357600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a4919061439f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401612903929190614ce5565b602060405180830381865afa158015612920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612944919061439f565b111561295b57612952612f14565b80935081925050505b6000821115612d3057600061296f82611566565b9150506000818461298091906142aa565b905060006103e8600c548361299591906141f0565b61299f9190614279565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612a209291906142ed565b6020604051808303816000875af1158015612a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a639190614342565b508082612a7091906142aa565b9150600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b069190615076565b50915091506000816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612b399190614438565b836dffffffffffffffffffffffffffff1686612b5591906141f0565b612b5f9190614279565b905060008186612b6f91906142aa565b90506000612b7c8361393f565b90506000829050600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b8152600401612c2e959493929190614e26565b606060405180830381865afa158015612c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6f9190614ab2565b509150915081841115612c9c5760008285612c8a91906142aa565b9050612c9581610f3e565b5050612cc1565b80831115612cc05760008184612cb291906142aa565b9050612cbd8161252a565b50505b5b6000612ccb6111d9565b905060008111612d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0790614ec5565b60405180910390fd5b612d18610aac565b5042600f819055508a9e505050505050505050505050505b50505b809250505090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de890614418565b60405180910390fd5b612df96135d2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635312ea8e6010546040518263ffffffff1660e01b8152600401612e569190613ea4565b600060405180830381600087803b158015612e7057600080fd5b505af1158015612e84573d6000803e3d6000fd5b505050506001600a60156101000a81548160ff0219169083151502179055506000600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff16604051612efc9190613eda565b60405180910390a1612f0c613618565b565b600e5481565b6000806000612f21613bda565b9050809250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f81919061436f565b602060405180830381865afa158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc2919061439f565b9150509091565b600a60159054906101000a900460ff1681565b600080600167ffffffffffffffff811115612ffa57612ff961458c565b5b60405190808252806020026020018201604052801561303357816020015b613020613e3c565b8152602001906001900390816130185790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250816000815181106130d8576130d76145bb565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88560018530426040518663ffffffff1660e01b8152600401613149959493929190614734565b6000604051808303816000875af1158015613168573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061319191906148b8565b9050600081600183516131a491906142aa565b815181106131b5576131b46145bb565b5b60200260200101519050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161321a9190613ea4565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b50505050809350505050919050565b600a60149054906101000a900460ff166132a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329d90614f31565b60405180910390fd5b60006132b06127eb565b9050600081116132f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ec90615115565b60405180910390fd5b7fe3c48e43a3cc80f4a0c194845bdd6091fa19b9bb7d22e515c21e9f177e2e22ae600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613371919061436f565b602060405180830381865afa15801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b2919061439f565b826040516133c19291906140df565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349f90614418565b60405180910390fd5b6134b06135d2565b6000479050600081116134f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ef90615181565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161354090614c64565b60006040518083038185875af1925050503d806000811461357d576040519150601f19603f3d011682016040523d82523d6000602084013e613582565b606091505b50509050806135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd90614cc5565b60405180910390fd5b50506135d0613618565b565b60026000540361360e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b6000600e5414613636576136346127eb565b505b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081116136bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b4906151ed565b60405180910390fd5b6000670de0b6b3a7640000600d54836136d691906141f0565b6136e09190614279565b905082811015613725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371c90614c13565b60405180910390fd5b6000600d54670de0b6b3a76400008561373e91906141f0565b6137489190614279565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461379991906142aa565b9250508190555080600e60008282546137b291906142aa565b92505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663441a3e70601054866040518363ffffffff1660e01b81526004016138189291906140df565b600060405180830381600087803b15801561383257600080fd5b505af1158015613846573d6000803e3d6000fd5b50505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b81526004016138a79291906142ed565b6020604051808303816000875af11580156138c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ea9190614342565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364856040516139319190613ea4565b60405180910390a250505050565b6000808211613983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397a90615259565b60405180910390fd5b6000600167ffffffffffffffff8111156139a05761399f61458c565b5b6040519080825280602002602001820160405280156139d957816020015b6139c6613e3c565b8152602001906001900390816139be5790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525081600081518110613a7e57613a7d6145bb565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b8152600401613aed959493929190614734565b6000604051808303816000875af1158015613b0c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613b3591906148b8565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613b91919061436f565b602060405180830381865afa158015613bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd2919061439f565b915050919050565b6000804711613c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c15906152c5565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613caf919061439f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401613d0e929190614ce5565b602060405180830381865afa158015613d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4f919061439f565b11613d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8690615331565b60405180910390fd5b6000479050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddc63262826010546040518363ffffffff1660e01b8152600401613df29190613ea4565b6000604051808303818588803b158015613e0b57600080fd5b505af1158015613e1f573d6000803e3d6000fd5b505050505060004790508082613e3591906142aa565b9250505090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090565b6000819050919050565b613e9e81613e8b565b82525050565b6000602082019050613eb96000830184613e95565b92915050565b60008115159050919050565b613ed481613ebf565b82525050565b6000602082019050613eef6000830184613ecb565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613f3a613f35613f3084613ef5565b613f15565b613ef5565b9050919050565b6000613f4c82613f1f565b9050919050565b6000613f5e82613f41565b9050919050565b613f6e81613f53565b82525050565b6000602082019050613f896000830184613f65565b92915050565b6000613f9a82613f41565b9050919050565b613faa81613f8f565b82525050565b6000602082019050613fc56000830184613fa1565b92915050565b6000613fd682613f41565b9050919050565b613fe681613fcb565b82525050565b60006020820190506140016000830184613fdd565b92915050565b6000604051905090565b600080fd5b600080fd5b600061402682613ef5565b9050919050565b6140368161401b565b811461404157600080fd5b50565b6000813590506140538161402d565b92915050565b60006020828403121561406f5761406e614011565b5b600061407d84828501614044565b91505092915050565b61408f81613e8b565b811461409a57600080fd5b50565b6000813590506140ac81614086565b92915050565b6000602082840312156140c8576140c7614011565b5b60006140d68482850161409d565b91505092915050565b60006040820190506140f46000830185613e95565b6141016020830184613e95565b9392505050565b600061411382613f41565b9050919050565b61412381614108565b82525050565b600060208201905061413e600083018461411a565b92915050565b600082825260208201905092915050565b7f456d657267656e6379207769746864726177206e6f7420656e61626c65640000600082015250565b600061418b601e83614144565b915061419682614155565b602082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006141fb82613e8b565b915061420683613e8b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561423f5761423e6141c1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061428482613e8b565b915061428f83613e8b565b92508261429f5761429e61424a565b5b828204905092915050565b60006142b582613e8b565b91506142c083613e8b565b9250828210156142d3576142d26141c1565b5b828203905092915050565b6142e78161401b565b82525050565b600060408201905061430260008301856142de565b61430f6020830184613e95565b9392505050565b61431f81613ebf565b811461432a57600080fd5b50565b60008151905061433c81614316565b92915050565b60006020828403121561435857614357614011565b5b60006143668482850161432d565b91505092915050565b600060208201905061438460008301846142de565b92915050565b60008151905061439981614086565b92915050565b6000602082840312156143b5576143b4614011565b5b60006143c38482850161438a565b91505092915050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614402600d83614144565b915061440d826143cc565b602082019050919050565b60006020820190508181036000830152614431816143f5565b9050919050565b600061444382613e8b565b915061444e83613e8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614483576144826141c1565b5b828201905092915050565b7f5573652075736572456d657267656e6379576974686472617720696e7374656160008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006144ea602183614144565b91506144f58261448e565b604082019050919050565b60006020820190508181036000830152614519816144dd565b9050919050565b7f4e6f20746f6b656e3020746f2073776170000000000000000000000000000000600082015250565b6000614556601183614144565b915061456182614520565b602082019050919050565b6000602082019050818103600083015261458581614549565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061460f61460a614605846145ea565b613f15565b613e8b565b9050919050565b61461f816145f4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61465a8161401b565b82525050565b61466981613ebf565b82525050565b6060820160008201516146856000850182614651565b5060208201516146986020850182614651565b5060408201516146ab6040850182614660565b50505050565b60006146bd838361466f565b60608301905092915050565b6000602082019050919050565b60006146e182614625565b6146eb8185614630565b93506146f683614641565b8060005b8381101561472757815161470e88826146b1565b9750614719836146c9565b9250506001810190506146fa565b5085935050505092915050565b600060a0820190506147496000830188613e95565b6147566020830187614616565b818103604083015261476881866146d6565b905061477760608301856142de565b6147846080830184613e95565b9695505050505050565b600080fd5b6000601f19601f8301169050919050565b6147ad82614793565b810181811067ffffffffffffffff821117156147cc576147cb61458c565b5b80604052505050565b60006147df614007565b90506147eb82826147a4565b919050565b600067ffffffffffffffff82111561480b5761480a61458c565b5b602082029050602081019050919050565b600080fd5b600061483461482f846147f0565b6147d5565b905080838252602082019050602084028301858111156148575761485661481c565b5b835b81811015614880578061486c888261438a565b845260208401935050602081019050614859565b5050509392505050565b600082601f83011261489f5761489e61478e565b5b81516148af848260208601614821565b91505092915050565b6000602082840312156148ce576148cd614011565b5b600082015167ffffffffffffffff8111156148ec576148eb614016565b5b6148f88482850161488a565b91505092915050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e302060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b600061495d603483614144565b915061496882614901565b604082019050919050565b6000602082019050818103600083015261498c81614950565b9050919050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e312060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b60006149ef603483614144565b91506149fa82614993565b604082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b600061012082019050614a3b600083018c6142de565b614a48602083018b6142de565b614a55604083018a613ecb565b614a626060830189613e95565b614a6f6080830188613e95565b614a7c60a0830187614616565b614a8960c0830186614616565b614a9660e08301856142de565b614aa4610100830184613e95565b9a9950505050505050505050565b600080600060608486031215614acb57614aca614011565b5b6000614ad98682870161438a565b9350506020614aea8682870161438a565b9250506040614afb8682870161438a565b9150509250925092565b6000604082019050614b1a6000830185613e95565b8181036020830152614b2c81846146d6565b90509392505050565b7f496e73756666696369656e7420736f6e69632072656365697665642066726f6d60008201527f2073776170000000000000000000000000000000000000000000000000000000602082015250565b6000614b91602583614144565b9150614b9c82614b35565b604082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614bfd601483614144565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b600081905092915050565b50565b6000614c4e600083614c33565b9150614c5982614c3e565b600082019050919050565b6000614c6f82614c41565b9150819050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000614caf600f83614144565b9150614cba82614c79565b602082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b6000604082019050614cfa6000830185613e95565b614d0760208301846142de565b9392505050565b60008060408385031215614d2557614d24614011565b5b6000614d338582860161438a565b9250506020614d448582860161438a565b9150509250929050565b7f4e6f2066756e64732073656e7400000000000000000000000000000000000000600082015250565b6000614d84600d83614144565b9150614d8f82614d4e565b602082019050919050565b60006020820190508181036000830152614db381614d77565b9050919050565b7f4e6f206c6566746f7665727320746f20616464206c6971756964697479000000600082015250565b6000614df0601d83614144565b9150614dfb82614dba565b602082019050919050565b60006020820190508181036000830152614e1f81614de3565b9050919050565b600060a082019050614e3b60008301886142de565b614e4860208301876142de565b614e556040830186613ecb565b614e626060830185613e95565b614e6f6080830184613e95565b9695505050505050565b7f4e6f204c5020746f6b656e732072656365697665640000000000000000000000600082015250565b6000614eaf601583614144565b9150614eba82614e79565b602082019050919050565b60006020820190508181036000830152614ede81614ea2565b9050919050565b7f5661756c74206973206e6f742061637469766500000000000000000000000000600082015250565b6000614f1b601383614144565b9150614f2682614ee5565b602082019050919050565b60006020820190508181036000830152614f4a81614f0e565b9050919050565b6000606082019050614f6660008301866142de565b614f7360208301856142de565b614f806040830184613e95565b949350505050565b7f4e6f20746f6b656e3120746f2073776170000000000000000000000000000000600082015250565b6000614fbe601183614144565b9150614fc982614f88565b602082019050919050565b60006020820190508181036000830152614fed81614fb1565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61501781614ff4565b811461502257600080fd5b50565b6000815190506150348161500e565b92915050565b600063ffffffff82169050919050565b6150538161503a565b811461505e57600080fd5b50565b6000815190506150708161504a565b92915050565b60008060006060848603121561508f5761508e614011565b5b600061509d86828701615025565b93505060206150ae86828701615025565b92505060406150bf86828701615061565b9150509250925092565b7f4e6f207265776172647320746f20636f6d706f756e6400000000000000000000600082015250565b60006150ff601683614144565b915061510a826150c9565b602082019050919050565b6000602082019050818103600083015261512e816150f2565b9050919050565b7f4e6f2066756e647320617661696c61626c650000000000000000000000000000600082015250565b600061516b601283614144565b915061517682615135565b602082019050919050565b6000602082019050818103600083015261519a8161515e565b9050919050565b7f4e6f207469636b65747320746f20776974686472617700000000000000000000600082015250565b60006151d7601683614144565b91506151e2826151a1565b602082019050919050565b60006020820190508181036000830152615206816151ca565b9050919050565b7f4e6f20746f6b656e20746f207377617000000000000000000000000000000000600082015250565b6000615243601083614144565b915061524e8261520d565b602082019050919050565b6000602082019050818103600083015261527281615236565b9050919050565b7f4e6f2066756e647320746f206861727665737400000000000000000000000000600082015250565b60006152af601383614144565b91506152ba82615279565b602082019050919050565b600060208201905081810360008301526152de816152a2565b9050919050565b7f4e6f207265776172647320746f20686172766573740000000000000000000000600082015250565b600061531b601583614144565b9150615326826152e5565b602082019050919050565b6000602082019050818103600083015261534a8161530e565b905091905056fea2646970667358221220136aed7a454be9363e85397b6d13e0b21ae24943ebe6e2753c61e563a4065b6964736f6c634300080d0033

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

000000000000000000000000b449391f3722fabcdb6183b37cb4350bb97e8aa50000000000000000000000000000000000000000000000000000000000000032000000000000000000000000fe6915a0983a304f4d131da635664030da06bcd20000000000000000000000001d368773735ee1e678950b7a97bca2cafb330cdc000000000000000000000000c6a47895e29284ac769cc9b43a4f39ad768d8837000000000000000000000000b901d7316447c84f4417b8a8268e2822095051e6000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b0000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _treasury (address): 0xB449391F3722FAbcdB6183B37CB4350bb97E8Aa5
Arg [1] : _vaultFee (uint256): 50
Arg [2] : _pool (address): 0xFE6915a0983a304F4D131DA635664030dA06Bcd2
Arg [3] : _router (address): 0x1D368773735ee1E678950B7A97bcA2CafB330CDc
Arg [4] : _gsnakeOracle (address): 0xC6a47895e29284ac769cc9b43A4f39Ad768d8837
Arg [5] : _stakeToken (address): 0xb901D7316447C84f4417b8a8268E2822095051E6
Arg [6] : _rewardToken (address): 0x674a430f531847a6f8976A900f8ace765f896a1b
Arg [7] : _token0 (address): 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38
Arg [8] : _token1 (address): 0x674a430f531847a6f8976A900f8ace765f896a1b
Arg [9] : _snakePoolId (uint256): 1

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000b449391f3722fabcdb6183b37cb4350bb97e8aa5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [2] : 000000000000000000000000fe6915a0983a304f4d131da635664030da06bcd2
Arg [3] : 0000000000000000000000001d368773735ee1e678950b7a97bca2cafb330cdc
Arg [4] : 000000000000000000000000c6a47895e29284ac769cc9b43a4f39ad768d8837
Arg [5] : 000000000000000000000000b901d7316447c84f4417b8a8268e2822095051e6
Arg [6] : 000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b
Arg [7] : 000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Arg [8] : 000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

906:15373:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1458:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1360:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1247:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1038:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13968:452;;;;;;;;;;;;;:::i;:::-;;947:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11653:358;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1004:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3171:121;;;;;;;;;;;;;:::i;:::-;;15053:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13517:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4664:508;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6800:749;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1492:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1092:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7557:651;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1324:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15730:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14886:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1527:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13693:267;;;;;;;;;;;;;:::i;:::-;;15617:105;;;:::i;:::-;;8216:1042;;;;;;;;;;;;;:::i;:::-;;12690:819;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5180:508;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1155:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9266:2379;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1065:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14428:221;;;;;;;;;;;;;:::i;:::-;;1424:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:225;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1279:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3300:639;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14657:221;;;;;;;;;;;;;:::i;:::-;;1123:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;976:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15998:278;;;;;;;;;;;;;:::i;:::-;;1458:27;;;;:::o;1360:23::-;;;;:::o;1247:25::-;;;;;;;;;;;;;:::o;1038:20::-;;;;;;;;;;;;;:::o;13968:452::-;367:21;:19;:21::i;:::-;14042:18:::1;;;;;;;;;;;14034:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14106:15;14124:11;:23;14136:10;14124:23;;;;;;;;;;;;;;;;14106:41;;14173:1;14162:7;:12:::0;14158:25:::1;;14176:7;;;14158:25;14195:14;14238:4;14223:11;;14213:7;:21;;;;:::i;:::-;14212:30;;;;:::i;:::-;14195:47;;14279:1;14253:11;:23;14265:10;14253:23;;;;;;;;;;;;;;;:27;;;;14307:7;14291:12;;:23;;;;;;;:::i;:::-;;;;;;;;14327:10;;;;;;;;;;;:19;;;14347:10;14359:6;14327:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14393:10;14384:28;;;14405:6;14384:28;;;;;;:::i;:::-;;;;;;;;14023:397;;399:1;411:20:::0;:18;:20::i;:::-;13968:452::o;947:22::-;;;;;;;;;;;;;:::o;11653:358::-;11694:7;11714:16;11733:10;;;;;;;;;;;:20;;;11762:4;11733:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11714:54;;11794:1;11783:8;:12;11779:194;;;11812:4;;;;;;;;;;;:12;;;11825:11;;11838:8;11812:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11864:17;11884:15;:13;:15::i;:::-;11864:35;;11949:12;;11941:4;11929:9;:16;;;;:::i;:::-;11928:33;;;;:::i;:::-;11914:11;:47;;;;11797:176;11779:194;11992:11;;11985:18;;;11653:358;:::o;1004:27::-;;;;;;;;;;;;;:::o;3171:121::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;3235:6:::1;;;;;;;;;;;3234:7;3225:6;;:16;;;;;;;;;;;;;;;;;;3257:27;3277:6;;;;;;;;;;;3257:27;;;;;;:::i;:::-;;;;;;;;3171:121::o:0;15053:556::-;15110:7;15130:15;15148:11;:18;15160:5;15148:18;;;;;;;;;;;;;;;;15130:36;;15192:1;15181:7;:12;15177:26;;15202:1;15195:8;;;;;15177:26;15216:20;15239:11;;15216:34;;15261:15;15279;:13;:15::i;:::-;15261:33;;15324:1;15309:12;;:16;:31;;;;;15339:1;15329:7;:11;15309:31;15305:246;;;15357:20;15380:11;;;;;;;;;;;:21;;;15410:4;15380:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15357:59;;15450:1;15435:12;:16;15431:109;;;15512:12;;15504:4;15489:12;:19;;;;:::i;:::-;15488:36;;;;:::i;:::-;15472:52;;;;;:::i;:::-;;;15431:109;15342:209;15305:246;15597:4;15581:12;15571:7;:22;;;;:::i;:::-;15570:31;;;;:::i;:::-;15563:38;;;;;15053:556;;;;:::o;13517:168::-;367:21;:19;:21::i;:::-;13593:18:::1;;;;;;;;;;;13592:19;13584:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13660:17;13670:6;13660:9;:17::i;:::-;411:20:::0;:18;:20::i;:::-;13517:168;:::o;4664:508::-;4726:22;4778:1;4769:6;:10;4761:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;4812:27;4862:1;4842:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4812:52;;4885:53;;;;;;;;4907:6;;;;;;;;;;;4885:53;;;;;;4924:6;;;;;;;;;;;4885:53;;;;;;4933:4;4885:53;;;;;4875:4;4880:1;4875:7;;;;;;;;:::i;:::-;;;;;;;:63;;;;4949:6;;;;;;;;;;;:31;;;4995:6;5016:1;5032:4;5059;5079:15;4949:156;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5133:6;;;;;;;;;;;:16;;;5158:4;5133:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5116:48;;4750:422;4664:508;;;:::o;6800:749::-;6841:7;6861:21;6892:6;;;;;;;;;;;6885:24;;;6918:4;6885:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6861:63;;6935:21;6966:6;;;;;;;;;;;6959:24;;;6992:4;6959:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6935:63;;7061:1;7045:13;:17;7037:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7154:1;7138:13;:17;7130:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7223:6;;;;;;;;;;;:19;;;7265:6;;;;;;;;;;;7295;;;;;;;;;;;7317:4;7336:13;7364;7392:1;7408;7432:4;7452:15;7223:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7505:10;;;;;;;;;;;7498:28;;;7535:4;7498:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7491:50;;;;6800:749;:::o;1492:26::-;;;;:::o;1092:24::-;;;;;;;;;;;;;:::o;7557:651::-;7616:7;7625;7645:21;7687:3;7680;7670:7;:13;;;;:::i;:::-;7669:21;;;;:::i;:::-;7645:45;;7703:27;7753:1;7733:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;7703:52;;7776:65;;;;;;;;7798:11;;;;;;;;;;;7776:65;;;;;;7820:12;;;;;;;;;;;7776:65;;;;;;7835:5;7776:65;;;;;7766:4;7771:1;7766:7;;;;;;;;:::i;:::-;;;;;;;:75;;;;7852:26;7881:6;;;;;;;;;;;:19;;;7901:13;7916:4;7881:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7852:69;;7932:28;7963:9;7973:1;7963:12;;;;;;;;:::i;:::-;;;;;;;;7932:43;;7988:21;8012:40;8031:20;8012:18;:40::i;:::-;7988:64;;8088:13;8071;:30;;8063:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8164:13;8179:20;8156:44;;;;;;;;;7557:651;;;:::o;1324:29::-;;;;:::o;15730:260::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;15841:6:::2;15816:21;:31;;15808:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15886:9;15909:5;;;;;;;;;;;15901:19;;15928:6;15901:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15885:54;;;15958:4;15950:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;15797:193;411:20:::1;:18;:20::i;:::-;15730:260:::0;:::o;14886:159::-;14932:7;14953:14;14972:4;;;;;;;;;;;:13;;;14986:11;;15007:4;14972:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14952:61;;;15031:6;15024:13;;;14886:159;:::o;1527:46::-;;;;;;;;;;;;;;;;;:::o;13693:267::-;367:21;:19;:21::i;:::-;13758:18:::1;;;;;;;;;;;13757:19;13749:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13825:15;13843:11;:23;13855:10;13843:23;;;;;;;;;;;;;;;;13825:41;;13877:14;13920:4;13905:11;;13895:7;:21;;;;:::i;:::-;13894:30;;;;:::i;:::-;13877:47;;13935:17;13945:6;13935:9;:17::i;:::-;13738:222;;411:20:::0;:18;:20::i;:::-;13693:267::o;15617:105::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;15695:1:::1;15683:9;:13;15675:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;15617:105::o:0;8216:1042::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;8291:17:::2;8311:6;;;;;;;;;;;:16;;;8336:4;8311:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8291:51;;8353:17;8373:6;;;;;;;;;;;:16;;;8398:4;8373:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8353:51;;8435:1;8423:9;:13;:30;;;;8452:1;8440:9;:13;8423:30;8415:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8501:21;8524::::0;8551:6:::2;;;;;;;;;;;:24;;;8598:6;;;;;;;;;;;8628;;;;;;;;;;;8650:4;8669:9;8693;8551:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8500:213;;;;;8742:13;8730:9;:25;8726:316;;;8772:20;8807:13;8795:9;:25;;;;:::i;:::-;8772:48;;8835:34;8856:12;8835:20;:34::i;:::-;;8757:124;8726:316;;;8903:13;8891:9;:25;8887:155;;;8933:20;8968:13;8956:9;:25;;;;:::i;:::-;8933:48;;8996:34;9017:12;8996:20;:34::i;:::-;;8918:124;8887:155;8726:316;9054:19;9076:15;:13;:15::i;:::-;9054:37;;9124:1;9110:11;:15;9102:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9206:1;9168:10;;;;;;;;;;;:20;;;9197:4;9168:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;9164:87;;;9224:15;:13;:15::i;:::-;;9164:87;8280:978;;;;;411:20:::1;:18;:20::i;:::-;8216:1042::o:0;12690:819::-;367:21;:19;:21::i;:::-;3008:6:::1;;;;;;;;;;;3000:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12787:1:::2;12771:12;;:17;12767:64;;12805:14;:12;:14::i;:::-;;12767:64;12843:10;;;;;;;;;;;:23;;;12867:10;12887:4;12894:6;12843:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12914:11;12952:4;12938:10;;12929:6;:19;;;;:::i;:::-;12928:28;;;;:::i;:::-;12914:42;;12967:10;;;;;;;;;;;:19;;;12987:8;;;;;;;;;;;12997:3;12967:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13022:3;13012:13;;;;;:::i;:::-;;;13039:20;13064:4;;;;;;;;;;;:13;;;13078:11;;13099:4;13064:41;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13038:67;;;13116:4;;;;;;;;;;;:12;;;13129:11;;13142:6;13116:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;13161:19;13186:4;;;;;;;;;;;:13;;;13200:11;;13221:4;13186:41;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13160:67;;;13240:23;13280:12;13266:11;:26;;;;:::i;:::-;13240:52;;13303:15;13348:11;;13340:4;13322:15;:22;;;;:::i;:::-;13321:38;;;;:::i;:::-;13303:56;;13397:7;13370:11;:23;13382:10;13370:23;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;13431:7;13415:12;;:23;;;;;;;:::i;:::-;;;;;;;;13464:10;13456:45;;;13476:15;13493:7;13456:45;;;;;;;:::i;:::-;;;;;;;;12756:753;;;;;411:20:::0;:18;:20::i;:::-;12690:819;:::o;5180:508::-;5242:22;5294:1;5285:6;:10;5277:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;5328:27;5378:1;5358:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;5328:52;;5401:53;;;;;;;;5423:6;;;;;;;;;;;5401:53;;;;;;5440:6;;;;;;;;;;;5401:53;;;;;;5449:4;5401:53;;;;;5391:4;5396:1;5391:7;;;;;;;;:::i;:::-;;;;;;;:63;;;;5465:6;;;;;;;;;;;:31;;;5511:6;5532:1;5548:4;5575;5595:15;5465:156;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5649:6;;;;;;;;;;;:16;;;5674:4;5649:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5632:48;;5266:422;5180:508;;;:::o;1155:26::-;;;;;;;;;;;;;:::o;9266:2379::-;9306:7;9326:15;9344;:13;:15::i;:::-;9326:33;;9370:23;9429:1;9414:12;;:16;:31;;;;;9444:1;9434:7;:11;9414:31;9410:2195;;;9462:20;9501:15;9604:4;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9539:4;;;;;;;;;;;:34;;;9574:11;;9595:4;9539:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:89;9535:169;;;9675:13;:11;:13::i;:::-;9649:39;;;;;;;;9535:169;9737:1;9722:12;:16;9718:1876;;;9762:28;9794:25;9811:7;9794:16;:25::i;:::-;9759:60;;;9840:23;9881:20;9866:12;:35;;;;:::i;:::-;9840:61;;9920:22;9976:4;9964:8;;9946:15;:26;;;;:::i;:::-;9945:35;;;;:::i;:::-;9920:60;;9999:11;;;;;;;;;;;:20;;;10020:8;;;;;;;;;;;10030:14;9999:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10100:14;10082:15;:32;;;;:::i;:::-;10064:50;;10136:16;10154;10190:10;;;;;;;;;;;10176:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10135:81;;;;;10237:23;10332:8;10324:17;;10312:8;10304:17;;:37;;;;:::i;:::-;10290:8;10282:17;;10264:15;:35;;;;:::i;:::-;10263:79;;;;:::i;:::-;10237:105;;10361:23;10405:15;10387;:33;;;;:::i;:::-;10361:59;;10441:20;10464:32;10480:15;10464;:32::i;:::-;10441:55;;10591:20;10614:15;10591:38;;10651:21;10674;10701:6;;;;;;;;;;;:24;;;10756:6;;;;;;;;;;;10794;;;;;;;;;;;10824:4;10851:12;10886;10701:216;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10650:267;;;;;10957:13;10942:12;:28;10938:376;;;10995:20;11033:13;11018:12;:28;;;;:::i;:::-;10995:51;;11069:34;11090:12;11069:20;:34::i;:::-;;10972:151;10938:376;;;11148:13;11133:12;:28;11129:185;;;11186:20;11224:13;11209:12;:28;;;;:::i;:::-;11186:51;;11260:34;11281:12;11260:20;:34::i;:::-;;11163:151;11129:185;10938:376;11334:19;11356:15;:13;:15::i;:::-;11334:37;;11412:1;11398:11;:15;11390:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;11460:15;:13;:15::i;:::-;;11509;11494:12;:30;;;;11563:15;11545:33;;9740:1854;;;;;;;;;;;;9718:1876;9447:2158;;9410:2195;11622:15;11615:22;;;;9266:2379;:::o;1065:20::-;;;;;;;;;;;;;:::o;14428:221::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;14500:4:::2;;;;;;;;;;;:22;;;14523:11;;14500:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;14567:4;14546:18;;:25;;;;;;;;;;;;;;;;;;14591:5;14582:6;;:14;;;;;;;;;;;;;;;;;;14614:27;14634:6;;;;;;;;;;;14614:27;;;;;;:::i;:::-;;;;;;;;411:20:::1;:18;:20::i;:::-;14428:221::o:0;1424:27::-;;;;:::o;4431:225::-;4470:15;4487;4515:24;4542:10;:8;:10::i;:::-;4515:37;;4575:16;4565:26;;4612:11;;;;;;;;;;;:21;;;4642:4;4612:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4602:46;;4504:152;4431:225;;:::o;1279:38::-;;;;;;;;;;;;;:::o;3300:639::-;3368:21;3402:27;3452:1;3432:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3402:52;;3475:65;;;;;;;;3497:11;;;;;;;;;;;3475:65;;;;;;3519:12;;;;;;;;;;;3475:65;;;;;;3534:5;3475:65;;;;;3465:4;3470:1;3465:7;;;;;;;;:::i;:::-;;;;;;;:75;;;;3553:21;3577:6;;;;;;;;;;;:31;;;3623:14;3652:1;3668:4;3695;3715:15;3577:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3553:188;;3752:28;3783:7;3808:1;3791:7;:14;:18;;;;:::i;:::-;3783:27;;;;;;;;:::i;:::-;;;;;;;;3752:58;;3837:12;;;;;;;;;;;3823:37;;;3861:20;3823:59;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3911:20;3895:36;;3391:548;;;3300:639;;;:::o;14657:221::-;3008:6;;;;;;;;;;;3000:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14708:15:::1;14726:14;:12;:14::i;:::-;14708:32;;14769:1;14759:7;:11;14751:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14815:55;14824:11;;;;;;;;;;;:21;;;14854:4;14824:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14862:7;14815:55;;;;;;;:::i;:::-;;;;;;;;14697:181;14657:221::o:0;1123:25::-;;;;;;;;;;;;;:::o;976:21::-;;;;;;;;;;;;;:::o;15998:278::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;16065:15:::2;16083:21;16065:39;;16133:1;16123:7;:11;16115:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16171:9;16194:5;;;;;;;;;;;16186:19;;16213:7;16186:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16170:55;;;16244:4;16236:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;16054:222;;411:20:::1;:18;:20::i;:::-;15998:278::o:0;522:175::-;183:1;576:7;;:18;572:88;;618:30;;;;;;;;;;;;;;572:88;183:1;672:7;:17;;;;522:175::o;705:78::-;140:1;754:7;:21;;;;705:78::o;12019:663::-;12094:1;12078:12;;:17;12074:64;;12112:14;:12;:14::i;:::-;;12074:64;12150:15;12168:11;:23;12180:10;12168:23;;;;;;;;;;;;;;;;12150:41;;12220:1;12210:7;:11;12202:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12261:14;12304:4;12289:11;;12279:7;:21;;;;:::i;:::-;12278:30;;;;:::i;:::-;12261:47;;12337:6;12327;:16;;12319:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12381:23;12425:11;;12417:4;12408:6;:13;;;;:::i;:::-;12407:29;;;;:::i;:::-;12381:55;;12474:15;12447:11;:23;12459:10;12447:23;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;12516:15;12500:12;;:31;;;;;;;:::i;:::-;;;;;;;;12544:4;;;;;;;;;;;:13;;;12558:11;;12571:6;12544:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12589:10;;;;;;;;;;;:19;;;12609:10;12621:6;12589:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12655:10;12646:28;;;12667:6;12646:28;;;;;;:::i;:::-;;;;;;;;12063:619;;;12019:663;:::o;5696:507::-;5761:7;5804:1;5789:12;:16;5781:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;5839:27;5889:1;5869:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;5839:52;;5912:59;;;;;;;;5934:11;;;;;;;;;;;5912:59;;;;;;5956:6;;;;;;;;;;;5912:59;;;;;;5965:5;5912:59;;;;;5902:4;5907:1;5902:7;;;;;;;;:::i;:::-;;;;;;;:69;;;;5982:6;;;;;;;;;;;:31;;;6028:12;6055:1;6071:4;6098;6118:15;5982:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6164:6;;;;;;;;;;;:16;;;6189:4;6164:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6157:38;;;5696:507;;;:::o;3947:476::-;3985:7;4037:1;4013:21;:25;4005:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4146:4;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4081:4;;;;;;;;;;;:34;;;4116:11;;4137:4;4081:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:89;4073:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;4209:21;4233;4209:45;;4265:4;;;;;;;;;;;:12;;;4285:13;4300:11;;4265:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4323:20;4346:21;4323:44;;4403:12;4387:13;:28;;;;:::i;:::-;4380:35;;;;3947:476;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:90::-;476:7;519:5;512:13;505:21;494:32;;442:90;;;:::o;538:109::-;619:21;634:5;619:21;:::i;:::-;614:3;607:34;538:109;;:::o;653:210::-;740:4;778:2;767:9;763:18;755:26;;791:65;853:1;842:9;838:17;829:6;791:65;:::i;:::-;653:210;;;;:::o;869:126::-;906:7;946:42;939:5;935:54;924:65;;869:126;;;:::o;1001:60::-;1029:3;1050:5;1043:12;;1001:60;;;:::o;1067:142::-;1117:9;1150:53;1168:34;1177:24;1195:5;1177:24;:::i;:::-;1168:34;:::i;:::-;1150:53;:::i;:::-;1137:66;;1067:142;;;:::o;1215:126::-;1265:9;1298:37;1329:5;1298:37;:::i;:::-;1285:50;;1215:126;;;:::o;1347:141::-;1412:9;1445:37;1476:5;1445:37;:::i;:::-;1432:50;;1347:141;;;:::o;1494:161::-;1596:52;1642:5;1596:52;:::i;:::-;1591:3;1584:65;1494:161;;:::o;1661:252::-;1769:4;1807:2;1796:9;1792:18;1784:26;;1820:86;1903:1;1892:9;1888:17;1879:6;1820:86;:::i;:::-;1661:252;;;;:::o;1919:145::-;1988:9;2021:37;2052:5;2021:37;:::i;:::-;2008:50;;1919:145;;;:::o;2070:169::-;2176:56;2226:5;2176:56;:::i;:::-;2171:3;2164:69;2070:169;;:::o;2245:260::-;2357:4;2395:2;2384:9;2380:18;2372:26;;2408:90;2495:1;2484:9;2480:17;2471:6;2408:90;:::i;:::-;2245:260;;;;:::o;2511:142::-;2577:9;2610:37;2641:5;2610:37;:::i;:::-;2597:50;;2511:142;;;:::o;2659:163::-;2762:53;2809:5;2762:53;:::i;:::-;2757:3;2750:66;2659:163;;:::o;2828:254::-;2937:4;2975:2;2964:9;2960:18;2952:26;;2988:87;3072:1;3061:9;3057:17;3048:6;2988:87;:::i;:::-;2828:254;;;;:::o;3088:75::-;3121:6;3154:2;3148:9;3138:19;;3088:75;:::o;3169:117::-;3278:1;3275;3268:12;3292:117;3401:1;3398;3391:12;3415:96;3452:7;3481:24;3499:5;3481:24;:::i;:::-;3470:35;;3415:96;;;:::o;3517:122::-;3590:24;3608:5;3590:24;:::i;:::-;3583:5;3580:35;3570:63;;3629:1;3626;3619:12;3570:63;3517:122;:::o;3645:139::-;3691:5;3729:6;3716:20;3707:29;;3745:33;3772:5;3745:33;:::i;:::-;3645:139;;;;:::o;3790:329::-;3849:6;3898:2;3886:9;3877:7;3873:23;3869:32;3866:119;;;3904:79;;:::i;:::-;3866:119;4024:1;4049:53;4094:7;4085:6;4074:9;4070:22;4049:53;:::i;:::-;4039:63;;3995:117;3790:329;;;;:::o;4125:122::-;4198:24;4216:5;4198:24;:::i;:::-;4191:5;4188:35;4178:63;;4237:1;4234;4227:12;4178:63;4125:122;:::o;4253:139::-;4299:5;4337:6;4324:20;4315:29;;4353:33;4380:5;4353:33;:::i;:::-;4253:139;;;;:::o;4398:329::-;4457:6;4506:2;4494:9;4485:7;4481:23;4477:32;4474:119;;;4512:79;;:::i;:::-;4474:119;4632:1;4657:53;4702:7;4693:6;4682:9;4678:22;4657:53;:::i;:::-;4647:63;;4603:117;4398:329;;;;:::o;4733:332::-;4854:4;4892:2;4881:9;4877:18;4869:26;;4905:71;4973:1;4962:9;4958:17;4949:6;4905:71;:::i;:::-;4986:72;5054:2;5043:9;5039:18;5030:6;4986:72;:::i;:::-;4733:332;;;;;:::o;5071:142::-;5137:9;5170:37;5201:5;5170:37;:::i;:::-;5157:50;;5071:142;;;:::o;5219:163::-;5322:53;5369:5;5322:53;:::i;:::-;5317:3;5310:66;5219:163;;:::o;5388:254::-;5497:4;5535:2;5524:9;5520:18;5512:26;;5548:87;5632:1;5621:9;5617:17;5608:6;5548:87;:::i;:::-;5388:254;;;;:::o;5648:169::-;5732:11;5766:6;5761:3;5754:19;5806:4;5801:3;5797:14;5782:29;;5648:169;;;;:::o;5823:180::-;5963:32;5959:1;5951:6;5947:14;5940:56;5823:180;:::o;6009:366::-;6151:3;6172:67;6236:2;6231:3;6172:67;:::i;:::-;6165:74;;6248:93;6337:3;6248:93;:::i;:::-;6366:2;6361:3;6357:12;6350:19;;6009:366;;;:::o;6381:419::-;6547:4;6585:2;6574:9;6570:18;6562:26;;6634:9;6628:4;6624:20;6620:1;6609:9;6605:17;6598:47;6662:131;6788:4;6662:131;:::i;:::-;6654:139;;6381:419;;;:::o;6806:180::-;6854:77;6851:1;6844:88;6951:4;6948:1;6941:15;6975:4;6972:1;6965:15;6992:348;7032:7;7055:20;7073:1;7055:20;:::i;:::-;7050:25;;7089:20;7107:1;7089:20;:::i;:::-;7084:25;;7277:1;7209:66;7205:74;7202:1;7199:81;7194:1;7187:9;7180:17;7176:105;7173:131;;;7284:18;;:::i;:::-;7173:131;7332:1;7329;7325:9;7314:20;;6992:348;;;;:::o;7346:180::-;7394:77;7391:1;7384:88;7491:4;7488:1;7481:15;7515:4;7512:1;7505:15;7532:185;7572:1;7589:20;7607:1;7589:20;:::i;:::-;7584:25;;7623:20;7641:1;7623:20;:::i;:::-;7618:25;;7662:1;7652:35;;7667:18;;:::i;:::-;7652:35;7709:1;7706;7702:9;7697:14;;7532:185;;;;:::o;7723:191::-;7763:4;7783:20;7801:1;7783:20;:::i;:::-;7778:25;;7817:20;7835:1;7817:20;:::i;:::-;7812:25;;7856:1;7853;7850:8;7847:34;;;7861:18;;:::i;:::-;7847:34;7906:1;7903;7899:9;7891:17;;7723:191;;;;:::o;7920:118::-;8007:24;8025:5;8007:24;:::i;:::-;8002:3;7995:37;7920:118;;:::o;8044:332::-;8165:4;8203:2;8192:9;8188:18;8180:26;;8216:71;8284:1;8273:9;8269:17;8260:6;8216:71;:::i;:::-;8297:72;8365:2;8354:9;8350:18;8341:6;8297:72;:::i;:::-;8044:332;;;;;:::o;8382:116::-;8452:21;8467:5;8452:21;:::i;:::-;8445:5;8442:32;8432:60;;8488:1;8485;8478:12;8432:60;8382:116;:::o;8504:137::-;8558:5;8589:6;8583:13;8574:22;;8605:30;8629:5;8605:30;:::i;:::-;8504:137;;;;:::o;8647:345::-;8714:6;8763:2;8751:9;8742:7;8738:23;8734:32;8731:119;;;8769:79;;:::i;:::-;8731:119;8889:1;8914:61;8967:7;8958:6;8947:9;8943:22;8914:61;:::i;:::-;8904:71;;8860:125;8647:345;;;;:::o;8998:222::-;9091:4;9129:2;9118:9;9114:18;9106:26;;9142:71;9210:1;9199:9;9195:17;9186:6;9142:71;:::i;:::-;8998:222;;;;:::o;9226:143::-;9283:5;9314:6;9308:13;9299:22;;9330:33;9357:5;9330:33;:::i;:::-;9226:143;;;;:::o;9375:351::-;9445:6;9494:2;9482:9;9473:7;9469:23;9465:32;9462:119;;;9500:79;;:::i;:::-;9462:119;9620:1;9645:64;9701:7;9692:6;9681:9;9677:22;9645:64;:::i;:::-;9635:74;;9591:128;9375:351;;;;:::o;9732:163::-;9872:15;9868:1;9860:6;9856:14;9849:39;9732:163;:::o;9901:366::-;10043:3;10064:67;10128:2;10123:3;10064:67;:::i;:::-;10057:74;;10140:93;10229:3;10140:93;:::i;:::-;10258:2;10253:3;10249:12;10242:19;;9901:366;;;:::o;10273:419::-;10439:4;10477:2;10466:9;10462:18;10454:26;;10526:9;10520:4;10516:20;10512:1;10501:9;10497:17;10490:47;10554:131;10680:4;10554:131;:::i;:::-;10546:139;;10273:419;;;:::o;10698:305::-;10738:3;10757:20;10775:1;10757:20;:::i;:::-;10752:25;;10791:20;10809:1;10791:20;:::i;:::-;10786:25;;10945:1;10877:66;10873:74;10870:1;10867:81;10864:107;;;10951:18;;:::i;:::-;10864:107;10995:1;10992;10988:9;10981:16;;10698:305;;;;:::o;11009:220::-;11149:34;11145:1;11137:6;11133:14;11126:58;11218:3;11213:2;11205:6;11201:15;11194:28;11009:220;:::o;11235:366::-;11377:3;11398:67;11462:2;11457:3;11398:67;:::i;:::-;11391:74;;11474:93;11563:3;11474:93;:::i;:::-;11592:2;11587:3;11583:12;11576:19;;11235:366;;;:::o;11607:419::-;11773:4;11811:2;11800:9;11796:18;11788:26;;11860:9;11854:4;11850:20;11846:1;11835:9;11831:17;11824:47;11888:131;12014:4;11888:131;:::i;:::-;11880:139;;11607:419;;;:::o;12032:167::-;12172:19;12168:1;12160:6;12156:14;12149:43;12032:167;:::o;12205:366::-;12347:3;12368:67;12432:2;12427:3;12368:67;:::i;:::-;12361:74;;12444:93;12533:3;12444:93;:::i;:::-;12562:2;12557:3;12553:12;12546:19;;12205:366;;;:::o;12577:419::-;12743:4;12781:2;12770:9;12766:18;12758:26;;12830:9;12824:4;12820:20;12816:1;12805:9;12801:17;12794:47;12858:131;12984:4;12858:131;:::i;:::-;12850:139;;12577:419;;;:::o;13002:180::-;13050:77;13047:1;13040:88;13147:4;13144:1;13137:15;13171:4;13168:1;13161:15;13188:180;13236:77;13233:1;13226:88;13333:4;13330:1;13323:15;13357:4;13354:1;13347:15;13374:85;13419:7;13448:5;13437:16;;13374:85;;;:::o;13465:158::-;13523:9;13556:61;13574:42;13583:32;13609:5;13583:32;:::i;:::-;13574:42;:::i;:::-;13556:61;:::i;:::-;13543:74;;13465:158;;;:::o;13629:147::-;13724:45;13763:5;13724:45;:::i;:::-;13719:3;13712:58;13629:147;;:::o;13782:137::-;13872:6;13906:5;13900:12;13890:22;;13782:137;;;:::o;13925:207::-;14047:11;14081:6;14076:3;14069:19;14121:4;14116:3;14112:14;14097:29;;13925:207;;;;:::o;14138:155::-;14228:4;14251:3;14243:11;;14281:4;14276:3;14272:14;14264:22;;14138:155;;;:::o;14299:108::-;14376:24;14394:5;14376:24;:::i;:::-;14371:3;14364:37;14299:108;;:::o;14413:99::-;14484:21;14499:5;14484:21;:::i;:::-;14479:3;14472:34;14413:99;;:::o;14570:661::-;14703:4;14698:3;14694:14;14790:4;14783:5;14779:16;14773:23;14809:63;14866:4;14861:3;14857:14;14843:12;14809:63;:::i;:::-;14718:164;14962:4;14955:5;14951:16;14945:23;14981:63;15038:4;15033:3;15029:14;15015:12;14981:63;:::i;:::-;14892:162;15138:4;15131:5;15127:16;15121:23;15157:57;15208:4;15203:3;15199:14;15185:12;15157:57;:::i;:::-;15064:160;14672:559;14570:661;;:::o;15237:271::-;15352:10;15373:92;15461:3;15453:6;15373:92;:::i;:::-;15497:4;15492:3;15488:14;15474:28;;15237:271;;;;:::o;15514:136::-;15607:4;15639;15634:3;15630:14;15622:22;;15514:136;;;:::o;15712:916::-;15877:3;15906:77;15977:5;15906:77;:::i;:::-;15999:109;16101:6;16096:3;15999:109;:::i;:::-;15992:116;;16132:79;16205:5;16132:79;:::i;:::-;16234:7;16265:1;16250:353;16275:6;16272:1;16269:13;16250:353;;;16351:6;16345:13;16378:109;16483:3;16468:13;16378:109;:::i;:::-;16371:116;;16510:83;16586:6;16510:83;:::i;:::-;16500:93;;16310:293;16297:1;16294;16290:9;16285:14;;16250:353;;;16254:14;16619:3;16612:10;;15882:746;;;15712:916;;;;:::o;16634:923::-;16943:4;16981:3;16970:9;16966:19;16958:27;;16995:71;17063:1;17052:9;17048:17;17039:6;16995:71;:::i;:::-;17076:80;17152:2;17141:9;17137:18;17128:6;17076:80;:::i;:::-;17203:9;17197:4;17193:20;17188:2;17177:9;17173:18;17166:48;17231:154;17380:4;17371:6;17231:154;:::i;:::-;17223:162;;17395:72;17463:2;17452:9;17448:18;17439:6;17395:72;:::i;:::-;17477:73;17545:3;17534:9;17530:19;17521:6;17477:73;:::i;:::-;16634:923;;;;;;;;:::o;17563:117::-;17672:1;17669;17662:12;17686:102;17727:6;17778:2;17774:7;17769:2;17762:5;17758:14;17754:28;17744:38;;17686:102;;;:::o;17794:281::-;17877:27;17899:4;17877:27;:::i;:::-;17869:6;17865:40;18007:6;17995:10;17992:22;17971:18;17959:10;17956:34;17953:62;17950:88;;;18018:18;;:::i;:::-;17950:88;18058:10;18054:2;18047:22;17837:238;17794:281;;:::o;18081:129::-;18115:6;18142:20;;:::i;:::-;18132:30;;18171:33;18199:4;18191:6;18171:33;:::i;:::-;18081:129;;;:::o;18216:311::-;18293:4;18383:18;18375:6;18372:30;18369:56;;;18405:18;;:::i;:::-;18369:56;18455:4;18447:6;18443:17;18435:25;;18515:4;18509;18505:15;18497:23;;18216:311;;;:::o;18533:117::-;18642:1;18639;18632:12;18673:732;18780:5;18805:81;18821:64;18878:6;18821:64;:::i;:::-;18805:81;:::i;:::-;18796:90;;18906:5;18935:6;18928:5;18921:21;18969:4;18962:5;18958:16;18951:23;;19022:4;19014:6;19010:17;19002:6;18998:30;19051:3;19043:6;19040:15;19037:122;;;19070:79;;:::i;:::-;19037:122;19185:6;19168:231;19202:6;19197:3;19194:15;19168:231;;;19277:3;19306:48;19350:3;19338:10;19306:48;:::i;:::-;19301:3;19294:61;19384:4;19379:3;19375:14;19368:21;;19244:155;19228:4;19223:3;19219:14;19212:21;;19168:231;;;19172:21;18786:619;;18673:732;;;;;:::o;19428:385::-;19510:5;19559:3;19552:4;19544:6;19540:17;19536:27;19526:122;;19567:79;;:::i;:::-;19526:122;19677:6;19671:13;19702:105;19803:3;19795:6;19788:4;19780:6;19776:17;19702:105;:::i;:::-;19693:114;;19516:297;19428:385;;;;:::o;19819:554::-;19914:6;19963:2;19951:9;19942:7;19938:23;19934:32;19931:119;;;19969:79;;:::i;:::-;19931:119;20110:1;20099:9;20095:17;20089:24;20140:18;20132:6;20129:30;20126:117;;;20162:79;;:::i;:::-;20126:117;20267:89;20348:7;20339:6;20328:9;20324:22;20267:89;:::i;:::-;20257:99;;20060:306;19819:554;;;;:::o;20379:239::-;20519:34;20515:1;20507:6;20503:14;20496:58;20588:22;20583:2;20575:6;20571:15;20564:47;20379:239;:::o;20624:366::-;20766:3;20787:67;20851:2;20846:3;20787:67;:::i;:::-;20780:74;;20863:93;20952:3;20863:93;:::i;:::-;20981:2;20976:3;20972:12;20965:19;;20624:366;;;:::o;20996:419::-;21162:4;21200:2;21189:9;21185:18;21177:26;;21249:9;21243:4;21239:20;21235:1;21224:9;21220:17;21213:47;21277:131;21403:4;21277:131;:::i;:::-;21269:139;;20996:419;;;:::o;21421:239::-;21561:34;21557:1;21549:6;21545:14;21538:58;21630:22;21625:2;21617:6;21613:15;21606:47;21421:239;:::o;21666:366::-;21808:3;21829:67;21893:2;21888:3;21829:67;:::i;:::-;21822:74;;21905:93;21994:3;21905:93;:::i;:::-;22023:2;22018:3;22014:12;22007:19;;21666:366;;;:::o;22038:419::-;22204:4;22242:2;22231:9;22227:18;22219:26;;22291:9;22285:4;22281:20;22277:1;22266:9;22262:17;22255:47;22319:131;22445:4;22319:131;:::i;:::-;22311:139;;22038:419;;;:::o;22463:1128::-;22790:4;22828:3;22817:9;22813:19;22805:27;;22842:71;22910:1;22899:9;22895:17;22886:6;22842:71;:::i;:::-;22923:72;22991:2;22980:9;22976:18;22967:6;22923:72;:::i;:::-;23005:66;23067:2;23056:9;23052:18;23043:6;23005:66;:::i;:::-;23081:72;23149:2;23138:9;23134:18;23125:6;23081:72;:::i;:::-;23163:73;23231:3;23220:9;23216:19;23207:6;23163:73;:::i;:::-;23246:81;23322:3;23311:9;23307:19;23298:6;23246:81;:::i;:::-;23337;23413:3;23402:9;23398:19;23389:6;23337:81;:::i;:::-;23428:73;23496:3;23485:9;23481:19;23472:6;23428:73;:::i;:::-;23511;23579:3;23568:9;23564:19;23555:6;23511:73;:::i;:::-;22463:1128;;;;;;;;;;;;:::o;23597:663::-;23685:6;23693;23701;23750:2;23738:9;23729:7;23725:23;23721:32;23718:119;;;23756:79;;:::i;:::-;23718:119;23876:1;23901:64;23957:7;23948:6;23937:9;23933:22;23901:64;:::i;:::-;23891:74;;23847:128;24014:2;24040:64;24096:7;24087:6;24076:9;24072:22;24040:64;:::i;:::-;24030:74;;23985:129;24153:2;24179:64;24235:7;24226:6;24215:9;24211:22;24179:64;:::i;:::-;24169:74;;24124:129;23597:663;;;;;:::o;24266:575::-;24483:4;24521:2;24510:9;24506:18;24498:26;;24534:71;24602:1;24591:9;24587:17;24578:6;24534:71;:::i;:::-;24652:9;24646:4;24642:20;24637:2;24626:9;24622:18;24615:48;24680:154;24829:4;24820:6;24680:154;:::i;:::-;24672:162;;24266:575;;;;;:::o;24847:224::-;24987:34;24983:1;24975:6;24971:14;24964:58;25056:7;25051:2;25043:6;25039:15;25032:32;24847:224;:::o;25077:366::-;25219:3;25240:67;25304:2;25299:3;25240:67;:::i;:::-;25233:74;;25316:93;25405:3;25316:93;:::i;:::-;25434:2;25429:3;25425:12;25418:19;;25077:366;;;:::o;25449:419::-;25615:4;25653:2;25642:9;25638:18;25630:26;;25702:9;25696:4;25692:20;25688:1;25677:9;25673:17;25666:47;25730:131;25856:4;25730:131;:::i;:::-;25722:139;;25449:419;;;:::o;25874:170::-;26014:22;26010:1;26002:6;25998:14;25991:46;25874:170;:::o;26050:366::-;26192:3;26213:67;26277:2;26272:3;26213:67;:::i;:::-;26206:74;;26289:93;26378:3;26289:93;:::i;:::-;26407:2;26402:3;26398:12;26391:19;;26050:366;;;:::o;26422:419::-;26588:4;26626:2;26615:9;26611:18;26603:26;;26675:9;26669:4;26665:20;26661:1;26650:9;26646:17;26639:47;26703:131;26829:4;26703:131;:::i;:::-;26695:139;;26422:419;;;:::o;26847:147::-;26948:11;26985:3;26970:18;;26847:147;;;;:::o;27000:114::-;;:::o;27120:398::-;27279:3;27300:83;27381:1;27376:3;27300:83;:::i;:::-;27293:90;;27392:93;27481:3;27392:93;:::i;:::-;27510:1;27505:3;27501:11;27494:18;;27120:398;;;:::o;27524:379::-;27708:3;27730:147;27873:3;27730:147;:::i;:::-;27723:154;;27894:3;27887:10;;27524:379;;;:::o;27909:165::-;28049:17;28045:1;28037:6;28033:14;28026:41;27909:165;:::o;28080:366::-;28222:3;28243:67;28307:2;28302:3;28243:67;:::i;:::-;28236:74;;28319:93;28408:3;28319:93;:::i;:::-;28437:2;28432:3;28428:12;28421:19;;28080:366;;;:::o;28452:419::-;28618:4;28656:2;28645:9;28641:18;28633:26;;28705:9;28699:4;28695:20;28691:1;28680:9;28676:17;28669:47;28733:131;28859:4;28733:131;:::i;:::-;28725:139;;28452:419;;;:::o;28877:332::-;28998:4;29036:2;29025:9;29021:18;29013:26;;29049:71;29117:1;29106:9;29102:17;29093:6;29049:71;:::i;:::-;29130:72;29198:2;29187:9;29183:18;29174:6;29130:72;:::i;:::-;28877:332;;;;;:::o;29215:507::-;29294:6;29302;29351:2;29339:9;29330:7;29326:23;29322:32;29319:119;;;29357:79;;:::i;:::-;29319:119;29477:1;29502:64;29558:7;29549:6;29538:9;29534:22;29502:64;:::i;:::-;29492:74;;29448:128;29615:2;29641:64;29697:7;29688:6;29677:9;29673:22;29641:64;:::i;:::-;29631:74;;29586:129;29215:507;;;;;:::o;29728:163::-;29868:15;29864:1;29856:6;29852:14;29845:39;29728:163;:::o;29897:366::-;30039:3;30060:67;30124:2;30119:3;30060:67;:::i;:::-;30053:74;;30136:93;30225:3;30136:93;:::i;:::-;30254:2;30249:3;30245:12;30238:19;;29897:366;;;:::o;30269:419::-;30435:4;30473:2;30462:9;30458:18;30450:26;;30522:9;30516:4;30512:20;30508:1;30497:9;30493:17;30486:47;30550:131;30676:4;30550:131;:::i;:::-;30542:139;;30269:419;;;:::o;30694:179::-;30834:31;30830:1;30822:6;30818:14;30811:55;30694:179;:::o;30879:366::-;31021:3;31042:67;31106:2;31101:3;31042:67;:::i;:::-;31035:74;;31118:93;31207:3;31118:93;:::i;:::-;31236:2;31231:3;31227:12;31220:19;;30879:366;;;:::o;31251:419::-;31417:4;31455:2;31444:9;31440:18;31432:26;;31504:9;31498:4;31494:20;31490:1;31479:9;31475:17;31468:47;31532:131;31658:4;31532:131;:::i;:::-;31524:139;;31251:419;;;:::o;31676:652::-;31875:4;31913:3;31902:9;31898:19;31890:27;;31927:71;31995:1;31984:9;31980:17;31971:6;31927:71;:::i;:::-;32008:72;32076:2;32065:9;32061:18;32052:6;32008:72;:::i;:::-;32090:66;32152:2;32141:9;32137:18;32128:6;32090:66;:::i;:::-;32166:72;32234:2;32223:9;32219:18;32210:6;32166:72;:::i;:::-;32248:73;32316:3;32305:9;32301:19;32292:6;32248:73;:::i;:::-;31676:652;;;;;;;;:::o;32334:171::-;32474:23;32470:1;32462:6;32458:14;32451:47;32334:171;:::o;32511:366::-;32653:3;32674:67;32738:2;32733:3;32674:67;:::i;:::-;32667:74;;32750:93;32839:3;32750:93;:::i;:::-;32868:2;32863:3;32859:12;32852:19;;32511:366;;;:::o;32883:419::-;33049:4;33087:2;33076:9;33072:18;33064:26;;33136:9;33130:4;33126:20;33122:1;33111:9;33107:17;33100:47;33164:131;33290:4;33164:131;:::i;:::-;33156:139;;32883:419;;;:::o;33308:169::-;33448:21;33444:1;33436:6;33432:14;33425:45;33308:169;:::o;33483:366::-;33625:3;33646:67;33710:2;33705:3;33646:67;:::i;:::-;33639:74;;33722:93;33811:3;33722:93;:::i;:::-;33840:2;33835:3;33831:12;33824:19;;33483:366;;;:::o;33855:419::-;34021:4;34059:2;34048:9;34044:18;34036:26;;34108:9;34102:4;34098:20;34094:1;34083:9;34079:17;34072:47;34136:131;34262:4;34136:131;:::i;:::-;34128:139;;33855:419;;;:::o;34280:442::-;34429:4;34467:2;34456:9;34452:18;34444:26;;34480:71;34548:1;34537:9;34533:17;34524:6;34480:71;:::i;:::-;34561:72;34629:2;34618:9;34614:18;34605:6;34561:72;:::i;:::-;34643;34711:2;34700:9;34696:18;34687:6;34643:72;:::i;:::-;34280:442;;;;;;:::o;34728:167::-;34868:19;34864:1;34856:6;34852:14;34845:43;34728:167;:::o;34901:366::-;35043:3;35064:67;35128:2;35123:3;35064:67;:::i;:::-;35057:74;;35140:93;35229:3;35140:93;:::i;:::-;35258:2;35253:3;35249:12;35242:19;;34901:366;;;:::o;35273:419::-;35439:4;35477:2;35466:9;35462:18;35454:26;;35526:9;35520:4;35516:20;35512:1;35501:9;35497:17;35490:47;35554:131;35680:4;35554:131;:::i;:::-;35546:139;;35273:419;;;:::o;35698:114::-;35735:7;35775:30;35768:5;35764:42;35753:53;;35698:114;;;:::o;35818:122::-;35891:24;35909:5;35891:24;:::i;:::-;35884:5;35881:35;35871:63;;35930:1;35927;35920:12;35871:63;35818:122;:::o;35946:143::-;36003:5;36034:6;36028:13;36019:22;;36050:33;36077:5;36050:33;:::i;:::-;35946:143;;;;:::o;36095:93::-;36131:7;36171:10;36164:5;36160:22;36149:33;;36095:93;;;:::o;36194:120::-;36266:23;36283:5;36266:23;:::i;:::-;36259:5;36256:34;36246:62;;36304:1;36301;36294:12;36246:62;36194:120;:::o;36320:141::-;36376:5;36407:6;36401:13;36392:22;;36423:32;36449:5;36423:32;:::i;:::-;36320:141;;;;:::o;36467:661::-;36554:6;36562;36570;36619:2;36607:9;36598:7;36594:23;36590:32;36587:119;;;36625:79;;:::i;:::-;36587:119;36745:1;36770:64;36826:7;36817:6;36806:9;36802:22;36770:64;:::i;:::-;36760:74;;36716:128;36883:2;36909:64;36965:7;36956:6;36945:9;36941:22;36909:64;:::i;:::-;36899:74;;36854:129;37022:2;37048:63;37103:7;37094:6;37083:9;37079:22;37048:63;:::i;:::-;37038:73;;36993:128;36467:661;;;;;:::o;37134:172::-;37274:24;37270:1;37262:6;37258:14;37251:48;37134:172;:::o;37312:366::-;37454:3;37475:67;37539:2;37534:3;37475:67;:::i;:::-;37468:74;;37551:93;37640:3;37551:93;:::i;:::-;37669:2;37664:3;37660:12;37653:19;;37312:366;;;:::o;37684:419::-;37850:4;37888:2;37877:9;37873:18;37865:26;;37937:9;37931:4;37927:20;37923:1;37912:9;37908:17;37901:47;37965:131;38091:4;37965:131;:::i;:::-;37957:139;;37684:419;;;:::o;38109:168::-;38249:20;38245:1;38237:6;38233:14;38226:44;38109:168;:::o;38283:366::-;38425:3;38446:67;38510:2;38505:3;38446:67;:::i;:::-;38439:74;;38522:93;38611:3;38522:93;:::i;:::-;38640:2;38635:3;38631:12;38624:19;;38283:366;;;:::o;38655:419::-;38821:4;38859:2;38848:9;38844:18;38836:26;;38908:9;38902:4;38898:20;38894:1;38883:9;38879:17;38872:47;38936:131;39062:4;38936:131;:::i;:::-;38928:139;;38655:419;;;:::o;39080:172::-;39220:24;39216:1;39208:6;39204:14;39197:48;39080:172;:::o;39258:366::-;39400:3;39421:67;39485:2;39480:3;39421:67;:::i;:::-;39414:74;;39497:93;39586:3;39497:93;:::i;:::-;39615:2;39610:3;39606:12;39599:19;;39258:366;;;:::o;39630:419::-;39796:4;39834:2;39823:9;39819:18;39811:26;;39883:9;39877:4;39873:20;39869:1;39858:9;39854:17;39847:47;39911:131;40037:4;39911:131;:::i;:::-;39903:139;;39630:419;;;:::o;40055:166::-;40195:18;40191:1;40183:6;40179:14;40172:42;40055:166;:::o;40227:366::-;40369:3;40390:67;40454:2;40449:3;40390:67;:::i;:::-;40383:74;;40466:93;40555:3;40466:93;:::i;:::-;40584:2;40579:3;40575:12;40568:19;;40227:366;;;:::o;40599:419::-;40765:4;40803:2;40792:9;40788:18;40780:26;;40852:9;40846:4;40842:20;40838:1;40827:9;40823:17;40816:47;40880:131;41006:4;40880:131;:::i;:::-;40872:139;;40599:419;;;:::o;41024:169::-;41164:21;41160:1;41152:6;41148:14;41141:45;41024:169;:::o;41199:366::-;41341:3;41362:67;41426:2;41421:3;41362:67;:::i;:::-;41355:74;;41438:93;41527:3;41438:93;:::i;:::-;41556:2;41551:3;41547:12;41540:19;;41199:366;;;:::o;41571:419::-;41737:4;41775:2;41764:9;41760:18;41752:26;;41824:9;41818:4;41814:20;41810:1;41799:9;41795:17;41788:47;41852:131;41978:4;41852:131;:::i;:::-;41844:139;;41571:419;;;:::o;41996:171::-;42136:23;42132:1;42124:6;42120:14;42113:47;41996:171;:::o;42173:366::-;42315:3;42336:67;42400:2;42395:3;42336:67;:::i;:::-;42329:74;;42412:93;42501:3;42412:93;:::i;:::-;42530:2;42525:3;42521:12;42514:19;;42173:366;;;:::o;42545:419::-;42711:4;42749:2;42738:9;42734:18;42726:26;;42798:9;42792:4;42788:20;42784:1;42773:9;42769:17;42762:47;42826:131;42952:4;42826:131;:::i;:::-;42818:139;;42545:419;;;:::o

Swarm Source

ipfs://136aed7a454be9363e85397b6d13e0b21ae24943ebe6e2753c61e563a4065b69

Block Transaction 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
[ 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.