Contract 0xD73Dc156becA0488d631cA9F6dbe7D44747D46ee

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xebaa6de1b570924566c3c05d56ae4c8ff7fd5e251e70e4ee11e0b9f1c51bbd0fCreate Auction69011642021-04-26 12:19:07173 days 3 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00154265
0x78e6e2c6cc976f9a671d40df3ef8db7fe692fcd6a05f63030853e11fee62bda8Claim Free Token...68954112021-04-26 7:30:53173 days 7 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.000523095
0x6bc0466ba930937aebec0e42fbb9b8d967d2516b921a76257d6a5b62ccbf4e45Claim Free Token...68954092021-04-26 7:30:47173 days 7 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.000523095
0x5eba765314a548a1cf61662b623b9c7ae20a019ceec920d08a57daeb0379cc3fBid68953722021-04-26 7:28:56173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0.0008 BNB0.00067846
0xa3fcfee6141b5a97d7d95a106fbc2691acf968ed6a410ce200bffeaf1cc43477Bid68953702021-04-26 7:28:50173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0.0007 BNB0.000305435
0x19314551cade4aaeb336bb9677e134cbea46cc0a7f7f59bf37fffc92707739cdBid68953682021-04-26 7:28:44173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0.0006 BNB0.000305435
0xf81119fac2f86ba05617a8fac924ef92dc5882c348f710dd55f2df5aa701f672Bid68953662021-04-26 7:28:38173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0.0005 BNB0.000305435
0x8cac09fe1e7eee8345890137f1168fa785af578213737417111fc4c9b409369aBid68953642021-04-26 7:28:32173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0.0004 BNB0.000305435
0x8d415c71b72e68c92da166bcb5337ad2f3e9a24d00523bcce1d023af4951f414Bid68953612021-04-26 7:28:23173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0.0003 BNB0.000476435
0xa9b541fb262afba09fd46f4bdc62ead8b6396493f247f7a003a799177e672a84Create Auction68953592021-04-26 7:28:17173 days 8 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00152153
0x842e8ffa57df7ec025fc7d7cbf7ab1358b8b15ebd0e43fed6935d2bc02c5df43Cancel Auction68953542021-04-26 7:28:02173 days 8 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00048289
0xcda010ec22811afa568cc7d894d7e7b0ac95e4b872ca870d88d6686e705d7a22Create Auction68953522021-04-26 7:27:56173 days 8 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00152153
0xed39c71427e655730f3e99084134e23e74535d7b68841bb23e2c12592755b91fBid USD68951362021-04-26 7:17:08173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00114441
0xc79f9ec093b541f68384a210611f849c3ca1f43b56fce7656919ef5dca6cc1d0Bid USD68951342021-04-26 7:17:02173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00039668
0x028b197aa45aea36135272943bfcc9770ae23bfbc2a5f47a4624d57d6c095489Bid USD68951322021-04-26 7:16:56173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00039668
0x3c605bfc7f82a1ae5b6576d45773864663a7226a7b2cd59b8c0ddf39f0f64acbBid USD68951302021-04-26 7:16:50173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00039662
0x11ded8165e19a0d39786185ca4edd3bee07da21a2aa976ec55ed758492e7043fBid USD68951282021-04-26 7:16:44173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00039668
0x0a6cf449a1d2cea52cb8b8b3dd551415d990cfeae6792e480215d7ffa0cf0108Bid USD68951262021-04-26 7:16:38173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00039668
0xd46a009263a79efac32ac88fcff01bfd729adfec20ab52567e312095dbabe703Bid USD68951242021-04-26 7:16:32173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00039668
0x9ec7e863dabb635df603265e6ac32dbbcd6b602ebcf9bd39f153c826dedac9dcBid USD68951222021-04-26 7:16:26173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00039662
0x8d5925430ec0535b8ef9e2d316b85741f9810be66af00c767f0dac461cda17e1Bid USD68951202021-04-26 7:16:20173 days 8 hrs ago0x3917ef75c96e35d9969fcd301f474920c2d9ca0c IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00056768
0x35feb99878498e7f696e3536e5cb1be36e66e68035adb14e1943236c397e7895Create Auction68951172021-04-26 7:16:11173 days 8 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00161759
0x00ec01aa40648b792d856a1788f48a8e12adc82a0b3dce14c3aa5bfe142d929eCancel Auction68951132021-04-26 7:15:59173 days 8 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00049339
0xb2e4440e5b7edbe61b4f9a445edcca413615bd5b285a91f6c257effc331b053aCreate Auction68951112021-04-26 7:15:53173 days 8 hrs ago0x51b486692321af984bc75d105c54419e35d963b9 IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0 BNB0.00161759
0x1f5e571de4f69c39782fbf68fb0b816790fed9b4fa0b71083557ee4d2cd6f187Purchase Tokens68947502021-04-26 6:57:50173 days 8 hrs agoOpenBiSea: Deployer IN  0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0.11 BNB0.00022998
[ Download CSV Export 
Latest 9 internal transactions
Parent Txn Hash Block From To Value
0x52a3d55c52a383255722ae39a62ec785f2196687a40895a4b9f9ef51c1f498f069853932021-04-29 11:04:14170 days 4 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46eeOpenBiSea: Deployer0.109 BNB
0x67e29eb3d904f35a82f7b8c79a7eda1a26f3441bbd6e80a2ec767d18a29510de68956912021-04-26 7:44:53173 days 7 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46eeOpenBiSea: Deployer0.001 BNB
0x5eba765314a548a1cf61662b623b9c7ae20a019ceec920d08a57daeb0379cc3f68953722021-04-26 7:28:56173 days 8 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0x51b486692321af984bc75d105c54419e35d963b90.00076 BNB
0x5eba765314a548a1cf61662b623b9c7ae20a019ceec920d08a57daeb0379cc3f68953722021-04-26 7:28:56173 days 8 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0x027d865ef0b4d1372affe941272f47e013cac6690.00004 BNB
0xa3fcfee6141b5a97d7d95a106fbc2691acf968ed6a410ce200bffeaf1cc4347768953702021-04-26 7:28:50173 days 8 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0007 BNB
0x19314551cade4aaeb336bb9677e134cbea46cc0a7f7f59bf37fffc92707739cd68953682021-04-26 7:28:44173 days 8 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0006 BNB
0xf81119fac2f86ba05617a8fac924ef92dc5882c348f710dd55f2df5aa701f67268953662021-04-26 7:28:38173 days 8 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0005 BNB
0x8cac09fe1e7eee8345890137f1168fa785af578213737417111fc4c9b409369a68953642021-04-26 7:28:32173 days 8 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0004 BNB
0x8d415c71b72e68c92da166bcb5337ad2f3e9a24d00523bcce1d023af4951f41468953612021-04-26 7:28:23173 days 8 hrs ago 0xd73dc156beca0488d631ca9f6dbe7d44747d46ee0x3917ef75c96e35d9969fcd301f474920c2d9ca0c0.0003 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OpenBiSea

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 16 : Context.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
contract Context {
    constructor () internal { }
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 2 of 16 : OpenBiSea.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;

import "./access/PoolRoles.sol";
import "./interface/IPoolRegistry.sol";
import "./interface/IAssetsManageTeam.sol";
import "./interface/IERC20.sol";
import "./access/PoolRoles.sol";
import "./math/SafeMath.sol";
//import "./interface/IERC721.sol";
//import "./interface/IERC1155.sol";
import "./utils/EnumerableUintSet.sol";
import "./interface/IOpenBiSeaAuction.sol";
import "./access/TeamRole.sol";

//import "./interface/IERC721Receiver.sol";
//import "./interface/IERC1155Receiver.sol";

contract OpenBiSea is PoolRoles,TeamRole  {
    using SafeMath for uint256;
    using EnumerableUintSet for EnumerableUintSet.UintSet;

    event Deposit(address indexed from, uint256 value);
    event DebugWithdrawLPartner(address sender,address owner, uint256 getDepositLengthSender, uint256 getDepositLengthOwner,uint256 totalAmountReturn,uint256 indexesDepositLength,uint256 balanceThis);
    string private _name;
    bool private _isPublicPool = true;
    address private _auction;
    address private _busdContract;
    address private _token;
    uint256 private _lockPeriod;
    uint256 private _rate;
    uint256 private _poolValueUSD = 0;
    uint256 private _poolValue = 0;
    string private _proofOfValue = "nothing";
    uint256 private _depositFixedFee;
    uint256 private _referralDepositFee;
    uint256 private _auctionCreationFeeMultiplier;
    uint256 private _auctionContractFeeMultiplier;
    uint256 private _totalIncome;
    uint256 private _premiumFee;
    struct DepositToPool {
        uint256 amount;          // Amount of funds deposited
        uint256 time;            // Deposit time
        uint256 lock_period;     // Asset lock time
        bool refund_authorize;   // Are assets unlocked for withdrawal
        uint256 amountWithdrawal;
        address investedToken;
    }
    mapping(address => DepositToPool[]) private _deposites;
    mapping(address => address) private _referrals;

//    mapping(address => uint256) private _consumersRevenueAmount;

    IAssetsManageTeam private _assetsManageTeam;
    IPoolRegistry private _poolRegistry;
    modifier onlyAdmin(address sender) {
        if(hasRole(GENERAL_PARTNER_ROLE, sender) || hasRole(SUPER_ADMIN_ROLE, sender) || _poolRegistry.isTeam(sender)) {
            _;
        } else {
            revert("The sender does not have permission");
        }
    }
    address private _tokenForTokensale;
    uint256 private _initialBalance;
    constructor (
        address tokenForTokensale,
        string memory name,
        uint256 locked,
        uint256 depositFixedFee,
        uint256 referralDepositFee,
        uint256 auctionCreationFeeMultiplier,
        uint256 auctionContractFeeMultiplier,
        address superAdmin,
        address gPartner,
        address lPartner,
        address team,
        address poolRegistry,
        address returnInvestmentLpartner,
        IAssetsManageTeam assetsManageTeam,
        uint256 initialBalance,
        address busdContract
    ) public {
        _name = name;
        _tokenForTokensale = tokenForTokensale;
        _lockPeriod = locked;
        _depositFixedFee = depositFixedFee;
        _referralDepositFee = referralDepositFee;
        _auctionCreationFeeMultiplier = auctionCreationFeeMultiplier;
        _auctionContractFeeMultiplier = auctionContractFeeMultiplier;
        _assetsManageTeam = assetsManageTeam;
        _poolRegistry = IPoolRegistry(poolRegistry);
        _initialBalance = initialBalance;
        _busdContract = busdContract;
        PoolRoles.addAdmin(SUPER_ADMIN_ROLE, msg.sender);
        PoolRoles.addAdmin(SUPER_ADMIN_ROLE, superAdmin);
        PoolRoles.addAdmin(SUPER_ADMIN_ROLE, poolRegistry);
        PoolRoles.finalize();
        grantRole(GENERAL_PARTNER_ROLE, gPartner);
        grantRole(LIMITED_PARTNER_ROLE, lPartner);
        grantRole(STARTUP_TEAM_ROLE, team);
        grantRole(POOL_REGISTRY, poolRegistry);
        grantRole(RETURN_INVESTMENT_LPARTNER, returnInvestmentLpartner);
    }
    function getInfoPool() public view returns( string memory name,bool isPublicPool,address tokenForTokensale,uint256 locked,uint256 initialBalance)
    {
        return ( _name,_isPublicPool,_tokenForTokensale,_lockPeriod, _initialBalance);
    }
    receive() external payable {}
    function getDeposit(address owner, uint256 index) public view returns(uint256 amount, uint256 time, uint256 lock_period, bool refund_authorize, uint256 amountWithdrawal, address investedToken) {
        return ( _deposites[owner][index].amount, _deposites[owner][index].time,_deposites[owner][index].lock_period, _deposites[owner][index].refund_authorize, _deposites[owner][index].amountWithdrawal, _deposites[owner][index].investedToken);
    }
    function getDepositLength(address owner) public view returns(uint256) {
        return (_deposites[owner].length);
    }
    function getReferral(address lPartner) public view returns (address) {
        return _referrals[lPartner];
    }
    function getInfoPoolFees() public view returns(uint256 rate, uint256 depositFixedFee, uint256 referralDepositFee, uint256 auctionCreationFeeMultiplier, uint256 auctionContractFeeMultiplier, uint256 totalIncome, uint256 premiumFee)
    {
        return (_rate, _depositFixedFee, _referralDepositFee, _auctionCreationFeeMultiplier, _auctionContractFeeMultiplier, _totalIncome, _premiumFee);
    }
    function _approveWithdrawLpartner(address lPartner, uint256 index, uint256 amount, address investedToken) external onlyReturnsInvestmentLpartner returns (bool) {
        _deposites[lPartner][index].refund_authorize = true;
        _deposites[lPartner][index].amountWithdrawal = amount;
        _deposites[lPartner][index].investedToken = investedToken;
        return true;
    }
    function _depositPoolRegistry(address sender, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(LIMITED_PARTNER_ROLE, sender), "InvestmentPool: the sender does not have permission");
        return _deposit(sender, amount);
    }
    function _withdrawTeam (address payable sender, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(STARTUP_TEAM_ROLE, sender), "InvestmentPool: the sender does not have permission");
        _assetsManageTeam._withdraw(address(this), sender, amount);
        sender.transfer(amount);
        return true;
    }
    function _withdrawTokensToStartup(address payable sender,address token, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(STARTUP_TEAM_ROLE, sender), "InvestmentPool: the sender does not have permission");
        _assetsManageTeam._withdrawTokensToStartup(address(this),token, sender, amount);
        IERC20(token).transfer(sender, amount);
        return true;
    }
    function _returnsInTokensFromTeam(address payable sender,address token, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(STARTUP_TEAM_ROLE, sender), "InvestmentPool: the sender does not have permission");
        IERC20(token).transferFrom(sender, address(this), amount);
        return true;
    }
    function _withdrawLPartner(address payable sender) external onlyPoolRegistry returns (bool, uint256, address) {
        require(hasRole(LIMITED_PARTNER_ROLE, sender), "InvestmentPool: the sender does not have permission");
        uint256 totalAmountReturn = 0;
        address token = address(0);
        uint256 lengthSender = getDepositLength(sender);
        bool result = false;
        for (uint256 i = 0; i < lengthSender; i++) {
            DepositToPool storage deposit = _deposites[sender][i];
            if (deposit.refund_authorize) {
                token = deposit.investedToken;
                if (deposit.amountWithdrawal > 0) {
                    if (token == address(0)) {
                        sender.transfer(deposit.amountWithdrawal);
                        totalAmountReturn = totalAmountReturn.add(deposit.amountWithdrawal);
                    } else {
                        IERC20(token).transfer(sender, deposit.amountWithdrawal);
                    }
                }
                _deposites[sender][i].refund_authorize = false;
                _deposites[sender][i].amountWithdrawal = 0;
            }
        }
        return (result,totalAmountReturn,token);
    }
    function _withdrawSuperAdmin(address payable sender,address token, uint256 amount) external onlyPoolRegistry returns (bool) {
        require(hasRole(SUPER_ADMIN_ROLE, sender), "InvestmentPool: the sender does not have permission");
        if (amount > 0) {
            if (token == address(0)) {
                sender.transfer(amount);
                return true;
            } else {
                IERC20(token).transfer(sender, amount);
                return true;
            }
        }
        return false;
    }
    function _activateDepositToPool() external onlyPoolRegistry returns (bool) {
        require(!_isPublicPool, "InvestmentPool: the pool is already activated");
        _isPublicPool = true;
        return true;
    }
    function _disactivateDepositToPool() external onlyPoolRegistry returns (bool) {
        require(_isPublicPool, "InvestmentPool: the pool is already deactivated");
        _isPublicPool = false;
        return true;
    }
    function _setReferral(address sender, address lPartner, address referral) external onlyPoolRegistry onlyAdmin(sender) returns (bool) {
        _referrals[lPartner] = referral;
        return true;
    }
    function _updatePool(string calldata name, bool isPublicPool, uint256 locked, uint256 depositFixedFee, uint256 referralDepositFee, uint256 auctionCreationFeeMultiplier, uint256 auctionContractFeeMultiplier) external onlyPoolRegistry returns (bool) {
        _name = name;
        _isPublicPool = isPublicPool;
        _lockPeriod = locked;
        _depositFixedFee = depositFixedFee;
        _referralDepositFee = referralDepositFee;
        _auctionCreationFeeMultiplier = auctionCreationFeeMultiplier;
        _auctionContractFeeMultiplier = auctionContractFeeMultiplier;
        return true;
    }
    function _setRate(uint256 rate) external onlyPoolRegistry returns (bool) {
        _rate = rate;
        return true;
    }
    function _setPoolValues(uint256 poolValueUSD,uint256 poolValue,string calldata proofOfValue) external onlyPoolRegistry returns (bool) {
        _poolValueUSD = poolValueUSD;
        _poolValue = poolValue;
        _proofOfValue = proofOfValue;
        return true;
    }
    function _setAuction(address newAuction) public onlyTeam {
        _auction = newAuction;
    }
    function auction() public view returns (address)  {
        return _auction;
    }
    function getPoolValues() public view returns(uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue)
    {
        return (_poolValueUSD, _poolValue, _proofOfValue);
    }
    function _depositInvestmentInTokensToPool(address payable sender, uint256 amount, address token) external onlyPoolRegistry returns (bool) {
        require(hasRole(LIMITED_PARTNER_ROLE, sender), "InvestmentPool: the sender does not have permission");
        uint256 depositFee = amount.mul(_depositFixedFee).div(100);
        uint256 depositFeeReferrer = amount.mul(_referralDepositFee).div(100);
        uint256 totalDeposit = 0;
        if (_referrals[sender] != address(0)) {
            totalDeposit = amount.sub(depositFee).sub(depositFeeReferrer);
        } else {
            totalDeposit = amount.sub(depositFee);
        }
        _deposites[sender].push(DepositToPool(totalDeposit, block.timestamp, _lockPeriod, false, 0, token));
        return true;
    }
    uint256 private initialPriceInt = 88800000000000000;// 0.0888 BNB one token
    function getInitialPriceInt() public view returns (uint256)  {
        return initialPriceInt;
    }

