ETH Price: $3,262.98 (+4.78%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00
Transaction Hash
Method
Block
From
To
Claim Bananas168880602023-03-23 5:05:59679 days ago1679547959IN
0x11E7d025...E748bFa5f
0 ETH0.0002851910
Buy Bananas Hold...149873832022-06-18 22:15:19957 days ago1655590519IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0017066354.58097633
Claim Bananas148752032022-05-30 22:38:12976 days ago1653950292IN
0x11E7d025...E748bFa5f
0 ETH0.0018773565.47924451
Claim Bananas148752032022-05-30 22:38:12976 days ago1653950292IN
0x11E7d025...E748bFa5f
0 ETH0.0018773565.47924451
Claim Bananas148752032022-05-30 22:38:12976 days ago1653950292IN
0x11E7d025...E748bFa5f
0 ETH0.0018773565.47924451
Claim Bananas148751802022-05-30 22:31:48976 days ago1653949908IN
0x11E7d025...E748bFa5f
0 ETH0.001124639.22443345
Claim Bananas146032332022-04-17 14:03:271019 days ago1650204207IN
0x11E7d025...E748bFa5f
0 ETH0.0010033835.18320789
Claim Bananas145586542022-04-10 15:09:321026 days ago1649603372IN
0x11E7d025...E748bFa5f
0 ETH0.0018659965.42988981
Claim Bananas145495072022-04-09 4:51:061027 days ago1649479866IN
0x11E7d025...E748bFa5f
0 ETH0.0009611333.70158212
Claim Bananas145489322022-04-09 2:49:311027 days ago1649472571IN
0x11E7d025...E748bFa5f
0 ETH0.0007455526.14226748
Claim Bananas145472672022-04-08 20:28:301028 days ago1649449710IN
0x11E7d025...E748bFa5f
0 ETH0.0022801279.95102275
Claim Bananas145407572022-04-07 19:53:041029 days ago1649361184IN
0x11E7d025...E748bFa5f
0 ETH0.0008920431.2788154
Buy Bananas Hold...145303392022-04-06 4:53:561030 days ago1649220836IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0015839739.80147566
Withdraw All145276882022-04-05 19:02:531031 days ago1649185373IN
0x11E7d025...E748bFa5f
0 ETH0.0032522893.20193524
Set Is Holder Sa...145276732022-04-05 18:58:361031 days ago1649185116IN
0x11E7d025...E748bFa5f
0 ETH0.0025874790.17476493
Set Max Mint Amo...145276712022-04-05 18:57:571031 days ago1649185077IN
0x11E7d025...E748bFa5f
0 ETH0.0018843879.01960776
Claim Bananas145276672022-04-05 18:57:021031 days ago1649185022IN
0x11E7d025...E748bFa5f
0 ETH0.0022278678.15156151
Buy Bananas Hold...145276622022-04-05 18:55:221031 days ago1649184922IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0090746276.51903463
Buy Bananas Hold...145276382022-04-05 18:49:201031 days ago1649184560IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0110752393.38862235
Buy Bananas Hold...145276322022-04-05 18:46:561031 days ago1649184416IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0111489182.16282303
Claim Bananas145276262022-04-05 18:45:181031 days ago1649184318IN
0x11E7d025...E748bFa5f
0 ETH0.0019614768.80680605
Buy Bananas Hold...145276252022-04-05 18:45:131031 days ago1649184313IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0083214961.33493323
Buy Bananas Hold...145276202022-04-05 18:43:031031 days ago1649184183IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0069306458.44057105
Buy Bananas145276192022-04-05 18:42:531031 days ago1649184173IN
0x11E7d025...E748bFa5f
0.15 ETH0.0074505463.37116826
Buy Bananas Hold...145276152022-04-05 18:41:561031 days ago1649184116IN
0x11E7d025...E748bFa5f
0.07979 ETH0.0071351552.58309779
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
145276882022-04-05 19:02:531031 days ago1649185373
0x11E7d025...E748bFa5f
48.33319 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PoisonedBananasClaim

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion
File 1 of 6 : PoisonedBananasClaim.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import { MerkleProof } from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";

contract IPoisonedBananas {
     function mintSingle(uint256 bananaType, address to) external {}
     function mintMultiple(uint256[] memory bananaTypes, uint256[] memory amounts, address to) external {}
}

contract IPoisonedBananaClaimRNG {
    function getRandomNumber(address _addr, uint256 apeId) external view returns (uint256) {}
}

contract PoisonedBananasClaim is Ownable {

    /**
     * @dev EXTERNAL ADDRESSES
     */
    IERC721 public primeApeNFT;
    IPoisonedBananas public bananas;
    IPoisonedBananaClaimRNG private claimRng;
    
    /** 
     * @dev GENERAL DATA 
     */
    uint256 public maxSupply = 7979;
    uint256 public lvl1Supply = 5000;
    uint256 public lvl2Supply = 2965;
    uint256 public lvl3Supply = 14;

    uint256 public lvl2Odds = 3;
    uint256 public lvl3Odds = 569;

    /**
     * @dev CLAIM DATA
     */
    mapping(uint256 => bool) public apeToClaimed;
    mapping(uint256 => uint256) public levelToClaimed;

    /**
     * @dev MINT DATA
     */
    uint256 public holderPrice = 0.07979 ether;
    uint256 public price = 0.15 ether;
    uint256 public minted;
    uint256 public mintMaxAmount = 1;
    bool public isHolderSale;
    bool public isSale;
    mapping(address => uint256) public addressToHolderMint;
    mapping(address => uint256) public addressToMints;
    
    /**
     * @dev Setter events.
     */
    event setPriceEvent(uint256 indexed price);
    event setMaxSupplyEvent(uint256 indexed maxSupply);

    /**
     * @dev Sale events.
     */
    event Purchase(address indexed buyer, uint256 indexed amount);
    event ReceivedEther(address indexed sender, uint256 indexed amount);
    event WithdrawAllEvent(address indexed to, uint256 amount);

    constructor(
        address _ape,
        address _banana,
        address _rng
    ) Ownable() {
        require(lvl1Supply + lvl2Supply + lvl3Supply == maxSupply, "Supply not correct");

        primeApeNFT = IERC721(_ape);
        bananas = IPoisonedBananas(_banana);
        claimRng = IPoisonedBananaClaimRNG(_rng);
    }

    /**
     * @dev HELPERS
     */

    /**
     * @dev returns the bananas supply that is left.
     */
    function supplyLeft() public view returns (uint256) {
        return maxSupply - minted;
    }

    /**
     * @dev given an array of apeIds see which ones can still
     * claim their banana.
     *
     * @param apeIds. The ape ids.
     */
    function getNotClaimedApes(uint256[] calldata apeIds) external view returns(uint256[] memory) {
        require(apeIds.length > 0, "No IDS supplied");

        uint256 length = apeIds.length;
        uint256[] memory notClaimedApes = new uint256[](length);
        uint256 counter;

        /// @dev Check if sender is owner of all apes and that they haven't claimed yet
        /// @dev Update claim status of each ape
        for (uint256 i = 0; i < apeIds.length; i++) {
            uint256 apeId = apeIds[i];         
            if (!apeToClaimed[apeId]) {
                notClaimedApes[counter] = apeId;
                counter++;
            }
        }

        return notClaimedApes;
    }

    function getBananaLevelForClaim(address claimer, uint256 claimingApeId) internal view returns (uint256) {
        uint256 rng = claimRng.getRandomNumber(claimer, claimingApeId);

        bool isLvl3 = rng % lvl3Odds == 0;
        bool isLvl2 = rng % lvl2Odds == 0;
        bool isLvl1 = !isLvl3 && !isLvl2;

        bool isLvl3Full = levelToClaimed[2] >= lvl3Supply;
        bool isLvl2Full = levelToClaimed[1] >= lvl2Supply;
        bool isLvl1Full = levelToClaimed[0] >= lvl1Supply;

        if (isLvl3) {
            if (!isLvl3Full)
                return 2;
            else if (!isLvl2Full)
                return 1;
            else if (!isLvl1Full)
                return 0;
        }

        if (isLvl2) {
            if (!isLvl2Full)
                return 1;
            else if (!isLvl1Full)
                return 0;
            else if (!isLvl2Full)
                return 2;
        }

        if (isLvl1) {
            if (!isLvl1Full)
                return 0;
            else if (!isLvl2Full)
                return 1;
            else if (!isLvl3Full)
                return 2;
        }

        //should not get to this
        revert("Logic error");
    }

    /**
     * @dev CLAIMING
     */
    
    /**
     * @dev Claims bananas to sender for each valid ape Id.
     *
     * @param apeIds. The ape Ids.
     */
    function claimBananas(uint256[] calldata apeIds) external {
        require(address(bananas) != address(0), "Banana contract not set");
        require(address(primeApeNFT) != address(0), "Ape contract not set");
        require(apeIds.length > 0, "No Ids supplied");
        require(!isSale && !isHolderSale, "Claiming stopped");

        uint256[] memory bananaTypes = new uint256[](apeIds.length);
        uint256[] memory amounts = new uint256[](apeIds.length);

        /// @dev Check if sender is owner of all apes and that they haven't claimed yet
        /// @dev Update claim status of each ape
        for (uint256 i = 0; i < apeIds.length; i++) {
            uint256 apeId = apeIds[i];
            require(primeApeNFT.ownerOf(apeId) == msg.sender, "Sender does not own ape");
            require(!apeToClaimed[apeId], "Ape already claimed banana");
            apeToClaimed[apeId] = true;

            uint256 bananaType = getBananaLevelForClaim(msg.sender, apeId);
            levelToClaimed[bananaType]++;

            bananaTypes[i] = bananaType;
            amounts[i] = 1;
        }

        minted += apeIds.length;
        bananas.mintMultiple(bananaTypes, amounts, msg.sender);
    }
    
    /**
     * @dev Claims banana to sender for ape Id.
     *
     * @param apeId. The ape Id.
     */
    function claimBanana(uint256 apeId) external {
        require(address(bananas) != address(0), "Banana contract not set");
        require(address(primeApeNFT) != address(0), "Ape contract not set");
        require(!isSale && !isHolderSale, "Claiming stopped");

        require(primeApeNFT.ownerOf(apeId) == msg.sender, "Sender does not own ape");
        require(!apeToClaimed[apeId], "Ape already claimed banana");
        apeToClaimed[apeId] = true;

        uint256 bananaType = getBananaLevelForClaim(msg.sender, apeId);
        levelToClaimed[bananaType]++;

        minted++;
        bananas.mintSingle(bananaType, msg.sender);
    }

    /**
     * @dev SALE
     */

    /**
     * @dev Allows unclaimed bananas to be sold to holders
     */
    function buyBananasHolders() 
        external 
        payable {
        uint256 amount = 1;

        require(primeApeNFT.balanceOf(msg.sender) > 0, "Have to be a prime ape holder");
        require(addressToHolderMint[msg.sender] == 0, "Can only buy one additional banana");
        require(minted + amount <= maxSupply, "Mint amount goes over max supply");
        require(msg.value >= holderPrice, "Ether sent not correct");
        require(isHolderSale, "Sale not started"); 

        addressToHolderMint[msg.sender] = 1;

        uint256 bananaType = getBananaLevelForClaim(msg.sender, minted);
        levelToClaimed[bananaType]++;

        minted++;
        bananas.mintSingle(bananaType, msg.sender);       

        emit Purchase(msg.sender, amount);
    }

    /**
     * @dev Allows unclaimed bananas to be sold to the public
     *
     * @param amount. The amount of bananas to be sold
     */
    function buyBananas(uint256 amount) 
        external 
        payable {
        
        require(amount > 0, "Have to buy more than 0");

        require(addressToMints[msg.sender] + amount <= mintMaxAmount, "Mint amount exceeds max for user");
        require(minted + amount <= maxSupply, "Mint amount goes over max supply");
        require(msg.value >= price * amount, "Ether sent not correct");
        require(isSale, "Sale not started"); 
        /// @dev Updates contract variables and mints `amount` NFTs to users wallet

        addressToMints[msg.sender] += amount;

        uint256[] memory bananaTypes = new uint256[](amount);
        uint256[] memory amounts = new uint256[](amount);

        for (uint256 i = 0; i < amount; i++) {
            uint256 bananaType = getBananaLevelForClaim(msg.sender, minted + i);
            levelToClaimed[bananaType]++;

            bananaTypes[i] = bananaType;
            amounts[i] = 1;
        }

        minted += amount;
        bananas.mintMultiple(bananaTypes, amounts, msg.sender);    

        emit Purchase(msg.sender, amount);
    }

    /** 
     * @dev OWNER ONLY 
     */

    function setIsSale(bool _isSale) external onlyOwner {
        isSale = _isSale;
    }

    function setIsHolderSale(bool _isSale) external onlyOwner {
        isHolderSale = _isSale;
    }

    function setPrice(uint256 newPrice) external onlyOwner {
        price = newPrice;
        emit setPriceEvent(newPrice);
    }

    function setHolderPrice(uint256 newPrice) external onlyOwner {
        holderPrice = newPrice;
    }

    function setMaxSupply(uint256 newMaxSupply) external onlyOwner {
        maxSupply = newMaxSupply;
        emit setMaxSupplyEvent(newMaxSupply);
    }

    function setMaxMintAmount(uint256 newMaxMintAmount) external onlyOwner {
        mintMaxAmount = newMaxMintAmount;
    }

    function setLvl1Supply(uint256 newSupply) external onlyOwner {
        lvl1Supply = newSupply;
    }

    function setLvl2Supply(uint256 newSupply) external onlyOwner {
        lvl2Supply = newSupply;
    }

    function setLvl3Supply(uint256 newSupply) external onlyOwner {
        lvl3Supply = newSupply;
    }

    function setLvl2Odds(uint256 newOdds) external onlyOwner {
        lvl2Odds = newOdds;
    }

    function setLvl3Odds(uint256 newOdds) external onlyOwner {
        lvl3Odds = newOdds;
    }

    /**
     * @dev FINANCE
     */

    function withdrawAll(address _to) external onlyOwner {
        require(_to != address(0), "CANNOT WITHDRAW TO ZERO ADDRESS");
        uint256 contractBalance = address(this).balance;
        require(contractBalance > 0, "NO ETHER TO WITHDRAW");
        payable(_to).transfer(contractBalance);
        emit WithdrawAllEvent(_to, contractBalance);
    }

    /**
     * @dev Fallback function for receiving Ether
     */
    receive() external payable {
        emit ReceivedEther(msg.sender, msg.value);
    }
}

File 2 of 6 : IERC721.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

File 3 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

File 4 of 6 : MerkleProof.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

File 5 of 6 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 6 of 6 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_ape","type":"address"},{"internalType":"address","name":"_banana","type":"address"},{"internalType":"address","name":"_rng","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReceivedEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawAllEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"setMaxSupplyEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPriceEvent","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToHolderMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"apeToClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bananas","outputs":[{"internalType":"contract IPoisonedBananas","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyBananas","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyBananasHolders","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"apeId","type":"uint256"}],"name":"claimBanana","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"apeIds","type":"uint256[]"}],"name":"claimBananas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"apeIds","type":"uint256[]"}],"name":"getNotClaimedApes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isHolderSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"levelToClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lvl1Supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lvl2Odds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lvl2Supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lvl3Odds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lvl3Supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintMaxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"primeApeNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setHolderPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isSale","type":"bool"}],"name":"setIsHolderSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isSale","type":"bool"}],"name":"setIsSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"setLvl1Supply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOdds","type":"uint256"}],"name":"setLvl2Odds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"setLvl2Supply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOdds","type":"uint256"}],"name":"setLvl3Odds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"setLvl3Supply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplyLeft","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052611f2b600455611388600555610b95600655600e600755600360085561023960095567011b78950ea0e000600c55670214e8348c4f0000600d556001600f553480156200005057600080fd5b506040516200255938038062002559833981016040819052620000739162000199565b6200007e336200012c565b600454600754600654600554620000969190620001e3565b620000a29190620001e3565b14620000e95760405162461bcd60e51b815260206004820152601260248201527114dd5c1c1b1e481b9bdd0818dbdc9c9958dd60721b604482015260640160405180910390fd5b600180546001600160a01b039485166001600160a01b0319918216179091556002805493851693821693909317909255600380549190931691161790556200020a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200019457600080fd5b919050565b600080600060608486031215620001af57600080fd5b620001ba846200017c565b9250620001ca602085016200017c565b9150620001da604085016200017c565b90509250925092565b600082198211156200020557634e487b7160e01b600052601160045260246000fd5b500190565b61233f806200021a6000396000f3fe6080604052600436106102a45760003560e01c806391b7f5ed1161016e578063d48b81b9116100cb578063ef4b61f21161007f578063f8c1c18611610064578063f8c1c18614610742578063fa09e63014610761578063fdcf9d071461078157600080fd5b8063ef4b61f214610702578063f2fde38b1461072257600080fd5b8063dcff9a30116100b0578063dcff9a30146106b6578063e3900ad9146106cc578063eaaf4bb1146106ec57600080fd5b8063d48b81b914610680578063d5abeb01146106a057600080fd5b8063aba94bdf11610122578063be2c274d11610107578063be2c274d1461062b578063c164fcfb1461064b578063ca3026f01461065357600080fd5b8063aba94bdf146105de578063b24665e1146105fe57600080fd5b80639c404bd4116101535780639c404bd41461058e578063a035b1fe146105ae578063a8484fcc146105c457600080fd5b806391b7f5ed1461055857806396aa15c91461057857600080fd5b806346dfc31a1161021c5780636f8b44b0116101d0578063874bf4e5116101b5578063874bf4e5146104e257806389a7cba11461051a5780638da5cb5b1461053a57600080fd5b80636f8b44b0146104ad578063715018a6146104cd57600080fd5b80634f02c420116102015780634f02c4201461045457806355ea73281461046a57806363820f231461048057600080fd5b806346dfc31a146104285780634bc515321461043e57600080fd5b80630b74f6ee11610273578063123608301161025857806312360830146103b7578063150d6106146103db5780631fd02c3d146103fb57600080fd5b80630b74f6ee146103775780630ca154861461039757600080fd5b8063039b2ed7146102dd5780630881e017146102ff578063088a4ed0146103125780630a8676211461033257600080fd5b366102d857604051349033907fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf190600090a3005b600080fd5b3480156102e957600080fd5b506102fd6102f8366004612072565b610796565b005b6102fd61030d36600461209b565b6107fd565b34801561031e57600080fd5b506102fd61032d36600461209b565b610bc6565b34801561033e57600080fd5b5061036261034d36600461209b565b600a6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561038357600080fd5b506102fd61039236600461209b565b610c13565b3480156103a357600080fd5b506102fd6103b236600461209b565b610c60565b3480156103c357600080fd5b506103cd60065481565b60405190815260200161036e565b3480156103e757600080fd5b506102fd6103f636600461209b565b610cad565b34801561040757600080fd5b506103cd61041636600461209b565b600b6020526000908152604090205481565b34801561043457600080fd5b506103cd60095481565b34801561044a57600080fd5b506103cd60085481565b34801561046057600080fd5b506103cd600e5481565b34801561047657600080fd5b506103cd600c5481565b34801561048c57600080fd5b506103cd61049b3660046120c9565b60126020526000908152604090205481565b3480156104b957600080fd5b506102fd6104c836600461209b565b610cfa565b3480156104d957600080fd5b506102fd610d75565b3480156104ee57600080fd5b50600254610502906001600160a01b031681565b6040516001600160a01b03909116815260200161036e565b34801561052657600080fd5b506102fd61053536600461209b565b610dc9565b34801561054657600080fd5b506000546001600160a01b0316610502565b34801561056457600080fd5b506102fd61057336600461209b565b610e16565b34801561058457600080fd5b506103cd60075481565b34801561059a57600080fd5b50600154610502906001600160a01b031681565b3480156105ba57600080fd5b506103cd600d5481565b3480156105d057600080fd5b506010546103629060ff1681565b3480156105ea57600080fd5b506102fd6105f9366004612072565b610e91565b34801561060a57600080fd5b506103cd6106193660046120c9565b60116020526000908152604090205481565b34801561063757600080fd5b506102fd61064636600461209b565b610eec565b6102fd610f39565b34801561065f57600080fd5b5061067361066e3660046120e6565b611280565b60405161036e9190612196565b34801561068c57600080fd5b506102fd61069b36600461209b565b6113a8565b3480156106ac57600080fd5b506103cd60045481565b3480156106c257600080fd5b506103cd60055481565b3480156106d857600080fd5b506102fd6106e736600461209b565b6116a3565b3480156106f857600080fd5b506103cd600f5481565b34801561070e57600080fd5b506102fd61071d3660046120e6565b6116f0565b34801561072e57600080fd5b506102fd61073d3660046120c9565b611b51565b34801561074e57600080fd5b5060105461036290610100900460ff1681565b34801561076d57600080fd5b506102fd61077c3660046120c9565b611c21565b34801561078d57600080fd5b506103cd611d8b565b6000546001600160a01b031633146107e35760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064015b60405180910390fd5b601080549115156101000261ff0019909216919091179055565b6000811161084d5760405162461bcd60e51b815260206004820152601760248201527f4861766520746f20627579206d6f7265207468616e203000000000000000000060448201526064016107da565b600f543360009081526012602052604090205461086b9083906121bf565b11156108b95760405162461bcd60e51b815260206004820181905260248201527f4d696e7420616d6f756e742065786365656473206d617820666f72207573657260448201526064016107da565b60045481600e546108ca91906121bf565b11156109185760405162461bcd60e51b815260206004820181905260248201527f4d696e7420616d6f756e7420676f6573206f766572206d617820737570706c7960448201526064016107da565b80600d5461092691906121d7565b3410156109755760405162461bcd60e51b815260206004820152601660248201527f45746865722073656e74206e6f7420636f72726563740000000000000000000060448201526064016107da565b601054610100900460ff166109cc5760405162461bcd60e51b815260206004820152601060248201527f53616c65206e6f7420737461727465640000000000000000000000000000000060448201526064016107da565b33600090815260126020526040812080548392906109eb9084906121bf565b90915550600090508167ffffffffffffffff811115610a0c57610a0c6121f6565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060008267ffffffffffffffff811115610a5357610a536121f6565b604051908082528060200260200182016040528015610a7c578160200160208202803683370190505b50905060005b83811015610b16576000610aa33383600e54610a9e91906121bf565b611da2565b6000818152600b60205260408120805492935090610ac08361220c565b919050555080848381518110610ad857610ad8612225565b6020026020010181815250506001838381518110610af857610af8612225565b60209081029190910101525080610b0e8161220c565b915050610a82565b5082600e6000828254610b2991906121bf565b9091555050600254604051632bc8d03760e21b81526001600160a01b039091169063af2340dc90610b629085908590339060040161223b565b600060405180830381600087803b158015610b7c57600080fd5b505af1158015610b90573d6000803e3d6000fd5b50506040518592503391507f2499a5330ab0979cc612135e7883ebc3cd5c9f7a8508f042540c34723348f63290600090a3505050565b6000546001600160a01b03163314610c0e5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600f55565b6000546001600160a01b03163314610c5b5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600c55565b6000546001600160a01b03163314610ca85760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600955565b6000546001600160a01b03163314610cf55760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600555565b6000546001600160a01b03163314610d425760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600481905560405181907f115fc9a06617f7766b311b347c33a9f1136ab8eac32129631a9d1455f4a0fc3290600090a250565b6000546001600160a01b03163314610dbd5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b610dc7600061200a565b565b6000546001600160a01b03163314610e115760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600855565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600d81905560405181907fd4457f296563e8956d17d2424182ab4d5595d5f1512961dff3df11b9da9e916790600090a250565b6000546001600160a01b03163314610ed95760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b6010805460ff1916911515919091179055565b6000546001600160a01b03163314610f345760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600755565b600180546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc0919061227a565b1161100d5760405162461bcd60e51b815260206004820152601d60248201527f4861766520746f2062652061207072696d652061706520686f6c64657200000060448201526064016107da565b33600090815260116020526040902054156110905760405162461bcd60e51b815260206004820152602260248201527f43616e206f6e6c7920627579206f6e65206164646974696f6e616c2062616e6160448201527f6e6100000000000000000000000000000000000000000000000000000000000060648201526084016107da565b60045481600e546110a191906121bf565b11156110ef5760405162461bcd60e51b815260206004820181905260248201527f4d696e7420616d6f756e7420676f6573206f766572206d617820737570706c7960448201526064016107da565b600c543410156111415760405162461bcd60e51b815260206004820152601660248201527f45746865722073656e74206e6f7420636f72726563740000000000000000000060448201526064016107da565b60105460ff166111935760405162461bcd60e51b815260206004820152601060248201527f53616c65206e6f7420737461727465640000000000000000000000000000000060448201526064016107da565b33600081815260116020526040812060019055600e5490916111b491611da2565b6000818152600b602052604081208054929350906111d18361220c565b9091555050600e80549060006111e68361220c565b90915550506002546040516319708af560e01b8152600481018390523360248201526001600160a01b03909116906319708af590604401600060405180830381600087803b15801561123757600080fd5b505af115801561124b573d6000803e3d6000fd5b50506040518492503391507f2499a5330ab0979cc612135e7883ebc3cd5c9f7a8508f042540c34723348f63290600090a35050565b6060816112cf5760405162461bcd60e51b815260206004820152600f60248201527f4e6f2049445320737570706c696564000000000000000000000000000000000060448201526064016107da565b8160008167ffffffffffffffff8111156112eb576112eb6121f6565b604051908082528060200260200182016040528015611314578160200160208202803683370190505b5090506000805b8581101561139b57600087878381811061133757611337612225565b602090810292909201356000818152600a9093526040909220549192505060ff16611388578084848151811061136f5761136f612225565b6020908102919091010152826113848161220c565b9350505b50806113938161220c565b91505061131b565b5090925050505b92915050565b6002546001600160a01b03166114005760405162461bcd60e51b815260206004820152601760248201527f42616e616e6120636f6e7472616374206e6f742073657400000000000000000060448201526064016107da565b6001546001600160a01b03166114585760405162461bcd60e51b815260206004820152601460248201527f41706520636f6e7472616374206e6f742073657400000000000000000000000060448201526064016107da565b601054610100900460ff16158015611473575060105460ff16155b6114bf5760405162461bcd60e51b815260206004820152601060248201527f436c61696d696e672073746f707065640000000000000000000000000000000060448201526064016107da565b6001546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015611508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152c9190612293565b6001600160a01b0316146115825760405162461bcd60e51b815260206004820152601760248201527f53656e64657220646f6573206e6f74206f776e2061706500000000000000000060448201526064016107da565b6000818152600a602052604090205460ff16156115e15760405162461bcd60e51b815260206004820152601a60248201527f41706520616c726561647920636c61696d65642062616e616e6100000000000060448201526064016107da565b6000818152600a60205260408120805460ff191660011790556116043383611da2565b6000818152600b602052604081208054929350906116218361220c565b9091555050600e80549060006116368361220c565b90915550506002546040516319708af560e01b8152600481018390523360248201526001600160a01b03909116906319708af590604401600060405180830381600087803b15801561168757600080fd5b505af115801561169b573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146116eb5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600655565b6002546001600160a01b03166117485760405162461bcd60e51b815260206004820152601760248201527f42616e616e6120636f6e7472616374206e6f742073657400000000000000000060448201526064016107da565b6001546001600160a01b03166117a05760405162461bcd60e51b815260206004820152601460248201527f41706520636f6e7472616374206e6f742073657400000000000000000000000060448201526064016107da565b806117ed5760405162461bcd60e51b815260206004820152600f60248201527f4e6f2049647320737570706c696564000000000000000000000000000000000060448201526064016107da565b601054610100900460ff16158015611808575060105460ff16155b6118545760405162461bcd60e51b815260206004820152601060248201527f436c61696d696e672073746f707065640000000000000000000000000000000060448201526064016107da565b60008167ffffffffffffffff81111561186f5761186f6121f6565b604051908082528060200260200182016040528015611898578160200160208202803683370190505b50905060008267ffffffffffffffff8111156118b6576118b66121f6565b6040519080825280602002602001820160405280156118df578160200160208202803683370190505b50905060005b83811015611aca57600085858381811061190157611901612225565b6001546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e90602401602060405180830381865afa158015611958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197c9190612293565b6001600160a01b0316146119d25760405162461bcd60e51b815260206004820152601760248201527f53656e64657220646f6573206e6f74206f776e2061706500000000000000000060448201526064016107da565b6000818152600a602052604090205460ff1615611a315760405162461bcd60e51b815260206004820152601a60248201527f41706520616c726561647920636c61696d65642062616e616e6100000000000060448201526064016107da565b6000818152600a60205260408120805460ff19166001179055611a543383611da2565b6000818152600b60205260408120805492935090611a718361220c565b919050555080858481518110611a8957611a89612225565b6020026020010181815250506001848481518110611aa957611aa9612225565b60200260200101818152505050508080611ac29061220c565b9150506118e5565b5083839050600e6000828254611ae091906121bf565b9091555050600254604051632bc8d03760e21b81526001600160a01b039091169063af2340dc90611b199085908590339060040161223b565b600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b03163314611b995760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b6001600160a01b038116611c155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107da565b611c1e8161200a565b50565b6000546001600160a01b03163314611c695760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b6001600160a01b038116611cbf5760405162461bcd60e51b815260206004820152601f60248201527f43414e4e4f5420574954484452415720544f205a45524f20414444524553530060448201526064016107da565b4780611d0d5760405162461bcd60e51b815260206004820152601460248201527f4e4f20455448455220544f20574954484452415700000000000000000000000060448201526064016107da565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611d43573d6000803e3d6000fd5b50816001600160a01b03167f2bd20150a637d72a74539599f66637c3ec4f6d3807458bf9e002061053ae167c82604051611d7f91815260200190565b60405180910390a25050565b6000600e54600454611d9d91906122b0565b905090565b6003546040517ff84f420b0000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052600092839291169063f84f420b90604401602060405180830381865afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e34919061227a565b9050600060095482611e4691906122c7565b6000149050600060085483611e5b91906122c7565b159050600082158015611e6c575081155b600754600b6020527fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba91634546006547f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf54600554600080527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76549596509390921015939110159111158515611f385782611f0e5760029750505050505050506113a2565b81611f235760019750505050505050506113a2565b80611f385760009750505050505050506113a2565b8415611f7d5781611f535760019750505050505050506113a2565b80611f685760009750505050505050506113a2565b81611f7d5760029750505050505050506113a2565b8315611fc25780611f985760009750505050505050506113a2565b81611fad5760019750505050505050506113a2565b82611fc25760029750505050505050506113a2565b60405162461bcd60e51b815260206004820152600b60248201527f4c6f676963206572726f7200000000000000000000000000000000000000000060448201526064016107da565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561208457600080fd5b8135801515811461209457600080fd5b9392505050565b6000602082840312156120ad57600080fd5b5035919050565b6001600160a01b0381168114611c1e57600080fd5b6000602082840312156120db57600080fd5b8135612094816120b4565b600080602083850312156120f957600080fd5b823567ffffffffffffffff8082111561211157600080fd5b818501915085601f83011261212557600080fd5b81358181111561213457600080fd5b8660208260051b850101111561214957600080fd5b60209290920196919550909350505050565b600081518084526020808501945080840160005b8381101561218b5781518752958201959082019060010161216f565b509495945050505050565b602081526000612094602083018461215b565b634e487b7160e01b600052601160045260246000fd5b600082198211156121d2576121d26121a9565b500190565b60008160001904831182151516156121f1576121f16121a9565b500290565b634e487b7160e01b600052604160045260246000fd5b60006001820161221e5761221e6121a9565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60608152600061224e606083018661215b565b8281036020840152612260818661215b565b9150506001600160a01b0383166040830152949350505050565b60006020828403121561228c57600080fd5b5051919050565b6000602082840312156122a557600080fd5b8151612094816120b4565b6000828210156122c2576122c26121a9565b500390565b6000826122e457634e487b7160e01b600052601260045260246000fd5b50069056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122036ada6533d96c8065b127634f8d2e431671cd20b76510bcf560d1fbc4eaeb64264736f6c634300080d00330000000000000000000000006632a9d63e142f17a668064d41a21193b49b41a0000000000000000000000000b0c81c53b267a4cd6cbaf48d746d00e369d060a5000000000000000000000000fcec14b2e6a0e1faef6e4779daf2943f0cac471d

