ETH Price: $2,492.54 (+3.46%)
 

Overview

ETH Balance

0.018 ETH

Eth Value

$44.87 (@ $2,492.54/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint Random164162992023-01-16 2:14:11659 days ago1673835251IN
0x0a599b42...dA092FbC7
0.008 ETH0.002110713.90872269
Mint Chara At164159982023-01-16 1:13:23660 days ago1673831603IN
0x0a599b42...dA092FbC7
0.01 ETH0.002233218.56611606
Reserve Tokens164045112023-01-14 10:41:35661 days ago1673692895IN
0x0a599b42...dA092FbC7
0 ETH0.030674716
Reserve Tokens164045092023-01-14 10:41:11661 days ago1673692871IN
0x0a599b42...dA092FbC7
0 ETH0.030674716
Reserve Tokens164045022023-01-14 10:39:47661 days ago1673692787IN
0x0a599b42...dA092FbC7
0 ETH0.0332050516
Reserve Tokens164043852023-01-14 10:15:47661 days ago1673691347IN
0x0a599b42...dA092FbC7
0 ETH0.0026719518
Update Token Con...164043812023-01-14 10:14:59661 days ago1673691299IN
0x0a599b42...dA092FbC7
0 ETH0.0016882718
0x60806040164043282023-01-14 10:04:23661 days ago1673690663IN
 Create: Vendor01
0 ETH0.0362796818

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vendor01

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-14
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.17 <0.9.0;

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

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


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

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

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

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

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

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

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

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

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


//import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}


//import "./Common/IBlockMintable.sol";
//--------------------------------------------
// BlockMintable intterface
//--------------------------------------------
interface IBlockMintable {
    //----------------
    // read
    //----------------
    function getBlockTokenIdFrom( uint256 blockId ) external view returns (uint256);
    function getBlockTokenNum( uint256 blockId ) external view returns (uint256);
    function getBlockMintable( uint256 blockId ) external view returns (address);

    //----------------
    // write
    //----------------
    function mintByMinter( uint256 tokenId, address owner ) external;
}


//------------------------------------------------------------
// Vendor01
//------------------------------------------------------------
contract Vendor01 is Ownable, ReentrancyGuard {
    //--------------------------------------------------------
    // 定数
    //--------------------------------------------------------
    address constant private OWNER_ADDRESS = 0xE524Fd8B4C262767e8577acE6343b7540Ee9B243;
    address constant private TOKEN_ADDRESS = 0x414E3956822AFcfFBBbE8DAD4141E3aa58c38E7b;
    uint256 constant private BLOCK_SEC_MARGIN = 30;
    uint256 constant private CHARA_TYPE_NUM = 12;

    // enum
    uint256 constant private INFO_SALE_SUSPENDED = 0;
    uint256 constant private INFO_SALE_SUSPENDED_RANDOM = 1;
    uint256 constant private INFO_SALE_START = 2;
    uint256 constant private INFO_SALE_END = 3;
    uint256 constant private INFO_SALE_PRICE = 4;
    uint256 constant private INFO_SALE_PRICE_RANDOM = 5;
    uint256 constant private INFO_MINT_TOKEN_MAX = 6;
    uint256 constant private INFO_MINT_CHARA_MAX = 7;
    uint256 constant private INFO_MINT_TOTAL_SUPPLY = 8;
    uint256 constant private INFO_MINT_CHARA_SUPPLY = 9;
    uint256 constant private INFO_MAX = INFO_MINT_CHARA_SUPPLY + CHARA_TYPE_NUM;

    //--------------------------------------------------------
    // 管理
    //--------------------------------------------------------
    address private _manager;

    IBlockMintable private _token_contract;
    bool private    _token_contract_enabled;

    uint256 private _MINT_block_id;
    uint256 private _MINT_token_id_from;
    uint256 private _MINT_token_max;
    uint256 private _MINT_chara_max;
    uint256 private _MINT_token_reserved;
    uint256 private _MINT_total_supply;
    uint256[CHARA_TYPE_NUM] private _MINT_arr_chara_supply;

    bool private    _SALE_is_suspended;
    bool private    _SALE_is_suspended_random;
    uint256 private _SALE_start;
    uint256 private _SALE_end;
    uint256 private _SALE_price;
    uint256 private _SALE_price_random;

    //--------------------------------------------------------
    // [modifier] onlyOwnerOrManager
    //--------------------------------------------------------
    modifier onlyOwnerOrManager() {
        require( msg.sender == owner() || msg.sender == manager(), "caller is not the owner neither manager" );
        _;
    }

    //--------------------------------------------------------
    // コンストラクタ
    //--------------------------------------------------------
    constructor() Ownable() {
        transferOwnership( OWNER_ADDRESS );
        _token_contract = IBlockMintable( TOKEN_ADDRESS );

        _manager = msg.sender;

        //-----------------------
        // mainnet
        //-----------------------
        _MINT_block_id = 0;
        _MINT_token_id_from = 1;
        _MINT_token_max = 1800;
        _MINT_chara_max = 150;
        _MINT_token_reserved = 180;
       
        _SALE_start = 1673794800;               // 2023-01-16 00:00:00(JST)
        _SALE_end   = 0;                        // endless
        _SALE_price = 10000000000000000;        // 0.010 ETH
        _SALE_price_random = 8000000000000000;  // 0.008 ETH
    }

    //--------------------------------------------------------
    // [public] manager
    //--------------------------------------------------------
    function manager() public view returns (address) {
        return( _manager );
    }

    //--------------------------------------------------------
    // [external/onlyOwner] setManager
    //--------------------------------------------------------
    function setManager( address target ) external onlyOwner {
        _manager = target;
    }

    //--------------------------------------------------------
    // [external] get
    //--------------------------------------------------------
    function tokenContract() external view returns (address) { return( address(_token_contract) ); }  
    function tokenContractEnabled() external view returns (bool) {return( _token_contract_enabled ); }

    function MINT_blockId() external view returns (uint256) { return( _MINT_block_id ); }
    function MINT_tokenIdFrom() external view returns (uint256) { return( _MINT_token_id_from ); }
    function MINT_tokenMax() external view returns (uint256) { return( _MINT_token_max ); }
    function MINT_charaMax() external view returns (uint256) { return( _MINT_chara_max ); }
    function MINT_tokenReserved() external view returns (uint256) { return( _MINT_token_reserved ); }
    function MINT_totalSupply() external view returns (uint256) { return( _MINT_total_supply ); }
    function MINT_charaSupplyAt( uint256 charaId ) external view returns (uint256) { return( _MINT_arr_chara_supply[charaId] ); }

    function SALE_isSuspended() external view returns (bool) { return( _SALE_is_suspended ); }
    function SALE_isSuspendedRandom() external view returns (bool) { return( _SALE_is_suspended_random ); }
    function SALE_start() external view returns (uint256) { return( _SALE_start ); }
    function SALE_end() external view returns (uint256) { return( _SALE_end ); }
    function SALE_price() external view returns (uint256) { return( _SALE_price ); }
    function SALE_priceRandom() external view returns (uint256) { return( _SALE_price_random ); }

    //--------------------------------------------------------
    // [external/onlyOwnerOrManager] set
    //--------------------------------------------------------
    function setTokenContract( address target ) external onlyOwnerOrManager {
        _token_contract = IBlockMintable(target);

        // flag off
        _token_contract_enabled = false;
    }

    function MINT_setBlockInfo( uint blockId, uint idFrom, uint256 num, uint256 charaNum, uint256 reserved, uint256 totalSupply, uint256[CHARA_TYPE_NUM] calldata charaSupply ) external onlyOwnerOrManager {
        _MINT_block_id = blockId;
        _MINT_token_id_from = idFrom;
        _MINT_token_max = num;
        _MINT_chara_max = charaNum;
        _MINT_token_reserved = reserved;

        _MINT_total_supply = totalSupply;
        for( uint256 i=0; i<CHARA_TYPE_NUM; i++ ){
            _MINT_arr_chara_supply[i] = charaSupply[i];
        }

        // flag off
        _token_contract_enabled = false;
    }

    function SALE_suspend( bool flag ) external onlyOwnerOrManager { _SALE_is_suspended = flag; }
    function SALE_suspendRandom( bool flag ) external onlyOwnerOrManager { _SALE_is_suspended_random = flag; }
    function SALE_setStartEnd( uint256 start, uint256 end ) external onlyOwnerOrManager { _SALE_start = start; _SALE_end = end; }
    function SALE_setPrice( uint256 price ) external onlyOwnerOrManager { _SALE_price = price; }
    function SALE_setPriceRandom( uint256 price ) external onlyOwnerOrManager { _SALE_price_random = price; }

    //--------------------------------------------------------
    // [external/onlyOwnerOrManager] updateTokenContractEnabled
    //--------------------------------------------------------
    function updateTokenContractEnabled() external onlyOwnerOrManager {
        // Tokenコントラクトは有効か?
        require( address(_token_contract) != address(0x0), "invalid _token_contract" );

        // Vendorがmint可能か?
        require( address(this) == _token_contract.getBlockMintable( _MINT_block_id ), "Vendor not mintable" );

        // ブロック情報の取得
        uint256 idFrom = _token_contract.getBlockTokenIdFrom( _MINT_block_id );
        uint256 idTo = idFrom + _token_contract.getBlockTokenNum( _MINT_block_id ) - 1;

        // 範囲は有効か?
        require( _MINT_token_id_from >= idFrom, "invalid _MINT_token_id_from" );
        require( (_MINT_token_id_from+_MINT_token_max-1) <= idTo, "invalid _MINT_token_max" );

        // 予約枠は正常か?
        require( _MINT_token_reserved <= _MINT_token_max, "invalid _MINT_token_reserved" );

        // 総数は正常か?
        require( ((_MINT_token_max+CHARA_TYPE_NUM-1)/CHARA_TYPE_NUM) == _MINT_chara_max, "invalid _MINT_chara_max" );

        // 状況は正常か?
        require( _MINT_total_supply <= _MINT_token_max, "invalid _MINT_total_supply" );

        uint256 charaTotal;
        for( uint256 i=0; i<CHARA_TYPE_NUM; i++ ){
            require( _MINT_arr_chara_supply[i] <= _MINT_chara_max, "invalid _MINT_arr_chara_supply" );
            charaTotal += _MINT_arr_chara_supply[i];
        }
        require( _MINT_total_supply == charaTotal, "invalid charaTotal" );

        // ここまできたら有効(MINT可能)
        _token_contract_enabled = true;
    }

    //--------------------------------------------------------
    // [external] getInfo
    //--------------------------------------------------------
    function getInfo() external view returns (uint256[INFO_MAX] memory) {
        uint256[INFO_MAX] memory arrInfo;

        if( _SALE_is_suspended ){ arrInfo[INFO_SALE_SUSPENDED] = 1; }
        if( _SALE_is_suspended_random ){ arrInfo[INFO_SALE_SUSPENDED_RANDOM] = 1; }
        arrInfo[INFO_SALE_START] = _SALE_start;
        arrInfo[INFO_SALE_END] = _SALE_end;
        arrInfo[INFO_SALE_PRICE] = _SALE_price;
        arrInfo[INFO_SALE_PRICE_RANDOM] = _SALE_price_random;
        arrInfo[INFO_MINT_TOKEN_MAX] = _MINT_token_max;
        arrInfo[INFO_MINT_CHARA_MAX] = _MINT_chara_max;
        arrInfo[INFO_MINT_TOTAL_SUPPLY] = _MINT_total_supply;
        for( uint256 i=0; i<CHARA_TYPE_NUM; i++ ){
            arrInfo[INFO_MINT_CHARA_SUPPLY+i] = _MINT_arr_chara_supply[i];
        }

        return( arrInfo );
    }

    //--------------------------------------------------------
    // [external/onlyOwnerOrManager] reserveTokens
    //--------------------------------------------------------
    function reserveTokens( uint256 num ) external onlyOwnerOrManager {
        require( _token_contract_enabled, "reserveTokens: token contract not enabled" );
        require( (_MINT_total_supply+num) <= _MINT_token_reserved, "reserveTokens: exceeded the reservation range" );

        // mint
        for( uint256 i=0; i<num; i++ ){
            uint256 charaId = (_MINT_token_reserved - _MINT_total_supply) % CHARA_TYPE_NUM;
            _mintToken( owner(), charaId );
        }
    }

    //--------------------------------------------------------
    // [external/payable/nonReentrant] mintCharaAt
    //--------------------------------------------------------
    function mintCharaAt( uint256 charaId ) external payable nonReentrant {
        require( _token_contract_enabled, "mintCharaAt: token contract not enabled" );
        require( _MINT_total_supply >= _MINT_token_reserved, "mintCharaAt: reservation not finished" );

        require( ! _SALE_is_suspended, "mintCharaAt: suspended" );
        require( _SALE_start == 0 || _SALE_start <= (block.timestamp+BLOCK_SEC_MARGIN), "mintCharaAt: not opend" );
        require( _SALE_end == 0 || (_SALE_end+BLOCK_SEC_MARGIN) > block.timestamp, "mintCharaAt: finished" );
        require( msg.value >= _SALE_price, "mintCharaAt: insufficient value" );

        // mint
        _mintToken( msg.sender, charaId );
    }

    //--------------------------------------------------------
    // [external/payable/nonReentrant] mintRandom
    //--------------------------------------------------------
    function mintRandom() external payable nonReentrant {
        require( _token_contract_enabled, "mintRandom: token contract not enabled" );
        require( _MINT_total_supply >= _MINT_token_reserved, "mintRandom: reservation not finished" );

        require( ! _SALE_is_suspended_random, "mintRandom: suspended" );
        require( _SALE_start == 0 || _SALE_start <= (block.timestamp+BLOCK_SEC_MARGIN), "mintRandom: not opend" );
        require( _SALE_end == 0 || (_SALE_end+BLOCK_SEC_MARGIN) > block.timestamp, "mintRandom: finished" );
        require( msg.value >= _SALE_price_random, "mintRandom: insufficient value" );

        // ランダムで抽選する
        uint256 charaId = _randomChara( uint256( keccak256( abi.encodePacked( address(this), msg.sender, _MINT_total_supply ) ) ) );

        // mint
        _mintToken( msg.sender, charaId );
    }

    //--------------------------------------------------------
    // [internal] _mintToken
    //--------------------------------------------------------
    function _mintToken( address to, uint256 charaId ) internal {
        require( charaId < CHARA_TYPE_NUM, "_mintToken: invalid charaId" );
        require( _MINT_total_supply < _MINT_token_max, "_mintToken: reached the supply range" );
        require( _MINT_arr_chara_supply[charaId] < _MINT_chara_max, "_mintToken: reached the chara range" );

        uint256 idOfs = charaId*_MINT_chara_max + _MINT_arr_chara_supply[charaId];
        require( idOfs < _MINT_token_max, "_mintToken: reached the token range" );

        _token_contract.mintByMinter( _MINT_token_id_from+idOfs, to );

        _MINT_total_supply += 1;
        _MINT_arr_chara_supply[charaId] += 1;
    }

    //--------------------------------------------------------
    // [internal] _randomChara
    //--------------------------------------------------------
    function _randomChara( uint256 seed ) internal view returns (uint256) {
        uint256[CHARA_TYPE_NUM] memory weights;
        for( uint256 i=0; i<CHARA_TYPE_NUM; i++ ){
            weights[i] = _MINT_chara_max - _MINT_arr_chara_supply[i];
        }

        // 微調整(CHARA_TYPE_NUMの倍数にならない供給数の場合は末尾から1つずつ間引く)
        uint256 adj = _MINT_token_max % CHARA_TYPE_NUM;
        if( adj > 0 ){
            for( uint256 i=adj; i<CHARA_TYPE_NUM; i++ ){
                weights[i]--;
            }
        }

        // 重さの累積
        uint256 totalWeight;
        for( uint256 i=0; i<CHARA_TYPE_NUM; i++ ){
            totalWeight += weights[i];
        }
        require( totalWeight > 0, "_randomChara: no candidate" );

        uint256 temp = seed % totalWeight;
        for( uint256 i=0; i<CHARA_TYPE_NUM; i++ ){
            if( temp < weights[i] ){ return( i ); }
            temp -= weights[i];
        }

        require( false, "_randomChara: fatal error" );
        return( 0 );
    }

    //--------------------------------------------------------
    // [external] checkBalance
    //--------------------------------------------------------
    function checkBalance() external view returns (uint256) {
        return( address(this).balance );
    }

    //--------------------------------------------------------
    // [external/onlyOwnerOrManager] withdraw
    //--------------------------------------------------------
    function withdraw( uint256 amount ) external onlyOwnerOrManager {
        require( amount <= address(this).balance, "insufficient balance" );

        address payable target = payable( owner() );
        target.transfer( amount );
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MINT_blockId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_charaMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"charaId","type":"uint256"}],"name":"MINT_charaSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockId","type":"uint256"},{"internalType":"uint256","name":"idFrom","type":"uint256"},{"internalType":"uint256","name":"num","type":"uint256"},{"internalType":"uint256","name":"charaNum","type":"uint256"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256[12]","name":"charaSupply","type":"uint256[12]"}],"name":"MINT_setBlockInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MINT_tokenIdFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_tokenMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_tokenReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_isSuspended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_isSuspendedRandom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_priceRandom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"name":"SALE_setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"name":"SALE_setPriceRandom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"SALE_setStartEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SALE_start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"SALE_suspend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"SALE_suspendRandom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256[21]","name":"","type":"uint256[21]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"charaId","type":"uint256"}],"name":"mintCharaAt","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"reserveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"setTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenContractEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateTokenContractEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506200001d33620000b7565b600180556200004073e524fd8b4c262767e8577ace6343b7540ee9b24362000107565b600380546001600160a01b031990811673414e3956822afcffbbbe8dad4141e3aa58c38e7b179091556002805490911633179055600060048190556001600555610708600655609660075560b46008556363c414f0601755601855662386f26fc10000601955661c6bf526340000601a55620001e8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001116200018a565b6001600160a01b0381166200017c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200018781620000b7565b50565b6000546001600160a01b03163314620001e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000173565b565b611ed280620001f86000396000f3fe6080604052600436106101f95760003560e01c80638fa2b2151161010d578063bbcd5bbe116100a0578063eb961a381161006f578063eb961a3814610518578063ebc68aaa14610535578063f0ebb47814610555578063f2fde38b1461056a578063fa9832491461058a57600080fd5b8063bbcd5bbe146104a5578063c71daccb146104c5578063d031370b146104d8578063d0ebdbe7146104f857600080fd5b8063a2eb7cbd116100dc578063a2eb7cbd14610453578063a988b0e814610473578063b155d7fa14610488578063b6bddc2b1461049057600080fd5b80638fa2b215146103eb57806391455c451461040b57806398d5df311461041e5780639f0fede51461043357600080fd5b806355a373d6116101905780636789f7321161015f5780636789f73214610363578063715018a6146103835780637a67811e146103985780637f6a9e37146103b85780638da5cb5b146103cd57600080fd5b806355a373d6146102ea5780635987747a146103085780635a9b0b891461031d578063625269f81461033f57600080fd5b8063368b7ee0116101cc578063368b7ee0146102795780633c0801921461028e578063481c6a75146102a35780634d64f4c9146102d557600080fd5b806302dd77f7146101fe578063039292cd146102225780630b9f5cb2146102445780632e1a7d4d14610259575b600080fd5b34801561020a57600080fd5b506017545b6040519081526020015b60405180910390f35b34801561022e57600080fd5b5061024261023d366004611c14565b6105a9565b005b34801561025057600080fd5b5060195461020f565b34801561026557600080fd5b50610242610274366004611c36565b6105fc565b34801561028557600080fd5b5060055461020f565b34801561029a57600080fd5b5060075461020f565b3480156102af57600080fd5b506002546001600160a01b03165b6040516001600160a01b039091168152602001610219565b3480156102e157600080fd5b506102426106c3565b3480156102f657600080fd5b506003546001600160a01b03166102bd565b34801561031457600080fd5b5060065461020f565b34801561032957600080fd5b50610332610bf9565b6040516102199190611c4f565b34801561034b57600080fd5b5060165460ff165b6040519015158152602001610219565b34801561036f57600080fd5b5061024261037e366004611c36565b610cc4565b34801561038f57600080fd5b50610242610d08565b3480156103a457600080fd5b506102426103b3366004611c81565b610d1c565b3480156103c457600080fd5b5060095461020f565b3480156103d957600080fd5b506000546001600160a01b03166102bd565b3480156103f757600080fd5b50610242610406366004611ce7565b610dda565b610242610419366004611c36565b610e2c565b34801561042a57600080fd5b5060085461020f565b34801561043f57600080fd5b5061024261044e366004611c36565b611073565b34801561045f57600080fd5b5061024261046e366004611ce7565b6110b7565b34801561047f57600080fd5b5060045461020f565b610242611110565b34801561049c57600080fd5b50601a5461020f565b3480156104b157600080fd5b506102426104c0366004611d25565b6113b0565b3480156104d157600080fd5b504761020f565b3480156104e457600080fd5b506102426104f3366004611c36565b611410565b34801561050457600080fd5b50610242610513366004611d25565b61158c565b34801561052457600080fd5b50601654610100900460ff16610353565b34801561054157600080fd5b5061020f610550366004611c36565b6115b6565b34801561056157600080fd5b5060185461020f565b34801561057657600080fd5b50610242610585366004611d25565b6115d3565b34801561059657600080fd5b50600354600160a01b900460ff16610353565b6000546001600160a01b03163314806105cc57506002546001600160a01b031633145b6105f15760405162461bcd60e51b81526004016105e890611d42565b60405180910390fd5b601791909155601855565b6000546001600160a01b031633148061061f57506002546001600160a01b031633145b61063b5760405162461bcd60e51b81526004016105e890611d42565b478111156106825760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016105e8565b600080546040516001600160a01b039091169182916108fc85150291859190818181858888f193505050501580156106be573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314806106e657506002546001600160a01b031633145b6107025760405162461bcd60e51b81526004016105e890611d42565b6003546001600160a01b031661075a5760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964205f746f6b656e5f636f6e747261637400000000000000000060448201526064016105e8565b60035460048054604051638c933aff60e01b8152918201526001600160a01b0390911690638c933aff90602401602060405180830381865afa1580156107a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c89190611d89565b6001600160a01b0316306001600160a01b03161461081e5760405162461bcd60e51b815260206004820152601360248201527256656e646f72206e6f74206d696e7461626c6560681b60448201526064016105e8565b6003546004805460405163651bc1ef60e01b8152918201526000916001600160a01b03169063651bc1ef90602401602060405180830381865afa158015610869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088d9190611da6565b6003546004805460405163292c301360e01b8152918201529192506000916001916001600160a01b03169063292c301390602401602060405180830381865afa1580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190611da6565b61090c9084611dd5565b6109169190611dee565b905081600554101561096a5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964205f4d494e545f746f6b656e5f69645f66726f6d000000000060448201526064016105e8565b80600160065460055461097d9190611dd5565b6109879190611dee565b11156109d55760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964205f4d494e545f746f6b656e5f6d617800000000000000000060448201526064016105e8565b6006546008541115610a295760405162461bcd60e51b815260206004820152601c60248201527f696e76616c6964205f4d494e545f746f6b656e5f72657365727665640000000060448201526064016105e8565b600754600c6001600c600654610a3f9190611dd5565b610a499190611dee565b610a539190611e17565b14610aa05760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964205f4d494e545f63686172615f6d617800000000000000000060448201526064016105e8565b6006546009541115610af45760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964205f4d494e545f746f74616c5f737570706c7900000000000060448201526064016105e8565b6000805b600c811015610b9a57600754600a82600c8110610b1757610b17611e2b565b01541115610b675760405162461bcd60e51b815260206004820152601e60248201527f696e76616c6964205f4d494e545f6172725f63686172615f737570706c79000060448201526064016105e8565b600a81600c8110610b7a57610b7a611e2b565b0154610b869083611dd5565b915080610b9281611e41565b915050610af8565b508060095414610be15760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818da185c98551bdd185b60721b60448201526064016105e8565b50506003805460ff60a01b1916600160a01b17905550565b610c01611bd6565b610c09611bd6565b60165460ff1615610c1957600181525b601654610100900460ff1615610c3157600160208201525b601754604082015260185460608201526019546080820152601a5460a082015260065460c082015260075460e082015260095461010082015260005b600c811015610cbe57600a81600c8110610c8957610c89611e2b565b015482610c97836009611dd5565b60158110610ca757610ca7611e2b565b602002015280610cb681611e41565b915050610c6d565b50919050565b6000546001600160a01b0316331480610ce757506002546001600160a01b031633145b610d035760405162461bcd60e51b81526004016105e890611d42565b601a55565b610d10611649565b610d1a60006116a3565b565b6000546001600160a01b0316331480610d3f57506002546001600160a01b031633145b610d5b5760405162461bcd60e51b81526004016105e890611d42565b60048790556005869055600685905560078490556008839055600982905560005b600c811015610dc3578181600c8110610d9757610d97611e2b565b6020020135600a82600c8110610daf57610daf611e2b565b015580610dbb81611e41565b915050610d7c565b50506003805460ff60a01b19169055505050505050565b6000546001600160a01b0316331480610dfd57506002546001600160a01b031633145b610e195760405162461bcd60e51b81526004016105e890611d42565b6016805460ff1916911515919091179055565b610e346116f3565b600354600160a01b900460ff16610e9d5760405162461bcd60e51b815260206004820152602760248201527f6d696e74436861726141743a20746f6b656e20636f6e7472616374206e6f7420604482015266195b98589b195960ca1b60648201526084016105e8565b6008546009541015610eff5760405162461bcd60e51b815260206004820152602560248201527f6d696e74436861726141743a207265736572766174696f6e206e6f742066696e6044820152641a5cda195960da1b60648201526084016105e8565b60165460ff1615610f4b5760405162461bcd60e51b81526020600482015260166024820152751b5a5b9d10da185c98505d0e881cdd5cdc195b99195960521b60448201526064016105e8565b6017541580610f665750610f60601e42611dd5565b60175411155b610fab5760405162461bcd60e51b81526020600482015260166024820152751b5a5b9d10da185c98505d0e881b9bdd081bdc195b9960521b60448201526064016105e8565b6018541580610fc7575042601e601854610fc59190611dd5565b115b61100b5760405162461bcd60e51b81526020600482015260156024820152741b5a5b9d10da185c98505d0e88199a5b9a5cda1959605a1b60448201526064016105e8565b60195434101561105d5760405162461bcd60e51b815260206004820152601f60248201527f6d696e74436861726141743a20696e73756666696369656e742076616c75650060448201526064016105e8565b611067338261174c565b61107060018055565b50565b6000546001600160a01b031633148061109657506002546001600160a01b031633145b6110b25760405162461bcd60e51b81526004016105e890611d42565b601955565b6000546001600160a01b03163314806110da57506002546001600160a01b031633145b6110f65760405162461bcd60e51b81526004016105e890611d42565b601680549115156101000261ff0019909216919091179055565b6111186116f3565b600354600160a01b900460ff166111805760405162461bcd60e51b815260206004820152602660248201527f6d696e7452616e646f6d3a20746f6b656e20636f6e7472616374206e6f7420656044820152651b98589b195960d21b60648201526084016105e8565b60085460095410156111e05760405162461bcd60e51b8152602060048201526024808201527f6d696e7452616e646f6d3a207265736572766174696f6e206e6f742066696e696044820152631cda195960e21b60648201526084016105e8565b601654610100900460ff16156112305760405162461bcd60e51b81526020600482015260156024820152741b5a5b9d14985b991bdb4e881cdd5cdc195b991959605a1b60448201526064016105e8565b601754158061124b5750611245601e42611dd5565b60175411155b61128f5760405162461bcd60e51b81526020600482015260156024820152741b5a5b9d14985b991bdb4e881b9bdd081bdc195b99605a1b60448201526064016105e8565b60185415806112ab575042601e6018546112a99190611dd5565b115b6112ee5760405162461bcd60e51b81526020600482015260146024820152731b5a5b9d14985b991bdb4e88199a5b9a5cda195960621b60448201526064016105e8565b601a543410156113405760405162461bcd60e51b815260206004820152601e60248201527f6d696e7452616e646f6d3a20696e73756666696369656e742076616c7565000060448201526064016105e8565b6009546040516bffffffffffffffffffffffff1930606090811b8216602084015233901b166034820152604881019190915260009061139a906068016040516020818303038152906040528051906020012060001c6119c4565b90506113a6338261174c565b50610d1a60018055565b6000546001600160a01b03163314806113d357506002546001600160a01b031633145b6113ef5760405162461bcd60e51b81526004016105e890611d42565b600380546001600160a81b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633148061143357506002546001600160a01b031633145b61144f5760405162461bcd60e51b81526004016105e890611d42565b600354600160a01b900460ff166114ba5760405162461bcd60e51b815260206004820152602960248201527f72657365727665546f6b656e733a20746f6b656e20636f6e7472616374206e6f6044820152681d08195b98589b195960ba1b60648201526084016105e8565b600854816009546114cb9190611dd5565b111561152f5760405162461bcd60e51b815260206004820152602d60248201527f72657365727665546f6b656e733a20657863656564656420746865207265736560448201526c72766174696f6e2072616e676560981b60648201526084016105e8565b60005b81811015611588576000600c60095460085461154e9190611dee565b6115589190611e5a565b905061157561156f6000546001600160a01b031690565b8261174c565b508061158081611e41565b915050611532565b5050565b611594611649565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000600a82600c81106115cb576115cb611e2b565b015492915050565b6115db611649565b6001600160a01b0381166116405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e8565b611070816116a3565b6000546001600160a01b03163314610d1a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036117455760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105e8565b6002600155565b600c811061179c5760405162461bcd60e51b815260206004820152601b60248201527f5f6d696e74546f6b656e3a20696e76616c69642063686172614964000000000060448201526064016105e8565b600654600954106117fb5760405162461bcd60e51b8152602060048201526024808201527f5f6d696e74546f6b656e3a20726561636865642074686520737570706c792072604482015263616e676560e01b60648201526084016105e8565b600754600a82600c811061181157611811611e2b565b01541061186c5760405162461bcd60e51b815260206004820152602360248201527f5f6d696e74546f6b656e3a2072656163686564207468652063686172612072616044820152626e676560e81b60648201526084016105e8565b6000600a82600c811061188157611881611e2b565b01546007546118909084611e6e565b61189a9190611dd5565b905060065481106118f95760405162461bcd60e51b815260206004820152602360248201527f5f6d696e74546f6b656e3a20726561636865642074686520746f6b656e2072616044820152626e676560e81b60648201526084016105e8565b6003546005546001600160a01b03909116906316063e569061191c908490611dd5565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b0386166024820152604401600060405180830381600087803b15801561196457600080fd5b505af1158015611978573d6000803e3d6000fd5b5050505060016009600082825461198f9190611dd5565b9091555060019050600a83600c81106119aa576119aa611e2b565b0160008282546119ba9190611dd5565b9091555050505050565b60006119ce611bf5565b60005b600c811015611a2557600a81600c81106119ed576119ed611e2b565b01546007546119fc9190611dee565b8282600c8110611a0e57611a0e611e2b565b602002015280611a1d81611e41565b9150506119d1565b506000600c600654611a379190611e5a565b90508015611a8357805b600c811015611a81578281600c8110611a5c57611a5c611e2b565b60200201805190611a6c82611e85565b90525080611a7981611e41565b915050611a41565b505b6000805b600c811015611ac5578381600c8110611aa257611aa2611e2b565b6020020151611ab19083611dd5565b915080611abd81611e41565b915050611a87565b5060008111611b165760405162461bcd60e51b815260206004820152601a60248201527f5f72616e646f6d43686172613a206e6f2063616e64696461746500000000000060448201526064016105e8565b6000611b228287611e5a565b905060005b600c811015611b8d578481600c8110611b4257611b42611e2b565b6020020151821015611b58579695505050505050565b8481600c8110611b6a57611b6a611e2b565b6020020151611b799083611dee565b915080611b8581611e41565b915050611b27565b5060405162461bcd60e51b815260206004820152601960248201527f5f72616e646f6d43686172613a20666174616c206572726f720000000000000060448201526064016105e8565b604051806102a001604052806015906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60008060408385031215611c2757600080fd5b50508035926020909101359150565b600060208284031215611c4857600080fd5b5035919050565b6102a08101818360005b6015811015611c78578151835260209283019290910190600101611c59565b50505092915050565b600080600080600080600061024080898b031215611c9e57600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925089818a011115611cd457600080fd5b5060c08801905092959891949750929550565b600060208284031215611cf957600080fd5b81358015158114611d0957600080fd5b9392505050565b6001600160a01b038116811461107057600080fd5b600060208284031215611d3757600080fd5b8135611d0981611d10565b60208082526027908201527f63616c6c6572206973206e6f7420746865206f776e6572206e6569746865722060408201526636b0b730b3b2b960c91b606082015260800190565b600060208284031215611d9b57600080fd5b8151611d0981611d10565b600060208284031215611db857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611de857611de8611dbf565b92915050565b81810381811115611de857611de8611dbf565b634e487b7160e01b600052601260045260246000fd5b600082611e2657611e26611e01565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611e5357611e53611dbf565b5060010190565b600082611e6957611e69611e01565b500690565b8082028115828204841417611de857611de8611dbf565b600081611e9457611e94611dbf565b50600019019056fea264697066735822122040f2144650211b7105721fa53360d0618e87b98aef262536c52ceda3860912fc64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101f95760003560e01c80638fa2b2151161010d578063bbcd5bbe116100a0578063eb961a381161006f578063eb961a3814610518578063ebc68aaa14610535578063f0ebb47814610555578063f2fde38b1461056a578063fa9832491461058a57600080fd5b8063bbcd5bbe146104a5578063c71daccb146104c5578063d031370b146104d8578063d0ebdbe7146104f857600080fd5b8063a2eb7cbd116100dc578063a2eb7cbd14610453578063a988b0e814610473578063b155d7fa14610488578063b6bddc2b1461049057600080fd5b80638fa2b215146103eb57806391455c451461040b57806398d5df311461041e5780639f0fede51461043357600080fd5b806355a373d6116101905780636789f7321161015f5780636789f73214610363578063715018a6146103835780637a67811e146103985780637f6a9e37146103b85780638da5cb5b146103cd57600080fd5b806355a373d6146102ea5780635987747a146103085780635a9b0b891461031d578063625269f81461033f57600080fd5b8063368b7ee0116101cc578063368b7ee0146102795780633c0801921461028e578063481c6a75146102a35780634d64f4c9146102d557600080fd5b806302dd77f7146101fe578063039292cd146102225780630b9f5cb2146102445780632e1a7d4d14610259575b600080fd5b34801561020a57600080fd5b506017545b6040519081526020015b60405180910390f35b34801561022e57600080fd5b5061024261023d366004611c14565b6105a9565b005b34801561025057600080fd5b5060195461020f565b34801561026557600080fd5b50610242610274366004611c36565b6105fc565b34801561028557600080fd5b5060055461020f565b34801561029a57600080fd5b5060075461020f565b3480156102af57600080fd5b506002546001600160a01b03165b6040516001600160a01b039091168152602001610219565b3480156102e157600080fd5b506102426106c3565b3480156102f657600080fd5b506003546001600160a01b03166102bd565b34801561031457600080fd5b5060065461020f565b34801561032957600080fd5b50610332610bf9565b6040516102199190611c4f565b34801561034b57600080fd5b5060165460ff165b6040519015158152602001610219565b34801561036f57600080fd5b5061024261037e366004611c36565b610cc4565b34801561038f57600080fd5b50610242610d08565b3480156103a457600080fd5b506102426103b3366004611c81565b610d1c565b3480156103c457600080fd5b5060095461020f565b3480156103d957600080fd5b506000546001600160a01b03166102bd565b3480156103f757600080fd5b50610242610406366004611ce7565b610dda565b610242610419366004611c36565b610e2c565b34801561042a57600080fd5b5060085461020f565b34801561043f57600080fd5b5061024261044e366004611c36565b611073565b34801561045f57600080fd5b5061024261046e366004611ce7565b6110b7565b34801561047f57600080fd5b5060045461020f565b610242611110565b34801561049c57600080fd5b50601a5461020f565b3480156104b157600080fd5b506102426104c0366004611d25565b6113b0565b3480156104d157600080fd5b504761020f565b3480156104e457600080fd5b506102426104f3366004611c36565b611410565b34801561050457600080fd5b50610242610513366004611d25565b61158c565b34801561052457600080fd5b50601654610100900460ff16610353565b34801561054157600080fd5b5061020f610550366004611c36565b6115b6565b34801561056157600080fd5b5060185461020f565b34801561057657600080fd5b50610242610585366004611d25565b6115d3565b34801561059657600080fd5b50600354600160a01b900460ff16610353565b6000546001600160a01b03163314806105cc57506002546001600160a01b031633145b6105f15760405162461bcd60e51b81526004016105e890611d42565b60405180910390fd5b601791909155601855565b6000546001600160a01b031633148061061f57506002546001600160a01b031633145b61063b5760405162461bcd60e51b81526004016105e890611d42565b478111156106825760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016105e8565b600080546040516001600160a01b039091169182916108fc85150291859190818181858888f193505050501580156106be573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314806106e657506002546001600160a01b031633145b6107025760405162461bcd60e51b81526004016105e890611d42565b6003546001600160a01b031661075a5760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964205f746f6b656e5f636f6e747261637400000000000000000060448201526064016105e8565b60035460048054604051638c933aff60e01b8152918201526001600160a01b0390911690638c933aff90602401602060405180830381865afa1580156107a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c89190611d89565b6001600160a01b0316306001600160a01b03161461081e5760405162461bcd60e51b815260206004820152601360248201527256656e646f72206e6f74206d696e7461626c6560681b60448201526064016105e8565b6003546004805460405163651bc1ef60e01b8152918201526000916001600160a01b03169063651bc1ef90602401602060405180830381865afa158015610869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088d9190611da6565b6003546004805460405163292c301360e01b8152918201529192506000916001916001600160a01b03169063292c301390602401602060405180830381865afa1580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190611da6565b61090c9084611dd5565b6109169190611dee565b905081600554101561096a5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964205f4d494e545f746f6b656e5f69645f66726f6d000000000060448201526064016105e8565b80600160065460055461097d9190611dd5565b6109879190611dee565b11156109d55760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964205f4d494e545f746f6b656e5f6d617800000000000000000060448201526064016105e8565b6006546008541115610a295760405162461bcd60e51b815260206004820152601c60248201527f696e76616c6964205f4d494e545f746f6b656e5f72657365727665640000000060448201526064016105e8565b600754600c6001600c600654610a3f9190611dd5565b610a499190611dee565b610a539190611e17565b14610aa05760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964205f4d494e545f63686172615f6d617800000000000000000060448201526064016105e8565b6006546009541115610af45760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964205f4d494e545f746f74616c5f737570706c7900000000000060448201526064016105e8565b6000805b600c811015610b9a57600754600a82600c8110610b1757610b17611e2b565b01541115610b675760405162461bcd60e51b815260206004820152601e60248201527f696e76616c6964205f4d494e545f6172725f63686172615f737570706c79000060448201526064016105e8565b600a81600c8110610b7a57610b7a611e2b565b0154610b869083611dd5565b915080610b9281611e41565b915050610af8565b508060095414610be15760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818da185c98551bdd185b60721b60448201526064016105e8565b50506003805460ff60a01b1916600160a01b17905550565b610c01611bd6565b610c09611bd6565b60165460ff1615610c1957600181525b601654610100900460ff1615610c3157600160208201525b601754604082015260185460608201526019546080820152601a5460a082015260065460c082015260075460e082015260095461010082015260005b600c811015610cbe57600a81600c8110610c8957610c89611e2b565b015482610c97836009611dd5565b60158110610ca757610ca7611e2b565b602002015280610cb681611e41565b915050610c6d565b50919050565b6000546001600160a01b0316331480610ce757506002546001600160a01b031633145b610d035760405162461bcd60e51b81526004016105e890611d42565b601a55565b610d10611649565b610d1a60006116a3565b565b6000546001600160a01b0316331480610d3f57506002546001600160a01b031633145b610d5b5760405162461bcd60e51b81526004016105e890611d42565b60048790556005869055600685905560078490556008839055600982905560005b600c811015610dc3578181600c8110610d9757610d97611e2b565b6020020135600a82600c8110610daf57610daf611e2b565b015580610dbb81611e41565b915050610d7c565b50506003805460ff60a01b19169055505050505050565b6000546001600160a01b0316331480610dfd57506002546001600160a01b031633145b610e195760405162461bcd60e51b81526004016105e890611d42565b6016805460ff1916911515919091179055565b610e346116f3565b600354600160a01b900460ff16610e9d5760405162461bcd60e51b815260206004820152602760248201527f6d696e74436861726141743a20746f6b656e20636f6e7472616374206e6f7420604482015266195b98589b195960ca1b60648201526084016105e8565b6008546009541015610eff5760405162461bcd60e51b815260206004820152602560248201527f6d696e74436861726141743a207265736572766174696f6e206e6f742066696e6044820152641a5cda195960da1b60648201526084016105e8565b60165460ff1615610f4b5760405162461bcd60e51b81526020600482015260166024820152751b5a5b9d10da185c98505d0e881cdd5cdc195b99195960521b60448201526064016105e8565b6017541580610f665750610f60601e42611dd5565b60175411155b610fab5760405162461bcd60e51b81526020600482015260166024820152751b5a5b9d10da185c98505d0e881b9bdd081bdc195b9960521b60448201526064016105e8565b6018541580610fc7575042601e601854610fc59190611dd5565b115b61100b5760405162461bcd60e51b81526020600482015260156024820152741b5a5b9d10da185c98505d0e88199a5b9a5cda1959605a1b60448201526064016105e8565b60195434101561105d5760405162461bcd60e51b815260206004820152601f60248201527f6d696e74436861726141743a20696e73756666696369656e742076616c75650060448201526064016105e8565b611067338261174c565b61107060018055565b50565b6000546001600160a01b031633148061109657506002546001600160a01b031633145b6110b25760405162461bcd60e51b81526004016105e890611d42565b601955565b6000546001600160a01b03163314806110da57506002546001600160a01b031633145b6110f65760405162461bcd60e51b81526004016105e890611d42565b601680549115156101000261ff0019909216919091179055565b6111186116f3565b600354600160a01b900460ff166111805760405162461bcd60e51b815260206004820152602660248201527f6d696e7452616e646f6d3a20746f6b656e20636f6e7472616374206e6f7420656044820152651b98589b195960d21b60648201526084016105e8565b60085460095410156111e05760405162461bcd60e51b8152602060048201526024808201527f6d696e7452616e646f6d3a207265736572766174696f6e206e6f742066696e696044820152631cda195960e21b60648201526084016105e8565b601654610100900460ff16156112305760405162461bcd60e51b81526020600482015260156024820152741b5a5b9d14985b991bdb4e881cdd5cdc195b991959605a1b60448201526064016105e8565b601754158061124b5750611245601e42611dd5565b60175411155b61128f5760405162461bcd60e51b81526020600482015260156024820152741b5a5b9d14985b991bdb4e881b9bdd081bdc195b99605a1b60448201526064016105e8565b60185415806112ab575042601e6018546112a99190611dd5565b115b6112ee5760405162461bcd60e51b81526020600482015260146024820152731b5a5b9d14985b991bdb4e88199a5b9a5cda195960621b60448201526064016105e8565b601a543410156113405760405162461bcd60e51b815260206004820152601e60248201527f6d696e7452616e646f6d3a20696e73756666696369656e742076616c7565000060448201526064016105e8565b6009546040516bffffffffffffffffffffffff1930606090811b8216602084015233901b166034820152604881019190915260009061139a906068016040516020818303038152906040528051906020012060001c6119c4565b90506113a6338261174c565b50610d1a60018055565b6000546001600160a01b03163314806113d357506002546001600160a01b031633145b6113ef5760405162461bcd60e51b81526004016105e890611d42565b600380546001600160a81b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633148061143357506002546001600160a01b031633145b61144f5760405162461bcd60e51b81526004016105e890611d42565b600354600160a01b900460ff166114ba5760405162461bcd60e51b815260206004820152602960248201527f72657365727665546f6b656e733a20746f6b656e20636f6e7472616374206e6f6044820152681d08195b98589b195960ba1b60648201526084016105e8565b600854816009546114cb9190611dd5565b111561152f5760405162461bcd60e51b815260206004820152602d60248201527f72657365727665546f6b656e733a20657863656564656420746865207265736560448201526c72766174696f6e2072616e676560981b60648201526084016105e8565b60005b81811015611588576000600c60095460085461154e9190611dee565b6115589190611e5a565b905061157561156f6000546001600160a01b031690565b8261174c565b508061158081611e41565b915050611532565b5050565b611594611649565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000600a82600c81106115cb576115cb611e2b565b015492915050565b6115db611649565b6001600160a01b0381166116405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e8565b611070816116a3565b6000546001600160a01b03163314610d1a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036117455760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105e8565b6002600155565b600c811061179c5760405162461bcd60e51b815260206004820152601b60248201527f5f6d696e74546f6b656e3a20696e76616c69642063686172614964000000000060448201526064016105e8565b600654600954106117fb5760405162461bcd60e51b8152602060048201526024808201527f5f6d696e74546f6b656e3a20726561636865642074686520737570706c792072604482015263616e676560e01b60648201526084016105e8565b600754600a82600c811061181157611811611e2b565b01541061186c5760405162461bcd60e51b815260206004820152602360248201527f5f6d696e74546f6b656e3a2072656163686564207468652063686172612072616044820152626e676560e81b60648201526084016105e8565b6000600a82600c811061188157611881611e2b565b01546007546118909084611e6e565b61189a9190611dd5565b905060065481106118f95760405162461bcd60e51b815260206004820152602360248201527f5f6d696e74546f6b656e3a20726561636865642074686520746f6b656e2072616044820152626e676560e81b60648201526084016105e8565b6003546005546001600160a01b03909116906316063e569061191c908490611dd5565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b0386166024820152604401600060405180830381600087803b15801561196457600080fd5b505af1158015611978573d6000803e3d6000fd5b5050505060016009600082825461198f9190611dd5565b9091555060019050600a83600c81106119aa576119aa611e2b565b0160008282546119ba9190611dd5565b9091555050505050565b60006119ce611bf5565b60005b600c811015611a2557600a81600c81106119ed576119ed611e2b565b01546007546119fc9190611dee565b8282600c8110611a0e57611a0e611e2b565b602002015280611a1d81611e41565b9150506119d1565b506000600c600654611a379190611e5a565b90508015611a8357805b600c811015611a81578281600c8110611a5c57611a5c611e2b565b60200201805190611a6c82611e85565b90525080611a7981611e41565b915050611a41565b505b6000805b600c811015611ac5578381600c8110611aa257611aa2611e2b565b6020020151611ab19083611dd5565b915080611abd81611e41565b915050611a87565b5060008111611b165760405162461bcd60e51b815260206004820152601a60248201527f5f72616e646f6d43686172613a206e6f2063616e64696461746500000000000060448201526064016105e8565b6000611b228287611e5a565b905060005b600c811015611b8d578481600c8110611b4257611b42611e2b565b6020020151821015611b58579695505050505050565b8481600c8110611b6a57611b6a611e2b565b6020020151611b799083611dee565b915080611b8581611e41565b915050611b27565b5060405162461bcd60e51b815260206004820152601960248201527f5f72616e646f6d43686172613a20666174616c206572726f720000000000000060448201526064016105e8565b604051806102a001604052806015906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60008060408385031215611c2757600080fd5b50508035926020909101359150565b600060208284031215611c4857600080fd5b5035919050565b6102a08101818360005b6015811015611c78578151835260209283019290910190600101611c59565b50505092915050565b600080600080600080600061024080898b031215611c9e57600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925089818a011115611cd457600080fd5b5060c08801905092959891949750929550565b600060208284031215611cf957600080fd5b81358015158114611d0957600080fd5b9392505050565b6001600160a01b038116811461107057600080fd5b600060208284031215611d3757600080fd5b8135611d0981611d10565b60208082526027908201527f63616c6c6572206973206e6f7420746865206f776e6572206e6569746865722060408201526636b0b730b3b2b960c91b606082015260800190565b600060208284031215611d9b57600080fd5b8151611d0981611d10565b600060208284031215611db857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611de857611de8611dbf565b92915050565b81810381811115611de857611de8611dbf565b634e487b7160e01b600052601260045260246000fd5b600082611e2657611e26611e01565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201611e5357611e53611dbf565b5060010190565b600082611e6957611e69611e01565b500690565b8082028115828204841417611de857611de8611dbf565b600081611e9457611e94611dbf565b50600019019056fea264697066735822122040f2144650211b7105721fa53360d0618e87b98aef262536c52ceda3860912fc64736f6c63430008110033

Deployed Bytecode Sourcemap

7087:15102:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12016:80;;;;;;;;;;-1:-1:-1;12080:11:0;;12016:80;;;160:25:1;;;148:2;133:18;12016:80:0;;;;;;;;13587:125;;;;;;;;;;-1:-1:-1;13587:125:0;;;;;:::i;:::-;;:::i;:::-;;12184:80;;;;;;;;;;-1:-1:-1;12248:11:0;;12184:80;;21943:241;;;;;;;;;;-1:-1:-1;21943:241:0;;;;;:::i;:::-;;:::i;11190:94::-;;;;;;;;;;-1:-1:-1;11260:19:0;;11190:94;;11383:87;;;;;;;;;;-1:-1:-1;11450:15:0;;11383:87;;10375:86;;;;;;;;;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;10375:86;;;-1:-1:-1;;;;;798:32:1;;;780:51;;768:2;753:18;10375:86:0;634:203:1;14122:1627:0;;;;;;;;;;;;;:::i;10889:96::-;;;;;;;;;;-1:-1:-1;10964:15:0;;-1:-1:-1;;;;;10964:15:0;10889:96;;11290:87;;;;;;;;;;-1:-1:-1;11357:15:0;;11290:87;;15912:829;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11811:90::-;;;;;;;;;;-1:-1:-1;11878:18:0;;;;11811:90;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;11811:90:0;1344:187:1;13816:105:0;;;;;;;;;;-1:-1:-1;13816:105:0;;;;;:::i;:::-;;:::i;2640:103::-;;;;;;;;;;;;;:::i;12745:623::-;;;;;;;;;;-1:-1:-1;12745:623:0;;;;;:::i;:::-;;:::i;11579:93::-;;;;;;;;;;-1:-1:-1;11649:18:0;;11579:93;;1992:87;;;;;;;;;;-1:-1:-1;2038:7:0;2065:6;-1:-1:-1;;;;;2065:6:0;1992:87;;13376:93;;;;;;;;;;-1:-1:-1;13376:93:0;;;;;:::i;:::-;;:::i;17609:713::-;;;;;;:::i;:::-;;:::i;11476:97::-;;;;;;;;;;-1:-1:-1;11548:20:0;;11476:97;;13718:92;;;;;;;;;;-1:-1:-1;13718:92:0;;;;;:::i;:::-;;:::i;13475:106::-;;;;;;;;;;-1:-1:-1;13475:106:0;;;;;:::i;:::-;;:::i;11099:85::-;;;;;;;;;;-1:-1:-1;11165:14:0;;11099:85;;18509:879;;;:::i;12270:93::-;;;;;;;;;;-1:-1:-1;12340:18:0;;12270:93;;12541:196;;;;;;;;;;-1:-1:-1;12541:196:0;;;;;:::i;:::-;;:::i;21654:106::-;;;;;;;;;;-1:-1:-1;21729:21:0;21654:106;;16929:492;;;;;;;;;;-1:-1:-1;16929:492:0;;;;;:::i;:::-;;:::i;10637:93::-;;;;;;;;;;-1:-1:-1;10637:93:0;;;;;:::i;:::-;;:::i;11907:103::-;;;;;;;;;;-1:-1:-1;11980:25:0;;;;;;;11907:103;;11678:125;;;;;;;;;;-1:-1:-1;11678:125:0;;;;;:::i;:::-;;:::i;12102:76::-;;;;;;;;;;-1:-1:-1;12164:9:0;;12102:76;;2898:201;;;;;;;;;;-1:-1:-1;2898:201:0;;;;;:::i;:::-;;:::i;10993:98::-;;;;;;;;;;-1:-1:-1;11063:23:0;;-1:-1:-1;;;11063:23:0;;;;10993:98;;13587:125;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;;;;;;;;;13673:11:::1;:19:::0;;;;13694:9:::1;:15:::0;13587:125::o;21943:241::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;22037:21:::1;22027:6;:31;;22018:66;;;::::0;-1:-1:-1;;;22018:66:0;;3502:2:1;22018:66:0::1;::::0;::::1;3484:21:1::0;3541:2;3521:18;;;3514:30;-1:-1:-1;;;3560:18:1;;;3553:50;3620:18;;22018:66:0::1;3300:344:1::0;22018:66:0::1;22097:22;2065:6:::0;;22151:25:::1;::::0;-1:-1:-1;;;;;2065:6:0;;;;;;22151:25:::1;::::0;::::1;;::::0;;;;;22097:22;22151:25;;2065:6;22151:25;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22007:177;21943:241:::0;:::o;14122:1627::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;14267:15:::1;::::0;-1:-1:-1;;;;;14267:15:0::1;14250:78;;;::::0;-1:-1:-1;;;14250:78:0;;3851:2:1;14250:78:0::1;::::0;::::1;3833:21:1::0;3890:2;3870:18;;;3863:30;3929:25;3909:18;;;3902:53;3972:18;;14250:78:0::1;3649:347:1::0;14250:78:0::1;14405:15;::::0;14439:14:::1;::::0;;14405:50:::1;::::0;-1:-1:-1;;;14405:50:0;;;;::::1;160:25:1::0;-1:-1:-1;;;;;14405:15:0;;::::1;::::0;:32:::1;::::0;133:18:1;;14405:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14388:67:0::1;14396:4;-1:-1:-1::0;;;;;14388:67:0::1;;14379:101;;;::::0;-1:-1:-1;;;14379:101:0;;4459:2:1;14379:101:0::1;::::0;::::1;4441:21:1::0;4498:2;4478:18;;;4471:30;-1:-1:-1;;;4517:18:1;;;4510:49;4576:18;;14379:101:0::1;4257:343:1::0;14379:101:0::1;14550:15;::::0;14587:14:::1;::::0;;14550:53:::1;::::0;-1:-1:-1;;;14550:53:0;;;;::::1;160:25:1::0;14533:14:0::1;::::0;-1:-1:-1;;;;;14550:15:0::1;::::0;:35:::1;::::0;133:18:1;;14550:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14638:15;::::0;14672:14:::1;::::0;;14638:50:::1;::::0;-1:-1:-1;;;14638:50:0;;;;::::1;160:25:1::0;14533:70:0;;-1:-1:-1;14614:12:0::1;::::0;14691:1:::1;::::0;-1:-1:-1;;;;;14638:15:0::1;::::0;:32:::1;::::0;133:18:1;;14638:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14629:59;::::0;:6;:59:::1;:::i;:::-;:63;;;;:::i;:::-;14614:78;;14771:6;14748:19;;:29;;14739:71;;;::::0;-1:-1:-1;;;14739:71:0;;5391:2:1;14739:71:0::1;::::0;::::1;5373:21:1::0;5430:2;5410:18;;;5403:30;5469:29;5449:18;;;5442:57;5516:18;;14739:71:0::1;5189:351:1::0;14739:71:0::1;14873:4;14867:1;14851:15;;14831:19;;:35;;;;:::i;:::-;:37;;;;:::i;:::-;14830:47;;14821:85;;;::::0;-1:-1:-1;;;14821:85:0;;5747:2:1;14821:85:0::1;::::0;::::1;5729:21:1::0;5786:2;5766:18;;;5759:30;5825:25;5805:18;;;5798:53;5868:18;;14821:85:0::1;5545:347:1::0;14821:85:0::1;14989:15;;14965:20;;:39;;14956:82;;;::::0;-1:-1:-1;;;14956:82:0;;6099:2:1;14956:82:0::1;::::0;::::1;6081:21:1::0;6138:2;6118:18;;;6111:30;6177;6157:18;;;6150:58;6225:18;;14956:82:0::1;5897:352:1::0;14956:82:0::1;15149:15;;7558:2;15127:1;7558:2;15096:15;;:30;;;;:::i;:::-;:32;;;;:::i;:::-;15095:49;;;;:::i;:::-;15094:70;15085:108;;;::::0;-1:-1:-1;;;15085:108:0;;6713:2:1;15085:108:0::1;::::0;::::1;6695:21:1::0;6752:2;6732:18;;;6725:30;6791:25;6771:18;;;6764:53;6834:18;;15085:108:0::1;6511:347:1::0;15085:108:0::1;15271:15;;15249:18;;:37;;15240:78;;;::::0;-1:-1:-1;;;15240:78:0;;7065:2:1;15240:78:0::1;::::0;::::1;7047:21:1::0;7104:2;7084:18;;;7077:30;7143:28;7123:18;;;7116:56;7189:18;;15240:78:0::1;6863:350:1::0;15240:78:0::1;15331:18;::::0;15360:211:::1;7558:2;15378:1;:16;15360:211;;;15454:15;;15425:22;15448:1;15425:25;;;;;;;:::i;:::-;;;:44;;15416:89;;;::::0;-1:-1:-1;;;15416:89:0;;7552:2:1;15416:89:0::1;::::0;::::1;7534:21:1::0;7591:2;7571:18;;;7564:30;7630:32;7610:18;;;7603:60;7680:18;;15416:89:0::1;7350:354:1::0;15416:89:0::1;15534:22;15557:1;15534:25;;;;;;;:::i;:::-;;::::0;15520:39:::1;::::0;;::::1;:::i;:::-;::::0;-1:-1:-1;15396:3:0;::::1;::::0;::::1;:::i;:::-;;;;15360:211;;;;15612:10;15590:18;;:32;15581:65;;;::::0;-1:-1:-1;;;15581:65:0;;8051:2:1;15581:65:0::1;::::0;::::1;8033:21:1::0;8090:2;8070:18;;;8063:30;-1:-1:-1;;;8109:18:1;;;8102:48;8167:18;;15581:65:0::1;7849:342:1::0;15581:65:0::1;-1:-1:-1::0;;15711:23:0::1;:30:::0;;-1:-1:-1;;;;15711:30:0::1;-1:-1:-1::0;;;15711:30:0::1;::::0;;-1:-1:-1;14122:1627:0:o;15912:829::-;15954:24;;:::i;:::-;15991:32;;:::i;:::-;16040:18;;;;16036:61;;;16093:1;16062:32;;16036:61;16111:25;;;;;;;16107:75;;;16178:1;16140:35;;;:39;16107:75;16219:11;;16192:24;;;:38;16266:9;;16241:22;;;:34;16313:11;;16286:24;;;:38;16369:18;;16335:31;;;:52;16429:15;;16398:28;;;:46;16486:15;;16455:28;;;:46;16546:18;;16512:31;;;:52;-1:-1:-1;16575:129:0;7558:2;16593:1;:16;16575:129;;;16667:22;16690:1;16667:25;;;;;;;:::i;:::-;;;16631:7;16639:24;16662:1;8126;16639:24;:::i;:::-;16631:33;;;;;;;:::i;:::-;;;;:61;16611:3;;;;:::i;:::-;;;;16575:129;;;-1:-1:-1;16724:7:0;15912:829;-1:-1:-1;15912:829:0:o;13816:105::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;13892:18:::1;:26:::0;13816:105::o;2640:103::-;1878:13;:11;:13::i;:::-;2705:30:::1;2732:1;2705:18;:30::i;:::-;2640:103::o:0;12745:623::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;12956:14:::1;:24:::0;;;12991:19:::1;:28:::0;;;13030:15:::1;:21:::0;;;13062:15:::1;:26:::0;;;13099:20:::1;:31:::0;;;13143:18:::1;:32:::0;;;-1:-1:-1;13186:110:0::1;7558:2;13204:1;:16;13186:110;;;13270:11;13282:1;13270:14;;;;;;;:::i;:::-;;;;;13242:22;13265:1;13242:25;;;;;;;:::i;:::-;;:42:::0;13222:3;::::1;::::0;::::1;:::i;:::-;;;;13186:110;;;-1:-1:-1::0;;13329:23:0::1;:31:::0;;-1:-1:-1;;;;13329:31:0::1;::::0;;-1:-1:-1;;;;;;12745:623:0:o;13376:93::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;13441:18:::1;:25:::0;;-1:-1:-1;;13441:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13376:93::o;17609:713::-;5694:21;:19;:21::i;:::-;17699:23:::1;::::0;-1:-1:-1;;;17699:23:0;::::1;;;17690:77;;;::::0;-1:-1:-1;;;17690:77:0;;8398:2:1;17690:77:0::1;::::0;::::1;8380:21:1::0;8437:2;8417:18;;;8410:30;8476:34;8456:18;;;8449:62;-1:-1:-1;;;8527:18:1;;;8520:37;8574:19;;17690:77:0::1;8196:403:1::0;17690:77:0::1;17809:20;;17787:18;;:42;;17778:94;;;::::0;-1:-1:-1;;;17778:94:0;;8806:2:1;17778:94:0::1;::::0;::::1;8788:21:1::0;8845:2;8825:18;;;8818:30;8884:34;8864:18;;;8857:62;-1:-1:-1;;;8935:18:1;;;8928:35;8980:19;;17778:94:0::1;8604:401:1::0;17778:94:0::1;17896:18;::::0;::::1;;17894:20;17885:57;;;::::0;-1:-1:-1;;;17885:57:0;;9212:2:1;17885:57:0::1;::::0;::::1;9194:21:1::0;9251:2;9231:18;;;9224:30;-1:-1:-1;;;9270:18:1;;;9263:52;9332:18;;17885:57:0::1;9010:346:1::0;17885:57:0::1;17962:11;::::0;:16;;:69:::1;;-1:-1:-1::0;17998:32:0::1;7507:2;17998:15;:32;:::i;:::-;17982:11;;:49;;17962:69;17953:106;;;::::0;-1:-1:-1;;;17953:106:0;;9563:2:1;17953:106:0::1;::::0;::::1;9545:21:1::0;9602:2;9582:18;;;9575:30;-1:-1:-1;;;9621:18:1;;;9614:52;9683:18;;17953:106:0::1;9361:346:1::0;17953:106:0::1;18079:9;::::0;:14;;:64:::1;;;18128:15;7507:2;18098:9;;:26;;;;:::i;:::-;18097:46;18079:64;18070:100;;;::::0;-1:-1:-1;;;18070:100:0;;9914:2:1;18070:100:0::1;::::0;::::1;9896:21:1::0;9953:2;9933:18;;;9926:30;-1:-1:-1;;;9972:18:1;;;9965:51;10033:18;;18070:100:0::1;9712:345:1::0;18070:100:0::1;18203:11;;18190:9;:24;;18181:70;;;::::0;-1:-1:-1;;;18181:70:0;;10264:2:1;18181:70:0::1;::::0;::::1;10246:21:1::0;10303:2;10283:18;;;10276:30;10342:33;10322:18;;;10315:61;10393:18;;18181:70:0::1;10062:355:1::0;18181:70:0::1;18281:33;18293:10;18305:7;18281:10;:33::i;:::-;5738:20:::0;5132:1;6258:22;;6075:213;5738:20;17609:713;:::o;13718:92::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;13788:11:::1;:19:::0;13718:92::o;13475:106::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;13546:25:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;13546:32:0;;::::1;::::0;;;::::1;::::0;;13475:106::o;18509:879::-;5694:21;:19;:21::i;:::-;18581:23:::1;::::0;-1:-1:-1;;;18581:23:0;::::1;;;18572:76;;;::::0;-1:-1:-1;;;18572:76:0;;10624:2:1;18572:76:0::1;::::0;::::1;10606:21:1::0;10663:2;10643:18;;;10636:30;10702:34;10682:18;;;10675:62;-1:-1:-1;;;10753:18:1;;;10746:36;10799:19;;18572:76:0::1;10422:402:1::0;18572:76:0::1;18690:20;;18668:18;;:42;;18659:93;;;::::0;-1:-1:-1;;;18659:93:0;;11031:2:1;18659:93:0::1;::::0;::::1;11013:21:1::0;11070:2;11050:18;;;11043:30;11109:34;11089:18;;;11082:62;-1:-1:-1;;;11160:18:1;;;11153:34;11204:19;;18659:93:0::1;10829:400:1::0;18659:93:0::1;18776:25;::::0;::::1;::::0;::::1;;;18774:27;18765:63;;;::::0;-1:-1:-1;;;18765:63:0;;11436:2:1;18765:63:0::1;::::0;::::1;11418:21:1::0;11475:2;11455:18;;;11448:30;-1:-1:-1;;;11494:18:1;;;11487:51;11555:18;;18765:63:0::1;11234:345:1::0;18765:63:0::1;18848:11;::::0;:16;;:69:::1;;-1:-1:-1::0;18884:32:0::1;7507:2;18884:15;:32;:::i;:::-;18868:11;;:49;;18848:69;18839:105;;;::::0;-1:-1:-1;;;18839:105:0;;11786:2:1;18839:105:0::1;::::0;::::1;11768:21:1::0;11825:2;11805:18;;;11798:30;-1:-1:-1;;;11844:18:1;;;11837:51;11905:18;;18839:105:0::1;11584:345:1::0;18839:105:0::1;18964:9;::::0;:14;;:64:::1;;;19013:15;7507:2;18983:9;;:26;;;;:::i;:::-;18982:46;18964:64;18955:99;;;::::0;-1:-1:-1;;;18955:99:0;;12136:2:1;18955:99:0::1;::::0;::::1;12118:21:1::0;12175:2;12155:18;;;12148:30;-1:-1:-1;;;12194:18:1;;;12187:50;12254:18;;18955:99:0::1;11934:344:1::0;18955:99:0::1;19087:18;;19074:9;:31;;19065:76;;;::::0;-1:-1:-1;;;19065:76:0;;12485:2:1;19065:76:0::1;::::0;::::1;12467:21:1::0;12524:2;12504:18;;;12497:30;12563:32;12543:18;;;12536:60;12613:18;;19065:76:0::1;12283:354:1::0;19065:76:0::1;19291:18;::::0;19246:65:::1;::::0;-1:-1:-1;;19272:4:0::1;12897:2:1::0;12893:15;;;12889:24;;19246:65:0::1;::::0;::::1;12877:37:1::0;19279:10:0::1;12948:15:1::0;;12944:24;12930:12;;;12923:46;12985:12;;;12978:28;;;;19194:15:0::1;::::0;19212:105:::1;::::0;13022:12:1;;19246:65:0::1;;;;;;;;;;;;19235:78;;;;;;19226:89;;19212:12;:105::i;:::-;19194:123;;19347:33;19359:10;19371:7;19347:10;:33::i;:::-;18561:827;5738:20:::0;5132:1;6258:22;;6075:213;12541:196;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;12624:15:::1;:40:::0;;-1:-1:-1;;;;;;12698:31:0;-1:-1:-1;;;;;12624:40:0;;::::1;12698:31:::0;;;;;;12541:196::o;16929:492::-;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;9237:10;:21;;:48;;-1:-1:-1;10443:8:0;;-1:-1:-1;;;;;10443:8:0;9262:10;:23;9237:48;9228:102;;;;-1:-1:-1;;;9228:102:0;;;;;;;:::i;:::-;17015:23:::1;::::0;-1:-1:-1;;;17015:23:0;::::1;;;17006:79;;;::::0;-1:-1:-1;;;17006:79:0;;13247:2:1;17006:79:0::1;::::0;::::1;13229:21:1::0;13286:2;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;-1:-1:-1;;;13376:18:1;;;13369:39;13425:19;;17006:79:0::1;13045:405:1::0;17006:79:0::1;17133:20;;17125:3;17106:18;;:22;;;;:::i;:::-;17105:48;;17096:108;;;::::0;-1:-1:-1;;;17096:108:0;;13657:2:1;17096:108:0::1;::::0;::::1;13639:21:1::0;13696:2;13676:18;;;13669:30;13735:34;13715:18;;;13708:62;-1:-1:-1;;;13786:18:1;;;13779:43;13839:19;;17096:108:0::1;13455:409:1::0;17096:108:0::1;17239:9;17234:180;17254:3;17252:1;:5;17234:180;;;17279:15;7558:2;17321:18;;17298:20;;:41;;;;:::i;:::-;17297:60;;;;:::i;:::-;17279:78;;17372:30;17384:7;2038::::0;2065:6;-1:-1:-1;;;;;2065:6:0;;1992:87;17384:7:::1;17393;17372:10;:30::i;:::-;-1:-1:-1::0;17259:3:0;::::1;::::0;::::1;:::i;:::-;;;;17234:180;;;;16929:492:::0;:::o;10637:93::-;1878:13;:11;:13::i;:::-;10705:8:::1;:17:::0;;-1:-1:-1;;;;;;10705:17:0::1;-1:-1:-1::0;;;;;10705:17:0;;;::::1;::::0;;;::::1;::::0;;10637:93::o;11678:125::-;11748:7;11767:22;11790:7;11767:31;;;;;;;:::i;:::-;;;;11678:125;-1:-1:-1;;11678:125:0:o;2898:201::-;1878:13;:11;:13::i;:::-;-1:-1:-1;;;;;2987:22:0;::::1;2979:73;;;::::0;-1:-1:-1;;;2979:73:0;;14188:2:1;2979:73:0::1;::::0;::::1;14170:21:1::0;14227:2;14207:18;;;14200:30;14266:34;14246:18;;;14239:62;-1:-1:-1;;;14317:18:1;;;14310:36;14363:19;;2979:73:0::1;13986:402:1::0;2979:73:0::1;3063:28;3082:8;3063:18;:28::i;2157:132::-:0;2038:7;2065:6;-1:-1:-1;;;;;2065:6:0;723:10;2221:23;2213:68;;;;-1:-1:-1;;;2213:68:0;;14595:2:1;2213:68:0;;;14577:21:1;;;14614:18;;;14607:30;14673:34;14653:18;;;14646:62;14725:18;;2213:68:0;14393:356:1;3259:191:0;3333:16;3352:6;;-1:-1:-1;;;;;3369:17:0;;;-1:-1:-1;;;;;;3369:17:0;;;;;;3402:40;;3352:6;;;;;;;3402:40;;3333:16;3402:40;3322:128;3259:191;:::o;5774:293::-;5176:1;5908:7;;:19;5900:63;;;;-1:-1:-1;;;5900:63:0;;14956:2:1;5900:63:0;;;14938:21:1;14995:2;14975:18;;;14968:30;15034:33;15014:18;;;15007:61;15085:18;;5900:63:0;14754:355:1;5900:63:0;5176:1;6041:7;:18;5774:293::o;19554:680::-;7558:2;19634:7;:24;19625:66;;;;-1:-1:-1;;;19625:66:0;;15316:2:1;19625:66:0;;;15298:21:1;15355:2;15335:18;;;15328:30;15394:29;15374:18;;;15367:57;15441:18;;19625:66:0;15114:351:1;19625:66:0;19732:15;;19711:18;;:36;19702:87;;;;-1:-1:-1;;;19702:87:0;;15672:2:1;19702:87:0;;;15654:21:1;15711:2;15691:18;;;15684:30;15750:34;15730:18;;;15723:62;-1:-1:-1;;;15801:18:1;;;15794:34;15845:19;;19702:87:0;15470:400:1;19702:87:0;19843:15;;19809:22;19832:7;19809:31;;;;;;;:::i;:::-;;;:49;19800:99;;;;-1:-1:-1;;;19800:99:0;;16077:2:1;19800:99:0;;;16059:21:1;16116:2;16096:18;;;16089:30;16155:34;16135:18;;;16128:62;-1:-1:-1;;;16206:18:1;;;16199:33;16249:19;;19800:99:0;15875:399:1;19800:99:0;19912:13;19954:22;19977:7;19954:31;;;;;;;:::i;:::-;;;19936:15;;19928:23;;:7;:23;:::i;:::-;:57;;;;:::i;:::-;19912:73;;20013:15;;20005:5;:23;19996:73;;;;-1:-1:-1;;;19996:73:0;;16654:2:1;19996:73:0;;;16636:21:1;16693:2;16673:18;;;16666:30;16732:34;16712:18;;;16705:62;-1:-1:-1;;;16783:18:1;;;16776:33;16826:19;;19996:73:0;16452:399:1;19996:73:0;20082:15;;20112:19;;-1:-1:-1;;;;;20082:15:0;;;;:28;;20112:25;;20132:5;;20112:25;:::i;:::-;20082:61;;-1:-1:-1;;;;;;20082:61:0;;;;;;;;;;17030:25:1;;;;-1:-1:-1;;;;;17091:32:1;;17071:18;;;17064:60;17003:18;;20082:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20178:1;20156:18;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;20225:1:0;;-1:-1:-1;20190:22:0;20213:7;20190:31;;;;;;;:::i;:::-;;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;19554:680:0:o;20402:1084::-;20463:7;20483:38;;:::i;:::-;20537:9;20532:124;7558:2;20550:1;:16;20532:124;;;20619:22;20642:1;20619:25;;;;;;;:::i;:::-;;;20601:15;;:43;;;;:::i;:::-;20588:7;20596:1;20588:10;;;;;;;:::i;:::-;;;;:56;20568:3;;;;:::i;:::-;;;;20532:124;;;;20788:11;7558:2;20802:15;;:32;;;;:::i;:::-;20788:46;-1:-1:-1;20849:7:0;;20845:129;;20888:3;20873:90;7558:2;20893:1;:16;20873:90;;;20935:7;20943:1;20935:10;;;;;;;:::i;:::-;;;;:12;;;;;;:::i;:::-;;;-1:-1:-1;20911:3:0;;;;:::i;:::-;;;;20873:90;;;;20845:129;21014:19;;21044:93;7558:2;21062:1;:16;21044:93;;;21115:7;21123:1;21115:10;;;;;;;:::i;:::-;;;;;21100:25;;;;:::i;:::-;;-1:-1:-1;21080:3:0;;;;:::i;:::-;;;;21044:93;;;;21170:1;21156:11;:15;21147:56;;;;-1:-1:-1;;;21147:56:0;;17478:2:1;21147:56:0;;;17460:21:1;17517:2;17497:18;;;17490:30;17556:28;17536:18;;;17529:56;17602:18;;21147:56:0;17276:350:1;21147:56:0;21216:12;21231:18;21238:11;21231:4;:18;:::i;:::-;21216:33;;21265:9;21260:139;7558:2;21278:1;:16;21260:139;;;21327:7;21335:1;21327:10;;;;;;;:::i;:::-;;;;;21320:4;:17;21316:39;;;21349:1;20402:1084;-1:-1:-1;;;;;;20402:1084:0:o;21316:39::-;21377:7;21385:1;21377:10;;;;;;;:::i;:::-;;;;;21369:18;;;;:::i;:::-;;-1:-1:-1;21296:3:0;;;;:::i;:::-;;;;21260:139;;;-1:-1:-1;21411:45:0;;-1:-1:-1;;;21411:45:0;;17833:2:1;21411:45:0;;;17815:21:1;17872:2;17852:18;;;17845:30;17911:27;17891:18;;;17884:55;17956:18;;21411:45:0;17631:349:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:248:1:-;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;364:23:1;;;434:2;419:18;;;406:32;;-1:-1:-1;196:248:1:o;449:180::-;508:6;561:2;549:9;540:7;536:23;532:32;529:52;;;577:1;574;567:12;529:52;-1:-1:-1;600:23:1;;449:180;-1:-1:-1;449:180:1:o;842:497::-;1024:3;1009:19;;1013:9;1105:6;982:4;1139:194;1153:4;1150:1;1147:11;1139:194;;;1212:13;;1200:26;;1249:4;1273:12;;;;1308:15;;;;1173:1;1166:9;1139:194;;;1143:3;;;842:497;;;;:::o;1536:685::-;1675:6;1683;1691;1699;1707;1715;1723;1754:3;1798:2;1786:9;1777:7;1773:23;1769:32;1766:52;;;1814:1;1811;1804:12;1766:52;1850:9;1837:23;1827:33;;1907:2;1896:9;1892:18;1879:32;1869:42;;1958:2;1947:9;1943:18;1930:32;1920:42;;2009:2;1998:9;1994:18;1981:32;1971:42;;2060:3;2049:9;2045:19;2032:33;2022:43;;2112:3;2101:9;2097:19;2084:33;2074:43;;2152:7;2147:2;2136:9;2132:18;2129:31;2126:51;;;2173:1;2170;2163:12;2126:51;;2211:3;2200:9;2196:19;2186:29;;1536:685;;;;;;;;;;:::o;2226:273::-;2282:6;2335:2;2323:9;2314:7;2310:23;2306:32;2303:52;;;2351:1;2348;2341:12;2303:52;2390:9;2377:23;2443:5;2436:13;2429:21;2422:5;2419:32;2409:60;;2465:1;2462;2455:12;2409:60;2488:5;2226:273;-1:-1:-1;;;2226:273:1:o;2504:131::-;-1:-1:-1;;;;;2579:31:1;;2569:42;;2559:70;;2625:1;2622;2615:12;2640:247;2699:6;2752:2;2740:9;2731:7;2727:23;2723:32;2720:52;;;2768:1;2765;2758:12;2720:52;2807:9;2794:23;2826:31;2851:5;2826:31;:::i;2892:403::-;3094:2;3076:21;;;3133:2;3113:18;;;3106:30;3172:34;3167:2;3152:18;;3145:62;-1:-1:-1;;;3238:2:1;3223:18;;3216:37;3285:3;3270:19;;2892:403::o;4001:251::-;4071:6;4124:2;4112:9;4103:7;4099:23;4095:32;4092:52;;;4140:1;4137;4130:12;4092:52;4172:9;4166:16;4191:31;4216:5;4191:31;:::i;4605:184::-;4675:6;4728:2;4716:9;4707:7;4703:23;4699:32;4696:52;;;4744:1;4741;4734:12;4696:52;-1:-1:-1;4767:16:1;;4605:184;-1:-1:-1;4605:184:1:o;4794:127::-;4855:10;4850:3;4846:20;4843:1;4836:31;4886:4;4883:1;4876:15;4910:4;4907:1;4900:15;4926:125;4991:9;;;5012:10;;;5009:36;;;5025:18;;:::i;:::-;4926:125;;;;:::o;5056:128::-;5123:9;;;5144:11;;;5141:37;;;5158:18;;:::i;6254:127::-;6315:10;6310:3;6306:20;6303:1;6296:31;6346:4;6343:1;6336:15;6370:4;6367:1;6360:15;6386:120;6426:1;6452;6442:35;;6457:18;;:::i;:::-;-1:-1:-1;6491:9:1;;6386:120::o;7218:127::-;7279:10;7274:3;7270:20;7267:1;7260:31;7310:4;7307:1;7300:15;7334:4;7331:1;7324:15;7709:135;7748:3;7769:17;;;7766:43;;7789:18;;:::i;:::-;-1:-1:-1;7836:1:1;7825:13;;7709:135::o;13869:112::-;13901:1;13927;13917:35;;13932:18;;:::i;:::-;-1:-1:-1;13966:9:1;;13869:112::o;16279:168::-;16352:9;;;16383;;16400:15;;;16394:22;;16380:37;16370:71;;16421:18;;:::i;17135:136::-;17174:3;17202:5;17192:39;;17211:18;;:::i;:::-;-1:-1:-1;;;17247:18:1;;17135:136::o

Swarm Source

ipfs://40f2144650211b7105721fa53360d0618e87b98aef262536c52ceda3860912fc

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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.