//    uint256 private _tokensaleTotalAmount = (10 ** uint256(18)).mul(8000);// 8000 obs
    uint256 private _tokensaleTotalSold;

    function purchaseTokensQuantityFor(uint256 amount) public view returns (uint256,uint256) {
        uint256 delta = _initialBalance.sub(_tokensaleTotalSold);
        uint256 newPrice = initialPriceInt.mul(_initialBalance).div(delta);
        return (amount.mul(10 ** uint256(18)).div(newPrice),_initialBalance.sub(_tokensaleTotalSold));
    }

    function purchaseTokens() public payable returns (uint256) {
        require(msg.value > 100000000000000000, "TokensalePool: minimal purchase 0.1BNB.");
        uint256 amountTokens;
        uint256 balance;
        (amountTokens,balance) = purchaseTokensQuantityFor(msg.value);
        require(amountTokens > 0, "TokensalePool: we can't sell 0 tokens.");
        require(amountTokens < balance.div(3), "TokensalePool: we can't sell more than 30% from one transaction. Please decrease investment amount.");
        IERC20(_tokenForTokensale).transfer(msg.sender, amountTokens);
        _tokensaleTotalSold.add(amountTokens);
        return amountTokens;
    }
    function _deposit(address sender, uint256 amount) private returns (bool) {
        require(_isPublicPool, "InvestmentPool: pool deposit blocked");
        address payable team = payable(getRoleMember(GENERAL_PARTNER_ROLE,0));
        uint256 depositFee = amount.mul(_depositFixedFee).div(100);
        uint256 depositFeeReferrer = amount.mul(_referralDepositFee).div(100);
        uint256 totalDeposit = 0;
        if (_referrals[sender] != address(0)) {
            payable(_referrals[sender]).transfer(depositFeeReferrer);
            team.transfer(depositFee);
            totalDeposit = amount.sub(depositFee).sub(depositFeeReferrer);
        } else {
            team.transfer(depositFee);
            totalDeposit = amount.sub(depositFee);
        }
        _deposites[sender].push(DepositToPool(totalDeposit, block.timestamp, _lockPeriod, false, 0, address(0)));
        _totalIncome = _totalIncome.add(amount);
        emit Deposit(sender, amount);
        return true;
    }
    function _transferGeneralPartner(uint256 amount) private returns (bool) {
        address payable gPartner = payable(getMembersRole(GENERAL_PARTNER_ROLE)[0]);
        gPartner.transfer(amount);
        return true;
    }
    function _getTokenAmount(uint256 weiAmount) public view returns (uint256) {
        uint8 DECIMALS = IERC20(_token).decimals();
        return (weiAmount.mul(_rate)).div(10 ** uint256(DECIMALS));
    }
    function isContract(address _addr) private view returns (bool is_contract) {
        uint length;
        assembly {
            length := extcodesize(_addr)
        }
        return (length>0);
    }

    function _removeIndexArray(uint256 index, DepositToPool[] storage array) internal virtual {
        for(uint256 i = index; i < array.length-1; i++) {
            array[i] = array[i+1];
        }
        array.pop();
    }

    function contractsNFTWhitelisted() public view returns (address[] memory) {
        return IOpenBiSeaAuction(_auction).contractsNFTWhitelisted();
    }

    function whitelistContractCreator( address _contractNFT ) public payable {
        require(msg.value >= initialPriceInt.mul(_auctionCreationFeeMultiplier), "OpenBiSea: you must send minimal amount or more");
        IOpenBiSeaAuction(_auction).whitelistContractCreator(_contractNFT,msg.value);
        _totalIncome = _totalIncome.add(msg.value);
    }

    function whitelistContractCreatorTokens( address _contractNFT ) public {
        uint256 amount = (10 ** uint256(18)).mul(_auctionCreationFeeMultiplier);
        IERC20(_tokenForTokensale).transferFrom(msg.sender,address(this),amount);
        _totalIncome = _totalIncome.add(initialPriceInt.mul(amount).div(10 ** uint256(18)));
        IOpenBiSeaAuction(_auction).whitelistContractCreator(_contractNFT,initialPriceInt.mul(amount));
    }
    function createAuction( address _contractNFT, uint256 _tokenId, uint256 _price,uint256 _deadline, bool _isERC1155, bool _isUSD ) public {
        IOpenBiSeaAuction(_auction).createAuction(_contractNFT,_tokenId, _price, _deadline,_isERC1155, msg.sender, _isUSD);
    }
    function bidUSD( address _contractNFT,uint256 _tokenId, uint256 _bidAmount, bool _isERC1155 ) public {
        IERC20(_busdContract).transferFrom(msg.sender,address(this),_bidAmount);
        bool isWin;
        uint256 amountTransferBack;
        address auctionLatestBidderOrSeller;
        bool isUSD;
        (isWin,amountTransferBack,auctionLatestBidderOrSeller,isUSD) = IOpenBiSeaAuction(_auction).bid( _contractNFT, _tokenId, _bidAmount, _isERC1155, msg.sender );
        if (isWin) {
            if (isUSD) {
                uint256 depositFee = _bidAmount.mul(_depositFixedFee).div(100);
                uint256 depositFeeReferrer = _bidAmount.mul(_referralDepositFee).div(100);
                uint256 totalSellerAmount = _bidAmount.sub(depositFee);
                if (_referrals[msg.sender] != address(0)) {
                    totalSellerAmount = totalSellerAmount.sub(depositFeeReferrer);
                    IERC20(_busdContract).transfer(_referrals[msg.sender],depositFeeReferrer);
                    IERC20(_busdContract).transfer(getRoleMember(GENERAL_PARTNER_ROLE,0),depositFee);
                } else {
                    IERC20(_busdContract).transfer(getRoleMember(GENERAL_PARTNER_ROLE,0),depositFee);
                }
                IERC20(_busdContract).transfer(auctionLatestBidderOrSeller,totalSellerAmount);
            }
        } else {
            if (amountTransferBack > 0 && isUSD) {
                IERC20(_busdContract).transfer(auctionLatestBidderOrSeller,amountTransferBack);
            }
        }
    }
    function bid( address _contractNFT,uint256 _tokenId, bool _isERC1155 ) public payable {
        bool isWin;
        uint256 amountTransferBack;
        address auctionLatestBidderOrSeller;
        bool isUSD;
        (isWin,amountTransferBack,auctionLatestBidderOrSeller,isUSD) = IOpenBiSeaAuction(_auction).bid( _contractNFT, _tokenId, msg.value, _isERC1155, msg.sender );
        if (isWin) {
            if (!isUSD) {
                uint256 depositFee = msg.value.mul(_depositFixedFee).div(100);
                uint256 depositFeeReferrer = msg.value.mul(_referralDepositFee).div(100);
                uint256 totalSellerAmount = msg.value.sub(depositFee);
                if (_referrals[msg.sender] != address(0)) {
                    totalSellerAmount = totalSellerAmount.sub(depositFeeReferrer);
                    payable(_referrals[msg.sender]).transfer(depositFeeReferrer);
                    payable(getRoleMember(GENERAL_PARTNER_ROLE,0)).transfer(depositFee);
                } else {
                    payable(getRoleMember(GENERAL_PARTNER_ROLE,0)).transfer(depositFee);
                }
                payable(auctionLatestBidderOrSeller).transfer(totalSellerAmount);
            }
        } else {
            if (amountTransferBack > 0 && !isUSD) {
                payable(auctionLatestBidderOrSeller).transfer(amountTransferBack);
            }
        }
    }
    function cancelAuction( address _contractNFT, uint256 _tokenId, bool _isERC1155 ) public {
        IOpenBiSeaAuction(_auction).cancelAuction(_contractNFT,_tokenId,msg.sender,_isERC1155);
    }
    function checkTokensForClaim( address customer, uint256 priceMainToUSD) public view returns (uint256,uint256,uint256,bool) {
        return IOpenBiSeaAuction(_auction).checkTokensForClaim(customer,priceMainToUSD);
    }
    event ClaimFreeTokens(uint256 amount, address investor,bool result);
    function claimFreeTokens() public returns (bool) {
        uint256 priceMainToUSD;
        uint8 decimals;
        (priceMainToUSD,decimals) = _poolRegistry.getOracleContract().getLatestPrice();

        uint256 tokensToPay;
        (tokensToPay,,,)= checkTokensForClaim(msg.sender,priceMainToUSD.div(10 ** uint256(decimals)));
        bool result = false;
        if (tokensToPay > 0) {
            IERC20(_tokenForTokensale).transfer(msg.sender, tokensToPay);
            IOpenBiSeaAuction(_auction).setConsumersReceivedMainTokenLatestDate(msg.sender);
            result = true;
        }
        emit ClaimFreeTokens(tokensToPay,msg.sender,result);
        return result;
    }
}

