ETH Price: $3,903.19 (+0.49%)

Contract

0x194cc053324C919f9c0Aa0caAbC3ac7c15fF6375
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer142009362022-02-14 0:11:061033 days ago1644797466IN
0x194cc053...c15fF6375
0 ETH0.0014161747.83238263
Transfer142009252022-02-14 0:08:591033 days ago1644797339IN
0x194cc053...c15fF6375
0 ETH0.0016790356.71063868
Claim Tokens141456442022-02-05 11:06:011042 days ago1644059161IN
0x194cc053...c15fF6375
0 ETH0.0028034638.5244173
Claim Tokens140150992022-01-16 7:11:331062 days ago1642317093IN
0x194cc053...c15fF6375
0 ETH0.0048358686.84637869
Claim Tokens140102782022-01-15 13:24:551063 days ago1642253095IN
0x194cc053...c15fF6375
0 ETH0.00576922103.60840521
Claim Tokens140046802022-01-14 16:21:461064 days ago1642177306IN
0x194cc053...c15fF6375
0 ETH0.01251639171.96871256
Claim Tokens140036332022-01-14 12:32:421064 days ago1642163562IN
0x194cc053...c15fF6375
0 ETH0.00859507118.09182347
Claim Tokens140001832022-01-13 23:41:361064 days ago1642117296IN
0x194cc053...c15fF6375
0 ETH0.00933257128.22459236
Claim Tokens139978992022-01-13 15:06:461065 days ago1642086406IN
0x194cc053...c15fF6375
0 ETH0.00936901168.25621573
Claim Tokens139968852022-01-13 11:25:101065 days ago1642073110IN
0x194cc053...c15fF6375
0 ETH0.0069999125.70987534
Claim Tokens139956482022-01-13 6:47:401065 days ago1642056460IN
0x194cc053...c15fF6375
0 ETH0.0086041154.51948849
Claim Tokens139948452022-01-13 3:46:561065 days ago1642045616IN
0x194cc053...c15fF6375
0 ETH0.0104163187.06441432
Transfer139946272022-01-13 2:56:481065 days ago1642042608IN
0x194cc053...c15fF6375
0 ETH0.00831884178.10694727
Claim Tokens139914082022-01-12 15:06:371066 days ago1641999997IN
0x194cc053...c15fF6375
0 ETH0.00942949129.55621773
Claim Tokens139883642022-01-12 3:41:001066 days ago1641958860IN
0x194cc053...c15fF6375
0 ETH0.01194238164.0821207
Transfer139839762022-01-11 11:36:461067 days ago1641901006IN
0x194cc053...c15fF6375
0 ETH0.00377768131.57639588
Claim Tokens139839712022-01-11 11:35:521067 days ago1641900952IN
0x194cc053...c15fF6375
0 ETH0.01057736147.3150077
Claim Tokens139812802022-01-11 1:32:361067 days ago1641864756IN
0x194cc053...c15fF6375
0 ETH0.01217379167.26153613
Claim Tokens139771852022-01-10 10:18:101068 days ago1641809890IN
0x194cc053...c15fF6375
0 ETH0.0143005256.81998639
Claim Tokens139740432022-01-09 22:33:271068 days ago1641767607IN
0x194cc053...c15fF6375
0 ETH0.01148699157.82530436
Claim Tokens139720642022-01-09 15:10:261069 days ago1641741026IN
0x194cc053...c15fF6375
0 ETH0.00737582132.46095889
Claim Tokens139714192022-01-09 12:42:301069 days ago1641732150IN
0x194cc053...c15fF6375
0 ETH0.00797169109.52690854
Transfer139707872022-01-09 10:25:481069 days ago1641723948IN
0x194cc053...c15fF6375
0 ETH0.00523555112.12239588
Claim Tokens139707772022-01-09 10:23:171069 days ago1641723797IN
0x194cc053...c15fF6375
0 ETH0.00820931112.7917049
Claim Tokens139706592022-01-09 9:54:011069 days ago1641722041IN
0x194cc053...c15fF6375
0 ETH0.0069731695.80761066
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Plasma

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-16
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/*
    Note: This version of plasma has been migrated
    Please check the Space Yetis contract for the correct address
*/

/*
    ERC20I (ERC20 0xInuarashi Edition)
    Minified and Gas Optimized
    From the efforts of the 0x Collective
    https://0xcollective.net
*/

contract ERC20I {
    // Token Params
    string public name;
    string public symbol;
    constructor(string memory name_, string memory symbol_) {
        name = name_;
        symbol = symbol_;
    }

    // Decimals
    uint8 public constant decimals = 18;

    // Supply
    uint256 public totalSupply;
    
    // Mappings of Balances
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    // Events
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    // Internal Functions
    function _mint(address to_, uint256 amount_) internal virtual {
        totalSupply += amount_;
        balanceOf[to_] += amount_;
        emit Transfer(address(0x0), to_, amount_);
    }
    function _burn(address from_, uint256 amount_) internal virtual {
        balanceOf[from_] -= amount_;
        totalSupply -= amount_;
        emit Transfer(from_, address(0x0), amount_);
    }
    function _approve(address owner_, address spender_, uint256 amount_) internal virtual {
        allowance[owner_][spender_] = amount_;
        emit Approval(owner_, spender_, amount_);
    }

    // Public Functions
    function approve(address spender_, uint256 amount_) public virtual returns (bool) {
        _approve(msg.sender, spender_, amount_);
        return true;
    }
    function transfer(address to_, uint256 amount_) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount_;
        balanceOf[to_] += amount_;
        emit Transfer(msg.sender, to_, amount_);
        return true;
    }
    function transferFrom(address from_, address to_, uint256 amount_) public virtual returns (bool) {
        if (allowance[from_][msg.sender] != type(uint256).max) {
            allowance[from_][msg.sender] -= amount_; }
        balanceOf[from_] -= amount_;
        balanceOf[to_] += amount_;
        emit Transfer(from_, to_, amount_);
        return true;
    }

    // 0xInuarashi Custom Functions
    function multiTransfer(address[] memory to_, uint256[] memory amounts_) public virtual {
        require(to_.length == amounts_.length, "ERC20I: To and Amounts length Mismatch!");
        for (uint256 i = 0; i < to_.length; i++) {
            transfer(to_[i], amounts_[i]);
        }
    }
    function multiTransferFrom(address[] memory from_, address[] memory to_, uint256[] memory amounts_) public virtual {
        require(from_.length == to_.length && from_.length == amounts_.length, "ERC20I: From, To, and Amounts length Mismatch!");
        for (uint256 i = 0; i < from_.length; i++) {
            transferFrom(from_[i], to_[i], amounts_[i]);
        }
    }
}

abstract contract ERC20IBurnable is ERC20I {
    function burn(uint256 amount_) external virtual {
        _burn(msg.sender, amount_);
    }
    function burnFrom(address from_, uint256 amount_) public virtual {
        uint256 _currentAllowance = allowance[from_][msg.sender];
        require(_currentAllowance >= amount_, "ERC20IBurnable: Burn amount requested exceeds allowance!");

        if (allowance[from_][msg.sender] != type(uint256).max) {
            allowance[from_][msg.sender] -= amount_; }

        _burn(from_, amount_);
    }
}

// Open0x Ownable (by 0xInuarashi)
abstract contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed oldOwner_, address indexed newOwner_);
    constructor() { owner = msg.sender; }
    modifier onlyOwner {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function _transferOwnership(address newOwner_) internal virtual {
        address _oldOwner = owner;
        owner = newOwner_;
        emit OwnershipTransferred(_oldOwner, newOwner_);    
    }
    function transferOwnership(address newOwner_) public virtual onlyOwner {
        require(newOwner_ != address(0x0), "Ownable: new owner is the zero address!");
        _transferOwnership(newOwner_);
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0x0));
    }
}

interface iSpaceYetis {
    function balanceOf(address address_) external view returns (uint256);
}