Deployed Bytecode

0x6080604052600436106102a45760003560e01c806391b7f5ed1161016e578063d48b81b9116100cb578063ef4b61f21161007f578063f8c1c18611610064578063f8c1c18614610742578063fa09e63014610761578063fdcf9d071461078157600080fd5b8063ef4b61f214610702578063f2fde38b1461072257600080fd5b8063dcff9a30116100b0578063dcff9a30146106b6578063e3900ad9146106cc578063eaaf4bb1146106ec57600080fd5b8063d48b81b914610680578063d5abeb01146106a057600080fd5b8063aba94bdf11610122578063be2c274d11610107578063be2c274d1461062b578063c164fcfb1461064b578063ca3026f01461065357600080fd5b8063aba94bdf146105de578063b24665e1146105fe57600080fd5b80639c404bd4116101535780639c404bd41461058e578063a035b1fe146105ae578063a8484fcc146105c457600080fd5b806391b7f5ed1461055857806396aa15c91461057857600080fd5b806346dfc31a1161021c5780636f8b44b0116101d0578063874bf4e5116101b5578063874bf4e5146104e257806389a7cba11461051a5780638da5cb5b1461053a57600080fd5b80636f8b44b0146104ad578063715018a6146104cd57600080fd5b80634f02c420116102015780634f02c4201461045457806355ea73281461046a57806363820f231461048057600080fd5b806346dfc31a146104285780634bc515321461043e57600080fd5b80630b74f6ee11610273578063123608301161025857806312360830146103b7578063150d6106146103db5780631fd02c3d146103fb57600080fd5b80630b74f6ee146103775780630ca154861461039757600080fd5b8063039b2ed7146102dd5780630881e017146102ff578063088a4ed0146103125780630a8676211461033257600080fd5b366102d857604051349033907fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf190600090a3005b600080fd5b3480156102e957600080fd5b506102fd6102f8366004612072565b610796565b005b6102fd61030d36600461209b565b6107fd565b34801561031e57600080fd5b506102fd61032d36600461209b565b610bc6565b34801561033e57600080fd5b5061036261034d36600461209b565b600a6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561038357600080fd5b506102fd61039236600461209b565b610c13565b3480156103a357600080fd5b506102fd6103b236600461209b565b610c60565b3480156103c357600080fd5b506103cd60065481565b60405190815260200161036e565b3480156103e757600080fd5b506102fd6103f636600461209b565b610cad565b34801561040757600080fd5b506103cd61041636600461209b565b600b6020526000908152604090205481565b34801561043457600080fd5b506103cd60095481565b34801561044a57600080fd5b506103cd60085481565b34801561046057600080fd5b506103cd600e5481565b34801561047657600080fd5b506103cd600c5481565b34801561048c57600080fd5b506103cd61049b3660046120c9565b60126020526000908152604090205481565b3480156104b957600080fd5b506102fd6104c836600461209b565b610cfa565b3480156104d957600080fd5b506102fd610d75565b3480156104ee57600080fd5b50600254610502906001600160a01b031681565b6040516001600160a01b03909116815260200161036e565b34801561052657600080fd5b506102fd61053536600461209b565b610dc9565b34801561054657600080fd5b506000546001600160a01b0316610502565b34801561056457600080fd5b506102fd61057336600461209b565b610e16565b34801561058457600080fd5b506103cd60075481565b34801561059a57600080fd5b50600154610502906001600160a01b031681565b3480156105ba57600080fd5b506103cd600d5481565b3480156105d057600080fd5b506010546103629060ff1681565b3480156105ea57600080fd5b506102fd6105f9366004612072565b610e91565b34801561060a57600080fd5b506103cd6106193660046120c9565b60116020526000908152604090205481565b34801561063757600080fd5b506102fd61064636600461209b565b610eec565b6102fd610f39565b34801561065f57600080fd5b5061067361066e3660046120e6565b611280565b60405161036e9190612196565b34801561068c57600080fd5b506102fd61069b36600461209b565b6113a8565b3480156106ac57600080fd5b506103cd60045481565b3480156106c257600080fd5b506103cd60055481565b3480156106d857600080fd5b506102fd6106e736600461209b565b6116a3565b3480156106f857600080fd5b506103cd600f5481565b34801561070e57600080fd5b506102fd61071d3660046120e6565b6116f0565b34801561072e57600080fd5b506102fd61073d3660046120c9565b611b51565b34801561074e57600080fd5b5060105461036290610100900460ff1681565b34801561076d57600080fd5b506102fd61077c3660046120c9565b611c21565b34801561078d57600080fd5b506103cd611d8b565b6000546001600160a01b031633146107e35760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064015b60405180910390fd5b601080549115156101000261ff0019909216919091179055565b6000811161084d5760405162461bcd60e51b815260206004820152601760248201527f4861766520746f20627579206d6f7265207468616e203000000000000000000060448201526064016107da565b600f543360009081526012602052604090205461086b9083906121bf565b11156108b95760405162461bcd60e51b815260206004820181905260248201527f4d696e7420616d6f756e742065786365656473206d617820666f72207573657260448201526064016107da565b60045481600e546108ca91906121bf565b11156109185760405162461bcd60e51b815260206004820181905260248201527f4d696e7420616d6f756e7420676f6573206f766572206d617820737570706c7960448201526064016107da565b80600d5461092691906121d7565b3410156109755760405162461bcd60e51b815260206004820152601660248201527f45746865722073656e74206e6f7420636f72726563740000000000000000000060448201526064016107da565b601054610100900460ff166109cc5760405162461bcd60e51b815260206004820152601060248201527f53616c65206e6f7420737461727465640000000000000000000000000000000060448201526064016107da565b33600090815260126020526040812080548392906109eb9084906121bf565b90915550600090508167ffffffffffffffff811115610a0c57610a0c6121f6565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060008267ffffffffffffffff811115610a5357610a536121f6565b604051908082528060200260200182016040528015610a7c578160200160208202803683370190505b50905060005b83811015610b16576000610aa33383600e54610a9e91906121bf565b611da2565b6000818152600b60205260408120805492935090610ac08361220c565b919050555080848381518110610ad857610ad8612225565b6020026020010181815250506001838381518110610af857610af8612225565b60209081029190910101525080610b0e8161220c565b915050610a82565b5082600e6000828254610b2991906121bf565b9091555050600254604051632bc8d03760e21b81526001600160a01b039091169063af2340dc90610b629085908590339060040161223b565b600060405180830381600087803b158015610b7c57600080fd5b505af1158015610b90573d6000803e3d6000fd5b50506040518592503391507f2499a5330ab0979cc612135e7883ebc3cd5c9f7a8508f042540c34723348f63290600090a3505050565b6000546001600160a01b03163314610c0e5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600f55565b6000546001600160a01b03163314610c5b5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600c55565b6000546001600160a01b03163314610ca85760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600955565b6000546001600160a01b03163314610cf55760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600555565b6000546001600160a01b03163314610d425760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600481905560405181907f115fc9a06617f7766b311b347c33a9f1136ab8eac32129631a9d1455f4a0fc3290600090a250565b6000546001600160a01b03163314610dbd5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b610dc7600061200a565b565b6000546001600160a01b03163314610e115760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600855565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600d81905560405181907fd4457f296563e8956d17d2424182ab4d5595d5f1512961dff3df11b9da9e916790600090a250565b6000546001600160a01b03163314610ed95760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b6010805460ff1916911515919091179055565b6000546001600160a01b03163314610f345760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600755565b600180546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc0919061227a565b1161100d5760405162461bcd60e51b815260206004820152601d60248201527f4861766520746f2062652061207072696d652061706520686f6c64657200000060448201526064016107da565b33600090815260116020526040902054156110905760405162461bcd60e51b815260206004820152602260248201527f43616e206f6e6c7920627579206f6e65206164646974696f6e616c2062616e6160448201527f6e6100000000000000000000000000000000000000000000000000000000000060648201526084016107da565b60045481600e546110a191906121bf565b11156110ef5760405162461bcd60e51b815260206004820181905260248201527f4d696e7420616d6f756e7420676f6573206f766572206d617820737570706c7960448201526064016107da565b600c543410156111415760405162461bcd60e51b815260206004820152601660248201527f45746865722073656e74206e6f7420636f72726563740000000000000000000060448201526064016107da565b60105460ff166111935760405162461bcd60e51b815260206004820152601060248201527f53616c65206e6f7420737461727465640000000000000000000000000000000060448201526064016107da565b33600081815260116020526040812060019055600e5490916111b491611da2565b6000818152600b602052604081208054929350906111d18361220c565b9091555050600e80549060006111e68361220c565b90915550506002546040516319708af560e01b8152600481018390523360248201526001600160a01b03909116906319708af590604401600060405180830381600087803b15801561123757600080fd5b505af115801561124b573d6000803e3d6000fd5b50506040518492503391507f2499a5330ab0979cc612135e7883ebc3cd5c9f7a8508f042540c34723348f63290600090a35050565b6060816112cf5760405162461bcd60e51b815260206004820152600f60248201527f4e6f2049445320737570706c696564000000000000000000000000000000000060448201526064016107da565b8160008167ffffffffffffffff8111156112eb576112eb6121f6565b604051908082528060200260200182016040528015611314578160200160208202803683370190505b5090506000805b8581101561139b57600087878381811061133757611337612225565b602090810292909201356000818152600a9093526040909220549192505060ff16611388578084848151811061136f5761136f612225565b6020908102919091010152826113848161220c565b9350505b50806113938161220c565b91505061131b565b5090925050505b92915050565b6002546001600160a01b03166114005760405162461bcd60e51b815260206004820152601760248201527f42616e616e6120636f6e7472616374206e6f742073657400000000000000000060448201526064016107da565b6001546001600160a01b03166114585760405162461bcd60e51b815260206004820152601460248201527f41706520636f6e7472616374206e6f742073657400000000000000000000000060448201526064016107da565b601054610100900460ff16158015611473575060105460ff16155b6114bf5760405162461bcd60e51b815260206004820152601060248201527f436c61696d696e672073746f707065640000000000000000000000000000000060448201526064016107da565b6001546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015611508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152c9190612293565b6001600160a01b0316146115825760405162461bcd60e51b815260206004820152601760248201527f53656e64657220646f6573206e6f74206f776e2061706500000000000000000060448201526064016107da565b6000818152600a602052604090205460ff16156115e15760405162461bcd60e51b815260206004820152601a60248201527f41706520616c726561647920636c61696d65642062616e616e6100000000000060448201526064016107da565b6000818152600a60205260408120805460ff191660011790556116043383611da2565b6000818152600b602052604081208054929350906116218361220c565b9091555050600e80549060006116368361220c565b90915550506002546040516319708af560e01b8152600481018390523360248201526001600160a01b03909116906319708af590604401600060405180830381600087803b15801561168757600080fd5b505af115801561169b573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146116eb5760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b600655565b6002546001600160a01b03166117485760405162461bcd60e51b815260206004820152601760248201527f42616e616e6120636f6e7472616374206e6f742073657400000000000000000060448201526064016107da565b6001546001600160a01b03166117a05760405162461bcd60e51b815260206004820152601460248201527f41706520636f6e7472616374206e6f742073657400000000000000000000000060448201526064016107da565b806117ed5760405162461bcd60e51b815260206004820152600f60248201527f4e6f2049647320737570706c696564000000000000000000000000000000000060448201526064016107da565b601054610100900460ff16158015611808575060105460ff16155b6118545760405162461bcd60e51b815260206004820152601060248201527f436c61696d696e672073746f707065640000000000000000000000000000000060448201526064016107da565b60008167ffffffffffffffff81111561186f5761186f6121f6565b604051908082528060200260200182016040528015611898578160200160208202803683370190505b50905060008267ffffffffffffffff8111156118b6576118b66121f6565b6040519080825280602002602001820160405280156118df578160200160208202803683370190505b50905060005b83811015611aca57600085858381811061190157611901612225565b6001546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e90602401602060405180830381865afa158015611958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197c9190612293565b6001600160a01b0316146119d25760405162461bcd60e51b815260206004820152601760248201527f53656e64657220646f6573206e6f74206f776e2061706500000000000000000060448201526064016107da565b6000818152600a602052604090205460ff1615611a315760405162461bcd60e51b815260206004820152601a60248201527f41706520616c726561647920636c61696d65642062616e616e6100000000000060448201526064016107da565b6000818152600a60205260408120805460ff19166001179055611a543383611da2565b6000818152600b60205260408120805492935090611a718361220c565b919050555080858481518110611a8957611a89612225565b6020026020010181815250506001848481518110611aa957611aa9612225565b60200260200101818152505050508080611ac29061220c565b9150506118e5565b5083839050600e6000828254611ae091906121bf565b9091555050600254604051632bc8d03760e21b81526001600160a01b039091169063af2340dc90611b199085908590339060040161223b565b600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b03163314611b995760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b6001600160a01b038116611c155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107da565b611c1e8161200a565b50565b6000546001600160a01b03163314611c695760405162461bcd60e51b815260206004820181905260248201526000805160206122ea83398151915260448201526064016107da565b6001600160a01b038116611cbf5760405162461bcd60e51b815260206004820152601f60248201527f43414e4e4f5420574954484452415720544f205a45524f20414444524553530060448201526064016107da565b4780611d0d5760405162461bcd60e51b815260206004820152601460248201527f4e4f20455448455220544f20574954484452415700000000000000000000000060448201526064016107da565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611d43573d6000803e3d6000fd5b50816001600160a01b03167f2bd20150a637d72a74539599f66637c3ec4f6d3807458bf9e002061053ae167c82604051611d7f91815260200190565b60405180910390a25050565b6000600e54600454611d9d91906122b0565b905090565b6003546040517ff84f420b0000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052600092839291169063f84f420b90604401602060405180830381865afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e34919061227a565b9050600060095482611e4691906122c7565b6000149050600060085483611e5b91906122c7565b159050600082158015611e6c575081155b600754600b6020527fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba91634546006547f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf54600554600080527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76549596509390921015939110159111158515611f385782611f0e5760029750505050505050506113a2565b81611f235760019750505050505050506113a2565b80611f385760009750505050505050506113a2565b8415611f7d5781611f535760019750505050505050506113a2565b80611f685760009750505050505050506113a2565b81611f7d5760029750505050505050506113a2565b8315611fc25780611f985760009750505050505050506113a2565b81611fad5760019750505050505050506113a2565b82611fc25760029750505050505050506113a2565b60405162461bcd60e51b815260206004820152600b60248201527f4c6f676963206572726f7200000000000000000000000000000000000000000060448201526064016107da565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561208457600080fd5b8135801515811461209457600080fd5b9392505050565b6000602082840312156120ad57600080fd5b5035919050565b6001600160a01b0381168114611c1e57600080fd5b6000602082840312156120db57600080fd5b8135612094816120b4565b600080602083850312156120f957600080fd5b823567ffffffffffffffff8082111561211157600080fd5b818501915085601f83011261212557600080fd5b81358181111561213457600080fd5b8660208260051b850101111561214957600080fd5b60209290920196919550909350505050565b600081518084526020808501945080840160005b8381101561218b5781518752958201959082019060010161216f565b509495945050505050565b602081526000612094602083018461215b565b634e487b7160e01b600052601160045260246000fd5b600082198211156121d2576121d26121a9565b500190565b60008160001904831182151516156121f1576121f16121a9565b500290565b634e487b7160e01b600052604160045260246000fd5b60006001820161221e5761221e6121a9565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60608152600061224e606083018661215b565b8281036020840152612260818661215b565b9150506001600160a01b0383166040830152949350505050565b60006020828403121561228c57600080fd5b5051919050565b6000602082840312156122a557600080fd5b8151612094816120b4565b6000828210156122c2576122c26121a9565b500390565b6000826122e457634e487b7160e01b600052601260045260246000fd5b50069056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122036ada6533d96c8065b127634f8d2e431671cd20b76510bcf560d1fbc4eaeb64264736f6c634300080d0033

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

0000000000000000000000006632a9d63e142f17a668064d41a21193b49b41a0000000000000000000000000b0c81c53b267a4cd6cbaf48d746d00e369d060a5000000000000000000000000fcec14b2e6a0e1faef6e4779daf2943f0cac471d

-----Decoded View---------------
Arg [0] : _ape (address): 0x6632a9d63E142F17a668064D41A21193b49B41a0
Arg [1] : _banana (address): 0xb0c81c53B267A4CD6cBaf48d746D00e369D060A5
Arg [2] : _rng (address): 0xFCEc14B2e6a0e1fAEF6e4779daF2943F0cAc471d

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006632a9d63e142f17a668064d41a21193b49b41a0
Arg [1] : 000000000000000000000000b0c81c53b267a4cd6cbaf48d746d00e369d060a5
Arg [2] : 000000000000000000000000fcec14b2e6a0e1faef6e4779daf2943f0cac471d


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.