File 3 of 16 : AccessControl.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;

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

contract AccessControl is Context {
    using EnumerableSet for EnumerableSet.AddressSet;
    struct RoleData {
        EnumerableSet.AddressSet members;
        bytes32 adminRole;
    }
    mapping (bytes32 => RoleData) private _roles;
    mapping (bytes32 => address[]) private _addressesRoles;
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
    function hasRole(bytes32 role, address account) public view returns (bool) {
        return _roles[role].members.contains(account);
    }
    function getRoleMemberCount(bytes32 role) public view returns (uint256) {
        return _roles[role].members.length();
    }
   function getRoleMember(bytes32 role, uint256 index) public view returns (address) {
        return _roles[role].members.at(index);
    }
    function getRoleAdmin(bytes32 role) public view returns (bytes32) {
        return _roles[role].adminRole;
    }
    function getMembersRole(bytes32 role) public view returns (address[] memory Accounts) {
        return _addressesRoles[role];
    }
    function grantRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant");
        _grantRole(role, account);
    }
    function revokeRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke");

        _revokeRole(role, account);
    }
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        _roles[role].adminRole = adminRole;
    }
    function _grantRole(bytes32 role, address account) private {
        if (_roles[role].members.add(account)) {
            _addressesRoles[role].push(account);
            emit RoleGranted(role, account, _msgSender());
        }
    }
    function _revokeRole(bytes32 role, address account) private {
        if (_roles[role].members.remove(account)) {
            for (uint256 i; i < _addressesRoles[role].length; i++) {
                if (_addressesRoles[role][i] == account) {
                    _removeIndexArray(i, _addressesRoles[role]);
                    break;
                }
            }
            emit RoleRevoked(role, account, _msgSender());
        }
    }
    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
        for(uint256 i = index; i < array.length-1; i++) {
            array[i] = array[i+1];
        }
        array.pop();
    }
}

File 4 of 16 : PoolRoles.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "./AccessControl.sol";
import "../ownership/Ownable.sol";
import "../interface/IRoleModel.sol";
contract PoolRoles is AccessControl, Ownable, IRoleModel {
    bool private _finalized = false;
    event Finalized();
    modifier onlyGPartner() {
        require(hasRole(GENERAL_PARTNER_ROLE, msg.sender), "Roles: caller does not have the general partner role");
        _;
    }
    modifier onlyLPartner() {
        require(hasRole(LIMITED_PARTNER_ROLE, msg.sender), "Roles: caller does not have the limited partner role");
        _;
    }
    modifier onlyStartupTeam() {
        require(hasRole(STARTUP_TEAM_ROLE, msg.sender), "Roles: caller does not have the team role");
        _;
    }
    modifier onlyPoolRegistry() {
        require(hasRole(POOL_REGISTRY, msg.sender), "Roles: caller does not have the pool regystry role");
        _;
    }
    modifier onlyReturnsInvestmentLpartner() {
        require(hasRole(RETURN_INVESTMENT_LPARTNER, msg.sender), "Roles: caller does not have the return invesment lpartner role");
        _;
    }
    modifier onlyOracle() {
        require(hasRole(ORACLE, msg.sender), "Roles: caller does not have oracle role");
        _;
    }
    constructor () public {
        _setRoleAdmin(GENERAL_PARTNER_ROLE, SUPER_ADMIN_ROLE);
        _setRoleAdmin(LIMITED_PARTNER_ROLE, SUPER_ADMIN_ROLE);
        _setRoleAdmin(STARTUP_TEAM_ROLE, SUPER_ADMIN_ROLE);
        _setRoleAdmin(POOL_REGISTRY, SUPER_ADMIN_ROLE);
        _setRoleAdmin(RETURN_INVESTMENT_LPARTNER, SUPER_ADMIN_ROLE);
        _setRoleAdmin(ORACLE, SUPER_ADMIN_ROLE);
    }
    function addAdmin(bytes32 role, address account) public onlyOwner returns (bool) {
        require(!_finalized, "ManagerRole: already finalized");

        _setupRole(role, account);
        return true;
    }
    function finalize() public onlyOwner {
        require(!_finalized, "ManagerRole: already finalized");
        _finalized = true;
        emit Finalized();
    }
}

File 5 of 16 : TeamRole.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "./lib/Roles.sol";
contract TeamRole {
    using Roles for Roles.Role;
    event TeamAdded(address indexed account);
    event TeamRemoved(address indexed account);
    event OracleAdded(address indexed account);
    event OracleRemoved(address indexed account);
    Roles.Role private _team;
    Roles.Role private _oracle;
    constructor () internal {
        _addTeam(msg.sender);
    }
    modifier onlyTeam() {
        require(isTeam(msg.sender), "TeamRole: caller does not have the Team role");
        _;
    }
    modifier onlyRegistryOracle() {
        require(isOracle(msg.sender), "TeamRole: caller does not have the Oracle role");
        _;
    }

    function isOracle(address account) public view returns (bool) {
        return _oracle.has(account);
    }
    function getOracleAddresses() public view returns (address[] memory) {
        return _oracle.accounts;
    }

    function addOracle(address account) public onlyTeam {
        _addOracle(account);
    }
    function _addOracle(address account) internal {
        _oracle.add(account);
        emit OracleAdded(account);
    }
    function renounceOracle() public {
        _removeOracle(msg.sender);
    }
    function _removeOracle(address account) internal {
        _oracle.remove(account);
        emit OracleRemoved(account);
    }

    function isTeam(address account) public view returns (bool) {
        return _team.has(account);
    }
    function getTeamAddresses() public view returns (address[] memory) {
        return _team.accounts;
    }
    function addTeam(address account) public onlyTeam {
        _addTeam(account);
    }
    function renounceTeam() public onlyTeam {
        _removeTeam(msg.sender);
    }
    function _addTeam(address account) internal {
        _team.add(account);
        emit TeamAdded(account);
    }
    function _removeTeam(address account) internal {
        _team.remove(account);
        emit TeamRemoved(account);
    }
}

