ETH Price: $2,520.96 (+2.89%)

Contract

0x68D7a555802e80B67c9fd2385155aeB07B4a0274
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
End Auction143991942022-03-16 18:17:17901 days ago1647454637IN
0x68D7a555...07B4a0274
0 ETH0.00953775250
End Auction137947462021-12-13 4:46:28994 days ago1639370788IN
0x68D7a555...07B4a0274
0 ETH0.00572265150
End Auction137943732021-12-13 3:16:27995 days ago1639365387IN
0x68D7a555...07B4a0274
0 ETH0.00572265150
End Auction135042662021-10-28 7:10:581040 days ago1635405058IN
0x68D7a555...07B4a0274
0 ETH0.00636765150
End Auction135042592021-10-28 7:10:081040 days ago1635405008IN
0x68D7a555...07B4a0274
0 ETH0.00636765150
End Auction135041722021-10-28 6:44:181040 days ago1635403458IN
0x68D7a555...07B4a0274
0 ETH0.00636765150
End Auction135041282021-10-28 6:32:431040 days ago1635402763IN
0x68D7a555...07B4a0274
0 ETH0.00636765150
Cancel Auction129014762021-07-26 11:06:501134 days ago1627297610IN
0x68D7a555...07B4a0274
0 ETH0.0037264646
Cancel Auction129014472021-07-26 10:58:591134 days ago1627297139IN
0x68D7a555...07B4a0274
0 ETH0.0016405519
End Auction125371182021-05-30 17:45:301191 days ago1622396730IN
0x68D7a555...07B4a0274
0 ETH0.0032651130
End Auction125371062021-05-30 17:42:111191 days ago1622396531IN
0x68D7a555...07B4a0274
0 ETH0.0012735330
End Auction125371012021-05-30 17:41:211191 days ago1622396481IN
0x68D7a555...07B4a0274
0 ETH0.0027521130
Create Bid125299922021-05-29 15:16:251192 days ago1622301385IN
0x68D7a555...07B4a0274
0.33 ETH0.0016347240
Create Bid125299922021-05-29 15:16:251192 days ago1622301385IN
0x68D7a555...07B4a0274
0.33 ETH0.0039140235.2
Create Bid125066522021-05-26 0:15:051196 days ago1621988105IN
0x68D7a555...07B4a0274
0.33 ETH0.0046701442
End Auction124898082021-05-23 9:37:181198 days ago1621762638IN
0x68D7a555...07B4a0274
0 ETH0.01355055150
End Auction124897512021-05-23 9:26:241198 days ago1621761984IN
0x68D7a555...07B4a0274
0 ETH0.0345386200
End Auction124482242021-05-16 22:35:511205 days ago1621204551IN
0x68D7a555...07B4a0274
0 ETH0.0148434389.1
Create Bid124405432021-05-15 18:10:201206 days ago1621102220IN
0x68D7a555...07B4a0274
0.33 ETH0.009173582.5
Update Auction124391012021-05-15 12:58:171206 days ago1621083497IN
0x68D7a555...07B4a0274
0 ETH0.002371876
Create Auction124391012021-05-15 12:58:171206 days ago1621083497IN
0x68D7a555...07B4a0274
0 ETH0.0185180170
Create Auction124390792021-05-15 12:52:351206 days ago1621083155IN
0x68D7a555...07B4a0274
0 ETH0.0185180170
Create Auction124390382021-05-15 12:44:251206 days ago1621082665IN
0x68D7a555...07B4a0274
0 ETH0.021192477
End Auction122210182021-04-11 20:58:151240 days ago1618174695IN
0x68D7a555...07B4a0274
0 ETH0.0081605774
Create Bid122144692021-04-10 20:54:471241 days ago1618088087IN
0x68D7a555...07B4a0274
6 ETH0.0077320575.00000134
View all transactions

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
125371182021-05-30 17:45:301191 days ago1622396730
0x68D7a555...07B4a0274
0.2805 ETH
125371182021-05-30 17:45:301191 days ago1622396730
0x68D7a555...07B4a0274
0.0495 ETH
125371012021-05-30 17:41:211191 days ago1622396481
0x68D7a555...07B4a0274
0.2805 ETH
125371012021-05-30 17:41:211191 days ago1622396481
0x68D7a555...07B4a0274
0.0495 ETH
124898082021-05-23 9:37:181198 days ago1621762638
0x68D7a555...07B4a0274
0.2805 ETH
124898082021-05-23 9:37:181198 days ago1621762638
0x68D7a555...07B4a0274
0.0495 ETH
124897512021-05-23 9:26:241198 days ago1621761984
0x68D7a555...07B4a0274
0.0495 ETH
124482242021-05-16 22:35:511205 days ago1621204551
0x68D7a555...07B4a0274
0.0495 ETH
122210182021-04-11 20:58:151240 days ago1618174695
0x68D7a555...07B4a0274
5.1 ETH
122210182021-04-11 20:58:151240 days ago1618174695
0x68D7a555...07B4a0274
0.9 ETH
121202752021-03-27 9:18:331255 days ago1616836713
0x68D7a555...07B4a0274
4.25 ETH
121202752021-03-27 9:18:331255 days ago1616836713
0x68D7a555...07B4a0274
0.75 ETH
120965102021-03-23 17:33:181259 days ago1616520798
0x68D7a555...07B4a0274
3.4 ETH
120965102021-03-23 17:33:181259 days ago1616520798
0x68D7a555...07B4a0274
0.6 ETH
120965072021-03-23 17:33:041259 days ago1616520784
0x68D7a555...07B4a0274
3.4 ETH
120965072021-03-23 17:33:041259 days ago1616520784
0x68D7a555...07B4a0274
0.6 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReserveAuction

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-22
*/

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address private _owner;

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: openzeppelin-solidity/contracts/introspection/IERC165.sol

pragma solidity ^0.5.0;

/**
 * @title IERC165
 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md
 */
interface IERC165 {
    /**
     * @notice Query if a contract implements an interface
     * @param interfaceId The interface identifier, as specified in ERC-165
     * @dev Interface identification is specified in ERC-165. This function
     * uses less than 30,000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: openzeppelin-solidity/contracts/token/ERC721/IERC721.sol

pragma solidity ^0.5.0;


/**
 * @title ERC721 Non-Fungible Token Standard basic interface
 * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
 */
contract IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) public view returns (uint256 balance);
    function ownerOf(uint256 tokenId) public view returns (address owner);

    function approve(address to, uint256 tokenId) public;
    function getApproved(uint256 tokenId) public view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) public;
    function isApprovedForAll(address owner, address operator) public view returns (bool);

    function transferFrom(address from, address to, uint256 tokenId) public;
    function safeTransferFrom(address from, address to, uint256 tokenId) public;

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public;
}

// File: openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol

pragma solidity ^0.5.0;

/**
 * @title Helps contracts guard against reentrancy attacks.
 * @author Remco Bloemen <remco@2π.com>, Eenae <[email protected]>
 * @dev If you mark a function `nonReentrant`, you should also
 * mark it `external`.
 */
