Contract 0x6de4d882a84a98f4ccd5d33ea6b3c99a07babeb1 10

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1b789047628680c57490b5b4cb9bd4dfd37c4c04994f5fa63e8e7103bbbdb547Transfer Ownersh...291806642022-10-09 2:48:10536 days 21 hrs ago0xb37136b338c6cc0e459a35fe9aa036f6b5a147c0 IN  0x6de4d882a84a98f4ccd5d33ea6b3c99a07babeb10 ETH0.0000328 0.1
0x4d7857ca09f467839981f9d98e4be8b3da558f851be0d929638bda01386101ddAdd Admin List291805682022-10-09 2:47:17536 days 21 hrs ago0xb37136b338c6cc0e459a35fe9aa036f6b5a147c0 IN  0x6de4d882a84a98f4ccd5d33ea6b3c99a07babeb10 ETH0.00003447 0.1
0xce5a1752ea35379bca9f32e446676faa59394b02c0dfb593bdbd7139713d9f0dInit Owner291804852022-10-09 2:46:32536 days 21 hrs ago0xb37136b338c6cc0e459a35fe9aa036f6b5a147c0 IN  0x6de4d882a84a98f4ccd5d33ea6b3c99a07babeb10 ETH0.00003636 0.1
0x33742f0bdde627740c04b6cf6177fa6e59d20d34960f9fac62061ddeafb155bd0x60806040291799202022-10-09 2:41:27536 days 21 hrs ago0xb37136b338c6cc0e459a35fe9aa036f6b5a147c0 IN  Create: FeeRateDIP3Impl0 ETH0.00088698 0.1
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xe887247557df6098ecc79c9e77d5bbaee7600d776dd1eaedfd02ebcff349cd29292932092022-10-09 16:21:35536 days 7 hrs ago DODO: Multisig Wallet 0x6de4d882a84a98f4ccd5d33ea6b3c99a07babeb10 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeeRateDIP3Impl

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2022-10-09
*/

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract InitializableOwnable {
    address public _OWNER_;
    address public _NEW_OWNER_;
    bool internal _INITIALIZED_;

    // ============ Events ============

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

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

    // ============ Modifiers ============

    modifier notInitialized() {
        require(!_INITIALIZED_, "DODO_INITIALIZED");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    function initOwner(address newOwner) public notInitialized {
        _INITIALIZED_ = true;
        _OWNER_ = newOwner;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}



/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

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

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

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

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

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




/**
 * @title SafeMath
 * @author DODO Breeder
 *
 * @notice Math operations with safety checks that revert on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "DIVIDING_ERROR");
        return a / b;
    }

    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SUB_ERROR");
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = x / 2 + 1;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}





interface ICrowdPooling {
    function _QUOTE_RESERVE_() external view returns (uint256);
    function getShares(address user) external view returns (uint256);
    function _OWNER_() external returns (address);
}

interface IFee {
    function getUserFee(address user) external view returns (uint256);
}

interface IQuota {
    function getUserQuota(address user) external view returns (int);
}

interface IPoolHeartBeat {
    function isPoolHeartBeatLive(address pool) external view returns(bool);
}

interface IPool {
    function version() external pure returns (string memory);
    function _LP_FEE_RATE_() external view returns (uint256);
    function _BASE_RESERVE_() external view returns (uint);
    function _QUOTE_RESERVE_() external view returns (uint);
    function _K_() external view returns (uint);
}

contract FeeRateDIP3Impl is InitializableOwnable {
    using SafeMath for uint256;

    // ============ Storage  ============

    uint256 public _LP_MT_RATIO_ = 25;

    struct CPPoolInfo {
        address quoteToken;
        int globalQuota;
        address feeAddr;
        address quotaAddr;
    }

    mapping(address => CPPoolInfo) public cpPools;
    mapping(address => uint256) public specPoolList;
    mapping (address => bool) public isAdminListed;
    address public poolHeartBeat;

    // ============ Events =============
    event AddAdmin(address admin);
    event RemoveAdmin(address admin);

    // ============ Ownable Functions ============
    
    function addCpPoolInfo(address cpPool, address quoteToken, int globalQuota, address feeAddr, address quotaAddr) external {
        require(isAdminListed[msg.sender], "ACCESS_DENIED");
        CPPoolInfo memory cpPoolInfo =  CPPoolInfo({
            quoteToken: quoteToken,
            feeAddr: feeAddr,
            quotaAddr: quotaAddr,
            globalQuota: globalQuota
        });
        cpPools[cpPool] = cpPoolInfo;
    }

    function setCpPoolInfo(address cpPool, address quoteToken, int globalQuota, address feeAddr, address quotaAddr) external onlyOwner {
        cpPools[cpPool].quoteToken = quoteToken;
        cpPools[cpPool].feeAddr = feeAddr;
        cpPools[cpPool].quotaAddr = quotaAddr;
        cpPools[cpPool].globalQuota = globalQuota;
    }

    function setLpMtRatio(uint256 newLpMtRatio) external onlyOwner {
        _LP_MT_RATIO_ = newLpMtRatio;
    }


    function setSpecPoolList (address poolAddr, uint256 mtFeeRate) public onlyOwner {
        specPoolList[poolAddr] = mtFeeRate;
    }

    function addAdminList (address userAddr) external onlyOwner {
        isAdminListed[userAddr] = true;
        emit AddAdmin(userAddr);
    }

    function removeAdminList (address userAddr) external onlyOwner {
        isAdminListed[userAddr] = false;
        emit RemoveAdmin(userAddr);
    }

    function setPoolHeartBeat (address newPoolHeartBeat) public onlyOwner {
        poolHeartBeat = newPoolHeartBeat;
    }

    // ============ Pool Owner Functions ============

    function setCpPoolQuotaAddr(address cpPool, address quotaAddr) external {
        require(msg.sender == ICrowdPooling(cpPool)._OWNER_(), "NOT OWNER OF POOL");
        cpPools[cpPool].quotaAddr = quotaAddr;
    }

    // ============ View Functions ============

    function getFeeRate(address pool, address user) external view returns (uint256) {
        try IPool(pool).version() returns (string memory poolVersion) {
            bytes32 hashPoolVersion = keccak256(abi.encodePacked(poolVersion));
            if(_kjudge(hashPoolVersion)) {
                uint k = IPool(pool)._K_();
                uint baseReserve = IPool(pool)._BASE_RESERVE_();
                uint quoteReserve = IPool(pool)._QUOTE_RESERVE_();
                require(!(k==0 && (baseReserve ==0 || quoteReserve == 0)), "KJUDGE_ERROR");
            }

            if (poolHeartBeat != address(0) && !IPoolHeartBeat(poolHeartBeat).isPoolHeartBeatLive(pool)) {
                return 10**18 - IPool(pool)._LP_FEE_RATE_() - 1;
            }

            if(specPoolList[pool] != 0) {
                return specPoolList[pool];
            }

            if(_cp(hashPoolVersion)) {
                CPPoolInfo memory cpPoolInfo = cpPools[pool];
                address quoteToken = cpPoolInfo.quoteToken;
                if(quoteToken == address(0)) {
                    return 0;
                }else {
                    uint256 userInput = IERC20(quoteToken).balanceOf(pool).sub(ICrowdPooling(pool)._QUOTE_RESERVE_());
                    uint256 userStake = ICrowdPooling(pool).getShares(user);
                    address feeAddr = cpPoolInfo.feeAddr;
                    address quotaAddr = cpPoolInfo.quotaAddr;
                    int curQuota = cpPoolInfo.globalQuota;
                    if(quotaAddr != address(0))
                        curQuota = IQuota(quotaAddr).getUserQuota(user);

                    require(curQuota == -1 || (curQuota != -1 && int(userInput.add(userStake)) <= curQuota), "DODOFeeImpl: EXCEED_YOUR_QUOTA");

                    if(feeAddr == address(0)) {
                        return 0;
                    } else {
                        return IFee(feeAddr).getUserFee(user);
                    }
                }
            } else if(_dip3dvm(hashPoolVersion) || _dip3dsp(hashPoolVersion)) {
                uint256 lpFeeRate = IPool(pool)._LP_FEE_RATE_();
                uint256 mtFeeRate = lpFeeRate.mul(_LP_MT_RATIO_).div(100);
                if(lpFeeRate.add(mtFeeRate) >= 10**18) {
                    return 0;
                } else {
                    return mtFeeRate;
                }
            } else {
                return 0;
            }
        } catch (bytes memory) {
            return 0;
        }
    }

    function getCPInfoByUser(address pool, address user) external view returns (bool isHaveCap, int curQuota, uint256 userFee) {
        CPPoolInfo memory cpPoolInfo = cpPools[pool];
        if(cpPoolInfo.quoteToken == address(0)) {
            isHaveCap = false;
            curQuota = -1;
            userFee = 0;
        }else {
            address quotaAddr = cpPoolInfo.quotaAddr;
            curQuota = cpPoolInfo.globalQuota;
            if(quotaAddr != address(0))
                curQuota = IQuota(quotaAddr).getUserQuota(user);
        
            if(curQuota == -1) {
                isHaveCap = false;
            }else {
                isHaveCap = true;
                uint256 userStake = ICrowdPooling(pool).getShares(user);
                if(uint256(curQuota) >= userStake) {
                    curQuota = int(uint256(curQuota).sub(userStake));
                }else {
                    curQuota = 0;
                }
            }

            address feeAddr = cpPoolInfo.feeAddr;
            if(feeAddr == address(0)) {
                userFee =  0;
            } else {
                userFee = IFee(feeAddr).getUserFee(user);
            }
        }
    }

    function _cp(bytes32 _hashPoolVersion) internal pure returns (bool) {
        return (_hashPoolVersion == keccak256(abi.encodePacked("CP 1.0.0")) || _hashPoolVersion == keccak256(abi.encodePacked("CP 2.0.0")));
    }

    function _dip3dvm(bytes32 _hashPoolVersion) internal pure returns (bool){
        return (_hashPoolVersion == keccak256(abi.encodePacked("DVM 1.0.2")) || _hashPoolVersion == keccak256(abi.encodePacked("DVM 1.0.3")));
    }

    function _dip3dsp(bytes32 _hashPoolVersion) internal pure returns (bool){
        return (_hashPoolVersion == keccak256(abi.encodePacked("DSP 1.0.1")) || _hashPoolVersion == keccak256(abi.encodePacked("DSP 1.0.2")));
    }

    function _kjudge(bytes32 _hashPoolVersion) internal pure returns (bool) {
        return (_hashPoolVersion == keccak256(abi.encodePacked("DVM 1.0.2")) || _hashPoolVersion == keccak256(abi.encodePacked("DSP 1.0.1")) || _hashPoolVersion == keccak256(abi.encodePacked("DPP 1.0.0")) || _hashPoolVersion == keccak256(abi.encodePacked("DPP Advanced 1.0.0")));
    }

    function version() virtual external pure returns (string memory) {
        return "1.2.0";
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AddAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"RemoveAdmin","type":"event"},{"inputs":[],"name":"_LP_MT_RATIO_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddr","type":"address"}],"name":"addAdminList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cpPool","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"int256","name":"globalQuota","type":"int256"},{"internalType":"address","name":"feeAddr","type":"address"},{"internalType":"address","name":"quotaAddr","type":"address"}],"name":"addCpPoolInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cpPools","outputs":[{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"int256","name":"globalQuota","type":"int256"},{"internalType":"address","name":"feeAddr","type":"address"},{"internalType":"address","name":"quotaAddr","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getCPInfoByUser","outputs":[{"internalType":"bool","name":"isHaveCap","type":"bool"},{"internalType":"int256","name":"curQuota","type":"int256"},{"internalType":"uint256","name":"userFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAdminListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolHeartBeat","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddr","type":"address"}],"name":"removeAdminList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cpPool","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"int256","name":"globalQuota","type":"int256"},{"internalType":"address","name":"feeAddr","type":"address"},{"internalType":"address","name":"quotaAddr","type":"address"}],"name":"setCpPoolInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cpPool","type":"address"},{"internalType":"address","name":"quotaAddr","type":"address"}],"name":"setCpPoolQuotaAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLpMtRatio","type":"uint256"}],"name":"setLpMtRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPoolHeartBeat","type":"address"}],"name":"setPoolHeartBeat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddr","type":"address"},{"internalType":"uint256","name":"mtFeeRate","type":"uint256"}],"name":"setSpecPoolList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"specPoolList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}]

6080604052601960025534801561001557600080fd5b50611bb0806100256000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063848cc303116100b8578063b1efb8f41161007c578063b1efb8f414610271578063c30c616914610279578063ef6a5d791461028c578063f2fde38b1461029f578063fae783d8146102b2578063fd8bd849146102d457610137565b8063848cc303146102105780638614c552146102305780638c34329614610243578063a1e281de1461024b578063ae52aae71461025e57610137565b80634e71e0c8116100ff5780634e71e0c8146101b55780635454b842146101bd57806354fd4d50146101d057806368f0cb6f146101e55780638456db151461020857610137565b806301ea364b1461013c5780630d0092971461015157806316048bc4146101645780631822c0c01461018257806344c19402146101a2575b600080fd5b61014f61014a3660046116ff565b6102e7565b005b61014f61015f366004611628565b610336565b61016c610396565b60405161017991906118e0565b60405180910390f35b610195610190366004611628565b6103a5565b604051610179919061191f565b61014f6101b0366004611698565b6103ba565b61014f61043e565b61014f6101cb366004611698565b6104cc565b6101d861058d565b6040516101799190611942565b6101f86101f3366004611628565b6105ac565b60405161017994939291906118f4565b61016c6105e2565b61022361021e366004611660565b6105f1565b6040516101799190611b29565b61022361023e366004611628565b610e5d565b61016c610e6f565b61014f6102593660046117fd565b610e7e565b61014f61026c366004611628565b610ead565b610223610f35565b61014f610287366004611628565b610f3b565b61014f61029a366004611660565b610f87565b61014f6102ad366004611628565b61105c565b6102c56102c0366004611660565b6110e1565b6040516101799392919061192a565b61014f6102e2366004611628565b611355565b6000546001600160a01b0316331461031a5760405162461bcd60e51b815260040161031190611ac0565b60405180910390fd5b6001600160a01b03909116600090815260046020526040902055565b600154600160a01b900460ff16156103605760405162461bcd60e51b815260040161031190611a0d565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b60056020526000908152604090205460ff1681565b6000546001600160a01b031633146103e45760405162461bcd60e51b815260040161031190611ac0565b6001600160a01b03948516600090815260036020819052604090912080549587166001600160a01b031996871617815560028101805494881694871694909417909355820180549190951693169290921790925560010155565b6001546001600160a01b031633146104685760405162461bcd60e51b815260040161031190611975565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b3360009081526005602052604090205460ff166104fb5760405162461bcd60e51b815260040161031190611a6e565b610503611601565b50604080516080810182526001600160a01b039586168152602080820195865293861681830190815292861660608201908152968616600090815260039485905291909120905181549086166001600160a01b0319918216178255935160018201559051600282018054918616918516919091179055935193018054939092169216919091179055565b6040805180820190915260058152640312e322e360dc1b602082015290565b600360208190526000918252604090912080546001820154600283015492909301546001600160a01b0391821693928216911684565b6001546001600160a01b031681565b6000826001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160006040518083038186803b15801561062c57600080fd5b505afa92505050801561066157506040513d6000823e601f3d908101601f1916820160405261065e9190810190611762565b60015b61069f573d80801561068f576040519150601f19603f3d011682016040523d82523d6000602084013e610694565b606091505b506000915050610e57565b6000816040516020016106b29190611815565b6040516020818303038152906040528051906020012090506106d3816113cf565b1561086c576000856001600160a01b031663ec2fd46d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561071357600080fd5b505afa158015610727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074b919061174a565b90506000866001600160a01b0316637d7215046040518163ffffffff1660e01b815260040160206040518083038186803b15801561078857600080fd5b505afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c0919061174a565b90506000876001600160a01b031663bbf5ce786040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fd57600080fd5b505afa158015610811573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610835919061174a565b90508215801561084b575081158061084b575080155b156108685760405162461bcd60e51b81526004016103119061199c565b5050505b6006546001600160a01b0316158015906109035750600654604051633ded920b60e11b81526001600160a01b0390911690637bdb2416906108b19088906004016118e0565b60206040518083038186803b1580156108c957600080fd5b505afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610901919061172a565b155b1561098f576001856001600160a01b031663ab44a7a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561094357600080fd5b505afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061174a565b670de0b6b3a7640000030392505050610e57565b6001600160a01b038516600090815260046020526040902054156109ce575050506001600160a01b038216600090815260046020526040902054610e57565b6109d781611487565b15610d5e576109e4611601565b506001600160a01b0380861660009081526003602081815260409283902083516080810185528154861680825260018301549382019390935260028201548616948101949094529091015490921660608201529080610a4a576000945050505050610e57565b6000610b48886001600160a01b031663bbf5ce786040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8857600080fd5b505afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061174a565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610aec908d906004016118e0565b60206040518083038186803b158015610b0457600080fd5b505afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c919061174a565b9063ffffffff6114c516565b90506000886001600160a01b031663f04da65b896040518263ffffffff1660e01b8152600401610b7891906118e0565b60206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc8919061174a565b60408501516060860151602087015192935090916001600160a01b03821615610c6a576040516398a299e560e01b81526001600160a01b038316906398a299e590610c17908e906004016118e0565b60206040518083038186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c67919061174a565b90505b806000191480610c9657508060001914158015610c96575080610c93868663ffffffff6114ed16565b13155b610cb25760405162461bcd60e51b815260040161031190611a37565b6001600160a01b038316610cd25760009950505050505050505050610e57565b60405163060f58c360e01b81526001600160a01b0384169063060f58c390610cfe908e906004016118e0565b60206040518083038186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e919061174a565b9950505050505050505050610e57565b610d6781611519565b80610d765750610d7681611557565b15610e50576000856001600160a01b031663ab44a7a36040518163ffffffff1660e01b815260040160206040518083038186803b158015610db657600080fd5b505afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee919061174a565b90506000610e186064610e0c6002548561159590919063ffffffff16565b9063ffffffff6115cf16565b9050670de0b6b3a7640000610e33838363ffffffff6114ed16565b10610e45576000945050505050610e57565b9350610e5792505050565b6000925050505b92915050565b60046020526000908152604090205481565b6006546001600160a01b031681565b6000546001600160a01b03163314610ea85760405162461bcd60e51b815260040161031190611ac0565b600255565b6000546001600160a01b03163314610ed75760405162461bcd60e51b815260040161031190611ac0565b6001600160a01b03811660009081526005602052604090819020805460ff19166001179055517fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba90610f2a9083906118e0565b60405180910390a150565b60025481565b6000546001600160a01b03163314610f655760405162461bcd60e51b815260040161031190611ac0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b816001600160a01b03166316048bc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fc257600080fd5b505af1158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa9190611644565b6001600160a01b0316336001600160a01b03161461102a5760405162461bcd60e51b815260040161031190611a95565b6001600160a01b0391821660009081526003602081905260409091200180546001600160a01b03191691909216179055565b6000546001600160a01b031633146110865760405162461bcd60e51b815260040161031190611ac0565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008060006110ee611601565b506001600160a01b03808616600090815260036020818152604092839020835160808101855281548616808252600183015493820193909352600282015486169481019490945290910154909216606082015290611158576000935060001992506000915061134d565b6060810151602082015193506001600160a01b038116156111f2576040516398a299e560e01b81526001600160a01b038216906398a299e59061119f9089906004016118e0565b60206040518083038186803b1580156111b757600080fd5b505afa1580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef919061174a565b93505b83600019141561120557600094506112af565b60405163f04da65b60e01b8152600195506000906001600160a01b0389169063f04da65b90611238908a906004016118e0565b60206040518083038186803b15801561125057600080fd5b505afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611288919061174a565b90508085106112a8576112a1858263ffffffff6114c516565b94506112ad565b600094505b505b60408201516001600160a01b0381166112cb576000935061134a565b60405163060f58c360e01b81526001600160a01b0382169063060f58c3906112f7908a906004016118e0565b60206040518083038186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611347919061174a565b93505b50505b509250925092565b6000546001600160a01b0316331461137f5760405162461bcd60e51b815260040161031190611ac0565b6001600160a01b03811660009081526005602052604090819020805460ff19169055517f753f40ca3312b2408759a67875b367955e7baa221daf08aa3d643d96202ac12b90610f2a9083906118e0565b60006040516020016113e090611846565b60405160208183030381529060405280519060200120821480611426575060405160200161140d90611884565b6040516020818303038152906040528051906020012082145b80611454575060405160200161143b90611899565b6040516020818303038152906040528051906020012082145b80610e575750604051602001611469906118c2565b60405160208183030381529060405280519060200120821492915050565b600060405160200161149890611870565b60405160208183030381529060405280519060200120821480610e575750604051602001611469906118ae565b6000828211156114e75760405162461bcd60e51b8152600401610311906119ea565b50900390565b6000828201838110156115125760405162461bcd60e51b815260040161031190611ae3565b9392505050565b600060405160200161152a90611846565b60405160208183030381529060405280519060200120821480610e5757506040516020016114699061185b565b600060405160200161156890611884565b60405160208183030381529060405280519060200120821480610e57575060405160200161146990611831565b6000826115a457506000610e57565b828202828482816115b157fe5b04146115125760405162461bcd60e51b815260040161031190611b06565b60008082116115f05760405162461bcd60e51b8152600401610311906119c2565b8183816115f957fe5b049392505050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b600060208284031215611639578081fd5b813561151281611b62565b600060208284031215611655578081fd5b815161151281611b62565b60008060408385031215611672578081fd5b823561167d81611b62565b9150602083013561168d81611b62565b809150509250929050565b600080600080600060a086880312156116af578081fd5b85356116ba81611b62565b945060208601356116ca81611b62565b93506040860135925060608601356116e181611b62565b915060808601356116f181611b62565b809150509295509295909350565b60008060408385031215611711578182fd5b823561171c81611b62565b946020939093013593505050565b60006020828403121561173b578081fd5b81518015158114611512578182fd5b60006020828403121561175b578081fd5b5051919050565b600060208284031215611773578081fd5b815167ffffffffffffffff8082111561178a578283fd5b81840185601f82011261179b578384fd5b80519250818311156117ab578384fd5b604051601f8401601f1916810160200183811182821017156117cb578586fd5b6040528381528184016020018710156117e2578485fd5b6117f3846020830160208501611b32565b9695505050505050565b60006020828403121561180e578081fd5b5035919050565b60008251611827818460208701611b32565b9190910192915050565b682229a810189718171960b91b815260090190565b68222b2690189718171960b91b815260090190565b6844564d20312e302e3360b81b815260090190565b670435020312e302e360c41b815260080190565b6844535020312e302e3160b81b815260090190565b68044505020312e302e360bc1b815260090190565b670435020322e302e360c41b815260080190565b71044505020416476616e63656420312e302e360741b815260120190565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815260208101939093529083166040830152909116606082015260800190565b901515815260200190565b92151583526020830191909152604082015260600190565b6000602082528251806020840152611961816040850160208701611b32565b601f01601f19169190910160400192915050565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b6020808252600c908201526b25a52aa223a2afa2a92927a960a11b604082015260600190565b6020808252600e908201526d2224ab24a224a723afa2a92927a960911b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252601e908201527f444f444f466565496d706c3a204558434545445f594f55525f51554f54410000604082015260600190565b6020808252600d908201526c1050d0d154d4d7d11153925151609a1b604082015260600190565b6020808252601190820152701393d50813d5d391548813d1881413d3d3607a1b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b90815260200190565b60005b83811015611b4d578181015183820152602001611b35565b83811115611b5c576000848401525b50505050565b6001600160a01b0381168114611b7757600080fd5b5056fea2646970667358221220e746a055b4c39f402f44bd6cb4664444d704b0f55a59246deded20ce9f6dee1364736f6c63430006090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063848cc303116100b8578063b1efb8f41161007c578063b1efb8f414610271578063c30c616914610279578063ef6a5d791461028c578063f2fde38b1461029f578063fae783d8146102b2578063fd8bd849146102d457610137565b8063848cc303146102105780638614c552146102305780638c34329614610243578063a1e281de1461024b578063ae52aae71461025e57610137565b80634e71e0c8116100ff5780634e71e0c8146101b55780635454b842146101bd57806354fd4d50146101d057806368f0cb6f146101e55780638456db151461020857610137565b806301ea364b1461013c5780630d0092971461015157806316048bc4146101645780631822c0c01461018257806344c19402146101a2575b600080fd5b61014f61014a3660046116ff565b6102e7565b005b61014f61015f366004611628565b610336565b61016c610396565b60405161017991906118e0565b60405180910390f35b610195610190366004611628565b6103a5565b604051610179919061191f565b61014f6101b0366004611698565b6103ba565b61014f61043e565b61014f6101cb366004611698565b6104cc565b6101d861058d565b6040516101799190611942565b6101f86101f3366004611628565b6105ac565b60405161017994939291906118f4565b61016c6105e2565b61022361021e366004611660565b6105f1565b6040516101799190611b29565b61022361023e366004611628565b610e5d565b61016c610e6f565b61014f6102593660046117fd565b610e7e565b61014f61026c366004611628565b610ead565b610223610f35565b61014f610287366004611628565b610f3b565b61014f61029a366004611660565b610f87565b61014f6102ad366004611628565b61105c565b6102c56102c0366004611660565b6110e1565b6040516101799392919061192a565b61014f6102e2366004611628565b611355565b6000546001600160a01b0316331461031a5760405162461bcd60e51b815260040161031190611ac0565b60405180910390fd5b6001600160a01b03909116600090815260046020526040902055565b600154600160a01b900460ff16156103605760405162461bcd60e51b815260040161031190611a0d565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b60056020526000908152604090205460ff1681565b6000546001600160a01b031633146103e45760405162461bcd60e51b815260040161031190611ac0565b6001600160a01b03948516600090815260036020819052604090912080549587166001600160a01b031996871617815560028101805494881694871694909417909355820180549190951693169290921790925560010155565b6001546001600160a01b031633146104685760405162461bcd60e51b815260040161031190611975565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b3360009081526005602052604090205460ff166104fb5760405162461bcd60e51b815260040161031190611a6e565b610503611601565b50604080516080810182526001600160a01b039586168152602080820195865293861681830190815292861660608201908152968616600090815260039485905291909120905181549086166001600160a01b0319918216178255935160018201559051600282018054918616918516919091179055935193018054939092169216919091179055565b6040805180820190915260058152640312e322e360dc1b602082015290565b600360208190526000918252604090912080546001820154600283015492909301546001600160a01b0391821693928216911684565b6001546001600160a01b031681565b6000826001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160006040518083038186803b15801561062c57600080fd5b505afa92505050801561066157506040513d6000823e601f3d908101601f1916820160405261065e9190810190611762565b60015b61069f573d80801561068f576040519150601f19603f3d011682016040523d82523d6000602084013e610694565b606091505b506000915050610e57565b6000816040516020016106b29190611815565b6040516020818303038152906040528051906020012090506106d3816113cf565b1561086c576000856001600160a01b031663ec2fd46d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561071357600080fd5b505afa158015610727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074b919061174a565b90506000866001600160a01b0316637d7215046040518163ffffffff1660e01b815260040160206040518083038186803b15801561078857600080fd5b505afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c0919061174a565b90506000876001600160a01b031663bbf5ce786040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fd57600080fd5b505afa158015610811573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610835919061174a565b90508215801561084b575081158061084b575080155b156108685760405162461bcd60e51b81526004016103119061199c565b5050505b6006546001600160a01b0316158015906109035750600654604051633ded920b60e11b81526001600160a01b0390911690637bdb2416906108b19088906004016118e0565b60206040518083038186803b1580156108c957600080fd5b505afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610901919061172a565b155b1561098f576001856001600160a01b031663ab44a7a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561094357600080fd5b505afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061174a565b670de0b6b3a7640000030392505050610e57565b6001600160a01b038516600090815260046020526040902054156109ce575050506001600160a01b038216600090815260046020526040902054610e57565b6109d781611487565b15610d5e576109e4611601565b506001600160a01b0380861660009081526003602081815260409283902083516080810185528154861680825260018301549382019390935260028201548616948101949094529091015490921660608201529080610a4a576000945050505050610e57565b6000610b48886001600160a01b031663bbf5ce786040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8857600080fd5b505afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061174a565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610aec908d906004016118e0565b60206040518083038186803b158015610b0457600080fd5b505afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c919061174a565b9063ffffffff6114c516565b90506000886001600160a01b031663f04da65b896040518263ffffffff1660e01b8152600401610b7891906118e0565b60206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc8919061174a565b60408501516060860151602087015192935090916001600160a01b03821615610c6a576040516398a299e560e01b81526001600160a01b038316906398a299e590610c17908e906004016118e0565b60206040518083038186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c67919061174a565b90505b806000191480610c9657508060001914158015610c96575080610c93868663ffffffff6114ed16565b13155b610cb25760405162461bcd60e51b815260040161031190611a37565b6001600160a01b038316610cd25760009950505050505050505050610e57565b60405163060f58c360e01b81526001600160a01b0384169063060f58c390610cfe908e906004016118e0565b60206040518083038186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e919061174a565b9950505050505050505050610e57565b610d6781611519565b80610d765750610d7681611557565b15610e50576000856001600160a01b031663ab44a7a36040518163ffffffff1660e01b815260040160206040518083038186803b158015610db657600080fd5b505afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee919061174a565b90506000610e186064610e0c6002548561159590919063ffffffff16565b9063ffffffff6115cf16565b9050670de0b6b3a7640000610e33838363ffffffff6114ed16565b10610e45576000945050505050610e57565b9350610e5792505050565b6000925050505b92915050565b60046020526000908152604090205481565b6006546001600160a01b031681565b6000546001600160a01b03163314610ea85760405162461bcd60e51b815260040161031190611ac0565b600255565b6000546001600160a01b03163314610ed75760405162461bcd60e51b815260040161031190611ac0565b6001600160a01b03811660009081526005602052604090819020805460ff19166001179055517fad6de4452a631e641cb59902236607946ce9272b9b981f2f80e8d129cb9084ba90610f2a9083906118e0565b60405180910390a150565b60025481565b6000546001600160a01b03163314610f655760405162461bcd60e51b815260040161031190611ac0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b816001600160a01b03166316048bc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fc257600080fd5b505af1158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa9190611644565b6001600160a01b0316336001600160a01b03161461102a5760405162461bcd60e51b815260040161031190611a95565b6001600160a01b0391821660009081526003602081905260409091200180546001600160a01b03191691909216179055565b6000546001600160a01b031633146110865760405162461bcd60e51b815260040161031190611ac0565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008060006110ee611601565b506001600160a01b03808616600090815260036020818152604092839020835160808101855281548616808252600183015493820193909352600282015486169481019490945290910154909216606082015290611158576000935060001992506000915061134d565b6060810151602082015193506001600160a01b038116156111f2576040516398a299e560e01b81526001600160a01b038216906398a299e59061119f9089906004016118e0565b60206040518083038186803b1580156111b757600080fd5b505afa1580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef919061174a565b93505b83600019141561120557600094506112af565b60405163f04da65b60e01b8152600195506000906001600160a01b0389169063f04da65b90611238908a906004016118e0565b60206040518083038186803b15801561125057600080fd5b505afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611288919061174a565b90508085106112a8576112a1858263ffffffff6114c516565b94506112ad565b600094505b505b60408201516001600160a01b0381166112cb576000935061134a565b60405163060f58c360e01b81526001600160a01b0382169063060f58c3906112f7908a906004016118e0565b60206040518083038186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611347919061174a565b93505b50505b509250925092565b6000546001600160a01b0316331461137f5760405162461bcd60e51b815260040161031190611ac0565b6001600160a01b03811660009081526005602052604090819020805460ff19169055517f753f40ca3312b2408759a67875b367955e7baa221daf08aa3d643d96202ac12b90610f2a9083906118e0565b60006040516020016113e090611846565b60405160208183030381529060405280519060200120821480611426575060405160200161140d90611884565b6040516020818303038152906040528051906020012082145b80611454575060405160200161143b90611899565b6040516020818303038152906040528051906020012082145b80610e575750604051602001611469906118c2565b60405160208183030381529060405280519060200120821492915050565b600060405160200161149890611870565b60405160208183030381529060405280519060200120821480610e575750604051602001611469906118ae565b6000828211156114e75760405162461bcd60e51b8152600401610311906119ea565b50900390565b6000828201838110156115125760405162461bcd60e51b815260040161031190611ae3565b9392505050565b600060405160200161152a90611846565b60405160208183030381529060405280519060200120821480610e5757506040516020016114699061185b565b600060405160200161156890611884565b60405160208183030381529060405280519060200120821480610e57575060405160200161146990611831565b6000826115a457506000610e57565b828202828482816115b157fe5b04146115125760405162461bcd60e51b815260040161031190611b06565b60008082116115f05760405162461bcd60e51b8152600401610311906119c2565b8183816115f957fe5b049392505050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b600060208284031215611639578081fd5b813561151281611b62565b600060208284031215611655578081fd5b815161151281611b62565b60008060408385031215611672578081fd5b823561167d81611b62565b9150602083013561168d81611b62565b809150509250929050565b600080600080600060a086880312156116af578081fd5b85356116ba81611b62565b945060208601356116ca81611b62565b93506040860135925060608601356116e181611b62565b915060808601356116f181611b62565b809150509295509295909350565b60008060408385031215611711578182fd5b823561171c81611b62565b946020939093013593505050565b60006020828403121561173b578081fd5b81518015158114611512578182fd5b60006020828403121561175b578081fd5b5051919050565b600060208284031215611773578081fd5b815167ffffffffffffffff8082111561178a578283fd5b81840185601f82011261179b578384fd5b80519250818311156117ab578384fd5b604051601f8401601f1916810160200183811182821017156117cb578586fd5b6040528381528184016020018710156117e2578485fd5b6117f3846020830160208501611b32565b9695505050505050565b60006020828403121561180e578081fd5b5035919050565b60008251611827818460208701611b32565b9190910192915050565b682229a810189718171960b91b815260090190565b68222b2690189718171960b91b815260090190565b6844564d20312e302e3360b81b815260090190565b670435020312e302e360c41b815260080190565b6844535020312e302e3160b81b815260090190565b68044505020312e302e360bc1b815260090190565b670435020322e302e360c41b815260080190565b71044505020416476616e63656420312e302e360741b815260120190565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815260208101939093529083166040830152909116606082015260800190565b901515815260200190565b92151583526020830191909152604082015260600190565b6000602082528251806020840152611961816040850160208701611b32565b601f01601f19169190910160400192915050565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b6020808252600c908201526b25a52aa223a2afa2a92927a960a11b604082015260600190565b6020808252600e908201526d2224ab24a224a723afa2a92927a960911b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252601e908201527f444f444f466565496d706c3a204558434545445f594f55525f51554f54410000604082015260600190565b6020808252600d908201526c1050d0d154d4d7d11153925151609a1b604082015260600190565b6020808252601190820152701393d50813d5d391548813d1881413d3d3607a1b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b90815260200190565b60005b83811015611b4d578181015183820152602001611b35565b83811115611b5c576000848401525b50505050565b6001600160a01b0381168114611b7757600080fd5b5056fea2646970667358221220e746a055b4c39f402f44bd6cb4664444d704b0f55a59246deded20ce9f6dee1364736f6c63430006090033

Deployed ByteCode Sourcemap

6111:7435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7712:133;;;;;;;;;:::i;:::-;;914:127;;;;;;;;;:::i;281:22::-;;;:::i;:::-;;;;;;;;;;;;;;;;6538:46;;;;;;;;;:::i;:::-;;;;;;;;7251:333;;;;;;;;;:::i;1220:228::-;;;:::i;6805:438::-;;;;;;;;;:::i;13445:98::-;;;:::i;:::-;;;;;;;;6432:45;;;;;;;;;:::i;:::-;;;;;;;;;;;310:26;;;:::i;8621:2538::-;;;;;;;;;:::i;:::-;;;;;;;;6484:47;;;;;;;;;:::i;6591:28::-;;;:::i;7592:110::-;;;;;;;;;:::i;7853:143::-;;;;;;;;;:::i;6247:33::-;;;:::i;8162:121::-;;;;;;;;;:::i;8348:214::-;;;;;;;;;:::i;1049:163::-;;;;;;;;;:::i;11167:1211::-;;;;;;;;;:::i;:::-;;;;;;;;;;8004:150;;;;;;;;;:::i;7712:133::-;819:7;;-1:-1:-1;;;;;819:7:0;805:10;:21;797:43;;;;-1:-1:-1;;;797:43:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7803:22:0;;::::1;;::::0;;;:12:::1;:22;::::0;;;;:34;7712:133::o;914:127::-;703:13;;-1:-1:-1;;;703:13:0;;;;702:14;694:43;;;;-1:-1:-1;;;694:43:0;;;;;;;;;1000:4:::1;984:20:::0;;-1:-1:-1;;;;984:20:0::1;-1:-1:-1::0;;;984:20:0::1;::::0;;;1015:18;;-1:-1:-1;;;;;1015:18:0;;::::1;-1:-1:-1::0;;;;;;1015:18:0;;::::1;::::0;;;::::1;::::0;;914:127::o;281:22::-;;;-1:-1:-1;;;;;281:22:0;;:::o;6538:46::-;;;;;;;;;;;;;;;:::o;7251:333::-;819:7;;-1:-1:-1;;;;;819:7:0;805:10;:21;797:43;;;;-1:-1:-1;;;797:43:0;;;;;;;;;-1:-1:-1;;;;;7393:15:0;;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:39;;;;::::1;-1:-1:-1::0;;;;;;7393:39:0;;::::1;;::::0;;7443:23:::1;::::0;::::1;:33:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;7487:25;::::1;:37:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;7393:39;7535:27:::1;:41:::0;7251:333::o;1220:228::-;1286:11;;-1:-1:-1;;;;;1286:11:0;1272:10;:25;1264:51;;;;-1:-1:-1;;;1264:51:0;;;;;;;;;1361:11;;;1352:7;;1331:42;;-1:-1:-1;;;;;1361:11:0;;;;1352:7;;;;1331:42;;;1394:11;;;;1384:21;;-1:-1:-1;;;;;;1384:21:0;;;-1:-1:-1;;;;;1394:11:0;;1384:21;;;;1416:24;;;1220:228::o;6805:438::-;6959:10;6945:25;;;;:13;:25;;;;;;;;6937:51;;;;-1:-1:-1;;;6937:51:0;;;;;;;;;6999:28;;:::i;:::-;-1:-1:-1;7031:165:0;;;;;;;;-1:-1:-1;;;;;7031:165:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7207:15;;;-1:-1:-1;7207:15:0;;;:7;:15;;;;;;;;:28;;;;;;;-1:-1:-1;;;;;;7207:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6805:438::o;13445:98::-;13521:14;;;;;;;;;;;;-1:-1:-1;;;13521:14:0;;;;13445:98;:::o;6432:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6432:45:0;;;;;;;;;;:::o;310:26::-;;;-1:-1:-1;;;;;310:26:0;;:::o;8621:2538::-;8692:7;8722:4;-1:-1:-1;;;;;8716:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8716:21:0;;;;;;;;;;;;;;;;8712:2440;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11139:1;11132:8;;;;;8712:2440;8789:23;8842:11;8825:29;;;;;;;;;;;;;;;;;;;;;;8815:40;;;;;;8789:66;;8873:24;8881:15;8873:7;:24::i;:::-;8870:317;;;8918:6;8933:4;-1:-1:-1;;;;;8927:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8918:26;;8963:16;8988:4;-1:-1:-1;;;;;8982:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8963:47;;9029:17;9055:4;-1:-1:-1;;;;;9049:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9029:49;-1:-1:-1;9107:4:0;;:46;;;;-1:-1:-1;9116:15:0;;;:36;;-1:-1:-1;9135:17:0;;9116:36;9105:49;9097:74;;;;-1:-1:-1;;;9097:74:0;;;;;;;;;8870:317;;;;9207:13;;-1:-1:-1;;;;;9207:13:0;:27;;;;:87;;-1:-1:-1;9254:13:0;;9239:55;;-1:-1:-1;;;9239:55:0;;-1:-1:-1;;;;;9254:13:0;;;;9239:49;;:55;;9289:4;;9239:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9238:56;9207:87;9203:175;;;9361:1;9337:4;-1:-1:-1;;;;;9331:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9322:6;:36;:40;9315:47;;;;;;9203:175;-1:-1:-1;;;;;9397:18:0;;;;;;:12;:18;;;;;;:23;9394:88;;-1:-1:-1;;;;;;;;9448:18:0;;;;;;:12;:18;;;;;;9441:25;;9394:88;9501:20;9505:15;9501:3;:20::i;:::-;9498:1586;;;9542:28;;:::i;:::-;-1:-1:-1;;;;;;9573:13:0;;;;;;;:7;:13;;;;;;;;;9542:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9669:24;9666:958;;9725:1;9718:8;;;;;;;;9666:958;9774:17;9794:77;9847:4;-1:-1:-1;;;;;9833:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9794:34;;-1:-1:-1;;;9794:34:0;;-1:-1:-1;;;;;9794:28:0;;;;;:34;;9823:4;;9794:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;:77;:38;:77;:::i;:::-;9774:97;;9894:17;9928:4;-1:-1:-1;;;;;9914:29:0;;9944:4;9914:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9990:18;;;;10051:20;;;;10109:22;;;;9894:55;;-1:-1:-1;9990:18:0;;-1:-1:-1;;;;;10157:23:0;;;10154:100;;10218:36;;-1:-1:-1;;;10218:36:0;;-1:-1:-1;;;;;10218:30:0;;;;;:36;;10249:4;;10218:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10207:47;;10154:100;10287:8;-1:-1:-1;;10287:14:0;:79;;;;10306:8;-1:-1:-1;;10306:14:0;;:59;;;;-1:-1:-1;10357:8:0;10328:24;:9;10342;10328:24;:13;:24;:::i;:::-;10324:41;;10306:59;10279:122;;;;-1:-1:-1;;;10279:122:0;;;;;;;;;-1:-1:-1;;;;;10429:21:0;;10426:179;;10486:1;10479:8;;;;;;;;;;;;;10426:179;10551:30;;-1:-1:-1;;;10551:30:0;;-1:-1:-1;;;;;10551:24:0;;;;;:30;;10576:4;;10551:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10544:37;;;;;;;;;;;;;9498:1586;10648:25;10657:15;10648:8;:25::i;:::-;:54;;;;10677:25;10686:15;10677:8;:25::i;:::-;10645:439;;;10723:17;10749:4;-1:-1:-1;;;;;10743:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10723:47;;10789:17;10809:37;10842:3;10809:28;10823:13;;10809:9;:13;;:28;;;;:::i;:::-;:32;:37;:32;:37;:::i;:::-;10789:57;-1:-1:-1;10896:6:0;10868:24;:9;10789:57;10868:24;:13;:24;:::i;:::-;:34;10865:155;;10934:1;10927:8;;;;;;;;10865:155;10991:9;-1:-1:-1;10984:16:0;;-1:-1:-1;;;10984:16:0;10645:439;11067:1;11060:8;;;;8712:2440;8621:2538;;;;:::o;6484:47::-;;;;;;;;;;;;;:::o;6591:28::-;;;-1:-1:-1;;;;;6591:28:0;;:::o;7592:110::-;819:7;;-1:-1:-1;;;;;819:7:0;805:10;:21;797:43;;;;-1:-1:-1;;;797:43:0;;;;;;;;;7666:13:::1;:28:::0;7592:110::o;7853:143::-;819:7;;-1:-1:-1;;;;;819:7:0;805:10;:21;797:43;;;;-1:-1:-1;;;797:43:0;;;;;;;;;-1:-1:-1;;;;;7924:23:0;::::1;;::::0;;;:13:::1;:23;::::0;;;;;;:30;;-1:-1:-1;;7924:30:0::1;7950:4;7924:30;::::0;;7970:18;::::1;::::0;::::1;::::0;7938:8;;7970:18:::1;;;;;;;;;;7853:143:::0;:::o;6247:33::-;;;;:::o;8162:121::-;819:7;;-1:-1:-1;;;;;819:7:0;805:10;:21;797:43;;;;-1:-1:-1;;;797:43:0;;;;;;;;;8243:13:::1;:32:::0;;-1:-1:-1;;;;;;8243:32:0::1;-1:-1:-1::0;;;;;8243:32:0;;;::::1;::::0;;;::::1;::::0;;8162:121::o;8348:214::-;8467:6;-1:-1:-1;;;;;8453:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8439:45:0;:10;-1:-1:-1;;;;;8439:45:0;;8431:75;;;;-1:-1:-1;;;8431:75:0;;;;;;;;;-1:-1:-1;;;;;8517:15:0;;;;;;;:7;:15;;;;;;;;:25;:37;;-1:-1:-1;;;;;;8517:37:0;;;;;;;;8348:214::o;1049:163::-;819:7;;-1:-1:-1;;;;;819:7:0;805:10;:21;797:43;;;;-1:-1:-1;;;797:43:0;;;;;;;;;1153:7:::1;::::0;;1127:44:::1;::::0;-1:-1:-1;;;;;1127:44:0;;::::1;::::0;1153:7;::::1;::::0;1127:44:::1;::::0;::::1;1182:11;:22:::0;;-1:-1:-1;;;;;;1182:22:0::1;-1:-1:-1::0;;;;;1182:22:0;;;::::1;::::0;;;::::1;::::0;;1049:163::o;11167:1211::-;11243:14;11259:12;11273:15;11301:28;;:::i;:::-;-1:-1:-1;;;;;;11332:13:0;;;;;;;:7;:13;;;;;;;;;11301:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11356:1015;;11423:5;11411:17;;-1:-1:-1;;11443:13:0;;11481:1;11471:11;;11356:1015;;;11534:20;;;;11580:22;;;;;-1:-1:-1;;;;;;11620:23:0;;;11617:92;;11673:36;;-1:-1:-1;;;11673:36:0;;-1:-1:-1;;;;;11673:30:0;;;;;:36;;11704:4;;11673:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11662:47;;11617:92;11737:8;-1:-1:-1;;11737:14:0;11734:405;;;11784:5;11772:17;;11734:405;;;11884:35;;-1:-1:-1;;;11884:35:0;;11841:4;;-1:-1:-1;11864:17:0;;-1:-1:-1;;;;;11884:29:0;;;;;:35;;11914:4;;11884:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11864:55;;11962:9;11949:8;11941:30;11938:186;;12011:32;12019:8;12033:9;12011:32;:21;:32;:::i;:::-;11996:48;;11938:186;;;12103:1;12092:12;;11938:186;11734:405;;12173:18;;;;-1:-1:-1;;;;;12209:21:0;;12206:154;;12262:1;12251:12;;12206:154;;;12314:30;;-1:-1:-1;;;12314:30:0;;-1:-1:-1;;;;;12314:24:0;;;;;:30;;12339:4;;12314:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12304:40;;12206:154;11356:1015;;;11167:1211;;;;;;:::o;8004:150::-;819:7;;-1:-1:-1;;;;;819:7:0;805:10;:21;797:43;;;;-1:-1:-1;;;797:43:0;;;;;;;;;-1:-1:-1;;;;;8078:23:0;::::1;8104:5;8078:23:::0;;;:13:::1;:23;::::0;;;;;;:31;;-1:-1:-1;;8078:31:0::1;::::0;;8125:21;::::1;::::0;::::1;::::0;8092:8;;8125:21:::1;;13076:361:::0;13142:4;13197:29;;;;;;;;;;;;;;;;;;;;;13187:40;;;;;;13167:16;:60;:124;;;;13261:29;;;;;;;;;;;;;;;;;;;;;13251:40;;;;;;13231:16;:60;13167:124;:188;;;;13325:29;;;;;;;;;;;;;;;;;;;;;13315:40;;;;;;13295:16;:60;13167:188;:261;;;;13389:38;;;;;;;;;;;;;;;;;;;;;13379:49;;;;;;13359:16;:69;13159:270;13076:361;-1:-1:-1;;13076:361:0:o;12386:218::-;12448:4;12503:28;;;;;;;;;;;;;;;;;;;;;12493:39;;;;;;12473:16;:59;:122;;;;12566:28;;;;;;;;4734:137;4792:7;4825:1;4820;:6;;4812:28;;;;-1:-1:-1;;;4812:28:0;;;;;;;;;-1:-1:-1;4858:5:0;;;4734:137::o;4879:161::-;4937:7;4969:5;;;4993:6;;;;4985:28;;;;-1:-1:-1;;;4985:28:0;;;;;;;;;5031:1;4879:161;-1:-1:-1;;;4879:161:0:o;12612:224::-;12679:4;12733:29;;;;;;;;;;;;;;;;;;;;;12723:40;;;;;;12703:16;:60;:124;;;;12797:29;;;;;;;;12844:224;12911:4;12965:29;;;;;;;;;;;;;;;;;;;;;12955:40;;;;;;12935:16;:60;:124;;;;13029:29;;;;;;;;4055:226;4113:7;4137:6;4133:47;;-1:-1:-1;4167:1:0;4160:8;;4133:47;4204:5;;;4208:1;4204;:5;:1;4228:5;;;;;:10;4220:32;;;;-1:-1:-1;;;4220:32:0;;;;;;;;4289:141;4347:7;4379:1;4375;:5;4367:32;;;;-1:-1:-1;;;4367:32:0;;;;;;;;;4421:1;4417;:5;;;;;;;4289:141;-1:-1:-1;;;4289:141:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1423:241::-;;1527:2;1515:9;1506:7;1502:23;1498:32;1495:2;;;-1:-1;;1533:12;1495:2;85:6;72:20;97:33;124:5;97:33;;1671:263;;1786:2;1774:9;1765:7;1761:23;1757:32;1754:2;;;-1:-1;;1792:12;1754:2;226:6;220:13;238:33;265:5;238:33;;1941:366;;;2062:2;2050:9;2041:7;2037:23;2033:32;2030:2;;;-1:-1;;2068:12;2030:2;85:6;72:20;97:33;124:5;97:33;;;2120:63;-1:-1;2220:2;2259:22;;72:20;97:33;72:20;97:33;;;2228:63;;;;2024:283;;;;;;2314:741;;;;;;2485:3;2473:9;2464:7;2460:23;2456:33;2453:2;;;-1:-1;;2492:12;2453:2;85:6;72:20;97:33;124:5;97:33;;;2544:63;-1:-1;2644:2;2683:22;;72:20;97:33;72:20;97:33;;;2652:63;-1:-1;2752:2;2790:22;;484:20;;-1:-1;2859:2;2898:22;;72:20;97:33;72:20;97:33;;;2867:63;-1:-1;2967:3;3007:22;;72:20;97:33;72:20;97:33;;;2976:63;;;;2447:608;;;;;;;;;3062:366;;;3183:2;3171:9;3162:7;3158:23;3154:32;3151:2;;;-1:-1;;3189:12;3151:2;85:6;72:20;97:33;124:5;97:33;;;3241:63;3341:2;3380:22;;;;1212:20;;-1:-1;;;3145:283;3435:257;;3547:2;3535:9;3526:7;3522:23;3518:32;3515:2;;;-1:-1;;3553:12;3515:2;364:6;358:13;24548:5;23650:13;23643:21;24526:5;24523:32;24513:2;;-1:-1;;24559:12;3699:261;;3813:2;3801:9;3792:7;3788:23;3784:32;3781:2;;;-1:-1;;3819:12;3781:2;-1:-1;630:13;;3775:185;-1:-1;3775:185;3967:362;;4092:2;4080:9;4071:7;4067:23;4063:32;4060:2;;;-1:-1;;4098:12;4060:2;4149:17;4143:24;4187:18;;4179:6;4176:30;4173:2;;;-1:-1;;4209:12;4173:2;4296:6;4285:9;4281:22;806:3;799:4;791:6;787:17;783:27;773:2;;-1:-1;;814:12;773:2;854:6;848:13;834:27;;4187:18;22838:6;22835:30;22832:2;;;-1:-1;;22868:12;22832:2;22501;22495:9;22941;22922:17;;-1:-1;;22918:33;22527:17;;4092:2;22527:17;22587:34;;;22623:22;;;22584:62;22581:2;;;-1:-1;;22649:12;22581:2;22501;22668:22;947:21;;;1047:16;;;4092:2;1047:16;1044:25;-1:-1;1041:2;;;-1:-1;;1072:12;1041:2;1092:39;1124:6;4092:2;1023:5;1019:16;4092:2;989:6;985:17;1092:39;;;4229:84;4054:275;-1:-1;;;;;;4054:275;4336:241;;4440:2;4428:9;4419:7;4415:23;4411:32;4408:2;;;-1:-1;;4446:12;4408:2;-1:-1;1212:20;;4402:175;-1:-1;4402:175;12414:275;;5719:5;23119:12;5831:52;5876:6;5871:3;5864:4;5857:5;5853:16;5831:52;;;5895:16;;;;;12550:139;-1:-1;;12550:139;12696:381;-1:-1;;;6521:32;;6506:1;6572:11;;12885:192;13084:381;-1:-1;;;6873:32;;6858:1;6924:11;;13273:192;13472:381;-1:-1;;;7546:32;;7531:1;7597:11;;13661:192;13860:381;-1:-1;;;8221:31;;8206:1;8271:11;;14049:192;14248:381;-1:-1;;;8572:32;;8557:1;8623:11;;14437:192;14636:381;-1:-1;;;9905:32;;9890:1;9956:11;;14825:192;15024:381;-1:-1;;;10905:31;;10890:1;10955:11;;15213:192;15412:381;-1:-1;;;12208:41;;12192:2;12268:12;;15601:192;15800:222;-1:-1;;;;;23816:54;;;;4925:37;;15927:2;15912:18;;15898:124;16029:552;-1:-1;;;;;23816:54;;;4925:37;;16401:2;16386:18;;5154:36;;;;23816:54;;;16484:2;16469:18;;4925:37;23816:54;;;16567:2;16552:18;;4925:37;16238:3;16223:19;;16209:372;16588:210;23650:13;;23643:21;5039:34;;16709:2;16694:18;;16680:118;16805:428;23650:13;;23643:21;5039:34;;17136:2;17121:18;;5154:36;;;;17219:2;17204:18;;5154:36;16980:2;16965:18;;16951:282;17240:310;;17387:2;17408:17;17401:47;5347:5;23119:12;23276:6;17387:2;17376:9;17372:18;23264:19;5441:52;5486:6;23304:14;17376:9;23304:14;17387:2;5467:5;5463:16;5441:52;;;22941:9;24306:14;-1:-1;;24302:28;5505:39;;;;23304:14;5505:39;;17358:192;-1:-1;;17358:192;17557:416;17757:2;17771:47;;;6148:2;17742:18;;;23264:19;-1:-1;;;23304:14;;;6164:36;6219:12;;;17728:245;17980:416;18180:2;18194:47;;;7174:2;18165:18;;;23264:19;-1:-1;;;23304:14;;;7190:35;7244:12;;;18151:245;18403:416;18603:2;18617:47;;;7847:2;18588:18;;;23264:19;-1:-1;;;23304:14;;;7863:37;7919:12;;;18574:245;18826:416;19026:2;19040:47;;;8873:1;19011:18;;;23264:19;-1:-1;;;23304:14;;;8888:32;8939:12;;;18997:245;19249:416;19449:2;19463:47;;;9190:2;19434:18;;;23264:19;-1:-1;;;23304:14;;;9206:39;9264:12;;;19420:245;19672:416;19872:2;19886:47;;;9515:2;19857:18;;;23264:19;9551:32;23304:14;;;9531:53;9603:12;;;19843:245;20095:416;20295:2;20309:47;;;10206:2;20280:18;;;23264:19;-1:-1;;;23304:14;;;10222:36;10277:12;;;20266:245;20518:416;20718:2;20732:47;;;10528:2;20703:18;;;23264:19;-1:-1;;;23304:14;;;10544:40;10603:12;;;20689:245;20941:416;21141:2;21155:47;;;11205:1;21126:18;;;23264:19;-1:-1;;;23304:14;;;11220:32;11271:12;;;21112:245;21364:416;21564:2;21578:47;;;11522:1;21549:18;;;23264:19;-1:-1;;;23304:14;;;11537:32;11588:12;;;21535:245;21787:416;21987:2;22001:47;;;11839:1;21972:18;;;23264:19;-1:-1;;;23304:14;;;11854:32;11905:12;;;21958:245;22210:222;5154:36;;;22337:2;22322:18;;22308:124;23962:268;24027:1;24034:101;24048:6;24045:1;24042:13;24034:101;;;24115:11;;;24109:18;24096:11;;;24089:39;24070:2;24063:10;24034:101;;;24150:6;24147:1;24144:13;24141:2;;;24027:1;24206:6;24201:3;24197:16;24190:27;24141:2;;24011:219;;;;24343:117;-1:-1;;;;;23816:54;;24402:35;;24392:2;;24451:1;;24441:12;24392:2;24386:74;

Metadata Hash

e746a055b4c39f402f44bd6cb4664444d704b0f55a59246deded20ce9f6dee13
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.