File 6 of 16 : Roles.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library Roles {
    struct Role {
        address[] accounts;
        mapping (address => bool) bearer;
        mapping (bytes32 => uint256) _indexes;
    }
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
        role.accounts.push(account);
        role._indexes[bytes32(uint256(account))] = role.accounts.length;
    }
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        uint256 valueIndex = role._indexes[bytes32(uint256(account))];
        if (valueIndex != 0) { // Equivalent to contains()
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = role.accounts.length - 1;
            address lastValue = role.accounts[lastIndex];
            role.accounts[toDeleteIndex] = lastValue;
            role.accounts.pop();
            delete role._indexes[bytes32(uint256(account))];
        }
//        for (uint256 i; i < role.accounts.length; i++) {
//            if (role.accounts[i] == account) {
//                _removeIndexArray(i, role.accounts);
//                break;
//            }
//        }
        role.bearer[account] = false;
    }
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
//    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
//        for(uint256 i = index; i < array.length-1; i++) {
//            array[i] = array[i+1];
//        }
//        array.pop();
//    }
}

File 7 of 16 : IAssetsManageTeam.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IAssetsManageTeam {
    function _depositToken(address pool, address team, address token, uint256 amount) external returns (bool);
    function _withdraw(address pool, address team, uint256 amount) external returns (bool);
    function _withdrawTokensToStartup(address pool,address token, address team, uint256 amount) external returns (bool);
    function _request(bool withdraw, address pool, address team, uint256 maxValue) external returns(bool);
    function _requestTokensWidthdrawalFromStartup(address pool, address token, address team, uint256 maxValue) external returns(bool);
    function _approve(address pool, address team, address owner) external returns(bool);
    function _approveTokensWidthdrawalFromStartup(address pool, address token, address team, address owner) external returns(bool);
    function _disapprove(address pool, address team, address owner) external returns(bool);
    function _lock(address pool, address team, address owner) external returns(bool);
    function _unlock(address pool, address team, address owner) external returns(bool);
    function addManager(address account) external;
    function getPerformedOperationsLength(address pool, address owner) external view returns(uint256 length);
    function getPerformedOperations(address pool, address owner, uint256 index) external view returns(address token, uint256 amountToken, uint256 withdraw, uint256 time);
    function getRequests(address pool) external view returns(address[] memory);
    function getApproval(address pool) external view returns(address[] memory);
    function getRequestTeamAddress(address pool, address team) external view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue);
    function getApproveTeamAddress(address pool, address team) external view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValueE);
}

File 8 of 16 : IERC20.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function decimals() external view returns (uint8);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 9 of 16 : IOpenBiSeaAuction.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IOpenBiSeaAuction {
    function contractsNFTWhitelisted() external view returns (address[] memory);
    function whitelistContractCreator( address _contractNFT, uint256 fee ) external payable;
    function createAuction( address _contractNFT, uint256 _tokenId, uint256 _price,uint256 _deadline, bool _isERC1155, address _sender, bool _isUSD ) external;
    function bid( address _contractNFT,uint256 _tokenId, uint256 _price, bool _isERC1155, address _sender ) external returns (bool, uint256, address, bool);
    function cancelAuction( address _contractNFT, uint256 _tokenId, address _sender, bool _isERC1155 ) external;
    function checkTokensForClaim( address customer, uint256 priceMainToUSD) external view returns (uint256,uint256,uint256,bool);
    function setConsumersReceivedMainTokenLatestDate(address _sender) external;
}

File 10 of 16 : IOracle.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
interface IOracle {
    function getLatestPrice() external view returns ( uint256,uint8);
    function getCustomPrice(address aggregator) external view returns (uint256,uint8);
}

File 11 of 16 : IPoolRegistry.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "./IOracle.sol";
interface IPoolRegistry {
    function isTeam(address account) external view returns (bool);
    function getTeamAddresses() external view returns (address[] memory);
    function getOracleContract() external view returns (IOracle);
}

File 12 of 16 : IRoleModel.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
contract IRoleModel {
    bytes32 public constant SUPER_ADMIN_ROLE = keccak256("SUPER_ADMIN_ROLE");
    bytes32 public constant GENERAL_PARTNER_ROLE = keccak256("GENERAL_PARTNER_ROLE");
    bytes32 public constant LIMITED_PARTNER_ROLE = keccak256("LIMITED_PARTNER_ROLE");
    bytes32 public constant STARTUP_TEAM_ROLE = keccak256("STARTUP_TEAM_ROLE");
    bytes32 public constant POOL_REGISTRY = keccak256("POOL_REGISTRY");
    bytes32 public constant RETURN_INVESTMENT_LPARTNER = keccak256("RETURN_INVESTMENT_LPARTNER");
    bytes32 public constant ORACLE = keccak256("ORACLE");
    bytes32 public constant REFERER_ROLE = keccak256("REFERER_ROLE");
}