contract ReentrancyGuard {
    /// @dev counter to allow mutex lock with only one SSTORE operation
    uint256 private _guardCounter;

    constructor () internal {
        // The counter starts at one to prevent changing it from zero to a non-zero
        // value, which is a more expensive operation.
        _guardCounter = 1;
    }

    /**
     * @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 make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter);
    }
}

// File: contracts/ReserveAuction.sol

pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;






/**

 ██▀███  ▓█████   ██████ ▓█████  ██▀███   ██▒   █▓▓█████     ▄▄▄       █    ██  ▄████▄  ▄▄▄█████▓ ██▓ ▒█████   ███▄    █                  
▓██ ▒ ██▒▓█   ▀ ▒██    ▒ ▓█   ▀ ▓██ ▒ ██▒▓██░   █▒▓█   ▀    ▒████▄     ██  ▓██▒▒██▀ ▀█  ▓  ██▒ ▓▒▓██▒▒██▒  ██▒ ██ ▀█   █                  
▓██ ░▄█ ▒▒███   ░ ▓██▄   ▒███   ▓██ ░▄█ ▒ ▓██  █▒░▒███      ▒██  ▀█▄  ▓██  ▒██░▒▓█    ▄ ▒ ▓██░ ▒░▒██▒▒██░  ██▒▓██  ▀█ ██▒                 
▒██▀▀█▄  ▒▓█  ▄   ▒   ██▒▒▓█  ▄ ▒██▀▀█▄    ▒██ █░░▒▓█  ▄    ░██▄▄▄▄██ ▓▓█  ░██░▒▓▓▄ ▄██▒░ ▓██▓ ░ ░██░▒██   ██░▓██▒  ▐▌██▒                 
░██▓ ▒██▒░▒████▒▒██████▒▒░▒████▒░██▓ ▒██▒   ▒▀█░  ░▒████▒    ▓█   ▓██▒▒▒█████▓ ▒ ▓███▀ ░  ▒██▒ ░ ░██░░ ████▓▒░▒██░   ▓██░                 
░ ▒▓ ░▒▓░░░ ▒░ ░▒ ▒▓▒ ▒ ░░░ ▒░ ░░ ▒▓ ░▒▓░   ░ ▐░  ░░ ▒░ ░    ▒▒   ▓▒█░░▒▓▒ ▒ ▒ ░ ░▒ ▒  ░  ▒ ░░   ░▓  ░ ▒░▒░▒░ ░ ▒░   ▒ ▒                  
  ░▒ ░ ▒░ ░ ░  ░░ ░▒  ░ ░ ░ ░  ░  ░▒ ░ ▒░   ░ ░░   ░ ░  ░     ▒   ▒▒ ░░░▒░ ░ ░   ░  ▒       ░     ▒ ░  ░ ▒ ▒░ ░ ░░   ░ ▒░                 
  ░░   ░    ░   ░  ░  ░     ░     ░░   ░      ░░     ░        ░   ▒    ░░░ ░ ░ ░          ░       ▒ ░░ ░ ░ ▒     ░   ░ ░                  
   ░        ░  ░      ░     ░  ░   ░           ░     ░  ░         ░  ░   ░     ░ ░                ░      ░ ░           ░                  
                                              ░                                ░                                                          
 ▄▄▄▄ ▓██   ██▓    ▄▄▄▄    ██▓ ██▓     ██▓   ▓██   ██▓    ██▀███  ▓█████  ███▄    █  ███▄    █ ▓█████  ██ ▄█▀▄▄▄       ███▄ ▄███▓ ██▓███  
▓█████▄▒██  ██▒   ▓█████▄ ▓██▒▓██▒    ▓██▒    ▒██  ██▒   ▓██ ▒ ██▒▓█   ▀  ██ ▀█   █  ██ ▀█   █ ▓█   ▀  ██▄█▒▒████▄    ▓██▒▀█▀ ██▒▓██░  ██▒
▒██▒ ▄██▒██ ██░   ▒██▒ ▄██▒██▒▒██░    ▒██░     ▒██ ██░   ▓██ ░▄█ ▒▒███   ▓██  ▀█ ██▒▓██  ▀█ ██▒▒███   ▓███▄░▒██  ▀█▄  ▓██    ▓██░▓██░ ██▓▒
▒██░█▀  ░ ▐██▓░   ▒██░█▀  ░██░▒██░    ▒██░     ░ ▐██▓░   ▒██▀▀█▄  ▒▓█  ▄ ▓██▒  ▐▌██▒▓██▒  ▐▌██▒▒▓█  ▄ ▓██ █▄░██▄▄▄▄██ ▒██    ▒██ ▒██▄█▓▒ ▒
░▓█  ▀█▓░ ██▒▓░   ░▓█  ▀█▓░██░░██████▒░██████▒ ░ ██▒▓░   ░██▓ ▒██▒░▒████▒▒██░   ▓██░▒██░   ▓██░░▒████▒▒██▒ █▄▓█   ▓██▒▒██▒   ░██▒▒██▒ ░  ░
░▒▓███▀▒ ██▒▒▒    ░▒▓███▀▒░▓  ░ ▒░▓  ░░ ▒░▓  ░  ██▒▒▒    ░ ▒▓ ░▒▓░░░ ▒░ ░░ ▒░   ▒ ▒ ░ ▒░   ▒ ▒ ░░ ▒░ ░▒ ▒▒ ▓▒▒▒   ▓▒█░░ ▒░   ░  ░▒▓▒░ ░  ░
▒░▒   ░▓██ ░▒░    ▒░▒   ░  ▒ ░░ ░ ▒  ░░ ░ ▒  ░▓██ ░▒░      ░▒ ░ ▒░ ░ ░  ░░ ░░   ░ ▒░░ ░░   ░ ▒░ ░ ░  ░░ ░▒ ▒░ ▒   ▒▒ ░░  ░      ░░▒ ░     
 ░    ░▒ ▒ ░░      ░    ░  ▒ ░  ░ ░     ░ ░   ▒ ▒ ░░       ░░   ░    ░      ░   ░ ░    ░   ░ ░    ░   ░ ░░ ░  ░   ▒   ░      ░   ░░       
 ░     ░ ░         ░       ░      ░  ░    ░  ░░ ░           ░        ░  ░         ░          ░    ░  ░░  ░        ░  ░       ░            
      ░░ ░              ░                     ░ ░                                                                                         

*/

contract ReserveAuction is Ownable, ReentrancyGuard {
    using SafeMath for uint256;

    bool public globalPaused;

    uint256 public timeBuffer = 15 * 60; // extend 15 minutes after every bid made in last 15 minutes
    uint256 public minBid = 1 * 10**17; // 0.1 eth

    bytes4 constant interfaceId = 0x80ac58cd; // 721 interface id
    address public nftAddress;

    mapping(uint256 => Auction) public auctions;
    uint256[] public tokenIds;

    struct Auction {
        bool exists;
        bool paused;
        uint256 amount;
        uint256 tokenId;
        uint256 duration;
        uint256 firstBidTime;
        uint256 reservePrice;
        uint256 adminSplit; // percentage of 100
        address creator;
        address payable admin;
        address payable proceedsRecipient;
        address payable bidder;
    }

    modifier notPaused() {
        require(!globalPaused, "Must not be paused");
        _;
    }

    event AuctionCreated(
        uint256 tokenId,
        address nftAddress,
        uint256 duration,
        uint256 reservePrice,
        address creator
    );
    event AuctionBid(
        uint256 tokenId,
        address nftAddress,
        address sender,
        uint256 value,
        uint256 timestamp,
        bool firstBid,
        bool extended
    );
    event AuctionEnded(
        uint256 tokenId,
        address nftAddress,
        address creator,
        address winner,
        uint256 amount
    );
    event AuctionCanceled(
        uint256 tokenId,
        address nftAddress,
        address creator
    );
    event UpdateAuction(
        uint256 tokenId,
        bool paused
    );

    constructor(address _nftAddress) public {
        require(
            IERC165(_nftAddress).supportsInterface(interfaceId),
            "Doesn't support NFT interface"
        );
        nftAddress = _nftAddress;
    }

    function updateNftAddress(address _nftAddress) public onlyOwner {
        require(
            IERC165(_nftAddress).supportsInterface(interfaceId),
            "Doesn't support NFT interface"
        );
        nftAddress = _nftAddress;
    }

    function updateMinBid(uint256 _minBid) public onlyOwner {
        minBid = _minBid;
    }

    function updateTimeBuffer(uint256 _timeBuffer) public onlyOwner {
        timeBuffer = _timeBuffer;
    }

    function updateAuction(uint256 tokenId, bool paused) public onlyOwner {
        require(auctions[tokenId].exists, "Auction doesn't exist");
        auctions[tokenId].paused = paused;
        emit UpdateAuction(tokenId, paused);
    }

    function createAuction(
        bool paused,
        uint256 tokenId,
        uint256 duration,
        uint256 reservePrice,
        uint256 adminSplit, // percentage
        address payable admin,
        address payable proceedsRecipient
    ) external notPaused onlyOwner nonReentrant {
        require(!auctions[tokenId].exists, "Auction already exists");
        require(adminSplit < 100, "Percentage has to be less than 100");
        tokenIds.push(tokenId);

        auctions[tokenId].paused = paused;
        auctions[tokenId].exists = true;
        auctions[tokenId].duration = duration;
        auctions[tokenId].reservePrice = reservePrice;

        auctions[tokenId].adminSplit = adminSplit;
        auctions[tokenId].creator = msg.sender;
        auctions[tokenId].admin = admin;
        auctions[tokenId].proceedsRecipient = proceedsRecipient;

        IERC721(nftAddress).transferFrom(msg.sender, address(this), tokenId);

        emit AuctionCreated(tokenId, nftAddress, duration, reservePrice, msg.sender);
    }

    function createBid(uint256 tokenId) external payable notPaused nonReentrant {
        require(auctions[tokenId].exists, "Auction doesn't exist");
        require(!auctions[tokenId].paused, "Auction paused");
        require(
            msg.value >= auctions[tokenId].reservePrice,
            "Must send reservePrice or more"
        );
        require(
            auctions[tokenId].firstBidTime == 0 ||
                block.timestamp <
                auctions[tokenId].firstBidTime + auctions[tokenId].duration,
            "Auction expired"
        );

        uint256 lastValue = auctions[tokenId].amount;

        bool firstBid;
        address payable lastBidder;

        // allows for auctions with starting price of 0
        if (lastValue != 0) {
            require(msg.value > lastValue, "Must send more than last bid");
            require(
                msg.value.sub(lastValue) >= minBid,
                "Must send more than last bid by minBid Amount"
            );
            lastBidder = auctions[tokenId].bidder;
        } else {
            firstBid = true;
            auctions[tokenId].firstBidTime = block.timestamp;
        }

        auctions[tokenId].amount = msg.value;
        auctions[tokenId].bidder = msg.sender;

        bool extended;
        // at this point we know that the timestamp is less than start + duration
        // we want to know by how much the timestamp is less than start + duration
        // if the difference is less than the timeBuffer, update duration to time buffer
        if (
            (auctions[tokenId].firstBidTime.add(auctions[tokenId].duration))
                .sub(block.timestamp) < timeBuffer
        ) {
            // take the difference between now and starting point, add timeBuffer and set as duration
            auctions[tokenId].duration = block.timestamp.sub(auctions[tokenId].firstBidTime).add(timeBuffer);
            extended = true;
        }

 

        emit AuctionBid(
            tokenId,
            nftAddress,
            msg.sender,
            msg.value,
            block.timestamp,
            firstBid,
            extended
        );
        if (!firstBid) {
            // in case the bidder is a contract that doesn't allow receiving
            if (!lastBidder.send(lastValue)) {
                auctions[tokenId].admin.transfer(lastValue);
            }
        }
    }

    function endAuction(uint256 tokenId) external notPaused nonReentrant {
        require(auctions[tokenId].exists, "Auction doesn't exist");
        require(!auctions[tokenId].paused, "Auction paused");
        require(
            uint256(auctions[tokenId].firstBidTime) != 0,
            "Auction hasn't begun"
        );
        require(
            block.timestamp >=
                auctions[tokenId].firstBidTime + auctions[tokenId].duration,
            "Auction hasn't completed"
        );

        address winner = auctions[tokenId].bidder;
        uint256 amount = auctions[tokenId].amount;
        address creator = auctions[tokenId].creator;
        uint256 adminSplit = auctions[tokenId].adminSplit;
        address payable admin = auctions[tokenId].admin;
        address payable proceedsRecipient = auctions[tokenId].proceedsRecipient;

        emit AuctionEnded(tokenId, nftAddress, creator, winner, amount);
        delete auctions[tokenId];

        IERC721(nftAddress).transferFrom(address(this), winner, tokenId);

        uint256 adminReceives = amount.mul(adminSplit).div(100);
        uint256 proceedsAmount = amount.sub(adminReceives);
        if (adminReceives > 0) {
            admin.transfer(adminReceives);
        }
        proceedsRecipient.transfer(proceedsAmount);
    }

    function cancelAuction(uint256 tokenId) external nonReentrant {
        require(auctions[tokenId].exists, "Auction doesn't exist");
        require(
            auctions[tokenId].creator == msg.sender || msg.sender == owner(),
            "Can only be called by auction creator or owner"
        );
        require(
            uint256(auctions[tokenId].firstBidTime) == 0,
            "Can't cancel an auction once it's begun"
        );
        address creator = auctions[tokenId].creator;
        delete auctions[tokenId];
        IERC721(nftAddress).transferFrom(address(this), creator, tokenId);
        emit AuctionCanceled(tokenId, nftAddress, creator);
    }

    function updatePaused(bool _globalPaused) public onlyOwner {
        globalPaused = _globalPaused;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"bool","name":"firstBid","type":"bool"},{"indexed":false,"internalType":"bool","name":"extended","type":"bool"}],"name":"AuctionBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"address","name":"creator","type":"address"}],"name":"AuctionCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reservePrice","type":"uint256"},{"indexed":false,"internalType":"address","name":"creator","type":"address"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AuctionEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"UpdateAuction","type":"event"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"auctions","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"firstBidTime","type":"uint256"},{"internalType":"uint256","name":"reservePrice","type":"uint256"},{"internalType":"uint256","name":"adminSplit","type":"uint256"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"address payable","name":"admin","type":"address"},{"internalType":"address payable","name":"proceedsRecipient","type":"address"},{"internalType":"address payable","name":"bidder","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"reservePrice","type":"uint256"},{"internalType":"uint256","name":"adminSplit","type":"uint256"},{"internalType":"address payable","name":"admin","type":"address"},{"internalType":"address payable","name":"proceedsRecipient","type":"address"}],"name":"createAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"createBid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"endAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"globalPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minBid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nftAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"timeBuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bool","name":"paused","type":"bool"}],"name":"updateAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_minBid","type":"uint256"}],"name":"updateMinBid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"}],"name":"updateNftAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_globalPaused","type":"bool"}],"name":"updatePaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_timeBuffer","type":"uint256"}],"name":"updateTimeBuffer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405261038460035567016345785d8a00006004553480156200002357600080fd5b5060405162002f3d38038062002f3d83398181016040526200004991908101906200025a565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180819055508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a76380ac58cd60e01b6040518263ffffffff1660e01b81526004016200014e919062000305565b60206040518083038186803b1580156200016757600080fd5b505afa1580156200017c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001a2919081019062000286565b620001e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001db9062000322565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620003f5565b6000815190506200023d81620003c1565b92915050565b6000815190506200025481620003db565b92915050565b6000602082840312156200026d57600080fd5b60006200027d848285016200022c565b91505092915050565b6000602082840312156200029957600080fd5b6000620002a98482850162000243565b91505092915050565b620002bd8162000375565b82525050565b6000620002d2601d8362000344565b91507f446f65736e277420737570706f7274204e465420696e746572666163650000006000830152602082019050919050565b60006020820190506200031c6000830184620002b2565b92915050565b600060208201905081810360008301526200033d81620002c3565b9050919050565b600082825260208201905092915050565b60006200036282620003a1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620003cc8162000355565b8114620003d857600080fd5b50565b620003e68162000369565b8114620003f257600080fd5b50565b612b3880620004056000396000f3fe6080604052600436106101145760003560e01c8063715018a6116100a0578063b9a2de3a11610064578063b9a2de3a14610361578063d58778d61461038a578063e5eb7ae8146103c7578063ec91f2a4146103f0578063f2fde38b1461041b57610114565b8063715018a6146102a25780638da5cb5b146102b95780638f32d59b146102e457806396b5a7551461030f5780639b8e5d621461033857610114565b80633e109a19116100e75780633e109a19146101bd578063571a26a0146101e85780635bf8633a1461023057806361a552dc1461025b578063659dd2b41461028657610114565b806308cdc2a8146101195780633166fd1d1461014257806331c28e901461016b578063389bb6a414610194575b600080fd5b34801561012557600080fd5b50610140600480360361013b9190810190611f3c565b610444565b005b34801561014e57600080fd5b506101696004803603610164919081019061202c565b610472565b005b34801561017757600080fd5b50610192600480360361018d9190810190612055565b61048d565b005b3480156101a057600080fd5b506101bb60048036036101b69190810190611f8e565b61056c565b005b3480156101c957600080fd5b506101d261096e565b6040516101df919061283c565b60405180910390f35b3480156101f457600080fd5b5061020f600480360361020a919081019061202c565b610974565b6040516102279c9b9a999897969594939291906125a7565b60405180910390f35b34801561023c57600080fd5b50610245610a6e565b6040516102529190612503565b60405180910390f35b34801561026757600080fd5b50610270610a94565b60405161027d919061258c565b60405180910390f35b6102a0600480360361029b919081019061202c565b610aa7565b005b3480156102ae57600080fd5b506102b761103c565b005b3480156102c557600080fd5b506102ce61110c565b6040516102db9190612503565b60405180910390f35b3480156102f057600080fd5b506102f9611135565b604051610306919061258c565b60405180910390f35b34801561031b57600080fd5b506103366004803603610331919081019061202c565b61118c565b005b34801561034457600080fd5b5061035f600480360361035a919081019061202c565b611586565b005b34801561036d57600080fd5b506103886004803603610383919081019061202c565b6115a1565b005b34801561039657600080fd5b506103b160048036036103ac919081019061202c565b611bab565b6040516103be919061283c565b60405180910390f35b3480156103d357600080fd5b506103ee60048036036103e99190810190611f13565b611bcc565b005b3480156103fc57600080fd5b50610405611cf0565b604051610412919061283c565b60405180910390f35b34801561042757600080fd5b50610442600480360361043d9190810190611f13565b611cf6565b005b61044c611135565b61045557600080fd5b80600260006101000a81548160ff02191690831515021790555050565b61047a611135565b61048357600080fd5b8060048190555050565b610495611135565b61049e57600080fd5b6006600083815260200190815260200160002060000160009054906101000a900460ff16610501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f89061273c565b60405180910390fd5b806006600084815260200190815260200160002060000160016101000a81548160ff0219169083151502179055507f6c17b6afb000df6548f717a281c368a89912f8a6ec06177486f77916c507a03182826040516105609291906129a3565b60405180910390a15050565b600260009054906101000a900460ff16156105bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b39061271c565b60405180910390fd5b6105c4611135565b6105cd57600080fd5b60018060008282540192505081905550600060015490506006600088815260200190815260200160002060000160009054906101000a900460ff1615610648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063f9061267c565b60405180910390fd5b6064841061068b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106829061277c565b60405180910390fd5b6007879080600181540180825580915050906001820390600052602060002001600090919290919091505550876006600089815260200190815260200160002060000160016101000a81548160ff02191690831515021790555060016006600089815260200190815260200160002060000160006101000a81548160ff021916908315150217905550856006600089815260200190815260200160002060030181905550846006600089815260200190815260200160002060050181905550836006600089815260200190815260200160002060060181905550336006600089815260200190815260200160002060070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826006600089815260200190815260200160002060080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816006600089815260200190815260200160002060090160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308a6040518463ffffffff1660e01b81526004016108c39392919061251e565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050507f082e2e78efcea783a9afe8f62b658bcf1e3482f87016915ab4214c446b69f43e87600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688883360405161094e959493929190612950565b60405180910390a1600154811461096457600080fd5b5050505050505050565b60045481565b60066020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508c565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b600260009054906101000a900460ff1615610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee9061271c565b60405180910390fd5b60018060008282540192505081905550600060015490506006600083815260200190815260200160002060000160009054906101000a900460ff16610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061273c565b60405180910390fd5b6006600083815260200190815260200160002060000160019054906101000a900460ff1615610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc9061275c565b60405180910390fd5b6006600083815260200190815260200160002060050154341015610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c259061279c565b60405180910390fd5b600060066000848152602001908152602001600020600401541480610c805750600660008381526020019081526020016000206003015460066000848152602001908152602001600020600401540142105b610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb6906127fc565b60405180910390fd5b60006006600084815260200190815260200160002060010154905060008060008314610dbc57823411610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e906126fc565b60405180910390fd5b600454610d3d8434611d1390919063ffffffff16565b1015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d759061281c565b60405180910390fd5b60066000868152602001908152602001600020600a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610ddc565b600191504260066000878152602001908152602001600020600401819055505b3460066000878152602001908152602001600020600101819055503360066000878152602001908152602001600020600a0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600354610ea242610e94600660008b815260200190815260200160002060030154600660008c815260200190815260200160002060040154611d3390919063ffffffff16565b611d1390919063ffffffff16565b1015610f0457610ee5600354610ed7600660008a81526020019081526020016000206004015442611d1390919063ffffffff16565b611d3390919063ffffffff16565b6006600088815260200190815260200160002060030181905550600190505b7f17aab958f10298d4269017458487925b395b4f89ddd829049ea143fd754cf7a986600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163334428887604051610f61979695949392919061288e565b60405180910390a182611026578173ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050611025576006600087815260200190815260200160002060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611023573d6000803e3d6000fd5b505b5b50505050600154811461103857600080fd5b5050565b611044611135565b61104d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60018060008282540192505081905550600060015490506006600083815260200190815260200160002060000160009054906101000a900460ff16611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd9061273c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806112a8575061127961110c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de906126dc565b60405180910390fd5b6000600660008481526020019081526020016000206004015414611340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113379061269c565b60405180910390fd5b60006006600084815260200190815260200160002060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060066000848152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690556001820160009055600282016000905560038201600090556004820160009055600582016000905560068201600090556007820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556008820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556009820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3083866040518463ffffffff1660e01b81526004016114e493929190612555565b600060405180830381600087803b1580156114fe57600080fd5b505af1158015611512573d6000803e3d6000fd5b505050507f31e46b3372adff8978a18a1c543a6b3a925ee693bdf7a7c54df36f30f87d290e83600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405161156b93929190612857565b60405180910390a150600154811461158257600080fd5b5050565b61158e611135565b61159757600080fd5b8060038190555050565b600260009054906101000a900460ff16156115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e89061271c565b60405180910390fd5b60018060008282540192505081905550600060015490506006600083815260200190815260200160002060000160009054906101000a900460ff1661166b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116629061273c565b60405180910390fd5b6006600083815260200190815260200160002060000160019054906101000a900460ff16156116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c69061275c565b60405180910390fd5b600060066000848152602001908152602001600020600401541415611729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611720906126bc565b60405180910390fd5b600660008381526020019081526020016000206003015460066000848152602001908152602001600020600401540142101561179a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611791906127bc565b60405180910390fd5b600060066000848152602001908152602001600020600a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006006600085815260200190815260200160002060010154905060006006600086815260200190815260200160002060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006006600087815260200190815260200160002060060154905060006006600088815260200190815260200160002060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006006600089815260200190815260200160002060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690507f19f5e73c484e5274d91de54225d8a1330339f61b5f27dbe05c47ff361b8dd3c188600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168689896040516119159594939291906128fd565b60405180910390a160066000898152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690556001820160009055600282016000905560038201600090556004820160009055600582016000905560068201600090556007820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556008820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556009820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30888b6040518463ffffffff1660e01b8152600401611a8693929190612555565b600060405180830381600087803b158015611aa057600080fd5b505af1158015611ab4573d6000803e3d6000fd5b505050506000611ae06064611ad28689611d5290919063ffffffff16565b611d8c90919063ffffffff16565b90506000611af78288611d1390919063ffffffff16565b90506000821115611b4a578373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611b48573d6000803e3d6000fd5b505b8273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b90573d6000803e3d6000fd5b5050505050505050506001548114611ba757600080fd5b5050565b60078181548110611bb857fe5b906000526020600020016000915090505481565b611bd4611135565b611bdd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a76380ac58cd60e01b6040518263ffffffff1660e01b8152600401611c1d9190612661565b60206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d9190810190611f65565b611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca3906127dc565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b611cfe611135565b611d0757600080fd5b611d1081611db2565b50565b600082821115611d2257600080fd5b600082840390508091505092915050565b600080828401905083811015611d4857600080fd5b8091505092915050565b600080831415611d655760009050611d86565b6000828402905082848281611d7657fe5b0414611d8157600080fd5b809150505b92915050565b6000808211611d9a57600080fd5b6000828481611da557fe5b0490508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dec57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081359050611eb981612a99565b92915050565b600081359050611ece81612ab0565b92915050565b600081359050611ee381612ac7565b92915050565b600081519050611ef881612ac7565b92915050565b600081359050611f0d81612ade565b92915050565b600060208284031215611f2557600080fd5b6000611f3384828501611eaa565b91505092915050565b600060208284031215611f4e57600080fd5b6000611f5c84828501611ed4565b91505092915050565b600060208284031215611f7757600080fd5b6000611f8584828501611ee9565b91505092915050565b600080600080600080600060e0888a031215611fa957600080fd5b6000611fb78a828b01611ed4565b9750506020611fc88a828b01611efe565b9650506040611fd98a828b01611efe565b9550506060611fea8a828b01611efe565b9450506080611ffb8a828b01611efe565b93505060a061200c8a828b01611ebf565b92505060c061201d8a828b01611ebf565b91505092959891949750929550565b60006020828403121561203e57600080fd5b600061204c84828501611efe565b91505092915050565b6000806040838503121561206857600080fd5b600061207685828601611efe565b925050602061208785828601611ed4565b9150509250929050565b61209a81612a63565b82525050565b6120a9816129ef565b82525050565b6120b8816129dd565b82525050565b6120c781612a01565b82525050565b6120d681612a0d565b82525050565b60006120e96016836129cc565b91507f41756374696f6e20616c726561647920657869737473000000000000000000006000830152602082019050919050565b60006121296027836129cc565b91507f43616e27742063616e63656c20616e2061756374696f6e206f6e63652069742760008301527f7320626567756e000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061218f6014836129cc565b91507f41756374696f6e206861736e277420626567756e0000000000000000000000006000830152602082019050919050565b60006121cf602e836129cc565b91507f43616e206f6e6c792062652063616c6c65642062792061756374696f6e20637260008301527f6561746f72206f72206f776e65720000000000000000000000000000000000006020830152604082019050919050565b6000612235601c836129cc565b91507f4d7573742073656e64206d6f7265207468616e206c61737420626964000000006000830152602082019050919050565b60006122756012836129cc565b91507f4d757374206e6f742062652070617573656400000000000000000000000000006000830152602082019050919050565b60006122b56015836129cc565b91507f41756374696f6e20646f65736e277420657869737400000000000000000000006000830152602082019050919050565b60006122f5600e836129cc565b91507f41756374696f6e207061757365640000000000000000000000000000000000006000830152602082019050919050565b60006123356022836129cc565b91507f50657263656e746167652068617320746f206265206c657373207468616e203160008301527f30300000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061239b601e836129cc565b91507f4d7573742073656e6420726573657276655072696365206f72206d6f726500006000830152602082019050919050565b60006123db6018836129cc565b91507f41756374696f6e206861736e277420636f6d706c6574656400000000000000006000830152602082019050919050565b600061241b601d836129cc565b91507f446f65736e277420737570706f7274204e465420696e746572666163650000006000830152602082019050919050565b600061245b600f836129cc565b91507f41756374696f6e206578706972656400000000000000000000000000000000006000830152602082019050919050565b600061249b602d836129cc565b91507f4d7573742073656e64206d6f7265207468616e206c617374206269642062792060008301527f6d696e42696420416d6f756e74000000000000000000000000000000000000006020830152604082019050919050565b6124fd81612a59565b82525050565b600060208201905061251860008301846120af565b92915050565b60006060820190506125336000830186612091565b61254060208301856120af565b61254d60408301846124f4565b949350505050565b600060608201905061256a60008301866120af565b61257760208301856120af565b61258460408301846124f4565b949350505050565b60006020820190506125a160008301846120be565b92915050565b6000610180820190506125bd600083018f6120be565b6125ca602083018e6120be565b6125d7604083018d6124f4565b6125e4606083018c6124f4565b6125f1608083018b6124f4565b6125fe60a083018a6124f4565b61260b60c08301896124f4565b61261860e08301886124f4565b6126266101008301876120af565b6126346101208301866120a0565b6126426101408301856120a0565b6126506101608301846120a0565b9d9c50505050505050505050505050565b600060208201905061267660008301846120cd565b92915050565b60006020820190508181036000830152612695816120dc565b9050919050565b600060208201905081810360008301526126b58161211c565b9050919050565b600060208201905081810360008301526126d581612182565b9050919050565b600060208201905081810360008301526126f5816121c2565b9050919050565b6000602082019050818103600083015261271581612228565b9050919050565b6000602082019050818103600083015261273581612268565b9050919050565b60006020820190508181036000830152612755816122a8565b9050919050565b60006020820190508181036000830152612775816122e8565b9050919050565b6000602082019050818103600083015261279581612328565b9050919050565b600060208201905081810360008301526127b58161238e565b9050919050565b600060208201905081810360008301526127d5816123ce565b9050919050565b600060208201905081810360008301526127f58161240e565b9050919050565b600060208201905081810360008301526128158161244e565b9050919050565b600060208201905081810360008301526128358161248e565b9050919050565b600060208201905061285160008301846124f4565b92915050565b600060608201905061286c60008301866124f4565b61287960208301856120af565b61288660408301846120af565b949350505050565b600060e0820190506128a3600083018a6124f4565b6128b060208301896120af565b6128bd6040830188612091565b6128ca60608301876124f4565b6128d760808301866124f4565b6128e460a08301856120be565b6128f160c08301846120be565b98975050505050505050565b600060a08201905061291260008301886124f4565b61291f60208301876120af565b61292c60408301866120af565b61293960608301856120af565b61294660808301846124f4565b9695505050505050565b600060a08201905061296560008301886124f4565b61297260208301876120af565b61297f60408301866124f4565b61298c60608301856124f4565b6129996080830184612091565b9695505050505050565b60006040820190506129b860008301856124f4565b6129c560208301846120be565b9392505050565b600082825260208201905092915050565b60006129e882612a39565b9050919050565b60006129fa82612a39565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612a6e82612a75565b9050919050565b6000612a8082612a87565b9050919050565b6000612a9282612a39565b9050919050565b612aa2816129dd565b8114612aad57600080fd5b50565b612ab9816129ef565b8114612ac457600080fd5b50565b612ad081612a01565b8114612adb57600080fd5b50565b612ae781612a59565b8114612af257600080fd5b5056fea365627a7a723158204dc60542c20559ff8957d542725bffdd24d656a896b65f2b0eca1f98e5f14a496c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000dce09254dd3592381b6a5b7a848b29890b656e01

Deployed Bytecode

0x6080604052600436106101145760003560e01c8063715018a6116100a0578063b9a2de3a11610064578063b9a2de3a14610361578063d58778d61461038a578063e5eb7ae8146103c7578063ec91f2a4146103f0578063f2fde38b1461041b57610114565b8063715018a6146102a25780638da5cb5b146102b95780638f32d59b146102e457806396b5a7551461030f5780639b8e5d621461033857610114565b80633e109a19116100e75780633e109a19146101bd578063571a26a0146101e85780635bf8633a1461023057806361a552dc1461025b578063659dd2b41461028657610114565b806308cdc2a8146101195780633166fd1d1461014257806331c28e901461016b578063389bb6a414610194575b600080fd5b34801561012557600080fd5b50610140600480360361013b9190810190611f3c565b610444565b005b34801561014e57600080fd5b506101696004803603610164919081019061202c565b610472565b005b34801561017757600080fd5b50610192600480360361018d9190810190612055565b61048d565b005b3480156101a057600080fd5b506101bb60048036036101b69190810190611f8e565b61056c565b005b3480156101c957600080fd5b506101d261096e565b6040516101df919061283c565b60405180910390f35b3480156101f457600080fd5b5061020f600480360361020a919081019061202c565b610974565b6040516102279c9b9a999897969594939291906125a7565b60405180910390f35b34801561023c57600080fd5b50610245610a6e565b6040516102529190612503565b60405180910390f35b34801561026757600080fd5b50610270610a94565b60405161027d919061258c565b60405180910390f35b6102a0600480360361029b919081019061202c565b610aa7565b005b3480156102ae57600080fd5b506102b761103c565b005b3480156102c557600080fd5b506102ce61110c565b6040516102db9190612503565b60405180910390f35b3480156102f057600080fd5b506102f9611135565b604051610306919061258c565b60405180910390f35b34801561031b57600080fd5b506103366004803603610331919081019061202c565b61118c565b005b34801561034457600080fd5b5061035f600480360361035a919081019061202c565b611586565b005b34801561036d57600080fd5b506103886004803603610383919081019061202c565b6115a1565b005b34801561039657600080fd5b506103b160048036036103ac919081019061202c565b611bab565b6040516103be919061283c565b60405180910390f35b3480156103d357600080fd5b506103ee60048036036103e99190810190611f13565b611bcc565b005b3480156103fc57600080fd5b50610405611cf0565b604051610412919061283c565b60405180910390f35b34801561042757600080fd5b50610442600480360361043d9190810190611f13565b611cf6565b005b61044c611135565b61045557600080fd5b80600260006101000a81548160ff02191690831515021790555050565b61047a611135565b61048357600080fd5b8060048190555050565b610495611135565b61049e57600080fd5b6006600083815260200190815260200160002060000160009054906101000a900460ff16610501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f89061273c565b60405180910390fd5b806006600084815260200190815260200160002060000160016101000a81548160ff0219169083151502179055507f6c17b6afb000df6548f717a281c368a89912f8a6ec06177486f77916c507a03182826040516105609291906129a3565b60405180910390a15050565b600260009054906101000a900460ff16156105bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b39061271c565b60405180910390fd5b6105c4611135565b6105cd57600080fd5b60018060008282540192505081905550600060015490506006600088815260200190815260200160002060000160009054906101000a900460ff1615610648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063f9061267c565b60405180910390fd5b6064841061068b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106829061277c565b60405180910390fd5b6007879080600181540180825580915050906001820390600052602060002001600090919290919091505550876006600089815260200190815260200160002060000160016101000a81548160ff02191690831515021790555060016006600089815260200190815260200160002060000160006101000a81548160ff021916908315150217905550856006600089815260200190815260200160002060030181905550846006600089815260200190815260200160002060050181905550836006600089815260200190815260200160002060060181905550336006600089815260200190815260200160002060070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826006600089815260200190815260200160002060080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816006600089815260200190815260200160002060090160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308a6040518463ffffffff1660e01b81526004016108c39392919061251e565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050507f082e2e78efcea783a9afe8f62b658bcf1e3482f87016915ab4214c446b69f43e87600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688883360405161094e959493929190612950565b60405180910390a1600154811461096457600080fd5b5050505050505050565b60045481565b60066020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508c565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b600260009054906101000a900460ff1615610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee9061271c565b60405180910390fd5b60018060008282540192505081905550600060015490506006600083815260200190815260200160002060000160009054906101000a900460ff16610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061273c565b60405180910390fd5b6006600083815260200190815260200160002060000160019054906101000a900460ff1615610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc9061275c565b60405180910390fd5b6006600083815260200190815260200160002060050154341015610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c259061279c565b60405180910390fd5b600060066000848152602001908152602001600020600401541480610c805750600660008381526020019081526020016000206003015460066000848152602001908152602001600020600401540142105b610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb6906127fc565b60405180910390fd5b60006006600084815260200190815260200160002060010154905060008060008314610dbc57823411610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e906126fc565b60405180910390fd5b600454610d3d8434611d1390919063ffffffff16565b1015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d759061281c565b60405180910390fd5b60066000868152602001908152602001600020600a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610ddc565b600191504260066000878152602001908152602001600020600401819055505b3460066000878152602001908152602001600020600101819055503360066000878152602001908152602001600020600a0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600354610ea242610e94600660008b815260200190815260200160002060030154600660008c815260200190815260200160002060040154611d3390919063ffffffff16565b611d1390919063ffffffff16565b1015610f0457610ee5600354610ed7600660008a81526020019081526020016000206004015442611d1390919063ffffffff16565b611d3390919063ffffffff16565b6006600088815260200190815260200160002060030181905550600190505b7f17aab958f10298d4269017458487925b395b4f89ddd829049ea143fd754cf7a986600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163334428887604051610f61979695949392919061288e565b60405180910390a182611026578173ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050611025576006600087815260200190815260200160002060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611023573d6000803e3d6000fd5b505b5b50505050600154811461103857600080fd5b5050565b611044611135565b61104d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60018060008282540192505081905550600060015490506006600083815260200190815260200160002060000160009054906101000a900460ff16611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd9061273c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806112a8575061127961110c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de906126dc565b60405180910390fd5b6000600660008481526020019081526020016000206004015414611340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113379061269c565b60405180910390fd5b60006006600084815260200190815260200160002060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060066000848152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690556001820160009055600282016000905560038201600090556004820160009055600582016000905560068201600090556007820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556008820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556009820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3083866040518463ffffffff1660e01b81526004016114e493929190612555565b600060405180830381600087803b1580156114fe57600080fd5b505af1158015611512573d6000803e3d6000fd5b505050507f31e46b3372adff8978a18a1c543a6b3a925ee693bdf7a7c54df36f30f87d290e83600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405161156b93929190612857565b60405180910390a150600154811461158257600080fd5b5050565b61158e611135565b61159757600080fd5b8060038190555050565b600260009054906101000a900460ff16156115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e89061271c565b60405180910390fd5b60018060008282540192505081905550600060015490506006600083815260200190815260200160002060000160009054906101000a900460ff1661166b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116629061273c565b60405180910390fd5b6006600083815260200190815260200160002060000160019054906101000a900460ff16156116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c69061275c565b60405180910390fd5b600060066000848152602001908152602001600020600401541415611729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611720906126bc565b60405180910390fd5b600660008381526020019081526020016000206003015460066000848152602001908152602001600020600401540142101561179a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611791906127bc565b60405180910390fd5b600060066000848152602001908152602001600020600a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006006600085815260200190815260200160002060010154905060006006600086815260200190815260200160002060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006006600087815260200190815260200160002060060154905060006006600088815260200190815260200160002060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006006600089815260200190815260200160002060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690507f19f5e73c484e5274d91de54225d8a1330339f61b5f27dbe05c47ff361b8dd3c188600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168689896040516119159594939291906128fd565b60405180910390a160066000898152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690556001820160009055600282016000905560038201600090556004820160009055600582016000905560068201600090556007820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556008820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556009820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30888b6040518463ffffffff1660e01b8152600401611a8693929190612555565b600060405180830381600087803b158015611aa057600080fd5b505af1158015611ab4573d6000803e3d6000fd5b505050506000611ae06064611ad28689611d5290919063ffffffff16565b611d8c90919063ffffffff16565b90506000611af78288611d1390919063ffffffff16565b90506000821115611b4a578373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611b48573d6000803e3d6000fd5b505b8273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b90573d6000803e3d6000fd5b5050505050505050506001548114611ba757600080fd5b5050565b60078181548110611bb857fe5b906000526020600020016000915090505481565b611bd4611135565b611bdd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a76380ac58cd60e01b6040518263ffffffff1660e01b8152600401611c1d9190612661565b60206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d9190810190611f65565b611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca3906127dc565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b611cfe611135565b611d0757600080fd5b611d1081611db2565b50565b600082821115611d2257600080fd5b600082840390508091505092915050565b600080828401905083811015611d4857600080fd5b8091505092915050565b600080831415611d655760009050611d86565b6000828402905082848281611d7657fe5b0414611d8157600080fd5b809150505b92915050565b6000808211611d9a57600080fd5b6000828481611da557fe5b0490508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dec57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081359050611eb981612a99565b92915050565b600081359050611ece81612ab0565b92915050565b600081359050611ee381612ac7565b92915050565b600081519050611ef881612ac7565b92915050565b600081359050611f0d81612ade565b92915050565b600060208284031215611f2557600080fd5b6000611f3384828501611eaa565b91505092915050565b600060208284031215611f4e57600080fd5b6000611f5c84828501611ed4565b91505092915050565b600060208284031215611f7757600080fd5b6000611f8584828501611ee9565b91505092915050565b600080600080600080600060e0888a031215611fa957600080fd5b6000611fb78a828b01611ed4565b9750506020611fc88a828b01611efe565b9650506040611fd98a828b01611efe565b9550506060611fea8a828b01611efe565b9450506080611ffb8a828b01611efe565b93505060a061200c8a828b01611ebf565b92505060c061201d8a828b01611ebf565b91505092959891949750929550565b60006020828403121561203e57600080fd5b600061204c84828501611efe565b91505092915050565b6000806040838503121561206857600080fd5b600061207685828601611efe565b925050602061208785828601611ed4565b9150509250929050565b61209a81612a63565b82525050565b6120a9816129ef565b82525050565b6120b8816129dd565b82525050565b6120c781612a01565b82525050565b6120d681612a0d565b82525050565b60006120e96016836129cc565b91507f41756374696f6e20616c726561647920657869737473000000000000000000006000830152602082019050919050565b60006121296027836129cc565b91507f43616e27742063616e63656c20616e2061756374696f6e206f6e63652069742760008301527f7320626567756e000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061218f6014836129cc565b91507f41756374696f6e206861736e277420626567756e0000000000000000000000006000830152602082019050919050565b60006121cf602e836129cc565b91507f43616e206f6e6c792062652063616c6c65642062792061756374696f6e20637260008301527f6561746f72206f72206f776e65720000000000000000000000000000000000006020830152604082019050919050565b6000612235601c836129cc565b91507f4d7573742073656e64206d6f7265207468616e206c61737420626964000000006000830152602082019050919050565b60006122756012836129cc565b91507f4d757374206e6f742062652070617573656400000000000000000000000000006000830152602082019050919050565b60006122b56015836129cc565b91507f41756374696f6e20646f65736e277420657869737400000000000000000000006000830152602082019050919050565b60006122f5600e836129cc565b91507f41756374696f6e207061757365640000000000000000000000000000000000006000830152602082019050919050565b60006123356022836129cc565b91507f50657263656e746167652068617320746f206265206c657373207468616e203160008301527f30300000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061239b601e836129cc565b91507f4d7573742073656e6420726573657276655072696365206f72206d6f726500006000830152602082019050919050565b60006123db6018836129cc565b91507f41756374696f6e206861736e277420636f6d706c6574656400000000000000006000830152602082019050919050565b600061241b601d836129cc565b91507f446f65736e277420737570706f7274204e465420696e746572666163650000006000830152602082019050919050565b600061245b600f836129cc565b91507f41756374696f6e206578706972656400000000000000000000000000000000006000830152602082019050919050565b600061249b602d836129cc565b91507f4d7573742073656e64206d6f7265207468616e206c617374206269642062792060008301527f6d696e42696420416d6f756e74000000000000000000000000000000000000006020830152604082019050919050565b6124fd81612a59565b82525050565b600060208201905061251860008301846120af565b92915050565b60006060820190506125336000830186612091565b61254060208301856120af565b61254d60408301846124f4565b949350505050565b600060608201905061256a60008301866120af565b61257760208301856120af565b61258460408301846124f4565b949350505050565b60006020820190506125a160008301846120be565b92915050565b6000610180820190506125bd600083018f6120be565b6125ca602083018e6120be565b6125d7604083018d6124f4565b6125e4606083018c6124f4565b6125f1608083018b6124f4565b6125fe60a083018a6124f4565b61260b60c08301896124f4565b61261860e08301886124f4565b6126266101008301876120af565b6126346101208301866120a0565b6126426101408301856120a0565b6126506101608301846120a0565b9d9c50505050505050505050505050565b600060208201905061267660008301846120cd565b92915050565b60006020820190508181036000830152612695816120dc565b9050919050565b600060208201905081810360008301526126b58161211c565b9050919050565b600060208201905081810360008301526126d581612182565b9050919050565b600060208201905081810360008301526126f5816121c2565b9050919050565b6000602082019050818103600083015261271581612228565b9050919050565b6000602082019050818103600083015261273581612268565b9050919050565b60006020820190508181036000830152612755816122a8565b9050919050565b60006020820190508181036000830152612775816122e8565b9050919050565b6000602082019050818103600083015261279581612328565b9050919050565b600060208201905081810360008301526127b58161238e565b9050919050565b600060208201905081810360008301526127d5816123ce565b9050919050565b600060208201905081810360008301526127f58161240e565b9050919050565b600060208201905081810360008301526128158161244e565b9050919050565b600060208201905081810360008301526128358161248e565b9050919050565b600060208201905061285160008301846124f4565b92915050565b600060608201905061286c60008301866124f4565b61287960208301856120af565b61288660408301846120af565b949350505050565b600060e0820190506128a3600083018a6124f4565b6128b060208301896120af565b6128bd6040830188612091565b6128ca60608301876124f4565b6128d760808301866124f4565b6128e460a08301856120be565b6128f160c08301846120be565b98975050505050505050565b600060a08201905061291260008301886124f4565b61291f60208301876120af565b61292c60408301866120af565b61293960608301856120af565b61294660808301846124f4565b9695505050505050565b600060a08201905061296560008301886124f4565b61297260208301876120af565b61297f60408301866124f4565b61298c60608301856124f4565b6129996080830184612091565b9695505050505050565b60006040820190506129b860008301856124f4565b6129c560208301846120be565b9392505050565b600082825260208201905092915050565b60006129e882612a39565b9050919050565b60006129fa82612a39565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612a6e82612a75565b9050919050565b6000612a8082612a87565b9050919050565b6000612a9282612a39565b9050919050565b612aa2816129dd565b8114612aad57600080fd5b50565b612ab9816129ef565b8114612ac457600080fd5b50565b612ad081612a01565b8114612adb57600080fd5b50565b612ae781612a59565b8114612af257600080fd5b5056fea365627a7a723158204dc60542c20559ff8957d542725bffdd24d656a896b65f2b0eca1f98e5f14a496c6578706572696d656e74616cf564736f6c63430005100040

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

000000000000000000000000dce09254dd3592381b6a5b7a848b29890b656e01

-----Decoded View---------------
Arg [0] : _nftAddress (address): 0xDCe09254dD3592381b6A5b7a848B29890b656e01

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dce09254dd3592381b6a5b7a848b29890b656e01


Deployed Bytecode Sourcemap

12789:8316:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20996:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20996:106:0;;;;;;;;;;;;;;;;:::i;:::-;;14995:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14995:91:0;;;;;;;;;;;;;;;;:::i;:::-;;15209:237;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15209:237:0;;;;;;;;;;;;;;;;:::i;:::-;;15454:1056;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15454:1056:0;;;;;;;;;;;;;;;;:::i;:::-;;13019:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13019:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;13174:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13174:43:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;13140:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13140:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;12883:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12883:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;16518:2441;;;;;;;;;;;;;;;;:::i;:::-;;3443:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3443:140:0;;;:::i;:::-;;2730:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2730:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;3065:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3065:92:0;;;:::i;:::-;;;;;;;;;;;;;;;;20308:680;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20308:680:0;;;;;;;;;;;;;;;;:::i;:::-;;15094:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15094:107:0;;;;;;;;;;;;;;;;:::i;:::-;;18967:1333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18967:1333:0;;;;;;;;;;;;;;;;:::i;:::-;;13224:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13224:25:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14739:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14739:248:0;;;;;;;;;;;;;;;;:::i;:::-;;12916:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12916:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;3760:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3760:109:0;;;;;;;;;;;;;;;;:::i;:::-;;20996:106;2942:9;:7;:9::i;:::-;2934:18;;;;;;21081:13;21066:12;;:28;;;;;;;;;;;;;;;;;;20996:106;:::o;14995:91::-;2942:9;:7;:9::i;:::-;2934:18;;;;;;15071:7;15062:6;:16;;;;14995:91;:::o;15209:237::-;2942:9;:7;:9::i;:::-;2934:18;;;;;;15298:8;:17;15307:7;15298:17;;;;;;;;;;;:24;;;;;;;;;;;;15290:58;;;;;;;;;;;;;;;;;;;;;;15386:6;15359:8;:17;15368:7;15359:17;;;;;;;;;;;:24;;;:33;;;;;;;;;;;;;;;;;;15408:30;15422:7;15431:6;15408:30;;;;;;;;;;;;;;;;15209:237;;:::o;15454:1056::-;13699:12;;;;;;;;;;;13698:13;13690:44;;;;;;;;;;;;;;;;;;;;;;2942:9;:7;:9::i;:::-;2934:18;;;;;;7177:1;7160:13;;:18;;;;;;;;;;;7189:20;7212:13;;7189:36;;15771:8;:17;15780:7;15771:17;;;;;;;;;;;:24;;;;;;;;;;;;15770:25;15762:60;;;;;;;;;;;;;;;;;;;;;;15854:3;15841:10;:16;15833:63;;;;;;;;;;;;;;;;;;;;;;15907:8;15921:7;15907:22;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;15907:22:0;;;;;;;;;;;;;;;;;;;;;;15969:6;15942:8;:17;15951:7;15942:17;;;;;;;;;;;:24;;;:33;;;;;;;;;;;;;;;;;;16013:4;15986:8;:17;15995:7;15986:17;;;;;;;;;;;:24;;;:31;;;;;;;;;;;;;;;;;;16057:8;16028;:17;16037:7;16028:17;;;;;;;;;;;:26;;:37;;;;16109:12;16076:8;:17;16085:7;16076:17;;;;;;;;;;;:30;;:45;;;;16165:10;16134:8;:17;16143:7;16134:17;;;;;;;;;;;:28;;:41;;;;16214:10;16186:8;:17;16195:7;16186:17;;;;;;;;;;;:25;;;:38;;;;;;;;;;;;;;;;;;16261:5;16235:8;:17;16244:7;16235:17;;;;;;;;;;;:23;;;:31;;;;;;;;;;;;;;;;;;16315:17;16277:8;:17;16286:7;16277:17;;;;;;;;;;;:35;;;:55;;;;;;;;;;;;;;;;;;16353:10;;;;;;;;;;;16345:32;;;16378:10;16398:4;16405:7;16345:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16345:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16345:68:0;;;;16431:71;16446:7;16455:10;;;;;;;;;;;16467:8;16477:12;16491:10;16431:71;;;;;;;;;;;;;;;;;;;7272:13;;7256:12;:29;7248:38;;;;;;2963:1;15454:1056;;;;;;;:::o;13019:34::-;;;;:::o;13174:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13140:25::-;;;;;;;;;;;;;:::o;12883:24::-;;;;;;;;;;;;;:::o;16518:2441::-;13699:12;;;;;;;;;;;13698:13;13690:44;;;;;;;;;;;;;;;;;;;;;;7177:1;7160:13;;:18;;;;;;;;;;;7189:20;7212:13;;7189:36;;16613:8;:17;16622:7;16613:17;;;;;;;;;;;:24;;;;;;;;;;;;16605:58;;;;;;;;;;;;;;;;;;;;;;16683:8;:17;16692:7;16683:17;;;;;;;;;;;:24;;;;;;;;;;;;16682:25;16674:52;;;;;;;;;;;;;;;;;;;;;;16772:8;:17;16781:7;16772:17;;;;;;;;;;;:30;;;16759:9;:43;;16737:123;;;;;;;;;;;;;;;;;;;;;;16927:1;16893:8;:17;16902:7;16893:17;;;;;;;;;;;:30;;;:35;:150;;;;17017:8;:17;17026:7;17017:17;;;;;;;;;;;:26;;;16984:8;:17;16993:7;16984:17;;;;;;;;;;;:30;;;:59;16949:15;:94;16893:150;16871:215;;;;;;;;;;;;;;;;;;;;;;17099:17;17119:8;:17;17128:7;17119:17;;;;;;;;;;;:24;;;17099:44;;17156:13;17180:26;17293:1;17280:9;:14;17276:428;;17331:9;17319;:21;17311:62;;;;;;;;;;;;;;;;;;;;;;17442:6;;17414:24;17428:9;17414;:13;;:24;;;;:::i;:::-;:34;;17388:141;;;;;;;;;;;;;;;;;;;;;;17557:8;:17;17566:7;17557:17;;;;;;;;;;;:24;;;;;;;;;;;;17544:37;;17276:428;;;17625:4;17614:15;;17677;17644:8;:17;17653:7;17644:17;;;;;;;;;;;:30;;:48;;;;17276:428;17743:9;17716:8;:17;17725:7;17716:17;;;;;;;;;;;:24;;:36;;;;17790:10;17763:8;:17;17772:7;17763:17;;;;;;;;;;;:24;;;:37;;;;;;;;;;;;;;;;;;17813:13;18218:10;;18112:103;18199:15;18113:62;18148:8;:17;18157:7;18148:17;;;;;;;;;;;:26;;;18113:8;:17;18122:7;18113:17;;;;;;;;;;;:30;;;:34;;:62;;;;:::i;:::-;18112:86;;:103;;;;:::i;:::-;:116;18094:402;;;18387:67;18443:10;;18387:51;18407:8;:17;18416:7;18407:17;;;;;;;;;;;:30;;;18387:15;:19;;:51;;;;:::i;:::-;:55;;:67;;;;:::i;:::-;18358:8;:17;18367:7;18358:17;;;;;;;;;;;:26;;:96;;;;18480:4;18469:15;;18094:402;18518:193;18543:7;18565:10;;;;;;;;;;;18590;18615:9;18639:15;18669:8;18692;18518:193;;;;;;;;;;;;;;;;;;;;;18727:8;18722:230;;18835:10;:15;;:26;18851:9;18835:26;;;;;;;;;;;;;;;;;;;;;;;18830:111;;18882:8;:17;18891:7;18882:17;;;;;;;;;;;:23;;;;;;;;;;;;:32;;:43;18915:9;18882:43;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18882:43:0;18830:111;18722:230;7236:1;;;;7272:13;;7256:12;:29;7248:38;;;;;;13745:1;16518:2441;:::o;3443:140::-;2942:9;:7;:9::i;:::-;2934:18;;;;;;3542:1;3505:40;;3526:6;;;;;;;;;;;3505:40;;;;;;;;;;;;3573:1;3556:6;;:19;;;;;;;;;;;;;;;;;;3443:140::o;2730:79::-;2768:7;2795:6;;;;;;;;;;;2788:13;;2730:79;:::o;3065:92::-;3105:4;3143:6;;;;;;;;;;;3129:20;;:10;:20;;;3122:27;;3065:92;:::o;20308:680::-;7177:1;7160:13;;:18;;;;;;;;;;;7189:20;7212:13;;7189:36;;20389:8;:17;20398:7;20389:17;;;;;;;;;;;:24;;;;;;;;;;;;20381:58;;;;;;;;;;;;;;;;;;;;;;20501:10;20472:39;;:8;:17;20481:7;20472:17;;;;;;;;;;;:25;;;;;;;;;;;;:39;;;:64;;;;20529:7;:5;:7::i;:::-;20515:21;;:10;:21;;;20472:64;20450:160;;;;;;;;;;;;;;;;;;;;;;20686:1;20651:8;:17;20660:7;20651:17;;;;;;;;;;;:30;;;20643:44;20621:133;;;;;;;;;;;;;;;;;;;;;;20765:15;20783:8;:17;20792:7;20783:17;;;;;;;;;;;:25;;;;;;;;;;;;20765:43;;20826:8;:17;20835:7;20826:17;;;;;;;;;;;;20819:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20862:10;;;;;;;;;;;20854:32;;;20895:4;20902:7;20911;20854:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20854:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20854:65:0;;;;20935:45;20951:7;20960:10;;;;;;;;;;;20972:7;20935:45;;;;;;;;;;;;;;;;;7236:1;7272:13;;7256:12;:29;7248:38;;;;;;20308:680;;:::o;15094:107::-;2942:9;:7;:9::i;:::-;2934:18;;;;;;15182:11;15169:10;:24;;;;15094:107;:::o;18967:1333::-;13699:12;;;;;;;;;;;13698:13;13690:44;;;;;;;;;;;;;;;;;;;;;;7177:1;7160:13;;:18;;;;;;;;;;;7189:20;7212:13;;7189:36;;19055:8;:17;19064:7;19055:17;;;;;;;;;;;:24;;;;;;;;;;;;19047:58;;;;;;;;;;;;;;;;;;;;;;19125:8;:17;19134:7;19125:17;;;;;;;;;;;:24;;;;;;;;;;;;19124:25;19116:52;;;;;;;;;;;;;;;;;;;;;;19244:1;19209:8;:17;19218:7;19209:17;;;;;;;;;;;:30;;;19201:44;;19179:114;;;;;;;;;;;;;;;;;;;;;;19395:8;:17;19404:7;19395:17;;;;;;;;;;;:26;;;19362:8;:17;19371:7;19362:17;;;;;;;;;;;:30;;;:59;19326:15;:95;;19304:169;;;;;;;;;;;;;;;;;;;;;;19486:14;19503:8;:17;19512:7;19503:17;;;;;;;;;;;:24;;;;;;;;;;;;19486:41;;19538:14;19555:8;:17;19564:7;19555:17;;;;;;;;;;;:24;;;19538:41;;19590:15;19608:8;:17;19617:7;19608:17;;;;;;;;;;;:25;;;;;;;;;;;;19590:43;;19644:18;19665:8;:17;19674:7;19665:17;;;;;;;;;;;:28;;;19644:49;;19704:21;19728:8;:17;19737:7;19728:17;;;;;;;;;;;:23;;;;;;;;;;;;19704:47;;19762:33;19798:8;:17;19807:7;19798:17;;;;;;;;;;;:35;;;;;;;;;;;;19762:71;;19851:58;19864:7;19873:10;;;;;;;;;;;19885:7;19894:6;19902;19851:58;;;;;;;;;;;;;;;;;;;19927:8;:17;19936:7;19927:17;;;;;;;;;;;;19920:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19965:10;;;;;;;;;;;19957:32;;;19998:4;20005:6;20013:7;19957:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19957:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19957:64:0;;;;20034:21;20058:31;20085:3;20058:22;20069:10;20058:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;20034:55;;20100:22;20125:25;20136:13;20125:6;:10;;:25;;;;:::i;:::-;20100:50;;20181:1;20165:13;:17;20161:79;;;20199:5;:14;;:29;20214:13;20199:29;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20199:29:0;20161:79;20250:17;:26;;:42;20277:14;20250:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20250:42:0;7236:1;;;;;;;;7272:13;;7256:12;:29;7248:38;;;;;;13745:1;18967:1333;:::o;13224:25::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14739:248::-;2942:9;:7;:9::i;:::-;2934:18;;;;;;14844:11;14836:38;;;13103:10;14875:11;;14836:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14836:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14836:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14836:51:0;;;;;;;;;14814:130;;;;;;;;;;;;;;;;;;;;;;14968:11;14955:10;;:24;;;;;;;;;;;;;;;;;;14739:248;:::o;12916:35::-;;;;:::o;3760:109::-;2942:9;:7;:9::i;:::-;2934:18;;;;;;3833:28;3852:8;3833:18;:28::i;:::-;3760:109;:::o;1306:150::-;1364:7;1397:1;1392;:6;;1384:15;;;;;;1410:9;1426:1;1422;:5;1410:17;;1447:1;1440:8;;;1306:150;;;;:::o;1542:::-;1600:7;1620:9;1636:1;1632;:5;1620:17;;1661:1;1656;:6;;1648:15;;;;;;1683:1;1676:8;;;1542:150;;;;:::o;301:433::-;359:7;608:1;603;:6;599:47;;;633:1;626:8;;;;599:47;658:9;674:1;670;:5;658:17;;703:1;698;694;:5;;;;;;:10;686:19;;;;;;725:1;718:8;;;301:433;;;;;:::o;867:303::-;925:7;1024:1;1020;:5;1012:14;;;;;;1037:9;1053:1;1049;:5;;;;;;1037:17;;1161:1;1154:8;;;867:303;;;;:::o;4019:187::-;4113:1;4093:22;;:8;:22;;;;4085:31;;;;;;4161:8;4132:38;;4153:6;;;;;;;;;;;4132:38;;;;;;;;;;;;4190:8;4181:6;;:17;;;;;;;;;;;;;;;;;;4019:187;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:146;;230:6;217:20;208:29;;242:41;277:5;242:41;;;202:86;;;;;295:124;;372:6;359:20;350:29;;384:30;408:5;384:30;;;344:75;;;;;426:128;;507:6;501:13;492:22;;519:30;543:5;519:30;;;486:68;;;;;561:130;;641:6;628:20;619:29;;653:33;680:5;653:33;;;613:78;;;;;698:241;;802:2;790:9;781:7;777:23;773:32;770:2;;;818:1;815;808:12;770:2;853:1;870:53;915:7;906:6;895:9;891:22;870:53;;;860:63;;832:97;764:175;;;;;946:235;;1047:2;1035:9;1026:7;1022:23;1018:32;1015:2;;;1063:1;1060;1053:12;1015:2;1098:1;1115:50;1157:7;1148:6;1137:9;1133:22;1115:50;;;1105:60;;1077:94;1009:172;;;;;1188:257;;1300:2;1288:9;1279:7;1275:23;1271:32;1268:2;;;1316:1;1313;1306:12;1268:2;1351:1;1368:61;1421:7;1412:6;1401:9;1397:22;1368:61;;;1358:71;;1330:105;1262:183;;;;;1452:1021;;;;;;;;1671:3;1659:9;1650:7;1646:23;1642:33;1639:2;;;1688:1;1685;1678:12;1639:2;1723:1;1740:50;1782:7;1773:6;1762:9;1758:22;1740:50;;;1730:60;;1702:94;1827:2;1845:53;1890:7;1881:6;1870:9;1866:22;1845:53;;;1835:63;;1806:98;1935:2;1953:53;1998:7;1989:6;1978:9;1974:22;1953:53;;;1943:63;;1914:98;2043:2;2061:53;2106:7;2097:6;2086:9;2082:22;2061:53;;;2051:63;;2022:98;2151:3;2170:53;2215:7;2206:6;2195:9;2191:22;2170:53;;;2160:63;;2130:99;2260:3;2279:61;2332:7;2323:6;2312:9;2308:22;2279:61;;;2269:71;;2239:107;2377:3;2396:61;2449:7;2440:6;2429:9;2425:22;2396:61;;;2386:71;;2356:107;1633:840;;;;;;;;;;;2480:241;;2584:2;2572:9;2563:7;2559:23;2555:32;2552:2;;;2600:1;2597;2590:12;2552:2;2635:1;2652:53;2697:7;2688:6;2677:9;2673:22;2652:53;;;2642:63;;2614:97;2546:175;;;;;2728:360;;;2846:2;2834:9;2825:7;2821:23;2817:32;2814:2;;;2862:1;2859;2852:12;2814:2;2897:1;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;;;2904:63;;2876:97;3004:2;3022:50;3064:7;3055:6;3044:9;3040:22;3022:50;;;3012:60;;2983:95;2808:280;;;;;;3095:142;3186:45;3225:5;3186:45;;;3181:3;3174:58;3168:69;;;3244:137;3343:32;3369:5;3343:32;;;3338:3;3331:45;3325:56;;;3388:113;3471:24;3489:5;3471:24;;;3466:3;3459:37;3453:48;;;3508:104;3585:21;3600:5;3585:21;;;3580:3;3573:34;3567:45;;;3619:110;3700:23;3717:5;3700:23;;;3695:3;3688:36;3682:47;;;3737:322;;3897:67;3961:2;3956:3;3897:67;;;3890:74;;3997:24;3993:1;3988:3;3984:11;3977:45;4050:2;4045:3;4041:12;4034:19;;3883:176;;;;4068:376;;4228:67;4292:2;4287:3;4228:67;;;4221:74;;4328:34;4324:1;4319:3;4315:11;4308:55;4397:9;4392:2;4387:3;4383:12;4376:31;4435:2;4430:3;4426:12;4419:19;;4214:230;;;;4453:320;;4613:67;4677:2;4672:3;4613:67;;;4606:74;;4713:22;4709:1;4704:3;4700:11;4693:43;4764:2;4759:3;4755:12;4748:19;;4599:174;;;;4782:383;;4942:67;5006:2;5001:3;4942:67;;;4935:74;;5042:34;5038:1;5033:3;5029:11;5022:55;5111:16;5106:2;5101:3;5097:12;5090:38;5156:2;5151:3;5147:12;5140:19;;4928:237;;;;5174:328;;5334:67;5398:2;5393:3;5334:67;;;5327:74;;5434:30;5430:1;5425:3;5421:11;5414:51;5493:2;5488:3;5484:12;5477:19;;5320:182;;;;5511:318;;5671:67;5735:2;5730:3;5671:67;;;5664:74;;5771:20;5767:1;5762:3;5758:11;5751:41;5820:2;5815:3;5811:12;5804:19;;5657:172;;;;5838:321;;5998:67;6062:2;6057:3;5998:67;;;5991:74;;6098:23;6094:1;6089:3;6085:11;6078:44;6150:2;6145:3;6141:12;6134:19;;5984:175;;;;6168:314;;6328:67;6392:2;6387:3;6328:67;;;6321:74;;6428:16;6424:1;6419:3;6415:11;6408:37;6473:2;6468:3;6464:12;6457:19;;6314:168;;;;6491:371;;6651:67;6715:2;6710:3;6651:67;;;6644:74;;6751:34;6747:1;6742:3;6738:11;6731:55;6820:4;6815:2;6810:3;6806:12;6799:26;6853:2;6848:3;6844:12;6837:19;;6637:225;;;;6871:330;;7031:67;7095:2;7090:3;7031:67;;;7024:74;;7131:32;7127:1;7122:3;7118:11;7111:53;7192:2;7187:3;7183:12;7176:19;;7017:184;;;;7210:324;;7370:67;7434:2;7429:3;7370:67;;;7363:74;;7470:26;7466:1;7461:3;7457:11;7450:47;7525:2;7520:3;7516:12;7509:19;;7356:178;;;;7543:329;;7703:67;7767:2;7762:3;7703:67;;;7696:74;;7803:31;7799:1;7794:3;7790:11;7783:52;7863:2;7858:3;7854:12;7847:19;;7689:183;;;;7881:315;;8041:67;8105:2;8100:3;8041:67;;;8034:74;;8141:17;8137:1;8132:3;8128:11;8121:38;8187:2;8182:3;8178:12;8171:19;;8027:169;;;;8205:382;;8365:67;8429:2;8424:3;8365:67;;;8358:74;;8465:34;8461:1;8456:3;8452:11;8445:55;8534:15;8529:2;8524:3;8520:12;8513:37;8578:2;8573:3;8569:12;8562:19;;8351:236;;;;8595:113;8678:24;8696:5;8678:24;;;8673:3;8666:37;8660:48;;;8715:213;;8833:2;8822:9;8818:18;8810:26;;8847:71;8915:1;8904:9;8900:17;8891:6;8847:71;;;8804:124;;;;;8935:451;;9117:2;9106:9;9102:18;9094:26;;9131:79;9207:1;9196:9;9192:17;9183:6;9131:79;;;9221:72;9289:2;9278:9;9274:18;9265:6;9221:72;;;9304;9372:2;9361:9;9357:18;9348:6;9304:72;;;9088:298;;;;;;;9393:435;;9567:2;9556:9;9552:18;9544:26;;9581:71;9649:1;9638:9;9634:17;9625:6;9581:71;;;9663:72;9731:2;9720:9;9716:18;9707:6;9663:72;;;9746;9814:2;9803:9;9799:18;9790:6;9746:72;;;9538:290;;;;;;;9835:201;;9947:2;9936:9;9932:18;9924:26;;9961:65;10023:1;10012:9;10008:17;9999:6;9961:65;;;9918:118;;;;;10043:1519;;10507:3;10496:9;10492:19;10484:27;;10522:65;10584:1;10573:9;10569:17;10560:6;10522:65;;;10598:66;10660:2;10649:9;10645:18;10636:6;10598:66;;;10675:72;10743:2;10732:9;10728:18;10719:6;10675:72;;;10758;10826:2;10815:9;10811:18;10802:6;10758:72;;;10841:73;10909:3;10898:9;10894:19;10885:6;10841:73;;;10925;10993:3;10982:9;10978:19;10969:6;10925:73;;;11009;11077:3;11066:9;11062:19;11053:6;11009:73;;;11093;11161:3;11150:9;11146:19;11137:6;11093:73;;;11177;11245:3;11234:9;11230:19;11221:6;11177:73;;;11261:89;11345:3;11334:9;11330:19;11321:6;11261:89;;;11361:90;11446:3;11435:9;11431:19;11421:7;11361:90;;;11462;11547:3;11536:9;11532:19;11522:7;11462:90;;;10478:1084;;;;;;;;;;;;;;;;11569:209;;11685:2;11674:9;11670:18;11662:26;;11699:69;11765:1;11754:9;11750:17;11741:6;11699:69;;;11656:122;;;;;11785:407;;11976:2;11965:9;11961:18;11953:26;;12026:9;12020:4;12016:20;12012:1;12001:9;11997:17;11990:47;12051:131;12177:4;12051:131;;;12043:139;;11947:245;;;;12199:407;;12390:2;12379:9;12375:18;12367:26;;12440:9;12434:4;12430:20;12426:1;12415:9;12411:17;12404:47;12465:131;12591:4;12465:131;;;12457:139;;12361:245;;;;12613:407;;12804:2;12793:9;12789:18;12781:26;;12854:9;12848:4;12844:20;12840:1;12829:9;12825:17;12818:47;12879:131;13005:4;12879:131;;;12871:139;;12775:245;;;;13027:407;;13218:2;13207:9;13203:18;13195:26;;13268:9;13262:4;13258:20;13254:1;13243:9;13239:17;13232:47;13293:131;13419:4;13293:131;;;13285:139;;13189:245;;;;13441:407;;13632:2;13621:9;13617:18;13609:26;;13682:9;13676:4;13672:20;13668:1;13657:9;13653:17;13646:47;13707:131;13833:4;13707:131;;;13699:139;;13603:245;;;;13855:407;;14046:2;14035:9;14031:18;14023:26;;14096:9;14090:4;14086:20;14082:1;14071:9;14067:17;14060:47;14121:131;14247:4;14121:131;;;14113:139;;14017:245;;;;14269:407;;14460:2;14449:9;14445:18;14437:26;;14510:9;14504:4;14500:20;14496:1;14485:9;14481:17;14474:47;14535:131;14661:4;14535:131;;;14527:139;;14431:245;;;;14683:407;;14874:2;14863:9;14859:18;14851:26;;14924:9;14918:4;14914:20;14910:1;14899:9;14895:17;14888:47;14949:131;15075:4;14949:131;;;14941:139;;14845:245;;;;15097:407;;15288:2;15277:9;15273:18;15265:26;;15338:9;15332:4;15328:20;15324:1;15313:9;15309:17;15302:47;15363:131;15489:4;15363:131;;;15355:139;;15259:245;;;;15511:407;;15702:2;15691:9;15687:18;15679:26;;15752:9;15746:4;15742:20;15738:1;15727:9;15723:17;15716:47;15777:131;15903:4;15777:131;;;15769:139;;15673:245;;;;15925:407;;16116:2;16105:9;16101:18;16093:26;;16166:9;16160:4;16156:20;16152:1;16141:9;16137:17;16130:47;16191:131;16317:4;16191:131;;;16183:139;;16087:245;;;;16339:407;;16530:2;16519:9;16515:18;16507:26;;16580:9;16574:4;16570:20;16566:1;16555:9;16551:17;16544:47;16605:131;16731:4;16605:131;;;16597:139;;16501:245;;;;16753:407;;16944:2;16933:9;16929:18;16921:26;;16994:9;16988:4;16984:20;16980:1;16969:9;16965:17;16958:47;17019:131;17145:4;17019:131;;;17011:139;;16915:245;;;;17167:407;;17358:2;17347:9;17343:18;17335:26;;17408:9;17402:4;17398:20;17394:1;17383:9;17379:17;17372:47;17433:131;17559:4;17433:131;;;17425:139;;17329:245;;;;17581:213;;17699:2;17688:9;17684:18;17676:26;;17713:71;17781:1;17770:9;17766:17;17757:6;17713:71;;;17670:124;;;;;17801:435;;17975:2;17964:9;17960:18;17952:26;;17989:71;18057:1;18046:9;18042:17;18033:6;17989:71;;;18071:72;18139:2;18128:9;18124:18;18115:6;18071:72;;;18154;18222:2;18211:9;18207:18;18198:6;18154:72;;;17946:290;;;;;;;18243:875;;18525:3;18514:9;18510:19;18502:27;;18540:71;18608:1;18597:9;18593:17;18584:6;18540:71;;;18622:72;18690:2;18679:9;18675:18;18666:6;18622:72;;;18705:80;18781:2;18770:9;18766:18;18757:6;18705:80;;;18796:72;18864:2;18853:9;18849:18;18840:6;18796:72;;;18879:73;18947:3;18936:9;18932:19;18923:6;18879:73;;;18963:67;19025:3;19014:9;19010:19;19001:6;18963:67;;;19041;19103:3;19092:9;19088:19;19079:6;19041:67;;;18496:622;;;;;;;;;;;19125:659;;19355:3;19344:9;19340:19;19332:27;;19370:71;19438:1;19427:9;19423:17;19414:6;19370:71;;;19452:72;19520:2;19509:9;19505:18;19496:6;19452:72;;;19535;19603:2;19592:9;19588:18;19579:6;19535:72;;;19618;19686:2;19675:9;19671:18;19662:6;19618:72;;;19701:73;19769:3;19758:9;19754:19;19745:6;19701:73;;;19326:458;;;;;;;;;19791:675;;20029:3;20018:9;20014:19;20006:27;;20044:71;20112:1;20101:9;20097:17;20088:6;20044:71;;;20126:72;20194:2;20183:9;20179:18;20170:6;20126:72;;;20209;20277:2;20266:9;20262:18;20253:6;20209:72;;;20292;20360:2;20349:9;20345:18;20336:6;20292:72;;;20375:81;20451:3;20440:9;20436:19;20427:6;20375:81;;;20000:466;;;;;;;;;20473:312;;20613:2;20602:9;20598:18;20590:26;;20627:71;20695:1;20684:9;20680:17;20671:6;20627:71;;;20709:66;20771:2;20760:9;20756:18;20747:6;20709:66;;;20584:201;;;;;;20793:163;;20908:6;20903:3;20896:19;20945:4;20940:3;20936:14;20921:29;;20889:67;;;;;20964:91;;21026:24;21044:5;21026:24;;;21015:35;;21009:46;;;;21062:99;;21132:24;21150:5;21132:24;;;21121:35;;21115:46;;;;21168:85;;21241:5;21234:13;21227:21;21216:32;;21210:43;;;;21260:144;;21332:66;21325:5;21321:78;21310:89;;21304:100;;;;21411:121;;21484:42;21477:5;21473:54;21462:65;;21456:76;;;;21539:72;;21601:5;21590:16;;21584:27;;;;21618:129;;21705:37;21736:5;21705:37;;;21692:50;;21686:61;;;;21754:121;;21833:37;21864:5;21833:37;;;21820:50;;21814:61;;;;21882:108;;21961:24;21979:5;21961:24;;;21948:37;;21942:48;;;;21997:117;22066:24;22084:5;22066:24;;;22059:5;22056:35;22046:2;;22105:1;22102;22095:12;22046:2;22040:74;;22121:133;22198:32;22224:5;22198:32;;;22191:5;22188:43;22178:2;;22245:1;22242;22235:12;22178:2;22172:82;;22261:111;22327:21;22342:5;22327:21;;;22320:5;22317:32;22307:2;;22363:1;22360;22353:12;22307:2;22301:71;;22379:117;22448:24;22466:5;22448:24;;;22441:5;22438:35;22428:2;;22487:1;22484;22477:12;22428:2;22422:74;

Swarm Source

bzzr://4dc60542c20559ff8957d542725bffdd24d656a896b65f2b0eca1f98e5f14a49

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.