contract Plasma is ERC20IBurnable, Ownable {
    constructor() ERC20I("Plasma", "PLASMA") {}

    // Interfaces
    address public spaceYetisAddress;
    iSpaceYetis public SpaceYetis;
    function setSpaceYetis(address address_) external onlyOwner {
        spaceYetisAddress = address_; SpaceYetis = iSpaceYetis(address_); }

    // Times
    uint40 public yieldStartTime = 1640221200; // 2021-12-22_20-00 EST
    uint40 public yieldEndTime = 1955754000; // 2031-12-22_20-00 EST
    function setYieldEndTime(uint40 yieldEndTime_) external onlyOwner {
        yieldEndTime = yieldEndTime_; }

    // Yield Info
    uint256 public globalModulus = (10 ** 14);
    uint40 public yieldRatePerYeti = uint40(5 ether / globalModulus);
    struct Yield { uint40 lastUpdatedTime_; uint176 pendingRewards_; }
    mapping(address => Yield) public addressToYield;

    // Events
    event Claim(address to_, uint256 amount_);
    event CreditsDeducted(address from_, uint256 amount_);
    event CreditsAdded(address to_, uint256 amount_);

    // Controllers
    mapping(address => bool) public plasmaControllers;
    modifier onlyControllers { 
        require(plasmaControllers[msg.sender], "You are not a controller!"); _; }
    function setControllers(address address_, bool bool_) external onlyOwner {
        plasmaControllers[address_] = bool_; }
    
    // Credits System
    function deductCredits(address address_, uint256 amount_) external onlyControllers {
        uint176 _downscaledAmount = uint176(amount_ / globalModulus);
        require(addressToYield[address_].pendingRewards_ >= _downscaledAmount, 
            "Not enough credits!");
        addressToYield[address_].pendingRewards_ -= _downscaledAmount;
        emit CreditsDeducted(address_, amount_);
    }
    function addCredits(address address_, uint256 amount_) external onlyControllers {
        uint176 _downscaledAmount = uint176(amount_ / globalModulus);
        addressToYield[address_].pendingRewards_ += _downscaledAmount;
        emit CreditsAdded(address_, amount_);
    }

    // ERC20 Burn
    function burnByController(address from_, uint256 amount_) external onlyControllers {
        _burn(from_, amount_); }
    
    // Internal View Functions
    function __getSmallerValueUint40(uint40 a, uint40 b) internal pure returns (uint40) { return a < b ? a : b; }
    function __getTimestamp() internal view returns (uint40) {
        return __getSmallerValueUint40(uint40(block.timestamp), yieldEndTime); }
    function __getYieldRate(address address_) internal view returns (uint40) {
        return uint40(SpaceYetis.balanceOf(address_)) * yieldRatePerYeti; }

    function __calculateYieldReward(address address_) internal view returns (uint176) { 
        uint40 _totalYieldRate = __getYieldRate(address_);
        if (_totalYieldRate == 0) { return 0; }
        uint40 _time = __getTimestamp();
        uint40 _lastUpdate = addressToYield[address_].lastUpdatedTime_;

        if (_lastUpdate > yieldStartTime) {
            return (_totalYieldRate * (_time - _lastUpdate) / 1 days);
        } else { return 0; }
    }

    // Internal Write Functions
    function __updateYieldReward(address address_) internal {
        uint40 _time = __getTimestamp();
        uint40 _lastUpdate = addressToYield[address_].lastUpdatedTime_;

        // This is not triggered in the case that the user has never minted / held a token before.
        if (_lastUpdate > 0) { 
            addressToYield[address_].pendingRewards_ += __calculateYieldReward(address_);
        }
        // This updates the time until the end when yieldEndTime is set on block.timestamp >= yieldEndTime occurance.
        if (_lastUpdate != yieldEndTime) {
            addressToYield[address_].lastUpdatedTime_ = _time;
        }
    }
    function __claimYieldReward(address address_) internal {
        uint176 _pendingRewards = addressToYield[address_].pendingRewards_;

        if (_pendingRewards > 0) {
            addressToYield[address_].pendingRewards_ = 0;
        
            uint256 _expandedReward = uint256(_pendingRewards * globalModulus);
        
            _mint(address_, _expandedReward); 
            emit Claim(address_, _expandedReward);
        }
    }

    // Public Write Functions
    function updateReward(address address_) public {
        __updateYieldReward(address_);
    }
    function claimTokens(address address_) public {
        __updateYieldReward(address_);
        __claimYieldReward(address_);
    }

    // Public View Functions
    function getStorageClaimableTokens(address address_) public view returns (uint256) {
        return uint256(addressToYield[address_].pendingRewards_ * globalModulus);
    }
    function getPendingClaimableTokens(address address_) public view returns (uint256) {
        return uint256(__calculateYieldReward(address_) * globalModulus);
    }
    function getTotalClaimableTokens(address address_) public view returns (uint256) {
        return uint256((addressToYield[address_].pendingRewards_ + __calculateYieldReward(address_)) * globalModulus);
    }
    function getYieldRateOfAddress(address address_) public view returns (uint256) {
        return uint256(__getYieldRate(address_) * globalModulus); 
    }
    function raw_getStorageClaimableTokens(address address_) public view returns (uint256) {
        return addressToYield[address_].pendingRewards_;
    }
    function raw_getPendingClaimableTokens(address address_) public view returns (uint256) {
        return __calculateYieldReward(address_);
    }
    function raw_getTotalClaimableTokens(address address_) public view returns (uint256) {
        return addressToYield[address_].pendingRewards_ + __calculateYieldReward(address_);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"CreditsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"CreditsDeducted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner_","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner_","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SpaceYetis","outputs":[{"internalType":"contract iSpaceYetis","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"addCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToYield","outputs":[{"internalType":"uint40","name":"lastUpdatedTime_","type":"uint40"},{"internalType":"uint176","name":"pendingRewards_","type":"uint176"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burnByController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"deductCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getPendingClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getStorageClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getTotalClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getYieldRateOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalModulus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from_","type":"address[]"},{"internalType":"address[]","name":"to_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"multiTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"plasmaControllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getPendingClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getStorageClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getTotalClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setControllers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setSpaceYetis","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint40","name":"yieldEndTime_","type":"uint40"}],"name":"setYieldEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spaceYetisAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"updateReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yieldEndTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldRatePerYeti","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldStartTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"}]

608060405260078054600160a01b600160f01b031916680749270100061c3ca160a41b179055655af3107a400060088190556200004590674563918244f400006200019c565b6009805464ffffffffff191664ffffffffff929092169190911790553480156200006e57600080fd5b5060405180604001604052806006815260200165506c61736d6160d01b81525060405180604001604052806006815260200165504c41534d4160d01b8152508160009080519060200190620000c5929190620000f6565b508051620000db906001906020840190620000f6565b5050600580546001600160a01b0319163317905550620001fc565b8280546200010490620001bf565b90600052602060002090601f01602090048101928262000128576000855562000173565b82601f106200014357805160ff191683800117855562000173565b8280016001018555821562000173579182015b828111156200017357825182559160200191906001019062000156565b506200018192915062000185565b5090565b5b8082111562000181576000815560010162000186565b600082620001ba57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680620001d457607f821691505b60208210811415620001f657634e487b7160e01b600052602260045260246000fd5b50919050565b611bbd806200020c6000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c806382596f011161013b578063ba521580116100b8578063df8de3e71161007c578063df8de3e7146105b2578063e701fa4f146105c5578063eb0d22be146105d8578063ef3baf6b146105e1578063f2fde38b146105f457600080fd5b8063ba521580146104f2578063c071bd3d14610505578063c4fedb1414610563578063c7e6cc3f14610574578063dd62ed3e1461058757600080fd5b806394a3b4b9116100ff57806394a3b4b91461049e57806395d89b41146104b15780639b390135146104b9578063a3f0a43a146104cc578063a9059cbb146104df57600080fd5b806382596f011461043f57806385452f0914610452578063871ff40514610465578063877e139b146104785780638da5cb5b1461048b57600080fd5b80634dfc50c0116101c9578063752fd6101161018d578063752fd610146103c357806379cc6790146103d65780637bde17a3146103e95780637c073ede146103fc578063820aed191461041457600080fd5b80634dfc50c014610352578063632447c914610375578063649d35fd1461038857806370a082311461039b578063715018a6146103bb57600080fd5b80631e89d545116102105780631e89d545146102cf57806323b872dd146102e4578063313ce567146102f7578063314ca0391461031157806342966c681461033f57600080fd5b806302b343b11461024257806306fdde031461028e578063095ea7b3146102a357806318160ddd146102c6575b600080fd5b61027b61025036600461164a565b6001600160a01b03166000908152600a6020526040902054600160281b90046001600160b01b031690565b6040519081526020015b60405180910390f35b610296610607565b604051610285919061187f565b6102b66102b1366004611710565b610695565b6040519015158152602001610285565b61027b60025481565b6102e26102dd3660046117c2565b6106ab565b005b6102b66102f2366004611698565b610771565b6102ff601281565b60405160ff9091168152602001610285565b60075461032990600160c81b900464ffffffffff1681565b60405164ffffffffff9091168152602001610285565b6102e261034d366004611826565b610877565b6102b661036036600461164a565b600b6020526000908152604090205460ff1681565b6102e261038336600461164a565b610884565b61027b61039636600461164a565b61088d565b61027b6103a936600461164a565b60036020526000908152604090205481565b6102e26108ca565b61027b6103d136600461164a565b610900565b6102e26103e4366004611710565b610921565b6102e26103f736600461173a565b610a2a565b60075461032990600160a01b900464ffffffffff1681565b600754610427906001600160a01b031681565b6040516001600160a01b039091168152602001610285565b6102e261044d366004611710565b610b1a565b600654610427906001600160a01b031681565b6102e2610473366004611710565b610c7e565b6102e261048636600461164a565b610d63565b600554610427906001600160a01b031681565b6102e26104ac3660046116d4565b610db9565b610296610e0e565b6102e26104c7366004611858565b610e1b565b61027b6104da36600461164a565b610e6d565b6102b66104ed366004611710565b610eae565b61027b61050036600461164a565b610f38565b61053e61051336600461164a565b600a6020526000908152604090205464ffffffffff811690600160281b90046001600160b01b031682565b6040805164ffffffffff90931683526001600160b01b03909116602083015201610285565b6009546103299064ffffffffff1681565b61027b61058236600461164a565b610f85565b61027b610595366004611665565b600460209081526000928352604080842090915290825290205481565b6102e26105c036600461164a565b610fa4565b6102e26105d3366004611710565b610fb6565b61027b60085481565b61027b6105ef36600461164a565b610ff3565b6102e261060236600461164a565b610ffe565b6000805461061490611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461064090611ab9565b801561068d5780601f106106625761010080835404028352916020019161068d565b820191906000526020600020905b81548152906001019060200180831161067057829003601f168201915b505050505081565b60006106a2338484611097565b50600192915050565b80518251146107115760405162461bcd60e51b815260206004820152602760248201527f4552433230493a20546f20616e6420416d6f756e7473206c656e677468204d69604482015266736d617463682160c81b60648201526084015b60405180910390fd5b60005b825181101561076c5761075983828151811061073257610732611b3b565b602002602001015183838151811061074c5761074c611b3b565b6020026020010151610eae565b508061076481611af4565b915050610714565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146107d6576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906107d0908490611a84565b90915550505b6001600160a01b038416600090815260036020526040812080548492906107fe908490611a84565b90915550506001600160a01b0383166000908152600360205260408120805484929061082b9084906119c0565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611b688339815191528460405161086591815260200190565b60405180910390a35060019392505050565b61088133826110f8565b50565b61088181611172565b6008546001600160a01b0382166000908152600a602052604081205490916108c491600160281b90046001600160b01b0316611a10565b92915050565b6005546001600160a01b031633146108f45760405162461bcd60e51b8152600401610708906118d4565b6108fe6000611259565b565b600060085461090e836112ab565b6001600160b01b03166108c49190611a10565b6001600160a01b0382166000908152600460209081526040808320338452909152902054818110156109bb5760405162461bcd60e51b815260206004820152603860248201527f4552433230494275726e61626c653a204275726e20616d6f756e74207265717560448201527f6573746564206578636565647320616c6c6f77616e63652100000000000000006064820152608401610708565b6001600160a01b038316600090815260046020908152604080832033845290915290205460001914610a20576001600160a01b038316600090815260046020908152604080832033845290915281208054849290610a1a908490611a84565b90915550505b61076c83836110f8565b81518351148015610a3c575080518351145b610a9f5760405162461bcd60e51b815260206004820152602e60248201527f4552433230493a2046726f6d2c20546f2c20616e6420416d6f756e7473206c6560448201526d6e677468204d69736d617463682160901b6064820152608401610708565b60005b8351811015610b1457610b01848281518110610ac057610ac0611b3b565b6020026020010151848381518110610ada57610ada611b3b565b6020026020010151848481518110610af457610af4611b3b565b6020026020010151610771565b5080610b0c81611af4565b915050610aa2565b50505050565b336000908152600b602052604090205460ff16610b495760405162461bcd60e51b815260040161070890611909565b600060085482610b5991906119d8565b6001600160a01b0384166000908152600a60205260409020549091506001600160b01b03808316600160281b909204161015610bcd5760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820637265646974732160681b6044820152606401610708565b6001600160a01b0383166000908152600a602052604090208054829190600590610c08908490600160281b90046001600160b01b0316611a5c565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507f1d9ca186c626e0ca14771900912a91678cb02770905264643d1f0d1cd2fded5e8383604051610c719291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b336000908152600b602052604090205460ff16610cad5760405162461bcd60e51b815260040161070890611909565b600060085482610cbd91906119d8565b6001600160a01b0384166000908152600a6020526040902080549192508291600590610cfa908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507fed46984c46e11f42ec323727ba7d99dc16be2d248a8aaa8982d492688497f09d8383604051610c719291906001600160a01b03929092168252602082015260400190565b6005546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610708906118d4565b600680546001600160a01b039092166001600160a01b0319928316811790915560078054909216179055565b6005546001600160a01b03163314610de35760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001805461061490611ab9565b6005546001600160a01b03163314610e455760405162461bcd60e51b8152600401610708906118d4565b6007805464ffffffffff909216600160c81b0264ffffffffff60c81b19909216919091179055565b6000600854610e7b836112ab565b6001600160a01b0384166000908152600a602052604090205461090e9190600160281b90046001600160b01b0316611995565b33600090815260036020526040812080548391908390610ecf908490611a84565b90915550506001600160a01b03831660009081526003602052604081208054849290610efc9084906119c0565b90915550506040518281526001600160a01b038416903390600080516020611b688339815191529060200160405180910390a350600192915050565b6000610f43826112ab565b6001600160a01b0383166000908152600a6020526040902054610f769190600160281b90046001600160b01b0316611995565b6001600160b01b031692915050565b6000600854610f938361134d565b64ffffffffff166108c49190611a10565b610fad81611172565b610881816113e0565b336000908152600b602052604090205460ff16610fe55760405162461bcd60e51b815260040161070890611909565b610fef82826110f8565b5050565b6000610f76826112ab565b6005546001600160a01b031633146110285760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03811661108e5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610708565b61088181611259565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526003602052604081208054839290611120908490611a84565b9250508190555080600260008282546111399190611a84565b90915550506040518181526000906001600160a01b03841690600080516020611b68833981519152906020015b60405180910390a35050565b600061117c61149b565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff16801561120b576111ae836112ab565b6001600160a01b0384166000908152600a6020526040902080546005906111e6908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055505b60075464ffffffffff828116600160c81b909204161461076c576001600160a01b0383166000908152600a60205260409020805464ffffffffff841664ffffffffff19909116179055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806112b78361134d565b905064ffffffffff81166112ce5750600092915050565b60006112d861149b565b6001600160a01b0385166000908152600a602052604090205460075491925064ffffffffff90811691600160a01b900416811115611342576201518061131e8284611a9b565b6113289085611a2f565b61133291906119ec565b64ffffffffff1695945050505050565b506000949350505050565b6009546007546040516370a0823160e01b81526001600160a01b03848116600483015260009364ffffffffff169216906370a082319060240160206040518083038186803b15801561139e57600080fd5b505afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d6919061183f565b6108c49190611a2f565b6001600160a01b0381166000908152600a6020526040902054600160281b90046001600160b01b03168015610fef576001600160a01b0382166000908152600a60205260408120805465010000000000600160d81b0319169055600854611450906001600160b01b038416611a10565b905061145c83826114bf565b604080516001600160a01b0385168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49101610c71565b60006114ba42600760199054906101000a900464ffffffffff1661152f565b905090565b80600260008282546114d191906119c0565b90915550506001600160a01b038216600090815260036020526040812080548392906114fe9084906119c0565b90915550506040518181526001600160a01b03831690600090600080516020611b6883398151915290602001611166565b60008164ffffffffff168364ffffffffff161061154c578161154e565b825b9392505050565b80356001600160a01b038116811461156c57600080fd5b919050565b600082601f83011261158257600080fd5b8135602061159761159283611971565b611940565b80838252828201915082860187848660051b89010111156115b757600080fd5b60005b858110156115dd576115cb82611555565b845292840192908401906001016115ba565b5090979650505050505050565b600082601f8301126115fb57600080fd5b8135602061160b61159283611971565b80838252828201915082860187848660051b890101111561162b57600080fd5b60005b858110156115dd5781358452928401929084019060010161162e565b60006020828403121561165c57600080fd5b61154e82611555565b6000806040838503121561167857600080fd5b61168183611555565b915061168f60208401611555565b90509250929050565b6000806000606084860312156116ad57600080fd5b6116b684611555565b92506116c460208501611555565b9150604084013590509250925092565b600080604083850312156116e757600080fd5b6116f083611555565b91506020830135801515811461170557600080fd5b809150509250929050565b6000806040838503121561172357600080fd5b61172c83611555565b946020939093013593505050565b60008060006060848603121561174f57600080fd5b833567ffffffffffffffff8082111561176757600080fd5b61177387838801611571565b9450602086013591508082111561178957600080fd5b61179587838801611571565b935060408601359150808211156117ab57600080fd5b506117b8868287016115ea565b9150509250925092565b600080604083850312156117d557600080fd5b823567ffffffffffffffff808211156117ed57600080fd5b6117f986838701611571565b9350602085013591508082111561180f57600080fd5b5061181c858286016115ea565b9150509250929050565b60006020828403121561183857600080fd5b5035919050565b60006020828403121561185157600080fd5b5051919050565b60006020828403121561186a57600080fd5b813564ffffffffff8116811461154e57600080fd5b600060208083528351808285015260005b818110156118ac57858101830151858201604001528201611890565b818111156118be576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526019908201527f596f7520617265206e6f74206120636f6e74726f6c6c65722100000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196957611969611b51565b604052919050565b600067ffffffffffffffff82111561198b5761198b611b51565b5060051b60200190565b60006001600160b01b038281168482168083038211156119b7576119b7611b0f565b01949350505050565b600082198211156119d3576119d3611b0f565b500190565b6000826119e7576119e7611b25565b500490565b600064ffffffffff80841680611a0457611a04611b25565b92169190910492915050565b6000816000190483118215151615611a2a57611a2a611b0f565b500290565b600064ffffffffff80831681851681830481118215151615611a5357611a53611b0f565b02949350505050565b60006001600160b01b0383811690831681811015611a7c57611a7c611b0f565b039392505050565b600082821015611a9657611a96611b0f565b500390565b600064ffffffffff83811690831681811015611a7c57611a7c611b0f565b600181811c90821680611acd57607f821691505b60208210811415611aee57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b0857611b08611b0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ee0a56b62d0276655cf9ed854a3abf2aae5948648a91e4eeaa6f3fe2ffc6ad6364736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061023d5760003560e01c806382596f011161013b578063ba521580116100b8578063df8de3e71161007c578063df8de3e7146105b2578063e701fa4f146105c5578063eb0d22be146105d8578063ef3baf6b146105e1578063f2fde38b146105f457600080fd5b8063ba521580146104f2578063c071bd3d14610505578063c4fedb1414610563578063c7e6cc3f14610574578063dd62ed3e1461058757600080fd5b806394a3b4b9116100ff57806394a3b4b91461049e57806395d89b41146104b15780639b390135146104b9578063a3f0a43a146104cc578063a9059cbb146104df57600080fd5b806382596f011461043f57806385452f0914610452578063871ff40514610465578063877e139b146104785780638da5cb5b1461048b57600080fd5b80634dfc50c0116101c9578063752fd6101161018d578063752fd610146103c357806379cc6790146103d65780637bde17a3146103e95780637c073ede146103fc578063820aed191461041457600080fd5b80634dfc50c014610352578063632447c914610375578063649d35fd1461038857806370a082311461039b578063715018a6146103bb57600080fd5b80631e89d545116102105780631e89d545146102cf57806323b872dd146102e4578063313ce567146102f7578063314ca0391461031157806342966c681461033f57600080fd5b806302b343b11461024257806306fdde031461028e578063095ea7b3146102a357806318160ddd146102c6575b600080fd5b61027b61025036600461164a565b6001600160a01b03166000908152600a6020526040902054600160281b90046001600160b01b031690565b6040519081526020015b60405180910390f35b610296610607565b604051610285919061187f565b6102b66102b1366004611710565b610695565b6040519015158152602001610285565b61027b60025481565b6102e26102dd3660046117c2565b6106ab565b005b6102b66102f2366004611698565b610771565b6102ff601281565b60405160ff9091168152602001610285565b60075461032990600160c81b900464ffffffffff1681565b60405164ffffffffff9091168152602001610285565b6102e261034d366004611826565b610877565b6102b661036036600461164a565b600b6020526000908152604090205460ff1681565b6102e261038336600461164a565b610884565b61027b61039636600461164a565b61088d565b61027b6103a936600461164a565b60036020526000908152604090205481565b6102e26108ca565b61027b6103d136600461164a565b610900565b6102e26103e4366004611710565b610921565b6102e26103f736600461173a565b610a2a565b60075461032990600160a01b900464ffffffffff1681565b600754610427906001600160a01b031681565b6040516001600160a01b039091168152602001610285565b6102e261044d366004611710565b610b1a565b600654610427906001600160a01b031681565b6102e2610473366004611710565b610c7e565b6102e261048636600461164a565b610d63565b600554610427906001600160a01b031681565b6102e26104ac3660046116d4565b610db9565b610296610e0e565b6102e26104c7366004611858565b610e1b565b61027b6104da36600461164a565b610e6d565b6102b66104ed366004611710565b610eae565b61027b61050036600461164a565b610f38565b61053e61051336600461164a565b600a6020526000908152604090205464ffffffffff811690600160281b90046001600160b01b031682565b6040805164ffffffffff90931683526001600160b01b03909116602083015201610285565b6009546103299064ffffffffff1681565b61027b61058236600461164a565b610f85565b61027b610595366004611665565b600460209081526000928352604080842090915290825290205481565b6102e26105c036600461164a565b610fa4565b6102e26105d3366004611710565b610fb6565b61027b60085481565b61027b6105ef36600461164a565b610ff3565b6102e261060236600461164a565b610ffe565b6000805461061490611ab9565b80601f016020809104026020016040519081016040528092919081815260200182805461064090611ab9565b801561068d5780601f106106625761010080835404028352916020019161068d565b820191906000526020600020905b81548152906001019060200180831161067057829003601f168201915b505050505081565b60006106a2338484611097565b50600192915050565b80518251146107115760405162461bcd60e51b815260206004820152602760248201527f4552433230493a20546f20616e6420416d6f756e7473206c656e677468204d69604482015266736d617463682160c81b60648201526084015b60405180910390fd5b60005b825181101561076c5761075983828151811061073257610732611b3b565b602002602001015183838151811061074c5761074c611b3b565b6020026020010151610eae565b508061076481611af4565b915050610714565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146107d6576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906107d0908490611a84565b90915550505b6001600160a01b038416600090815260036020526040812080548492906107fe908490611a84565b90915550506001600160a01b0383166000908152600360205260408120805484929061082b9084906119c0565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611b688339815191528460405161086591815260200190565b60405180910390a35060019392505050565b61088133826110f8565b50565b61088181611172565b6008546001600160a01b0382166000908152600a602052604081205490916108c491600160281b90046001600160b01b0316611a10565b92915050565b6005546001600160a01b031633146108f45760405162461bcd60e51b8152600401610708906118d4565b6108fe6000611259565b565b600060085461090e836112ab565b6001600160b01b03166108c49190611a10565b6001600160a01b0382166000908152600460209081526040808320338452909152902054818110156109bb5760405162461bcd60e51b815260206004820152603860248201527f4552433230494275726e61626c653a204275726e20616d6f756e74207265717560448201527f6573746564206578636565647320616c6c6f77616e63652100000000000000006064820152608401610708565b6001600160a01b038316600090815260046020908152604080832033845290915290205460001914610a20576001600160a01b038316600090815260046020908152604080832033845290915281208054849290610a1a908490611a84565b90915550505b61076c83836110f8565b81518351148015610a3c575080518351145b610a9f5760405162461bcd60e51b815260206004820152602e60248201527f4552433230493a2046726f6d2c20546f2c20616e6420416d6f756e7473206c6560448201526d6e677468204d69736d617463682160901b6064820152608401610708565b60005b8351811015610b1457610b01848281518110610ac057610ac0611b3b565b6020026020010151848381518110610ada57610ada611b3b565b6020026020010151848481518110610af457610af4611b3b565b6020026020010151610771565b5080610b0c81611af4565b915050610aa2565b50505050565b336000908152600b602052604090205460ff16610b495760405162461bcd60e51b815260040161070890611909565b600060085482610b5991906119d8565b6001600160a01b0384166000908152600a60205260409020549091506001600160b01b03808316600160281b909204161015610bcd5760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820637265646974732160681b6044820152606401610708565b6001600160a01b0383166000908152600a602052604090208054829190600590610c08908490600160281b90046001600160b01b0316611a5c565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507f1d9ca186c626e0ca14771900912a91678cb02770905264643d1f0d1cd2fded5e8383604051610c719291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b336000908152600b602052604090205460ff16610cad5760405162461bcd60e51b815260040161070890611909565b600060085482610cbd91906119d8565b6001600160a01b0384166000908152600a6020526040902080549192508291600590610cfa908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507fed46984c46e11f42ec323727ba7d99dc16be2d248a8aaa8982d492688497f09d8383604051610c719291906001600160a01b03929092168252602082015260400190565b6005546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610708906118d4565b600680546001600160a01b039092166001600160a01b0319928316811790915560078054909216179055565b6005546001600160a01b03163314610de35760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001805461061490611ab9565b6005546001600160a01b03163314610e455760405162461bcd60e51b8152600401610708906118d4565b6007805464ffffffffff909216600160c81b0264ffffffffff60c81b19909216919091179055565b6000600854610e7b836112ab565b6001600160a01b0384166000908152600a602052604090205461090e9190600160281b90046001600160b01b0316611995565b33600090815260036020526040812080548391908390610ecf908490611a84565b90915550506001600160a01b03831660009081526003602052604081208054849290610efc9084906119c0565b90915550506040518281526001600160a01b038416903390600080516020611b688339815191529060200160405180910390a350600192915050565b6000610f43826112ab565b6001600160a01b0383166000908152600a6020526040902054610f769190600160281b90046001600160b01b0316611995565b6001600160b01b031692915050565b6000600854610f938361134d565b64ffffffffff166108c49190611a10565b610fad81611172565b610881816113e0565b336000908152600b602052604090205460ff16610fe55760405162461bcd60e51b815260040161070890611909565b610fef82826110f8565b5050565b6000610f76826112ab565b6005546001600160a01b031633146110285760405162461bcd60e51b8152600401610708906118d4565b6001600160a01b03811661108e5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610708565b61088181611259565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526003602052604081208054839290611120908490611a84565b9250508190555080600260008282546111399190611a84565b90915550506040518181526000906001600160a01b03841690600080516020611b68833981519152906020015b60405180910390a35050565b600061117c61149b565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff16801561120b576111ae836112ab565b6001600160a01b0384166000908152600a6020526040902080546005906111e6908490600160281b90046001600160b01b0316611995565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055505b60075464ffffffffff828116600160c81b909204161461076c576001600160a01b0383166000908152600a60205260409020805464ffffffffff841664ffffffffff19909116179055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806112b78361134d565b905064ffffffffff81166112ce5750600092915050565b60006112d861149b565b6001600160a01b0385166000908152600a602052604090205460075491925064ffffffffff90811691600160a01b900416811115611342576201518061131e8284611a9b565b6113289085611a2f565b61133291906119ec565b64ffffffffff1695945050505050565b506000949350505050565b6009546007546040516370a0823160e01b81526001600160a01b03848116600483015260009364ffffffffff169216906370a082319060240160206040518083038186803b15801561139e57600080fd5b505afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d6919061183f565b6108c49190611a2f565b6001600160a01b0381166000908152600a6020526040902054600160281b90046001600160b01b03168015610fef576001600160a01b0382166000908152600a60205260408120805465010000000000600160d81b0319169055600854611450906001600160b01b038416611a10565b905061145c83826114bf565b604080516001600160a01b0385168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49101610c71565b60006114ba42600760199054906101000a900464ffffffffff1661152f565b905090565b80600260008282546114d191906119c0565b90915550506001600160a01b038216600090815260036020526040812080548392906114fe9084906119c0565b90915550506040518181526001600160a01b03831690600090600080516020611b6883398151915290602001611166565b60008164ffffffffff168364ffffffffff161061154c578161154e565b825b9392505050565b80356001600160a01b038116811461156c57600080fd5b919050565b600082601f83011261158257600080fd5b8135602061159761159283611971565b611940565b80838252828201915082860187848660051b89010111156115b757600080fd5b60005b858110156115dd576115cb82611555565b845292840192908401906001016115ba565b5090979650505050505050565b600082601f8301126115fb57600080fd5b8135602061160b61159283611971565b80838252828201915082860187848660051b890101111561162b57600080fd5b60005b858110156115dd5781358452928401929084019060010161162e565b60006020828403121561165c57600080fd5b61154e82611555565b6000806040838503121561167857600080fd5b61168183611555565b915061168f60208401611555565b90509250929050565b6000806000606084860312156116ad57600080fd5b6116b684611555565b92506116c460208501611555565b9150604084013590509250925092565b600080604083850312156116e757600080fd5b6116f083611555565b91506020830135801515811461170557600080fd5b809150509250929050565b6000806040838503121561172357600080fd5b61172c83611555565b946020939093013593505050565b60008060006060848603121561174f57600080fd5b833567ffffffffffffffff8082111561176757600080fd5b61177387838801611571565b9450602086013591508082111561178957600080fd5b61179587838801611571565b935060408601359150808211156117ab57600080fd5b506117b8868287016115ea565b9150509250925092565b600080604083850312156117d557600080fd5b823567ffffffffffffffff808211156117ed57600080fd5b6117f986838701611571565b9350602085013591508082111561180f57600080fd5b5061181c858286016115ea565b9150509250929050565b60006020828403121561183857600080fd5b5035919050565b60006020828403121561185157600080fd5b5051919050565b60006020828403121561186a57600080fd5b813564ffffffffff8116811461154e57600080fd5b600060208083528351808285015260005b818110156118ac57858101830151858201604001528201611890565b818111156118be576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526019908201527f596f7520617265206e6f74206120636f6e74726f6c6c65722100000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561196957611969611b51565b604052919050565b600067ffffffffffffffff82111561198b5761198b611b51565b5060051b60200190565b60006001600160b01b038281168482168083038211156119b7576119b7611b0f565b01949350505050565b600082198211156119d3576119d3611b0f565b500190565b6000826119e7576119e7611b25565b500490565b600064ffffffffff80841680611a0457611a04611b25565b92169190910492915050565b6000816000190483118215151615611a2a57611a2a611b0f565b500290565b600064ffffffffff80831681851681830481118215151615611a5357611a53611b0f565b02949350505050565b60006001600160b01b0383811690831681811015611a7c57611a7c611b0f565b039392505050565b600082821015611a9657611a96611b0f565b500390565b600064ffffffffff83811690831681811015611a7c57611a7c611b0f565b600181811c90821680611acd57607f821691505b60208210811415611aee57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b0857611b08611b0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ee0a56b62d0276655cf9ed854a3abf2aae5948648a91e4eeaa6f3fe2ffc6ad6364736f6c63430008070033

Deployed Bytecode Sourcemap

4712:5855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10068:153;;;;;;:::i;:::-;-1:-1:-1;;;;;10173:24:0;10146:7;10173:24;;;:14;:24;;;;;:40;-1:-1:-1;;;10173:40:0;;-1:-1:-1;;;;;10173:40:0;;10068:153;;;;9410:25:1;;;9398:2;9383:18;10068:153:0;;;;;;;;388:18;;;:::i;:::-;;;;;;;:::i;1662:162::-;;;;;;:::i;:::-;;:::i;:::-;;;5689:14:1;;5682:22;5664:41;;5652:2;5637:18;1662:162:0;5524:187:1;638:26:0;;;;;;2486:294;;;;;;:::i;:::-;;:::i;:::-;;2073:368;;;;;;:::i;:::-;;:::i;579:35::-;;612:2;579:35;;;;;10113:4:1;10101:17;;;10083:36;;10071:2;10056:18;579:35:0;9941:184:1;5139:39:0;;;;;-1:-1:-1;;;5139:39:0;;;;;;;;;9620:12:1;9608:25;;;9590:44;;9578:2;9563:18;5139:39:0;9446:194:1;3220:93:0;;;;;;:::i;:::-;;:::i;5791:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9068:95;;;;;;:::i;:::-;;:::i;9340:174::-;;;;;;:::i;:::-;;:::i;706:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;4495:105;;;:::i;9520:166::-;;;;;;:::i;:::-;;:::i;3319:406::-;;;;;;:::i;:::-;;:::i;2786:377::-;;;;;;:::i;:::-;;:::i;5067:41::-;;;;;-1:-1:-1;;;5067:41:0;;;;;;4871:29;;;;;-1:-1:-1;;;;;4871:29:0;;;;;;-1:-1:-1;;;;;5201:32:1;;;5183:51;;5171:2;5156:18;4871:29:0;5037:203:1;6120:402:0;;;;;;:::i;:::-;;:::i;4832:32::-;;;;;-1:-1:-1;;;;;4832:32:0;;;6528:278;;;;;;:::i;:::-;;:::i;4907:138::-;;;;;;:::i;:::-;;:::i;3801:20::-;;;;;-1:-1:-1;;;;;3801:20:0;;;5963:122;;;;;;:::i;:::-;;:::i;413:20::-;;;:::i;5209:108::-;;;;;;:::i;:::-;;:::i;9692:209::-;;;;;;:::i;:::-;;:::i;1830:237::-;;;;;;:::i;:::-;;:::i;10378:186::-;;;;;;:::i;:::-;;:::i;5535:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:47:0;;-1:-1:-1;;;;;5535:47:0;;;;;;;9847:12:1;9835:25;;;9817:44;;-1:-1:-1;;;;;9897:32:1;;;9892:2;9877:18;;9870:60;9790:18;5535:47:0;9645:291:1;5392:64:0;;;;;;;;;9907:155;;;;;;:::i;:::-;;:::i;757:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9169:133;;;;;;:::i;:::-;;:::i;6833:118::-;;;;;;:::i;:::-;;:::i;5344:41::-;;;;;;10227:145;;;;;;:::i;:::-;;:::i;4282:207::-;;;;;;:::i;:::-;;:::i;388:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1662:162::-;1738:4;1755:39;1764:10;1776:8;1786:7;1755:8;:39::i;:::-;-1:-1:-1;1812:4:0;1662:162;;;;:::o;2486:294::-;2606:8;:15;2592:3;:10;:29;2584:81;;;;-1:-1:-1;;;2584:81:0;;7503:2:1;2584:81:0;;;7485:21:1;7542:2;7522:18;;;7515:30;7581:34;7561:18;;;7554:62;-1:-1:-1;;;7632:18:1;;;7625:37;7679:19;;2584:81:0;;;;;;;;;2681:9;2676:97;2700:3;:10;2696:1;:14;2676:97;;;2732:29;2741:3;2745:1;2741:6;;;;;;;;:::i;:::-;;;;;;;2749:8;2758:1;2749:11;;;;;;;;:::i;:::-;;;;;;;2732:8;:29::i;:::-;-1:-1:-1;2712:3:0;;;;:::i;:::-;;;;2676:97;;;;2486:294;;:::o;2073:368::-;-1:-1:-1;;;;;2185:16:0;;2164:4;2185:16;;;:9;:16;;;;;;;;2202:10;2185:28;;;;;;;;-1:-1:-1;;2185:49:0;2181:112;;-1:-1:-1;;;;;2251:16:0;;;;;;:9;:16;;;;;;;;2268:10;2251:28;;;;;;;:39;;2283:7;;2251:16;:39;;2283:7;;2251:39;:::i;:::-;;;;-1:-1:-1;;2181:112:0;-1:-1:-1;;;;;2303:16:0;;;;;;:9;:16;;;;;:27;;2323:7;;2303:16;:27;;2323:7;;2303:27;:::i;:::-;;;;-1:-1:-1;;;;;;;2341:14:0;;;;;;:9;:14;;;;;:25;;2359:7;;2341:14;:25;;2359:7;;2341:25;:::i;:::-;;;;;;;;2398:3;-1:-1:-1;;;;;2382:29:0;2391:5;-1:-1:-1;;;;;2382:29:0;-1:-1:-1;;;;;;;;;;;2403:7:0;2382:29;;;;9410:25:1;;9398:2;9383:18;;9264:177;2382:29:0;;;;;;;;-1:-1:-1;2429:4:0;2073:368;;;;;:::o;3220:93::-;3279:26;3285:10;3297:7;3279:5;:26::i;:::-;3220:93;:::o;9068:95::-;9126:29;9146:8;9126:19;:29::i;9340:174::-;9492:13;;-1:-1:-1;;;;;9449:24:0;;9414:7;9449:24;;;:14;:24;;;;;:40;9414:7;;9449:56;;-1:-1:-1;;;9449:40:0;;-1:-1:-1;;;;;9449:40:0;:56;:::i;:::-;9434:72;9340:174;-1:-1:-1;;9340:174:0:o;4495:105::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;4560:32:::1;4587:3;4560:18;:32::i;:::-;4495:105::o:0;9520:166::-;9594:7;9664:13;;9629:32;9652:8;9629:22;:32::i;:::-;-1:-1:-1;;;;;9629:48:0;;;;;:::i;3319:406::-;-1:-1:-1;;;;;3423:16:0;;3395:25;3423:16;;;:9;:16;;;;;;;;3440:10;3423:28;;;;;;;;3470;;;;3462:97;;;;-1:-1:-1;;;3462:97:0;;9041:2:1;3462:97:0;;;9023:21:1;9080:2;9060:18;;;9053:30;9119:34;9099:18;;;9092:62;9190:26;9170:18;;;9163:54;9234:19;;3462:97:0;8839:420:1;3462:97:0;-1:-1:-1;;;;;3576:16:0;;;;;;:9;:16;;;;;;;;3593:10;3576:28;;;;;;;;-1:-1:-1;;3576:49:0;3572:112;;-1:-1:-1;;;;;3642:16:0;;;;;;:9;:16;;;;;;;;3659:10;3642:28;;;;;;;:39;;3674:7;;3642:16;:39;;3674:7;;3642:39;:::i;:::-;;;;-1:-1:-1;;3572:112:0;3696:21;3702:5;3709:7;3696:5;:21::i;2786:377::-;2936:3;:10;2920:5;:12;:26;:61;;;;;2966:8;:15;2950:5;:12;:31;2920:61;2912:120;;;;-1:-1:-1;;;2912:120:0;;8272:2:1;2912:120:0;;;8254:21:1;8311:2;8291:18;;;8284:30;8350:34;8330:18;;;8323:62;-1:-1:-1;;;8401:18:1;;;8394:44;8455:19;;2912:120:0;8070:410:1;2912:120:0;3048:9;3043:113;3067:5;:12;3063:1;:16;3043:113;;;3101:43;3114:5;3120:1;3114:8;;;;;;;;:::i;:::-;;;;;;;3124:3;3128:1;3124:6;;;;;;;;:::i;:::-;;;;;;;3132:8;3141:1;3132:11;;;;;;;;:::i;:::-;;;;;;;3101:12;:43::i;:::-;-1:-1:-1;3081:3:0;;;;:::i;:::-;;;;3043:113;;;;2786:377;;;:::o;6120:402::-;5910:10;5892:29;;;;:17;:29;;;;;;;;5884:67;;;;-1:-1:-1;;;5884:67:0;;;;;;;:::i;:::-;6214:25:::1;6260:13;;6250:7;:23;;;;:::i;:::-;-1:-1:-1::0;;;;;6293:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:40;6214:60;;-1:-1:-1;;;;;;6293:61:0;;::::1;-1:-1:-1::0;;;6293:40:0;;::::1;;:61;;6285:107;;;::::0;-1:-1:-1;;;6285:107:0;;6747:2:1;6285:107:0::1;::::0;::::1;6729:21:1::0;6786:2;6766:18;;;6759:30;-1:-1:-1;;;6805:18:1;;;6798:49;6864:18;;6285:107:0::1;6545:343:1::0;6285:107:0::1;-1:-1:-1::0;;;;;6403:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:61;;6447:17;;6403:24;:40:::1;::::0;:61:::1;::::0;6447:17;;-1:-1:-1;;;6403:61:0;::::1;-1:-1:-1::0;;;;;6403:61:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;6403:61:0::1;;;;;-1:-1:-1::0;;;;;6403:61:0::1;;;;;;6480:34;6496:8;6506:7;6480:34;;;;;;-1:-1:-1::0;;;;;5437:32:1;;;;5419:51;;5501:2;5486:18;;5479:34;5407:2;5392:18;;5245:274;6480:34:0::1;;;;;;;;6203:319;6120:402:::0;;:::o;6528:278::-;5910:10;5892:29;;;;:17;:29;;;;;;;;5884:67;;;;-1:-1:-1;;;5884:67:0;;;;;;;:::i;:::-;6619:25:::1;6665:13;;6655:7;:23;;;;:::i;:::-;-1:-1:-1::0;;;;;6690:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:61;;6619:60;;-1:-1:-1;6619:60:0;;6690:40:::1;::::0;:61:::1;::::0;6619:60;;-1:-1:-1;;;6690:61:0;::::1;-1:-1:-1::0;;;;;6690:61:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;6690:61:0::1;;;;;-1:-1:-1::0;;;;;6690:61:0::1;;;;;;6767:31;6780:8;6790:7;6767:31;;;;;;-1:-1:-1::0;;;;;5437:32:1;;;;5419:51;;5501:2;5486:18;;5479:34;5407:2;5392:18;;5245:274;4907:138:0;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;4978:17:::1;:28:::0;;-1:-1:-1;;;;;4978:28:0;;::::1;-1:-1:-1::0;;;;;;4978:28:0;;::::1;::::0;::::1;::::0;;;5008:10:::1;:34:::0;;;;::::1;;::::0;;4907:138::o;5963:122::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6047:27:0;;;::::1;;::::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;6047:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5963:122::o;413:20::-;;;;;;;:::i;5209:108::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;5286:12:::1;:28:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;5286:28:0::1;-1:-1:-1::0;;;;5286:28:0;;::::1;::::0;;;::::1;::::0;;5209:108::o;9692:209::-;9764:7;9879:13;;9843:32;9866:8;9843:22;:32::i;:::-;-1:-1:-1;;;;;9800:24:0;;;;;;:14;:24;;;;;:40;:75;;;-1:-1:-1;;;9800:40:0;;-1:-1:-1;;;;;9800:40:0;:75;:::i;1830:237::-;1929:10;1902:4;1919:21;;;:9;:21;;;;;:32;;1944:7;;1919:21;1902:4;;1919:32;;1944:7;;1919:32;:::i;:::-;;;;-1:-1:-1;;;;;;;1962:14:0;;;;;;:9;:14;;;;;:25;;1980:7;;1962:14;:25;;1980:7;;1962:25;:::i;:::-;;;;-1:-1:-1;;2003:34:0;;9410:25:1;;;-1:-1:-1;;;;;2003:34:0;;;2012:10;;-1:-1:-1;;;;;;;;;;;2003:34:0;9398:2:1;9383:18;2003:34:0;;;;;;;-1:-1:-1;2055:4:0;1830:237;;;;:::o;10378:186::-;10454:7;10524:32;10547:8;10524:22;:32::i;:::-;-1:-1:-1;;;;;10481:24:0;;;;;;:14;:24;;;;;:40;:75;;;-1:-1:-1;;;10481:40:0;;-1:-1:-1;;;;;10481:40:0;:75;:::i;:::-;-1:-1:-1;;;;;10474:82:0;;10378:186;-1:-1:-1;;10378:186:0:o;9907:155::-;9977:7;10039:13;;10012:24;10027:8;10012:14;:24::i;:::-;:40;;;;;;:::i;9169:133::-;9226:29;9246:8;9226:19;:29::i;:::-;9266:28;9285:8;9266:18;:28::i;6833:118::-;5910:10;5892:29;;;;:17;:29;;;;;;;;5884:67;;;;-1:-1:-1;;;5884:67:0;;;;;;;:::i;:::-;6927:21:::1;6933:5;6940:7;6927:5;:21::i;:::-;6833:118:::0;;:::o;10227:145::-;10305:7;10332:32;10355:8;10332:22;:32::i;4282:207::-;3996:5;;-1:-1:-1;;;;;3996:5:0;4005:10;3996:19;3988:64;;;;-1:-1:-1;;;3988:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4372:25:0;::::1;4364:77;;;::::0;-1:-1:-1;;;4364:77:0;;7095:2:1;4364:77:0::1;::::0;::::1;7077:21:1::0;7134:2;7114:18;;;7107:30;7173:34;7153:18;;;7146:62;-1:-1:-1;;;7224:18:1;;;7217:37;7271:19;;4364:77:0::1;6893:403:1::0;4364:77:0::1;4452:29;4471:9;4452:18;:29::i;1436:193::-:0;-1:-1:-1;;;;;1533:17:0;;;;;;;:9;:17;;;;;;;;:27;;;;;;;;;;;;;:37;;;1586:35;;9410:25:1;;;1586:35:0;;9383:18:1;1586:35:0;;;;;;;1436:193;;;:::o;1233:197::-;-1:-1:-1;;;;;1308:16:0;;;;;;:9;:16;;;;;:27;;1328:7;;1308:16;:27;;1328:7;;1308:27;:::i;:::-;;;;;;;;1361:7;1346:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;1384:38:0;;9410:25:1;;;1408:3:0;;-1:-1:-1;;;;;1384:38:0;;;-1:-1:-1;;;;;;;;;;;1384:38:0;9398:2:1;9383:18;1384:38:0;;;;;;;;1233:197;;:::o;7920:654::-;7987:12;8002:16;:14;:16::i;:::-;-1:-1:-1;;;;;8050:24:0;;8029:18;8050:24;;;:14;:24;;;;;:41;7987:31;;-1:-1:-1;8050:41:0;;8208:15;;8204:125;;8285:32;8308:8;8285:22;:32::i;:::-;-1:-1:-1;;;;;8241:24:0;;;;;;:14;:24;;;;;:76;;:40;;:76;;;;-1:-1:-1;;;8241:76:0;;-1:-1:-1;;;;;8241:76:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;8241:76:0;;;;;-1:-1:-1;;;;;8241:76:0;;;;;;8204:125;8477:12;;;8462:27;;;-1:-1:-1;;;8477:12:0;;;;8462:27;8458:109;;-1:-1:-1;;;;;8506:24:0;;;;;;:14;:24;;;;;:49;;;;;-1:-1:-1;;8506:49:0;;;;;;7976:598;;7920:654;:::o;4078:198::-;4173:5;;;-1:-1:-1;;;;;4189:17:0;;;-1:-1:-1;;;;;;4189:17:0;;;;;;;4222:42;;4173:5;;;4189:17;4173:5;;4222:42;;4153:17;;4222:42;4142:134;4078:198;:::o;7415:464::-;7488:7;7509:22;7534:24;7549:8;7534:14;:24::i;:::-;7509:49;-1:-1:-1;7573:20:0;;;7569:39;;-1:-1:-1;7604:1:0;;7415:464;-1:-1:-1;;7415:464:0:o;7569:39::-;7618:12;7633:16;:14;:16::i;:::-;-1:-1:-1;;;;;7681:24:0;;7660:18;7681:24;;;:14;:24;;;;;:41;7753:14;;7618:31;;-1:-1:-1;7681:41:0;;;;;-1:-1:-1;;;7753:14:0;;;7739:28;;7735:137;;;7834:6;7811:19;7819:11;7811:5;:19;:::i;:::-;7792:39;;:15;:39;:::i;:::-;:48;;;;:::i;:::-;7784:57;;;7415:464;-1:-1:-1;;;;;7415:464:0:o;7735:137::-;-1:-1:-1;7868:1:0;;7415:464;-1:-1:-1;;;;7415:464:0:o;7256:151::-;7388:16;;7354:10;;:30;;-1:-1:-1;;;7354:30:0;;-1:-1:-1;;;;;5201:32:1;;;7354:30:0;;;5183:51:1;7321:6:0;;7388:16;;;7354:10;;:20;;5156:18:1;;7354:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7347:57;;;;:::i;8580:449::-;-1:-1:-1;;;;;8672:24:0;;8646:23;8672:24;;;:14;:24;;;;;:40;-1:-1:-1;;;8672:40:0;;-1:-1:-1;;;;;8672:40:0;8729:19;;8725:297;;-1:-1:-1;;;;;8765:24:0;;8808:1;8765:24;;;:14;:24;;;;;:44;;-1:-1:-1;;;;;;8765:44:0;;;8886:13;;8868:31;;-1:-1:-1;;;;;8868:31:0;;;:::i;:::-;8834:66;;8925:32;8931:8;8941:15;8925:5;:32::i;:::-;8978;;;-1:-1:-1;;;;;5437:32:1;;5419:51;;5501:2;5486:18;;5479:34;;;8978:32:0;;5392:18:1;8978:32:0;5245:274:1;7110:140:0;7159:6;7185:62;7216:15;7234:12;;;;;;;;;;;7185:23;:62::i;:::-;7178:69;;7110:140;:::o;1036:191::-;1124:7;1109:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;1142:14:0;;;;;;:9;:14;;;;;:25;;1160:7;;1142:14;:25;;1160:7;;1142:25;:::i;:::-;;;;-1:-1:-1;;1183:36:0;;9410:25:1;;;-1:-1:-1;;;;;1183:36:0;;;1200:3;;-1:-1:-1;;;;;;;;;;;1183:36:0;9398:2:1;9383:18;1183:36:0;9264:177:1;6995:109:0;7071:6;7092:1;7088:5;;:1;:5;;;:13;;7100:1;7088:13;;;7096:1;7088:13;7081:20;6995:109;-1:-1:-1;;;6995:109:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:679::-;246:5;299:3;292:4;284:6;280:17;276:27;266:55;;317:1;314;307:12;266:55;353:6;340:20;379:4;403:60;419:43;459:2;419:43;:::i;:::-;403:60;:::i;:::-;485:3;509:2;504:3;497:15;537:2;532:3;528:12;521:19;;572:2;564:6;560:15;624:3;619:2;613;610:1;606:10;598:6;594:23;590:32;587:41;584:61;;;641:1;638;631:12;584:61;663:1;673:169;687:2;684:1;681:9;673:169;;;744:23;763:3;744:23;:::i;:::-;732:36;;788:12;;;;820;;;;705:1;698:9;673:169;;;-1:-1:-1;860:5:1;;192:679;-1:-1:-1;;;;;;;192:679:1:o;876:673::-;930:5;983:3;976:4;968:6;964:17;960:27;950:55;;1001:1;998;991:12;950:55;1037:6;1024:20;1063:4;1087:60;1103:43;1143:2;1103:43;:::i;1087:60::-;1169:3;1193:2;1188:3;1181:15;1221:2;1216:3;1212:12;1205:19;;1256:2;1248:6;1244:15;1308:3;1303:2;1297;1294:1;1290:10;1282:6;1278:23;1274:32;1271:41;1268:61;;;1325:1;1322;1315:12;1268:61;1347:1;1357:163;1371:2;1368:1;1365:9;1357:163;;;1428:17;;1416:30;;1466:12;;;;1498;;;;1389:1;1382:9;1357:163;;1554:186;1613:6;1666:2;1654:9;1645:7;1641:23;1637:32;1634:52;;;1682:1;1679;1672:12;1634:52;1705:29;1724:9;1705:29;:::i;1745:260::-;1813:6;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1913:29;1932:9;1913:29;:::i;:::-;1903:39;;1961:38;1995:2;1984:9;1980:18;1961:38;:::i;:::-;1951:48;;1745:260;;;;;:::o;2010:328::-;2087:6;2095;2103;2156:2;2144:9;2135:7;2131:23;2127:32;2124:52;;;2172:1;2169;2162:12;2124:52;2195:29;2214:9;2195:29;:::i;:::-;2185:39;;2243:38;2277:2;2266:9;2262:18;2243:38;:::i;:::-;2233:48;;2328:2;2317:9;2313:18;2300:32;2290:42;;2010:328;;;;;:::o;2343:347::-;2408:6;2416;2469:2;2457:9;2448:7;2444:23;2440:32;2437:52;;;2485:1;2482;2475:12;2437:52;2508:29;2527:9;2508:29;:::i;:::-;2498:39;;2587:2;2576:9;2572:18;2559:32;2634:5;2627:13;2620:21;2613:5;2610:32;2600:60;;2656:1;2653;2646:12;2600:60;2679:5;2669:15;;;2343:347;;;;;:::o;2695:254::-;2763:6;2771;2824:2;2812:9;2803:7;2799:23;2795:32;2792:52;;;2840:1;2837;2830:12;2792:52;2863:29;2882:9;2863:29;:::i;:::-;2853:39;2939:2;2924:18;;;;2911:32;;-1:-1:-1;;;2695:254:1:o;2954:821::-;3106:6;3114;3122;3175:2;3163:9;3154:7;3150:23;3146:32;3143:52;;;3191:1;3188;3181:12;3143:52;3231:9;3218:23;3260:18;3301:2;3293:6;3290:14;3287:34;;;3317:1;3314;3307:12;3287:34;3340:61;3393:7;3384:6;3373:9;3369:22;3340:61;:::i;:::-;3330:71;;3454:2;3443:9;3439:18;3426:32;3410:48;;3483:2;3473:8;3470:16;3467:36;;;3499:1;3496;3489:12;3467:36;3522:63;3577:7;3566:8;3555:9;3551:24;3522:63;:::i;:::-;3512:73;;3638:2;3627:9;3623:18;3610:32;3594:48;;3667:2;3657:8;3654:16;3651:36;;;3683:1;3680;3673:12;3651:36;;3706:63;3761:7;3750:8;3739:9;3735:24;3706:63;:::i;:::-;3696:73;;;2954:821;;;;;:::o;3780:595::-;3898:6;3906;3959:2;3947:9;3938:7;3934:23;3930:32;3927:52;;;3975:1;3972;3965:12;3927:52;4015:9;4002:23;4044:18;4085:2;4077:6;4074:14;4071:34;;;4101:1;4098;4091:12;4071:34;4124:61;4177:7;4168:6;4157:9;4153:22;4124:61;:::i;:::-;4114:71;;4238:2;4227:9;4223:18;4210:32;4194:48;;4267:2;4257:8;4254:16;4251:36;;;4283:1;4280;4273:12;4251:36;;4306:63;4361:7;4350:8;4339:9;4335:24;4306:63;:::i;:::-;4296:73;;;3780:595;;;;;:::o;4380:180::-;4439:6;4492:2;4480:9;4471:7;4467:23;4463:32;4460:52;;;4508:1;4505;4498:12;4460:52;-1:-1:-1;4531:23:1;;4380:180;-1:-1:-1;4380:180:1:o;4565:184::-;4635:6;4688:2;4676:9;4667:7;4663:23;4659:32;4656:52;;;4704:1;4701;4694:12;4656:52;-1:-1:-1;4727:16:1;;4565:184;-1:-1:-1;4565:184:1:o;4754:278::-;4812:6;4865:2;4853:9;4844:7;4840:23;4836:32;4833:52;;;4881:1;4878;4871:12;4833:52;4920:9;4907:23;4970:12;4963:5;4959:24;4952:5;4949:35;4939:63;;4998:1;4995;4988:12;5943:597;6055:4;6084:2;6113;6102:9;6095:21;6145:6;6139:13;6188:6;6183:2;6172:9;6168:18;6161:34;6213:1;6223:140;6237:6;6234:1;6231:13;6223:140;;;6332:14;;;6328:23;;6322:30;6298:17;;;6317:2;6294:26;6287:66;6252:10;;6223:140;;;6381:6;6378:1;6375:13;6372:91;;;6451:1;6446:2;6437:6;6426:9;6422:22;6418:31;6411:42;6372:91;-1:-1:-1;6524:2:1;6503:15;-1:-1:-1;;6499:29:1;6484:45;;;;6531:2;6480:54;;5943:597;-1:-1:-1;;;5943:597:1:o;7709:356::-;7911:2;7893:21;;;7930:18;;;7923:30;7989:34;7984:2;7969:18;;7962:62;8056:2;8041:18;;7709:356::o;8485:349::-;8687:2;8669:21;;;8726:2;8706:18;;;8699:30;8765:27;8760:2;8745:18;;8738:55;8825:2;8810:18;;8485:349::o;10130:275::-;10201:2;10195:9;10266:2;10247:13;;-1:-1:-1;;10243:27:1;10231:40;;10301:18;10286:34;;10322:22;;;10283:62;10280:88;;;10348:18;;:::i;:::-;10384:2;10377:22;10130:275;;-1:-1:-1;10130:275:1:o;10410:183::-;10470:4;10503:18;10495:6;10492:30;10489:56;;;10525:18;;:::i;:::-;-1:-1:-1;10570:1:1;10566:14;10582:4;10562:25;;10410:183::o;10598:238::-;10638:3;-1:-1:-1;;;;;10705:10:1;;;10735;;;10765:12;;;10757:21;;10754:47;;;10781:18;;:::i;:::-;10817:13;;10598:238;-1:-1:-1;;;;10598:238:1:o;10841:128::-;10881:3;10912:1;10908:6;10905:1;10902:13;10899:39;;;10918:18;;:::i;:::-;-1:-1:-1;10954:9:1;;10841:128::o;10974:120::-;11014:1;11040;11030:35;;11045:18;;:::i;:::-;-1:-1:-1;11079:9:1;;10974:120::o;11099:193::-;11138:1;11164:12;11203:2;11200:1;11196:10;11225:3;11215:37;;11232:18;;:::i;:::-;11270:10;;11266:20;;;;;11099:193;-1:-1:-1;;11099:193:1:o;11297:168::-;11337:7;11403:1;11399;11395:6;11391:14;11388:1;11385:21;11380:1;11373:9;11366:17;11362:45;11359:71;;;11410:18;;:::i;:::-;-1:-1:-1;11450:9:1;;11297:168::o;11470:264::-;11509:7;11541:12;11580:2;11577:1;11573:10;11610:2;11607:1;11603:10;11666:3;11662:2;11658:12;11653:3;11650:21;11643:3;11636:11;11629:19;11625:47;11622:73;;;11675:18;;:::i;:::-;11715:13;;11470:264;-1:-1:-1;;;;11470:264:1:o;11739:231::-;11779:4;-1:-1:-1;;;;;11877:10:1;;;;11847;;11899:12;;;11896:38;;;11914:18;;:::i;:::-;11951:13;;11739:231;-1:-1:-1;;;11739:231:1:o;11975:125::-;12015:4;12043:1;12040;12037:8;12034:34;;;12048:18;;:::i;:::-;-1:-1:-1;12085:9:1;;11975:125::o;12105:223::-;12144:4;12173:12;12235:10;;;;12205;;12257:12;;;12254:38;;;12272:18;;:::i;12333:380::-;12412:1;12408:12;;;;12455;;;12476:61;;12530:4;12522:6;12518:17;12508:27;;12476:61;12583:2;12575:6;12572:14;12552:18;12549:38;12546:161;;;12629:10;12624:3;12620:20;12617:1;12610:31;12664:4;12661:1;12654:15;12692:4;12689:1;12682:15;12546:161;;12333:380;;;:::o;12718:135::-;12757:3;-1:-1:-1;;12778:17:1;;12775:43;;;12798:18;;:::i;:::-;-1:-1:-1;12845:1:1;12834:13;;12718:135::o;12858:127::-;12919:10;12914:3;12910:20;12907:1;12900:31;12950:4;12947:1;12940:15;12974:4;12971:1;12964:15;12990:127;13051:10;13046:3;13042:20;13039:1;13032:31;13082:4;13079:1;13072:15;13106:4;13103:1;13096:15;13122:127;13183:10;13178:3;13174:20;13171:1;13164:31;13214:4;13211:1;13204:15;13238:4;13235:1;13228:15;13254:127;13315:10;13310:3;13306:20;13303:1;13296:31;13346:4;13343:1;13336:15;13370:4;13367:1;13360:15

Swarm Source

ipfs://ee0a56b62d0276655cf9ed854a3abf2aae5948648a91e4eeaa6f3fe2ffc6ad63

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.