File 13 of 16 : SafeMath.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library SafeMath {
     function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
         if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

File 14 of 16 : Ownable.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
import "../GSN/Context.sol";
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    /**
    * @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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 15 of 16 : EnumerableSet.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library EnumerableSet {
    struct Set {
        bytes32[] _values;
        address[] _collection;
        mapping (bytes32 => uint256) _indexes;
    }
    function _add(Set storage set, bytes32 value, address addressValue) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._collection.push(addressValue);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }
    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) { // Equivalent to contains(set, value)
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastValue = set._values[lastIndex];
            set._values[toDeleteIndex] = lastValue;
            set._values.pop();

            address lastvalueAddress = set._collection[lastIndex];
            set._collection[toDeleteIndex] = lastvalueAddress;
            set._collection.pop();

            set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based
            delete set._indexes[value];
//            for(uint256 i = 0; i < set._collection.length; i++) {
//                if (set._collection[i] == addressValue) {
//                    _removeIndexArray(i, set._collection);
//                    break;
//                }
//            }
            return true;
        } else {
            return false;
        }
    }
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }
    function _collection(Set storage set) private view returns (address[] memory) {
        return set._collection;    
    }
//    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
//        for(uint256 i = index; i < array.length-1; i++) {
//            array[i] = array[i+1];
//        }
//        array.pop();
//    }
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }
    struct AddressSet {
        Set _inner;
    }
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)), value);
    }
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }
    function collection(AddressSet storage set) internal view returns (address[] memory) {
        return _collection(set._inner);
    }
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint256(_at(set._inner, index)));
    }
}

File 16 of 16 : EnumerableUintSet.sol
// SPDX-License-Identifier: UNLICENSED
// (c) Oleksii Vynogradov 2021, All rights reserved, contact [email protected] if you like to use code
pragma solidity ^0.6.8;
library EnumerableUintSet {
    struct Set {
        bytes32[] _values;
        uint256[] _collection;
        mapping (bytes32 => uint256) _indexes;
    }
    function _add(Set storage set, bytes32 value, uint256 savedValue) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._collection.push(savedValue);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }
    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) { // Equivalent to contains(set, value)
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastValue = set._values[lastIndex];
            set._values[toDeleteIndex] = lastValue;
            set._values.pop();

            uint256 lastvalueAddress = set._collection[lastIndex];
            set._collection[toDeleteIndex] = lastvalueAddress;
            set._collection.pop();

            set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based
            delete set._indexes[value];
            return true;
        } else {
            return false;
        }
    }
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }
    function _collection(Set storage set) private view returns (uint256[] memory) {
        return set._collection;    
    }

    function _at(Set storage set, uint256 index) private view returns (uint256) {
        require(set._collection.length > index, "EnumerableSet: index out of bounds");
        return set._collection[index];
    }
    struct UintSet {
        Set _inner;
    }
    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)), value);
    }
    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)));
    }
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }
    function collection(UintSet storage set) internal view returns (uint256[] memory) {
        return _collection(set._inner);
    }
    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return _at(set._inner, index);
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "byzantium",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"tokenForTokensale","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"locked","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"auctionCreationFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"auctionContractFeeMultiplier","type":"uint256"},{"internalType":"address","name":"superAdmin","type":"address"},{"internalType":"address","name":"gPartner","type":"address"},{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"poolRegistry","type":"address"},{"internalType":"address","name":"returnInvestmentLpartner","type":"address"},{"internalType":"contract IAssetsManageTeam","name":"assetsManageTeam","type":"address"},{"internalType":"uint256","name":"initialBalance","type":"uint256"},{"internalType":"address","name":"busdContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"ClaimFreeTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"getDepositLengthSender","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"getDepositLengthOwner","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmountReturn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"indexesDepositLength","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balanceThis","type":"uint256"}],"name":"DebugWithdrawLPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OracleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OracleRemoved","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":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamRemoved","type":"event"},{"inputs":[],"name":"GENERAL_PARTNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIMITED_PARTNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_REGISTRY","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RETURN_INVESTMENT_LPARTNER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STARTUP_TEAM_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPER_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_activateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"investedToken","type":"address"}],"name":"_approveWithdrawLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"_depositInvestmentInTokensToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_depositPoolRegistry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_disactivateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"_getTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_returnsInTokensFromTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAuction","type":"address"}],"name":"_setAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"internalType":"uint256","name":"poolValue","type":"uint256"},{"internalType":"string","name":"proofOfValue","type":"string"}],"name":"_setPoolValues","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"_setRate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"address","name":"referral","type":"address"}],"name":"_setReferral","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isPublicPool","type":"bool"},{"internalType":"uint256","name":"locked","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"auctionCreationFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"auctionContractFeeMultiplier","type":"uint256"}],"name":"_updatePool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"}],"name":"_withdrawLPartner","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdrawSuperAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdrawTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdrawTokensToStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"addAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auction","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_bidAmount","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"bidUSD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"}],"name":"cancelAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"customer","type":"address"},{"internalType":"uint256","name":"priceMainToUSD","type":"uint256"}],"name":"checkTokensForClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimFreeTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractsNFTWhitelisted","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"bool","name":"_isERC1155","type":"bool"},{"internalType":"bool","name":"_isUSD","type":"bool"}],"name":"createAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDeposit","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"lock_period","type":"uint256"},{"internalType":"bool","name":"refund_authorize","type":"bool"},{"internalType":"uint256","name":"amountWithdrawal","type":"uint256"},{"internalType":"address","name":"investedToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getDepositLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfoPool","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isPublicPool","type":"bool"},{"internalType":"address","name":"tokenForTokensale","type":"address"},{"internalType":"uint256","name":"locked","type":"uint256"},{"internalType":"uint256","name":"initialBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfoPoolFees","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"auctionCreationFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"auctionContractFeeMultiplier","type":"uint256"},{"internalType":"uint256","name":"totalIncome","type":"uint256"},{"internalType":"uint256","name":"premiumFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInitialPriceInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getMembersRole","outputs":[{"internalType":"address[]","name":"Accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolValues","outputs":[{"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"internalType":"uint256","name":"poolValue","type":"uint256"},{"internalType":"string","name":"proofOfValue","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lPartner","type":"address"}],"name":"getReferral","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTeamAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaseTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchaseTokensQuantityFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"whitelistContractCreator","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractNFT","type":"address"}],"name":"whitelistContractCreatorTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6002805460a060020a60ff0219169055600a805460ff191660011790556000600f81905560105560c0604052600760808190527f6e6f7468696e670000000000000000000000000000000000000000000000000060a090815262000067916011919062000e8b565b5067013b7b21280e0000601e553480156200008157600080fd5b5060405162006634380380620066348339818101604052610200811015620000a857600080fd5b815160208301805160405192949293830192919084640100000000821115620000d057600080fd5b908301906020820185811115620000e657600080fd5b82516401000000008111828201881017156200010157600080fd5b82525081516020918201929091019080838360005b838110156200013057818101518382015260200162000116565b50505050905090810190601f1680156200015e5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e08701516101008801516101208901516101408a01516101608b01516101808c01516101a08d01516101c0909d01519b9e50999c50979a96999598949793969295919490939290916000620001df640100000000620007c6810204565b60028054600160a060020a031916600160a060020a038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604080517f47454e4552414c5f504152544e45525f524f4c45000000000000000000000000815281519081900360140181206000805160206200661483398151915282529151908190036010019020620002919190640100000000620007cb810204565b604080517f4c494d495445445f504152544e45525f524f4c45000000000000000000000000815281519081900360140181206000805160206200661483398151915282529151908190036010019020620002f59190640100000000620007cb810204565b604080517f535441525455505f5445414d5f524f4c45000000000000000000000000000000815281519081900360110181206000805160206200661483398151915282529151908190036010019020620003599190640100000000620007cb810204565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152815190819003600d0181206000805160206200661483398151915282529151908190036010019020620003bd9190640100000000620007cb810204565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152815190819003601a0181206000805160206200661483398151915282529151908190036010019020620004219190640100000000620007cb810204565b604080517f4f5241434c450000000000000000000000000000000000000000000000000000815281519081900360060181206000805160206200661483398151915282529151908190036010019020620004859190640100000000620007cb810204565b6200049933640100000000620007e0810204565b8e60099080519060200190620004b192919062000e8b565b508f601c60006101000a815481600160a060020a030219169083600160a060020a031602179055508d600d819055508c6012819055508b6013819055508a6014819055508960158190555082601a60006101000a815481600160a060020a030219169083600160a060020a0316021790555084601b60006101000a815481600160a060020a030219169083600160a060020a0316021790555081601d8190555080600b60006101000a815481600160a060020a030219169083600160a060020a03160217905550620005bc6040518080600080516020620066148339815191528152506010019050604051809103902033620008326401000000000262001e46176401000000009004565b50604080516000805160206200661483398151915281529051908190036010019020620005f8908a64010000000062001e466200083282021704565b5060408051600080516020620066148339815191528152905190819003601001902062000634908664010000000062001e466200083282021704565b506200064d64010000000062001acd6200095c82021704565b604080517f47454e4552414c5f504152544e45525f524f4c450000000000000000000000008152905190819003601401902062000694908964010000000062000ab8810204565b604080517f4c494d495445445f504152544e45525f524f4c4500000000000000000000000081529051908190036014019020620006db908864010000000062000ab8810204565b604080517f535441525455505f5445414d5f524f4c450000000000000000000000000000008152905190819003601101902062000722908764010000000062000ab8810204565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152905190819003600d01902062000769908664010000000062000ab8810204565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a019020620007b0908564010000000062000ab8810204565b5050505050505050505050505050505062000f2d565b335b90565b60009182526020829052604090912060030155565b620007fb6003826401000000006200445162000b6182021704565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b600062000847640100000000620007c6810204565b600254600160a060020a03908116911614620008b357604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018190526024820152600080516020620065d2833981519152604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff16156200093e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b62000953838364010000000062000b48810204565b50600192915050565b6200096f640100000000620007c6810204565b600254600160a060020a03908116911614620009db57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018190526024820152600080516020620065d2833981519152604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff161562000a6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b6002805460a060020a60ff021916740100000000000000000000000000000000000000001790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1565b60008281526020819052604090206003015462000af19062000ae2640100000000620007c6810204565b64010000000062000c3e810204565b62000b48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180620065a3602f913960400191505060405180910390fd5b62000b5d828264010000000062000c6d810204565b5050565b62000b76828264010000000062000d28810204565b1562000be357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b600082815260208190526040812062000c6690836401000000006200450b62000dae82021704565b9392505050565b600082815260208190526040902062000c9590826401000000006200452062000dce82021704565b1562000b5d5760008281526001602081815260408320805492830181558352909120018054600160a060020a031916600160a060020a03831617905562000ce4640100000000620007c6810204565b600160a060020a031681600160a060020a0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000600160a060020a03821662000d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620065f26022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b600062000c6683600160a060020a03841664010000000062000def810204565b600062000c6683600160a060020a0384168464010000000062000e07810204565b60009081526002919091016020526040902054151590565b600062000e1e848464010000000062000def810204565b62000e8157508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a038616179055855485825260028701909352604090209190915562000c66565b5060009392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000ece57805160ff191683800117855562000efe565b8280016001018555821562000efe579182015b8281111562000efe57825182559160200191906001019062000ee1565b5062000f0c92915062000f10565b5090565b620007c891905b8082111562000f0c576000815560010162000f17565b6156668062000f3d6000396000f3fe6080604052600436106103b55760003560e060020a900480639010d07c116101eb578063d547741f11610111578063e89ec45f116100a4578063f66fdcca11610073578063f66fdcca14610fe3578063fd66c0671461107e578063fe070e9d146110d3578063fedf51e9146110e8576103bc565b8063e89ec45f14610f1f578063f14d218114610f58578063f2fde38b14610f6d578063f45efe6714610fa0576103bc565b8063d9a431b3116100e0578063d9a431b314610e53578063dae06b7214610e68578063dca80c1914610eab578063df5dd1a514610eec576103bc565b8063d547741f14610d44578063d5c5e43414610d7d578063d6d6878414610dd9578063d93f48b014610e0c576103bc565b8063b463a75c11610189578063ca15c87311610158578063ca15c87314610c01578063cb4ff7f214610c2b578063cbc5906e14610c70578063d2f0d2a814610c85576103bc565b8063b463a75c14610a93578063bd8afbf814610ac6578063c1abd75714610b4f578063c3e7639914610b64576103bc565b80639cf6cc70116101c55780639cf6cc701461099c5780639f2ac7f8146109c6578063a97e5c9314610a27578063ac6cc60c14610a5a576103bc565b80639010d07c1461090957806391d148541461093957806394707a9514610972576103bc565b8063594ce4c7116102db5780637a99bb0a1161026e57806387ac828a1161023d57806387ac828a1461087957806389e52771146108ac5780638c533ba7146108c15780638da5cb5b146108f4576103bc565b80637a99bb0a146107c35780637d9f6db5146107ed5780637fdbc08b14610802578063878d9b7a14610845576103bc565b80636d8664e0116102aa5780636d8664e01461073d5780637330aba214610752578063770108a7146107675780637837efdc146107ae576103bc565b8063594ce4c7146106975780635ac8b005146106da5780636176dd9f146106ef5780636419bcdb14610704576103bc565b80632dc20f621161035357806338013f021161032257806338013f02146106095780633b0f0f2f1461061e5780634460bdd61461066d5780634bb278f314610682576103bc565b80632dc20f621461058b5780632f2ff15d146105b35780633049ea33146105ec5780633290ce2914610601576103bc565b8063248519141161038f57806324851914146104a4578063248a9ca3146104d7578063261fef02146105015780632726b50614610516576103bc565b8063052c09fd146103c157806316fb3c15146104265780631cda4a8d1461047d576103bc565b366103bc57005b600080fd5b3480156103cd57600080fd5b506103d6611135565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104125781810151838201526020016103fa565b505050509050019250505060405180910390f35b34801561043257600080fd5b506104696004803603606081101561044957600080fd5b50600160a060020a03813581169160208101359091169060400135611257565b604080519115158252519081900360200190f35b34801561048957600080fd5b50610492611461565b60408051918252519081900360200190f35b3480156104b057600080fd5b50610469600480360360208110156104c757600080fd5b5035600160a060020a0316611484565b3480156104e357600080fd5b50610492600480360360208110156104fa57600080fd5b503561149d565b34801561050d57600080fd5b506104926114b2565b34801561052257600080fd5b5061054f6004803603604081101561053957600080fd5b50600160a060020a0381351690602001356114e7565b6040805196875260208701959095528585019390935290151560608501526080840152600160a060020a031660a0830152519081900360c00190f35b6105b1600480360360208110156105a157600080fd5b5035600160a060020a031661168d565b005b3480156105bf57600080fd5b506105b1600480360360408110156105d657600080fd5b5080359060200135600160a060020a0316611788565b3480156105f857600080fd5b506104696117f7565b6104926118bb565b34801561061557600080fd5b50610492611a45565b34801561062a57600080fd5b506106516004803603602081101561064157600080fd5b5035600160a060020a0316611a7a565b60408051600160a060020a039092168252519081900360200190f35b34801561067957600080fd5b50610492611a98565b34801561068e57600080fd5b506105b1611acd565b3480156106a357600080fd5b50610469600480360360608110156106ba57600080fd5b50600160a060020a03813581169160208101359091169060400135611c0d565b3480156106e657600080fd5b50610492611d52565b3480156106fb57600080fd5b50610469611d87565b34801561071057600080fd5b506104696004803603604081101561072757600080fd5b5080359060200135600160a060020a0316611e46565b34801561074957600080fd5b50610492611f3b565b34801561075e57600080fd5b506103d6611f41565b34801561077357600080fd5b506105b16004803603608081101561078a57600080fd5b50600160a060020a0381351690602081013590604081013590606001351515611fa6565b3480156107ba57600080fd5b506105b16124fe565b3480156107cf57600080fd5b50610492600480360360208110156107e657600080fd5b5035612509565b3480156107f957600080fd5b506106516125ac565b34801561080e57600080fd5b506104696004803603606081101561082557600080fd5b50600160a060020a038135811691602081013590911690604001356125c0565b6105b16004803603606081101561085b57600080fd5b50600160a060020a038135169060208101359060400135151561279c565b34801561088557600080fd5b506104926004803603602081101561089c57600080fd5b5035600160a060020a0316612aa6565b3480156108b857600080fd5b506103d6612ac1565b3480156108cd57600080fd5b506105b1600480360360208110156108e457600080fd5b5035600160a060020a0316612b24565b34801561090057600080fd5b50610651612cb2565b34801561091557600080fd5b506106516004803603604081101561092c57600080fd5b5080359060200135612cc1565b34801561094557600080fd5b506104696004803603604081101561095c57600080fd5b5080359060200135600160a060020a0316612cdf565b34801561097e57600080fd5b506104696004803603602081101561099557600080fd5b5035612cfd565b3480156109a857600080fd5b506103d6600480360360208110156109bf57600080fd5b5035612d71565b3480156109d257600080fd5b506109ff600480360360408110156109e957600080fd5b50600160a060020a038135169060200135612ddd565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b348015610a3357600080fd5b5061046960048036036020811015610a4a57600080fd5b5035600160a060020a0316612ea6565b348015610a6657600080fd5b5061046960048036036040811015610a7d57600080fd5b50600160a060020a038135169060200135612eb9565b348015610a9f57600080fd5b506105b160048036036020811015610ab657600080fd5b5035600160a060020a0316612f96565b348015610ad257600080fd5b5061046960048036036060811015610ae957600080fd5b813591602081013591810190606081016040820135640100000000811115610b1057600080fd5b820183602082011115610b2257600080fd5b80359060200191846001830284011164010000000083111715610b4457600080fd5b509092509050612fe9565b348015610b5b57600080fd5b50610492613076565b348015610b7057600080fd5b50610469600480360360e0811015610b8757600080fd5b810190602081018135640100000000811115610ba257600080fd5b820183602082011115610bb457600080fd5b80359060200191846001830284011164010000000083111715610bd657600080fd5b9193509150803515159060208101359060408101359060608101359060808101359060a00135613099565b348015610c0d57600080fd5b5061049260048036036020811015610c2457600080fd5b5035613141565b348015610c3757600080fd5b5061046960048036036060811015610c4e57600080fd5b50600160a060020a038135811691602081013582169160409091013516613158565b348015610c7c57600080fd5b50610492613348565b348015610c9157600080fd5b50610c9a61336b565b60405180806020018615151515815260200185600160a060020a0316600160a060020a03168152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b83811015610d05578181015183820152602001610ced565b50505050905090810190601f168015610d325780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610d5057600080fd5b506105b160048036036040811015610d6757600080fd5b5080359060200135600160a060020a0316613438565b348015610d8957600080fd5b50610db060048036036020811015610da057600080fd5b5035600160a060020a031661349e565b6040805193151584526020840192909252600160a060020a031682820152519081900360600190f35b348015610de557600080fd5b506105b160048036036020811015610dfc57600080fd5b5035600160a060020a0316613783565b348015610e1857600080fd5b5061046960048036036080811015610e2f57600080fd5b50600160a060020a03813581169160208101359160408201359160600135166137ff565b348015610e5f57600080fd5b506105b1613984565b348015610e7457600080fd5b50610e9260048036036020811015610e8b57600080fd5b50356139d4565b6040805192835260208301919091528051918290030190f35b348015610eb757600080fd5b506105b160048036036060811015610ece57600080fd5b50600160a060020a0381351690602081013590604001351515613a4d565b348015610ef857600080fd5b506105b160048036036020811015610f0f57600080fd5b5035600160a060020a0316613ae3565b348015610f2b57600080fd5b5061046960048036036040811015610f4257600080fd5b50600160a060020a038135169060200135613b33565b348015610f6457600080fd5b50610469613ce7565b348015610f7957600080fd5b506105b160048036036020811015610f9057600080fd5b5035600160a060020a0316613f7a565b348015610fac57600080fd5b5061046960048036036060811015610fc357600080fd5b50600160a060020a0381358116916020810135916040909101351661408b565b348015610fef57600080fd5b50610ff86142b0565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611041578181015183820152602001611029565b50505050905090810190601f16801561106e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561108a57600080fd5b506105b1600480360360c08110156110a157600080fd5b50600160a060020a0381351690602081013590604081013590606081013590608081013515159060a001351515614364565b3480156110df57600080fd5b50610492614410565b3480156110f457600080fd5b506110fd614433565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6060600a60019054906101000a9004600160a060020a0316600160a060020a031663052c09fd6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561118857600080fd5b505afa15801561119c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156111c557600080fd5b81019080805160405193929190846401000000008211156111e557600080fd5b9083019060208201858111156111fa57600080fd5b825186602082028301116401000000008211171561121757600080fd5b82525081516020918201928201910280838360005b8381101561124457818101518382015260200161122c565b5050505090500160405250505090505b90565b604080516000805160206152d98339815191528152905190819003600d0190206000906112849033612cdf565b6112c25760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b604080516000805160206154e4833981519152815290519081900360110190206112ec9085612cdf565b61132a5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152a66033913960400191505060405180910390fd5b601a54604080517fe33d8221000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0386811660248301528781166044830152606482018690529151919092169163e33d82219160848083019260209291908290030181600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b505050506040513d60208110156113d157600080fd5b50506040805160e060020a63a9059cbb028152600160a060020a0386811660048301526024820185905291519185169163a9059cbb916044808201926020929091908290030181600087803b15801561142957600080fd5b505af115801561143d573d6000803e3d6000fd5b505050506040513d602081101561145357600080fd5b5060019150505b9392505050565b604080516000805160206152d98339815191528152905190819003600d01902081565b600061149760038363ffffffff61453616565b92915050565b60009081526020819052604090206003015490565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902081565b6000806000806000806018600089600160a060020a0316600160a060020a03168152602001908152602001600020878154811061152057fe5b60009182526020808320600690920290910154600160a060020a038b1683526018909152604090912080548990811061155557fe5b906000526020600020906006020160010154601860008b600160a060020a0316600160a060020a03168152602001908152602001600020898154811061159757fe5b906000526020600020906006020160020154601860008c600160a060020a0316600160a060020a031681526020019081526020016000208a815481106115d957fe5b6000918252602080832060036006909302019190910154600160a060020a038e16835260189091526040909120805460ff909216918c90811061161857fe5b906000526020600020906006020160040154601860008e600160a060020a0316600160a060020a031681526020019081526020016000208c8154811061165a57fe5b6000918252602090912060069091020160050154949d939c50919a5098509650600160a060020a03909116945092505050565b601454601e546116a29163ffffffff6145a316565b3410156116e35760405160e560020a62461bcd02815260040180806020018281038252602f815260200180615574602f913960400191505060405180910390fd5b600a54604080517f4f63d3ce000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152346024830152915161010090930490911691634f63d3ce9160448082019260009290919082900301818387803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b5050601654611782925090503463ffffffff6145ff16565b60165550565b6000828152602081905260409020600301546117ab906117a661465c565b612cdf565b6117e95760405160e560020a62461bcd02815260040180806020018281038252602f815260200180615277602f913960400191505060405180910390fd5b6117f38282614660565b5050565b604080516000805160206152d98339815191528152905190819003600d0190206000906118249033612cdf565b6118625760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b600a5460ff16156118a75760405160e560020a62461bcd02815260040180806020018281038252602d815260200180615504602d913960400191505060405180910390fd5b50600a805460ff1916600190811790915590565b600067016345785d8a000034116119065760405160e560020a62461bcd0281526004018080602001828103825260278152602001806154bd6027913960400191505060405180910390fd5b600080611912346139d4565b9092509050816119565760405160e560020a62461bcd0281526004018080602001828103825260268152602001806153916026913960400191505060405180910390fd5b61196781600363ffffffff61470516565b82106119a75760405160e560020a62461bcd02815260040180806020018281038252606381526020018061542b6063913960800191505060405180910390fd5b601c546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b505050506040513d6020811015611a2857600080fd5b5050601f54611a3d908363ffffffff6145ff16565b509091505090565b604080517f4f5241434c4500000000000000000000000000000000000000000000000000008152905190819003600601902081565b600160a060020a039081166000908152601960205260409020541690565b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152905190819003601001902081565b611ad561465c565b600254600160a060020a03908116911614611b3a576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615611bad576040805160e560020a62461bcd02815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b6002805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1565b604080516000805160206152d98339815191528152905190819003600d019020600090611c3a9033612cdf565b611c785760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b604080516000805160206154e483398151915281529051908190036011019020611ca29085612cdf565b611ce05760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152a66033913960400191505060405180910390fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152306024830152604482018590529151918516916323b872dd916064808201926020929091908290030181600087803b15801561142957600080fd5b604080517f524546455245525f524f4c4500000000000000000000000000000000000000008152905190819003600c01902081565b604080516000805160206152d98339815191528152905190819003600d019020600090611db49033612cdf565b611df25760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b600a5460ff16611e365760405160e560020a62461bcd02815260040180806020018281038252602f81526020018061548e602f913960400191505060405180910390fd5b50600a805460ff19169055600190565b6000611e5061465c565b600254600160a060020a03908116911614611eb5576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615611f28576040805160e560020a62461bcd02815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b611f3283836117e9565b50600192915050565b601e5490565b60606006600001805480602002602001604051908101604052809291908181526020018280548015611f9c57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611f7e575b5050505050905090565b600b54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561201957600080fd5b505af115801561202d573d6000803e3d6000fd5b505050506040513d602081101561204357600080fd5b5050600a54604080517f15b60639000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018790526044820186905284151560648301523360848301529151600093849384938493610100909304909116916315b606399160a48082019260809290919082900301818787803b1580156120d757600080fd5b505af11580156120eb573d6000803e3d6000fd5b505050506040513d608081101561210157600080fd5b5080516020820151604083015160609093015191965094509092509050831561245c57801561245757600061215260646121466012548a6145a390919063ffffffff16565b9063ffffffff61470516565b9050600061217060646121466013548b6145a390919063ffffffff16565b90506000612184898463ffffffff61474716565b33600090815260196020526040902054909150600160a060020a03161561230e576121b5818363ffffffff61474716565b600b5433600090815260196020908152604080832054815160e060020a63a9059cbb028152600160a060020a0391821660048201526024810189905291519596509093169363a9059cbb93604480820194918390030190829087803b15801561221d57600080fd5b505af1158015612231573d6000803e3d6000fd5b505050506040513d602081101561224757600080fd5b5050600b546040805160008051602061533f83398151915281529051908190036014019020600160a060020a039091169063a9059cbb90612289906000612cc1565b856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156122dc57600080fd5b505af11580156122f0573d6000803e3d6000fd5b505050506040513d602081101561230657600080fd5b506123ce9050565b600b546040805160008051602061533f83398151915281529051908190036014019020600160a060020a039091169063a9059cbb9061234e906000612cc1565b856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156123a157600080fd5b505af11580156123b5573d6000803e3d6000fd5b505050506040513d60208110156123cb57600080fd5b50505b600b546040805160e060020a63a9059cbb028152600160a060020a038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561242757600080fd5b505af115801561243b573d6000803e3d6000fd5b505050506040513d602081101561245157600080fd5b50505050505b6124f4565b6000831180156124695750805b156124f457600b546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156124c757600080fd5b505af11580156124db573d6000803e3d6000fd5b505050506040513d60208110156124f157600080fd5b50505b5050505050505050565b61250733614789565b565b600080600c60009054906101000a9004600160a060020a0316600160a060020a031663313ce5676040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561255d57600080fd5b505afa158015612571573d6000803e3d6000fd5b505050506040513d602081101561258757600080fd5b5051600e5490915061145a9060ff8316600a0a9061214690869063ffffffff6145a316565b600a546101009004600160a060020a031690565b604080516000805160206152d98339815191528152905190819003600d0190206000906125ed9033612cdf565b61262b5760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b604080517f53555045525f41444d494e5f524f4c4500000000000000000000000000000000815290519081900360100190206126679085612cdf565b6126a55760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152a66033913960400191505060405180910390fd5b811561279257600160a060020a0383166126f957604051600160a060020a0385169083156108fc029084906000818181858888f193505050501580156126ef573d6000803e3d6000fd5b506001905061145a565b82600160a060020a031663a9059cbb85846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561275c57600080fd5b505af1158015612770573d6000803e3d6000fd5b505050506040513d602081101561278657600080fd5b506001915061145a9050565b5060009392505050565b600a54604080517f15b60639000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820186905234604483015284151560648301523360848301529151600093849384938493610100909304909116916315b606399160a48082019260809290919082900301818787803b15801561282d57600080fd5b505af1158015612841573d6000803e3d6000fd5b505050506040513d608081101561285757600080fd5b50805160208201516040830151606090930151919650945090925090508315612a545780612a4f57600061289b6064612146601254346145a390919063ffffffff16565b905060006128b96064612146601354346145a390919063ffffffff16565b905060006128cd348463ffffffff61474716565b33600090815260196020526040902054909150600160a060020a0316156129af576128fe818363ffffffff61474716565b33600090815260196020526040808220549051929350600160a060020a03169184156108fc0291859190818181858888f19350505050158015612945573d6000803e3d6000fd5b506040805160008051602061533f83398151915281529051908190036014019020612971906000612cc1565b600160a060020a03166108fc849081150290604051600060405180830381858888f193505050501580156129a9573d6000803e3d6000fd5b50612a14565b6040805160008051602061533f833981519152815290519081900360140190206129da906000612cc1565b600160a060020a03166108fc849081150290604051600060405180830381858888f19350505050158015612a12573d6000803e3d6000fd5b505b604051600160a060020a0386169082156108fc029083906000818181858888f19350505050158015612a4a573d6000803e3d6000fd5b505050505b612a9d565b600083118015612a62575080155b15612a9d57604051600160a060020a0383169084156108fc029085906000818181858888f193505050501580156124f4573d6000803e3d6000fd5b50505050505050565b600160a060020a031660009081526018602052604090205490565b60606003600001805480602002602001604051908101604052809291908181526020018280548015611f9c57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311611f7e575050505050905090565b601454600090612b4390670de0b6b3a76400009063ffffffff6145a316565b601c54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490529051929350600160a060020a03909116916323b872dd916064808201926020929091908290030181600087803b158015612bb957600080fd5b505af1158015612bcd573d6000803e3d6000fd5b505050506040513d6020811015612be357600080fd5b5050601e54612c1990612c0a90670de0b6b3a764000090612146908563ffffffff6145a316565b6016549063ffffffff6145ff16565b601655600a54601e54610100909104600160a060020a031690634f63d3ce908490612c4490856145a3565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015612c9657600080fd5b505af1158015612caa573d6000803e3d6000fd5b505050505050565b600254600160a060020a031690565b600082815260208190526040812061145a908363ffffffff6147d116565b600082815260208190526040812061145a908363ffffffff61450b16565b604080516000805160206152d98339815191528152905190819003600d019020600090612d2a9033612cdf565b612d685760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b50600e55600190565b600081815260016020908152604091829020805483518184028101840190945280845260609392830182828015612dd157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612db3575b50505050509050919050565b600080600080600a60019054906101000a9004600160a060020a0316600160a060020a0316639f2ac7f887876040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060806040518083038186803b158015612e5957600080fd5b505afa158015612e6d573d6000803e3d6000fd5b505050506040513d6080811015612e8357600080fd5b508051602082015160408301516060909301519199909850919650945092505050565b600061149760068363ffffffff61453616565b604080516000805160206152d98339815191528152905190819003600d019020600090612ee69033612cdf565b612f245760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b604080516000805160206152f983398151915281529051908190036014019020612f4e9084612cdf565b612f8c5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152a66033913960400191505060405180910390fd5b61145a83836147dd565b612f9f33611484565b612fdd5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155a3602c913960400191505060405180910390fd5b612fe681614a9e565b50565b604080516000805160206152d98339815191528152905190819003600d0190206000906130169033612cdf565b6130545760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b600f859055601084905561306a601184846151bc565b50600195945050505050565b6040805160008051602061533f8339815191528152905190819003601401902081565b604080516000805160206152d98339815191528152905190819003600d0190206000906130c69033612cdf565b6131045760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b61311060098a8a6151bc565b5050600a805460ff191696151596909617909555600d93909355601291909155601355601455601555506001919050565b600081815260208190526040812061149790614ae6565b604080516000805160206152d98339815191528152905190819003600d0190206000906131859033612cdf565b6131c35760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b6040805160008051602061533f8339815191528152905190819003601401902084906131ef9082612cdf565b806132315750604080517f53555045525f41444d494e5f524f4c4500000000000000000000000000000000815290519081900360100190206132319082612cdf565b806132ca5750601b54604080517f24851914000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915191909216916324851914916024808301926020929190829003018186803b15801561329d57600080fd5b505afa1580156132b1573d6000803e3d6000fd5b505050506040513d60208110156132c757600080fd5b50515b1561330657600160a060020a0384811660009081526019602052604090208054600160a060020a03191691851691909117905560019150613340565b60405160e560020a62461bcd0281526004018080602001828103825260238152602001806153e76023913960400191505060405180910390fd5b509392505050565b604080516000805160206154e48339815191528152905190819003601101902081565b600a54601c54600d54601d546009805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181526060976000978897889788979660ff90941695600160a060020a03909316949193909287918301828280156134205780601f106133f557610100808354040283529160200191613420565b820191906000526020600020905b81548152906001019060200180831161340357829003601f168201915b50505050509450945094509450945094509091929394565b600082815260208190526040902060030154613456906117a661465c565b6134945760405160e560020a62461bcd0281526004018080602001828103825260308152602001806153b76030913960400191505060405180910390fd5b6117f38282614af1565b60008060006134d060405180806000805160206152d9833981519152815250600d019050604051809103902033612cdf565b61350e5760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b604080516000805160206152f9833981519152815290519081900360140190206135389085612cdf565b6135765760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152a66033913960400191505060405180910390fd5b6000808061358387612aa6565b90506000805b8281101561377457600160a060020a03891660009081526018602052604081208054839081106135b557fe5b60009182526020909120600690910201600381015490915060ff161561376b5760058101546004820154600160a060020a039091169550156136ea57600160a060020a038516613656576004810154604051600160a060020a038c169180156108fc02916000818181858888f19350505050158015613638573d6000803e3d6000fd5b50600481015461364f90879063ffffffff6145ff16565b95506136ea565b84600160a060020a031663a9059cbb8b83600401546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156136bd57600080fd5b505af11580156136d1573d6000803e3d6000fd5b505050506040513d60208110156136e757600080fd5b50505b600160a060020a038a16600090815260186020526040812080548490811061370e57fe5b60009182526020808320600692909202909101600301805460ff191693151593909317909255600160a060020a038c16815260189091526040812080548490811061375557fe5b9060005260206000209060060201600401819055505b50600101613589565b50979296509094509092505050565b61378c33611484565b6137ca5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155a3602c913960400191505060405180910390fd5b600a8054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902060009061383e9033612cdf565b61387c5760405160e560020a62461bcd02815260040180806020018281038252603e8152602001806155f3603e913960400191505060405180910390fd5b600160a060020a0385166000908152601860205260409020805460019190869081106138a457fe5b906000526020600020906006020160030160006101000a81548160ff021916908315150217905550826018600087600160a060020a0316600160a060020a0316815260200190815260200160002085815481106138fd57fe5b906000526020600020906006020160040181905550816018600087600160a060020a0316600160a060020a03168152602001908152602001600020858154811061394357fe5b906000526020600020906006020160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555060019050949350505050565b61398d33611484565b6139cb5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155a3602c913960400191505060405180910390fd5b61250733614be1565b60008060006139f0601f54601d5461474790919063ffffffff16565b90506000613a0f82612146601d54601e546145a390919063ffffffff16565b9050613a2d8161214687670de0b6b3a764000063ffffffff6145a316565b601f54601d54613a429163ffffffff61474716565b935093505050915091565b600a54604080517f9b58a9a8000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152602482018690523360448301528415156064830152915161010090930490911691639b58a9a89160848082019260009290919082900301818387803b158015613acf57600080fd5b505af1158015612a9d573d6000803e3d6000fd5b613aec33611484565b613b2a5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155a3602c913960400191505060405180910390fd5b612fe681614c29565b604080516000805160206152d98339815191528152905190819003600d019020600090613b609033612cdf565b613b9e5760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b604080516000805160206154e483398151915281529051908190036011019020613bc89084612cdf565b613c065760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152a66033913960400191505060405180910390fd5b601a54604080517f1208333a000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0386811660248301526044820186905291519190921691631208333a9160648083019260209291908290030181600087803b158015613c7b57600080fd5b505af1158015613c8f573d6000803e3d6000fd5b505050506040513d6020811015613ca557600080fd5b5050604051600160a060020a0384169083156108fc029084906000818181858888f19350505050158015613cdd573d6000803e3d6000fd5b5060019392505050565b6000806000601b60009054906101000a9004600160a060020a0316600160a060020a031663e3bbb5656040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d3d57600080fd5b505afa158015613d51573d6000803e3d6000fd5b505050506040513d6020811015613d6757600080fd5b5051604080517f8e15f4730000000000000000000000000000000000000000000000000000000081528151600160a060020a0390931692638e15f47392600480840193919291829003018186803b158015613dc157600080fd5b505afa158015613dd5573d6000803e3d6000fd5b505050506040513d6040811015613deb57600080fd5b50805160209091015190925090506000613e1a33613e158560ff8616600a0a63ffffffff61470516565b612ddd565b5091925060009150508115613f3257601c546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015613e8057600080fd5b505af1158015613e94573d6000803e3d6000fd5b505050506040513d6020811015613eaa57600080fd5b5050600a54604080517fbb7598060000000000000000000000000000000000000000000000000000000081523360048201529051610100909204600160a060020a03169163bb7598069160248082019260009290919082900301818387803b158015613f1557600080fd5b505af1158015613f29573d6000803e3d6000fd5b50505050600190505b604080518381523360208201528215158183015290517f9d6ad47cb919b7aa19b4e438ceeaa7b16afb7e9a6afe89335044b64c3cb4adca9181900360600190a1935050505090565b613f8261465c565b600254600160a060020a03908116911614613fe7576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600160a060020a03811661402f5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806153196026913960400191505060405180910390fd5b600254604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600160a060020a031916600160a060020a0392909216919091179055565b604080516000805160206152d98339815191528152905190819003600d0190206000906140b89033612cdf565b6140f65760405160e560020a62461bcd02815260040180806020018281038252603281526020018061535f6032913960400191505060405180910390fd5b604080516000805160206152f9833981519152815290519081900360140190206141209085612cdf565b61415e5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152a66033913960400191505060405180910390fd5b600061417a6064612146601254876145a390919063ffffffff16565b905060006141986064612146601354886145a390919063ffffffff16565b600160a060020a038781166000908152601960205260408120549293509116156141e3576141dc826141d0888663ffffffff61474716565b9063ffffffff61474716565b90506141f6565b6141f3868463ffffffff61474716565b90505b600160a060020a039687166000908152601860209081526040808320815160c08101835294855242858401908152600d5492860192835260608601858152608087018681529a8d1660a088019081528354600180820186559488529590962096516006909502909601938455518382015590516002830155925160038201805460ff1916911515919091179055955160048701555160059095018054600160a060020a031916959097169490941790955550909392505050565b6000806060600f546010546011808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156143525780601f1061432757610100808354040283529160200191614352565b820191906000526020600020905b81548152906001019060200180831161433557829003601f168201915b50505050509050925092509250909192565b600a54604080517f854fe7ac000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015260248201899052604482018890526064820187905285151560848301523360a483015284151560c483015291516101009093049091169163854fe7ac9160e48082019260009290919082900301818387803b1580156143fc57600080fd5b505af11580156124f1573d6000803e3d6000fd5b604080516000805160206152f98339815191528152905190819003601401902081565b600e5460125460135460145460155460165460175490919293949596565b61445b8282614536565b156144b0576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b600061145a83600160a060020a038416614c70565b600061145a83600160a060020a03841684614c88565b6000600160a060020a0382166145805760405160e560020a62461bcd0281526004018080602001828103825260228152602001806155526022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b6000826145b257506000611497565b828202828482816145bf57fe5b041461145a5760405160e560020a62461bcd0281526004018080602001828103825260218152602001806155316021913960400191505060405180910390fd5b60008282018381101561145a576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600082815260208190526040902061467e908263ffffffff61452016565b156117f35760008281526001602081815260408320805492830181558352909120018054600160a060020a031916600160a060020a0383161790556146c161465c565b600160a060020a031681600160a060020a0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061145a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614cfd565b600061145a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614da2565b61479a60068263ffffffff614dff16565b604051600160a060020a038216907f9c8e7d83025bef8a04c664b2f753f64b8814bdb7e27291d7e50935f18cc3c71290600090a250565b600061145a8383614f47565b600a5460009060ff166148245760405160e560020a62461bcd0281526004018080602001828103825260248152602001806155cf6024913960400191505060405180910390fd5b6040805160008051602061533f833981519152815290519081900360140190206000906148519082612cc1565b9050600061486f6064612146601254876145a390919063ffffffff16565b9050600061488d6064612146601354886145a390919063ffffffff16565b600160a060020a0387811660009081526019602052604081205492935091161561494b57600160a060020a0380881660009081526019602052604080822054905192169184156108fc0291859190818181858888f193505050501580156148f8573d6000803e3d6000fd5b50604051600160a060020a0385169084156108fc029085906000818181858888f1935050505015801561492f573d6000803e3d6000fd5b50614944826141d0888663ffffffff61474716565b9050614995565b604051600160a060020a0385169084156108fc029085906000818181858888f19350505050158015614981573d6000803e3d6000fd5b50614992868463ffffffff61474716565b90505b600160a060020a038781166000908152601860209081526040808320815160c08101835286815242818501908152600d54938201938452606082018681526080830187815260a08401888152855460018082018855968a529790982093516006909702909301958655905192850192909255915160028401555160038301805460ff1916911515919091179055516004820155905160059091018054600160a060020a03191691909216179055601654614a4f90876145ff565b601655604080518781529051600160a060020a038916917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25060019695505050505050565b614aaf60038263ffffffff61445116565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b600061149782614fae565b6000828152602081905260409020614b0f908263ffffffff614fb216565b156117f35760005b600083815260016020526040902054811015614b945760008381526001602052604090208054600160a060020a038416919083908110614b5357fe5b600091825260209091200154600160a060020a03161415614b8c576000838152600160205260409020614b87908290614fc7565b614b94565b600101614b17565b50614b9d61465c565b600160a060020a031681600160a060020a0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b614bf260038263ffffffff614dff16565b604051600160a060020a038216907f26b6063d78aefcf96f02ff06bc9822b5a623278253add7fffa5fb453db39981090600090a250565b614c3a60068263ffffffff61445116565b604051600160a060020a038216907e47706786c922d17b39285dc59d696bafea72c0b003d3841ae1202076f4c2e490600090a250565b60009081526002919091016020526040902054151590565b6000614c948484614c70565b614cf557508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a038616179055855485825260028701909352604090209190915561145a565b50600061145a565b60008183614d8c5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d51578181015183820152602001614d39565b50505050905090810190601f168015614d7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614d9857fe5b0495945050505050565b60008184841115614df75760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315614d51578181015183820152602001614d39565b505050900390565b614e098282614536565b614e475760405160e560020a62461bcd02815260040180806020018281038252602181526020018061540a6021913960400191505060405180910390fd5b600160a060020a03811660009081526002830160205260409020548015614f225782546000198083019190810190600090869083908110614e8457fe5b6000918252602090912001548654600160a060020a0390911691508190879085908110614ead57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790558554869080614ee157fe5b6000828152602080822083016000199081018054600160a060020a0319169055909201909255600160a060020a038716825260028801905260408120555050505b50600160a060020a03166000908152600190910160205260409020805460ff19169055565b81546000908210614f8c5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806152556022913960400191505060405180910390fd5b826000018281548110614f9b57fe5b9060005260206000200154905092915050565b5490565b600061145a83600160a060020a038416615071565b815b81546000190181101561504057818160010181548110614fe557fe5b9060005260206000200160009054906101000a9004600160a060020a031682828154811061500f57fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600101614fc9565b508080548061504b57fe5b60008281526020902081016000199081018054600160a060020a03191690550190555050565b600081815260028301602052604081205480156151b257835460001980830191908101906000908790839081106150a457fe5b90600052602060002001549050808760000184815481106150c157fe5b60009182526020909120015586548790806150d857fe5b6001900381819060005260206000200160009055905560008760010183815481106150ff57fe5b600091825260209091200154600189018054600160a060020a03909216925082918690811061512a57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055508760010180548061516557fe5b6000828152602080822083016000199081018054600160a060020a031916905590920190925592815260028901909252506040808220600194850190558682528120555091506114979050565b6000915050611497565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106151fd5782800160ff1982351617855561522a565b8280016001018555821561522a579182015b8281111561522a57823582559160200191906001019061520f565b5061523692915061523a565b5090565b61125491905b80821115615236576000815560010161524056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74496e766573746d656e74506f6f6c3a207468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e504f4f4c5f5245474953545259000000000000000000000000000000000000004c494d495445445f504152544e45525f524f4c450000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737347454e4552414c5f504152544e45525f524f4c45000000000000000000000000526f6c65733a2063616c6c657220646f6573206e6f7420686176652074686520706f6f6c20726567797374727920726f6c65546f6b656e73616c65506f6f6c3a2077652063616e27742073656c6c203020746f6b656e732e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b655468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65546f6b656e73616c65506f6f6c3a2077652063616e27742073656c6c206d6f7265207468616e203330252066726f6d206f6e65207472616e73616374696f6e2e20506c6561736520646563726561736520696e766573746d656e7420616d6f756e742e496e766573746d656e74506f6f6c3a2074686520706f6f6c20697320616c7265616479206465616374697661746564546f6b656e73616c65506f6f6c3a206d696e696d616c20707572636861736520302e31424e422e535441525455505f5445414d5f524f4c45000000000000000000000000000000496e766573746d656e74506f6f6c3a2074686520706f6f6c20697320616c726561647920616374697661746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734f70656e42695365613a20796f75206d7573742073656e64206d696e696d616c20616d6f756e74206f72206d6f72655465616d526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205465616d20726f6c65496e766573746d656e74506f6f6c3a20706f6f6c206465706f73697420626c6f636b6564526f6c65733a2063616c6c657220646f6573206e6f742068617665207468652072657475726e20696e7665736d656e74206c706172746e657220726f6c65a26469706673582212203a2f13acffe7aeaca0b56d48a492a6e7292a555cfc0eba85bc4565c6a423221064736f6c63430006080033416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737353555045525f41444d494e5f524f4c4500000000000000000000000000000000000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b87000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000da22293aa75e005f7a6411a85f5ae053ebafd3a9000000000000000000000000027d865ef0b4d1372affe941272f47e013cac66900000000000000000000000068af405930877980147caa9fa942ddd087ef513f00000000000000000000000051b486692321af984bc75d105c54419e35d963b90000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a000000000000000000000000aba81bdbdbf45edca8498d90ab1deb9d85186930000000000000000000000000a5ca66874ca008d7bcd3f3f817a87f98bea75fd20000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56000000000000000000000000000000000000000000000000000000000000000c4f70656e42695365612e696f0000000000000000000000000000000000000000

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

000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b87000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000da22293aa75e005f7a6411a85f5ae053ebafd3a9000000000000000000000000027d865ef0b4d1372affe941272f47e013cac66900000000000000000000000068af405930877980147caa9fa942ddd087ef513f00000000000000000000000051b486692321af984bc75d105c54419e35d963b90000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a000000000000000000000000aba81bdbdbf45edca8498d90ab1deb9d85186930000000000000000000000000a5ca66874ca008d7bcd3f3f817a87f98bea75fd20000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56000000000000000000000000000000000000000000000000000000000000000c4f70656e42695365612e696f0000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenForTokensale (address): 0x490dba6180b089d8e36ebb1e56a33f1ae9b96b87
Arg [1] : name (string): OpenBiSea.io
Arg [2] : locked (uint256): 100
Arg [3] : depositFixedFee (uint256): 5
Arg [4] : referralDepositFee (uint256): 1
Arg [5] : auctionCreationFeeMultiplier (uint256): 1
Arg [6] : auctionContractFeeMultiplier (uint256): 1
Arg [7] : superAdmin (address): 0xda22293aa75e005f7a6411a85f5ae053ebafd3a9
Arg [8] : gPartner (address): 0x027d865ef0b4d1372affe941272f47e013cac669
Arg [9] : lPartner (address): 0x68af405930877980147caa9fa942ddd087ef513f
Arg [10] : team (address): 0x51b486692321af984bc75d105c54419e35d963b9
Arg [11] : poolRegistry (address): 0x4eac987ccbb935348570fd9fe963fb4d17c6571a
Arg [12] : returnInvestmentLpartner (address): 0xaba81bdbdbf45edca8498d90ab1deb9d85186930
Arg [13] : assetsManageTeam (address): 0xa5ca66874ca008d7bcd3f3f817a87f98bea75fd2
Arg [14] : initialBalance (uint256): 8000000000000000000000
Arg [15] : busdContract (address): 0xe9e7cea3dedca5984780bafc599bd69add087d56

-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 000000000000000000000000490dba6180b089d8e36ebb1e56a33f1ae9b96b87
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 000000000000000000000000da22293aa75e005f7a6411a85f5ae053ebafd3a9
Arg [8] : 000000000000000000000000027d865ef0b4d1372affe941272f47e013cac669
Arg [9] : 00000000000000000000000068af405930877980147caa9fa942ddd087ef513f
Arg [10] : 00000000000000000000000051b486692321af984bc75d105c54419e35d963b9
Arg [11] : 0000000000000000000000004eac987ccbb935348570fd9fe963fb4d17c6571a
Arg [12] : 000000000000000000000000aba81bdbdbf45edca8498d90ab1deb9d85186930
Arg [13] : 000000000000000000000000a5ca66874ca008d7bcd3f3f817a87f98bea75fd2
Arg [14] : 0000000000000000000000000000000000000000000001b1ae4d6e2ef5000000
Arg [15] : 000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56
Arg [16] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [17] : 4f70656e42695365612e696f0000000000000000000000000000000000000000


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