Contract 0x424E231FBd3f74Ab9D85D1cf7de2d242D96d8ea4 3

 

Contract Overview

Balance:
1.099 MATIC

MATIC Value:
$1.64 (@ $1.50/MATIC)

Token:
Ad
Ad
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x15e89b7ab021c0c64000fbfc909c3cc9827a6c46ce4bff8ea22bd3e495fff8f3Create Auction202751822021-10-16 10:56:272 days 15 hrs ago0x9d67b95cfabd472779ce799478c801b065e6b870 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.0090231
0x72a8cf7f4e30c68f32336264251b2677e2da8f853fa5f39854268fa1ada3caa6Create Auction202750442021-10-16 10:50:472 days 15 hrs ago0x9d67b95cfabd472779ce799478c801b065e6b870 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00813174
0x90e4d4602ce1dab663164f5bedd2777e519feb01da63fafb236cf5b9c80f725dBid USD202745312021-10-16 10:22:272 days 16 hrs ago0x9d67b95cfabd472779ce799478c801b065e6b870 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00457314
0xcf317ae8e6ddd1f448daf180cd69ca7c510706c449fb6942bb5cd3e59720e92cCreate Auction202742912021-10-16 10:12:592 days 16 hrs ago0x9d67b95cfabd472779ce799478c801b065e6b870 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.0090231
0xaef27eed4b9f3999d58a5b2773e0d0675f8f895b38e6719e49b49aa46bc69373Cancel Auction202734102021-10-16 9:33:172 days 16 hrs ago0x9d67b95cfabd472779ce799478c801b065e6b870 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00273534
0xe203aa196357bad7b4cc71c657cf2a6972dbcc88c5628e4c9d6f953d2661674cCreate Auction202094822021-10-14 12:29:364 days 14 hrs ago0x9d67b95cfabd472779ce799478c801b065e6b870 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.009926994
0x2409165ac9391aff2d51172219fffe12a6745f7c86a70e775cd4a0d95e3d35d3Purchase Tokens201674892021-10-13 8:26:345 days 18 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.11 MATIC0.00152982
0xc2c1321f917ac57bd6c047fe28eb6a89baf2cb40e4537e5700c9bf7dc64a61ddBid201673712021-10-13 8:22:265 days 18 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.000001 MATIC0.00335226
0xb85d3633cfe1ed44a36a3f155181733916246f430e33279ad2870196755a33abCreate Auction201672362021-10-13 8:17:485 days 18 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00813282
0xb452aeb8a4ad7b5b3a6da8d99a9b1c81c465926c3e29741e0019e375d37a141dCancel Auction201408872021-10-12 14:53:586 days 11 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00269334
0x885117f06ea552837c9a551f449353ed13de7f7556721a6cec85cf8bf4bb4d41Bid201407522021-10-12 14:45:046 days 11 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.0001 MATIC0.00335226
0x9ad2b44f3d0f4067ce7191cc268aa6e5dfe63649d06753368041e8f904d6ce10Create Auction201407192021-10-12 14:43:526 days 11 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00813318
0xaeca023691f28762f62809ec7b38f86a1e6342529d78fe70b64ecf0f01862fd3Create Auction201406602021-10-12 14:41:506 days 11 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00842754
0xf2218ac1ec9e28eb62bf6f3933e0b4c90ecbf88fa94a3493aca14582c75f6335Purchase Tokens201399332021-10-12 14:16:456 days 12 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.11 MATIC0.00152982
0xf0b72d8782f5365dc048f2287ce3e8b8a8c9404559826c505c05e1d5839d36a4Purchase Tokens201018522021-10-11 14:39:277 days 11 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.11 MATIC0.00152982
0x452c52c010f542b9e7581ab0fda52a43c94aa3c14a18ed4a8a60a7977b857281Bid201017182021-10-11 14:34:517 days 11 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.1 MATIC0.00405105
0x2dd4d78e09569d7d04a8782f710e989e9a08353fe2dcd2958b020f93690daaa1Cancel Auction201016272021-10-11 14:31:417 days 11 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00269334
0xf645dc23f503108090f4703cd844e6aa18595ae270b3e7f4b1fa184d50b65bbdCreate Auction201015872021-10-11 14:30:217 days 11 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00813354
0xa9b4db12c4e1913f1f54ae2ca9839b64b7266fec7b9c3630a998d6f728ab9dbdPurchase Tokens200999122021-10-11 13:30:397 days 12 hrs ago0x47feb8eee1119e13f71fc92bd3311ead9c2e102d IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.11 MATIC0.00204282
0x130034330d2b50502faf4656d39dca1ce2b25f004b503be46566157b965aa9b0Purchase Tokens200647132021-10-10 14:21:458 days 12 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.11 MATIC0.00204282
0x81ded6b2a3428f61d20bbe0e9cd0635b19895fae9ac7e52246f84668b9a164b7Bid200568432021-10-10 9:46:298 days 16 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40.00000003 MATIC0.00013167168
0xf7d782d15d7e78665b085b92d6534417f941a1ed8fbd8c617c3bb4cbbdf1d79eCancel Auction200566742021-10-10 9:40:398 days 16 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00331734
0x429cb0fd3ec6bfcd5875d891b92183b8f4d7334b0d32dc4857d4f34dc5124e48Create Auction200566252021-10-10 9:38:578 days 16 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.00768318
0xe77f77210cc83515e7d88891fff3b769a5cb1c25dd97ef4ab084a8e2ebab66c7Create Auction200565622021-10-10 9:36:478 days 16 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.000571728
0xee149f608615511bf0bf846deeacd55e3b26aff621f950abff1a00fdfb594a1fCreate Auction200565522021-10-10 9:36:278 days 16 hrs ago0xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a1 IN  0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40 MATIC0.000561812
[ Download CSV Export 
Latest 14 internal transactions
Parent Txn Hash Block From To Value
0xc2c1321f917ac57bd6c047fe28eb6a89baf2cb40e4537e5700c9bf7dc64a61dd201673712021-10-13 8:22:265 days 18 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x47feb8eee1119e13f71fc92bd3311ead9c2e102d0.000000950000000001 MATIC
0xc2c1321f917ac57bd6c047fe28eb6a89baf2cb40e4537e5700c9bf7dc64a61dd201673712021-10-13 8:22:265 days 18 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x027d865ef0b4d1372affe941272f47e013cac6690.00000005 MATIC
0x885117f06ea552837c9a551f449353ed13de7f7556721a6cec85cf8bf4bb4d41201407522021-10-12 14:45:046 days 11 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a10.000095000000000001 MATIC
0x885117f06ea552837c9a551f449353ed13de7f7556721a6cec85cf8bf4bb4d41201407522021-10-12 14:45:046 days 11 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x027d865ef0b4d1372affe941272f47e013cac6690.000005 MATIC
0x452c52c010f542b9e7581ab0fda52a43c94aa3c14a18ed4a8a60a7977b857281201017182021-10-11 14:34:517 days 11 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x9d67b95cfabd472779ce799478c801b065e6b8700.095 MATIC
0x452c52c010f542b9e7581ab0fda52a43c94aa3c14a18ed4a8a60a7977b857281201017182021-10-11 14:34:517 days 11 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x027d865ef0b4d1372affe941272f47e013cac6690.005 MATIC
0x81ded6b2a3428f61d20bbe0e9cd0635b19895fae9ac7e52246f84668b9a164b7200568432021-10-10 9:46:298 days 16 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40xc98834f2de2eb9c97ffbdf2e4952535d2d4bc1a10.0000000285 MATIC
0x81ded6b2a3428f61d20bbe0e9cd0635b19895fae9ac7e52246f84668b9a164b7200568432021-10-10 9:46:298 days 16 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x027d865ef0b4d1372affe941272f47e013cac6690.0000000015 MATIC
0xa1c273ae5cea6eac674043d7bb19399af24e08d31838da8b6d03fe8164e6f9c0200549042021-10-10 8:34:578 days 17 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x4e54b369aecfe04e6ef3f6c768f7a77f39c388c80.000285000000000001 MATIC
0xa1c273ae5cea6eac674043d7bb19399af24e08d31838da8b6d03fe8164e6f9c0200549042021-10-10 8:34:578 days 17 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x027d865ef0b4d1372affe941272f47e013cac6690.000015 MATIC
0x81c6d365ec8af5be4c1ce3ca07e98801deee8b78e051a043cf946d1cf9823807158571292021-06-18 9:51:54122 days 16 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x4f476c35f1d823c24c476db1eecb97db3a6a49a10.001 MATIC
0x53ac78ccfe53893015ca90d591fc8a253f0570adb6f8c06980f86a31ab555ae9157824322021-06-16 12:44:37124 days 13 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x9917a225d8e40ed471598ec1cf5470b0406eee850.0003 MATIC
0xef7c0d69b2dce9f47a0e469a76b253df1c868f49125eb5ffdd99829075cf9e7d157822482021-06-16 12:38:11124 days 13 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x4f476c35f1d823c24c476db1eecb97db3a6a49a10.000285 MATIC
0xef7c0d69b2dce9f47a0e469a76b253df1c868f49125eb5ffdd99829075cf9e7d157822482021-06-16 12:38:11124 days 13 hrs ago 0x424e231fbd3f74ab9d85d1cf7de2d242d96d8ea40x027d865ef0b4d1372affe941272f47e013cac6690.000015 MATIC
[ 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
        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 _updatePool(
        string calldata name,
        bool isPublicPool,
        address token,
        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 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, uint256 feesMultipier) external onlyPoolRegistry returns (bool) {
        require(hasRole(LIMITED_PARTNER_ROLE, sender), "InvestmentPool: the sender does not have permission");
        return _deposit(sender, amount, feesMultipier);
    }
    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 _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 = 18446744073709551615;// 88800000000000000 - 0.0888 BNB one token, 18446744073709551615 - MATIC 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 = _tokensaleTotalSold.add(amountTokens);
        return amountTokens;
    }
    uint256 constant private multiplierDefault = 100000;

    function _deposit(address sender, uint256 amount, uint256 feesMultipier) 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).div(feesMultipier).mul(multiplierDefault);
        uint256 depositFeeReferrer = amount.mul(_referralDepositFee).div(100).div(feesMultipier).mul(multiplierDefault);
        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);
    function feesMultipier(address sender) external view returns (uint256);
}

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":"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"},{"internalType":"uint256","name":"feesMultipier","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":"address","name":"token","type":"address"},{"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"}]

6002805460a060020a60ff0219169055600a805460ff191660011790556000600f81905560105560c0604052600760808190527f6e6f7468696e670000000000000000000000000000000000000000000000000060a090815262000067916011919062000d0d565b5067ffffffffffffffff601e553480156200008157600080fd5b50604051620064fa380380620064fa8339818101604052610140811015620000a857600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e0880151610100890151610120909901519798969795969495939492939192909160006200010064010000000062000648810204565b60028054600160a060020a031916600160a060020a038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604080517f47454e4552414c5f504152544e45525f524f4c4500000000000000000000000081528151908190036014018120600080516020620064da83398151915282529151908190036010019020620001b291906401000000006200064d810204565b604080517f4c494d495445445f504152544e45525f524f4c4500000000000000000000000081528151908190036014018120600080516020620064da833981519152825291519081900360100190206200021691906401000000006200064d810204565b604080517f535441525455505f5445414d5f524f4c4500000000000000000000000000000081528151908190036011018120600080516020620064da833981519152825291519081900360100190206200027a91906401000000006200064d810204565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152815190819003600d018120600080516020620064da83398151915282529151908190036010019020620002de91906401000000006200064d810204565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152815190819003601a018120600080516020620064da833981519152825291519081900360100190206200034291906401000000006200064d810204565b604080517f4f5241434c45000000000000000000000000000000000000000000000000000081528151908190036006018120600080516020620064da83398151915282529151908190036010019020620003a691906401000000006200064d810204565b620003ba3364010000000062000662810204565b601c8054600160a060020a03808d16600160a060020a031992831617909255601a8054868416908316179055601b8054888416908316179055601d849055600b80549284169290911691909117905560408051600080516020620064da8339815191528152905190819003601001902062000444903364010000000062001e5d620006b482021704565b5060408051600080516020620064da8339815191528152905190819003601001902062000480908a64010000000062001e5d620006b482021704565b5060408051600080516020620064da83398151915281529051908190036010019020620004bc908664010000000062001e5d620006b482021704565b50620004d564010000000062001ae4620007de82021704565b604080517f47454e4552414c5f504152544e45525f524f4c45000000000000000000000000815290519081900360140190206200051c90896401000000006200093a810204565b604080517f4c494d495445445f504152544e45525f524f4c45000000000000000000000000815290519081900360140190206200056390886401000000006200093a810204565b604080517f535441525455505f5445414d5f524f4c4500000000000000000000000000000081529051908190036011019020620005aa90876401000000006200093a810204565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152905190819003600d019020620005f190866401000000006200093a810204565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a0190206200063890856401000000006200093a810204565b5050505050505050505062000daf565b335b90565b60009182526020829052604090912060030155565b6200067d60038264010000000062004472620009e382021704565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b6000620006c964010000000062000648810204565b600254600160a060020a039081169116146200073557604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201819052602482015260008051602062006498833981519152604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615620007c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b620007d58383640100000000620009ca810204565b50600192915050565b620007f164010000000062000648810204565b600254600160a060020a039081169116146200085d57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201819052602482015260008051602062006498833981519152604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615620008e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b6002805460a060020a60ff021916740100000000000000000000000000000000000000001790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1565b60008281526020819052604090206003015462000973906200096464010000000062000648810204565b64010000000062000ac0810204565b620009ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062006469602f913960400191505060405180910390fd5b620009df828264010000000062000aef810204565b5050565b620009f8828264010000000062000baa810204565b1562000a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b600082815260208190526040812062000ae890836401000000006200452c62000c3082021704565b9392505050565b600082815260208190526040902062000b1790826401000000006200454162000c5082021704565b15620009df5760008281526001602081815260408320805492830181558352909120018054600160a060020a031916600160a060020a03831617905562000b6664010000000062000648810204565b600160a060020a031681600160a060020a0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000600160a060020a03821662000c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620064b86022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b600062000ae883600160a060020a03841664010000000062000c71810204565b600062000ae883600160a060020a0384168464010000000062000c89810204565b60009081526002919091016020526040902054151590565b600062000ca0848464010000000062000c71810204565b62000d0357508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a038616179055855485825260028701909352604090209190915562000ae8565b5060009392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000d5057805160ff191683800117855562000d80565b8280016001018555821562000d80579182015b8281111562000d8057825182559160200191906001019062000d63565b5062000d8e92915062000d92565b5090565b6200064a91905b8082111562000d8e576000815560010162000d99565b6156aa8062000dbf6000396000f3fe6080604052600436106103b55760003560e060020a900480639010d07c116101eb578063d5c5e43411610111578063e89ec45f116100a4578063f66fdcca11610073578063f66fdcca14610ff9578063fd66c06714611094578063fe070e9d146110e9578063fedf51e9146110fe576103bc565b8063e89ec45f14610f35578063f14d218114610f6e578063f2fde38b14610f83578063f45efe6714610fb6576103bc565b8063d9a431b3116100e0578063d9a431b314610e69578063dae06b7214610e7e578063dca80c1914610ec1578063df5dd1a514610f02576103bc565b8063d5c5e43414610d54578063d69df4c714610db0578063d6d6878414610def578063d93f48b014610e22576103bc565b8063b463a75c11610189578063cb4ff7f211610158578063cb4ff7f214610c02578063cbc5906e14610c47578063d2f0d2a814610c5c578063d547741f14610d1b576103bc565b8063b463a75c14610b07578063bd8afbf814610b3a578063c1abd75714610bc3578063ca15c87314610bd8576103bc565b80639cf6cc70116101c55780639cf6cc701461099c5780639f2ac7f8146109c6578063a97e5c9314610a27578063b06fd88f14610a5a576103bc565b80639010d07c1461090957806391d148541461093957806394707a9514610972576103bc565b8063594ce4c7116102db5780637a99bb0a1161026e57806387ac828a1161023d57806387ac828a1461087957806389e52771146108ac5780638c533ba7146108c15780638da5cb5b146108f4576103bc565b80637a99bb0a146107c35780637d9f6db5146107ed5780637fdbc08b14610802578063878d9b7a14610845576103bc565b80636d8664e0116102aa5780636d8664e01461073d5780637330aba214610752578063770108a7146107675780637837efdc146107ae576103bc565b8063594ce4c7146106975780635ac8b005146106da5780636176dd9f146106ef5780636419bcdb14610704576103bc565b80632dc20f621161035357806338013f021161032257806338013f02146106095780633b0f0f2f1461061e5780634460bdd61461066d5780634bb278f314610682576103bc565b80632dc20f621461058b5780632f2ff15d146105b35780633049ea33146105ec5780633290ce2914610601576103bc565b8063248519141161038f57806324851914146104a4578063248a9ca3146104d7578063261fef02146105015780632726b50614610516576103bc565b8063052c09fd146103c157806316fb3c15146104265780631cda4a8d1461047d576103bc565b366103bc57005b600080fd5b3480156103cd57600080fd5b506103d661114b565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104125781810151838201526020016103fa565b505050509050019250505060405180910390f35b34801561043257600080fd5b506104696004803603606081101561044957600080fd5b50600160a060020a0381358116916020810135909116906040013561126d565b604080519115158252519081900360200190f35b34801561048957600080fd5b50610492611477565b60408051918252519081900360200190f35b3480156104b057600080fd5b50610469600480360360208110156104c757600080fd5b5035600160a060020a031661149a565b3480156104e357600080fd5b50610492600480360360208110156104fa57600080fd5b50356114b3565b34801561050d57600080fd5b506104926114c8565b34801561052257600080fd5b5061054f6004803603604081101561053957600080fd5b50600160a060020a0381351690602001356114fd565b6040805196875260208701959095528585019390935290151560608501526080840152600160a060020a031660a0830152519081900360c00190f35b6105b1600480360360208110156105a157600080fd5b5035600160a060020a03166116a3565b005b3480156105bf57600080fd5b506105b1600480360360408110156105d657600080fd5b5080359060200135600160a060020a031661179e565b3480156105f857600080fd5b5061046961180d565b6104926118d1565b34801561061557600080fd5b50610492611a5c565b34801561062a57600080fd5b506106516004803603602081101561064157600080fd5b5035600160a060020a0316611a91565b60408051600160a060020a039092168252519081900360200190f35b34801561067957600080fd5b50610492611aaf565b34801561068e57600080fd5b506105b1611ae4565b3480156106a357600080fd5b50610469600480360360608110156106ba57600080fd5b50600160a060020a03813581169160208101359091169060400135611c24565b3480156106e657600080fd5b50610492611d69565b3480156106fb57600080fd5b50610469611d9e565b34801561071057600080fd5b506104696004803603604081101561072757600080fd5b5080359060200135600160a060020a0316611e5d565b34801561074957600080fd5b50610492611f52565b34801561075e57600080fd5b506103d6611f58565b34801561077357600080fd5b506105b16004803603608081101561078a57600080fd5b50600160a060020a0381351690602081013590604081013590606001351515611fbd565b3480156107ba57600080fd5b506105b1612515565b3480156107cf57600080fd5b50610492600480360360208110156107e657600080fd5b5035612520565b3480156107f957600080fd5b506106516125c3565b34801561080e57600080fd5b506104696004803603606081101561082557600080fd5b50600160a060020a038135811691602081013590911690604001356125d7565b6105b16004803603606081101561085b57600080fd5b50600160a060020a03813516906020810135906040013515156127b3565b34801561088557600080fd5b506104926004803603602081101561089c57600080fd5b5035600160a060020a0316612abd565b3480156108b857600080fd5b506103d6612ad8565b3480156108cd57600080fd5b506105b1600480360360208110156108e457600080fd5b5035600160a060020a0316612b3b565b34801561090057600080fd5b50610651612cc9565b34801561091557600080fd5b506106516004803603604081101561092c57600080fd5b5080359060200135612cd8565b34801561094557600080fd5b506104696004803603604081101561095c57600080fd5b5080359060200135600160a060020a0316612cf6565b34801561097e57600080fd5b506104696004803603602081101561099557600080fd5b5035612d14565b3480156109a857600080fd5b506103d6600480360360208110156109bf57600080fd5b5035612d88565b3480156109d257600080fd5b506109ff600480360360408110156109e957600080fd5b50600160a060020a038135169060200135612df4565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b348015610a3357600080fd5b5061046960048036036020811015610a4a57600080fd5b5035600160a060020a0316612ebd565b348015610a6657600080fd5b506104696004803603610100811015610a7e57600080fd5b810190602081018135640100000000811115610a9957600080fd5b820183602082011115610aab57600080fd5b80359060200191846001830284011164010000000083111715610acd57600080fd5b91935091508035151590600160a060020a036020820135169060408101359060608101359060808101359060a08101359060c00135612ed0565b348015610b1357600080fd5b506105b160048036036020811015610b2a57600080fd5b5035600160a060020a0316612f79565b348015610b4657600080fd5b5061046960048036036060811015610b5d57600080fd5b813591602081013591810190606081016040820135640100000000811115610b8457600080fd5b820183602082011115610b9657600080fd5b80359060200191846001830284011164010000000083111715610bb857600080fd5b509092509050612fcc565b348015610bcf57600080fd5b50610492613059565b348015610be457600080fd5b5061049260048036036020811015610bfb57600080fd5b503561307c565b348015610c0e57600080fd5b5061046960048036036060811015610c2557600080fd5b50600160a060020a038135811691602081013582169160409091013516613093565b348015610c5357600080fd5b50610492613283565b348015610c6857600080fd5b50610c716132a6565b60405180806020018615151515815260200185600160a060020a0316600160a060020a03168152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b83811015610cdc578181015183820152602001610cc4565b50505050905090810190601f168015610d095780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610d2757600080fd5b506105b160048036036040811015610d3e57600080fd5b5080359060200135600160a060020a0316613373565b348015610d6057600080fd5b50610d8760048036036020811015610d7757600080fd5b5035600160a060020a03166133d9565b6040805193151584526020840192909252600160a060020a031682820152519081900360600190f35b348015610dbc57600080fd5b5061046960048036036060811015610dd357600080fd5b50600160a060020a0381351690602081013590604001356136be565b348015610dfb57600080fd5b506105b160048036036020811015610e1257600080fd5b5035600160a060020a03166137a4565b348015610e2e57600080fd5b5061046960048036036080811015610e4557600080fd5b50600160a060020a0381358116916020810135916040820135916060013516613820565b348015610e7557600080fd5b506105b16139a5565b348015610e8a57600080fd5b50610ea860048036036020811015610ea157600080fd5b50356139f5565b6040805192835260208301919091528051918290030190f35b348015610ecd57600080fd5b506105b160048036036060811015610ee457600080fd5b50600160a060020a0381351690602081013590604001351515613a6e565b348015610f0e57600080fd5b506105b160048036036020811015610f2557600080fd5b5035600160a060020a0316613b04565b348015610f4157600080fd5b5061046960048036036040811015610f5857600080fd5b50600160a060020a038135169060200135613b54565b348015610f7a57600080fd5b50610469613d08565b348015610f8f57600080fd5b506105b160048036036020811015610fa657600080fd5b5035600160a060020a0316613f9b565b348015610fc257600080fd5b5061046960048036036060811015610fd957600080fd5b50600160a060020a038135811691602081013591604090910135166140ac565b34801561100557600080fd5b5061100e6142d1565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561105757818101518382015260200161103f565b50505050905090810190601f1680156110845780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3480156110a057600080fd5b506105b1600480360360c08110156110b757600080fd5b50600160a060020a0381351690602081013590604081013590606081013590608081013515159060a001351515614385565b3480156110f557600080fd5b50610492614431565b34801561110a57600080fd5b50611113614454565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6060600a60019054906101000a9004600160a060020a0316600160a060020a031663052c09fd6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561119e57600080fd5b505afa1580156111b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156111db57600080fd5b81019080805160405193929190846401000000008211156111fb57600080fd5b90830190602082018581111561121057600080fd5b825186602082028301116401000000008211171561122d57600080fd5b82525081516020918201928201910280838360005b8381101561125a578181015183820152602001611242565b5050505090500160405250505090505b90565b6040805160008051602061531d8339815191528152905190819003600d01902060009061129a9033612cf6565b6112d85760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b60408051600080516020615528833981519152815290519081900360110190206113029085612cf6565b6113405760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152ea6033913960400191505060405180910390fd5b601a54604080517fe33d8221000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0386811660248301528781166044830152606482018690529151919092169163e33d82219160848083019260209291908290030181600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b505050506040513d60208110156113e757600080fd5b50506040805160e060020a63a9059cbb028152600160a060020a0386811660048301526024820185905291519185169163a9059cbb916044808201926020929091908290030181600087803b15801561143f57600080fd5b505af1158015611453573d6000803e3d6000fd5b505050506040513d602081101561146957600080fd5b5060019150505b9392505050565b6040805160008051602061531d8339815191528152905190819003600d01902081565b60006114ad60038363ffffffff61455716565b92915050565b60009081526020819052604090206003015490565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902081565b6000806000806000806018600089600160a060020a0316600160a060020a03168152602001908152602001600020878154811061153657fe5b60009182526020808320600690920290910154600160a060020a038b1683526018909152604090912080548990811061156b57fe5b906000526020600020906006020160010154601860008b600160a060020a0316600160a060020a0316815260200190815260200160002089815481106115ad57fe5b906000526020600020906006020160020154601860008c600160a060020a0316600160a060020a031681526020019081526020016000208a815481106115ef57fe5b6000918252602080832060036006909302019190910154600160a060020a038e16835260189091526040909120805460ff909216918c90811061162e57fe5b906000526020600020906006020160040154601860008e600160a060020a0316600160a060020a031681526020019081526020016000208c8154811061167057fe5b6000918252602090912060069091020160050154949d939c50919a5098509650600160a060020a03909116945092505050565b601454601e546116b89163ffffffff6145c416565b3410156116f95760405160e560020a62461bcd02815260040180806020018281038252602f8152602001806155b8602f913960400191505060405180910390fd5b600a54604080517f4f63d3ce000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152346024830152915161010090930490911691634f63d3ce9160448082019260009290919082900301818387803b15801561176c57600080fd5b505af1158015611780573d6000803e3d6000fd5b5050601654611798925090503463ffffffff61462016565b60165550565b6000828152602081905260409020600301546117c1906117bc61467d565b612cf6565b6117ff5760405160e560020a62461bcd02815260040180806020018281038252602f8152602001806152bb602f913960400191505060405180910390fd5b6118098282614681565b5050565b6040805160008051602061531d8339815191528152905190819003600d01902060009061183a9033612cf6565b6118785760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b600a5460ff16156118bd5760405160e560020a62461bcd02815260040180806020018281038252602d815260200180615548602d913960400191505060405180910390fd5b50600a805460ff1916600190811790915590565b600067016345785d8a0000341161191c5760405160e560020a62461bcd0281526004018080602001828103825260278152602001806155016027913960400191505060405180910390fd5b600080611928346139f5565b90925090508161196c5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806153d56026913960400191505060405180910390fd5b61197d81600363ffffffff61472616565b82106119bd5760405160e560020a62461bcd02815260040180806020018281038252606381526020018061546f6063913960800191505060405180910390fd5b601c546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b505050506040513d6020811015611a3e57600080fd5b5050601f54611a53908363ffffffff61462016565b601f5550905090565b604080517f4f5241434c4500000000000000000000000000000000000000000000000000008152905190819003600601902081565b600160a060020a039081166000908152601960205260409020541690565b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152905190819003601001902081565b611aec61467d565b600254600160a060020a03908116911614611b51576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615611bc4576040805160e560020a62461bcd02815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b6002805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a1565b6040805160008051602061531d8339815191528152905190819003600d019020600090611c519033612cf6565b611c8f5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b6040805160008051602061552883398151915281529051908190036011019020611cb99085612cf6565b611cf75760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152ea6033913960400191505060405180910390fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152306024830152604482018590529151918516916323b872dd916064808201926020929091908290030181600087803b15801561143f57600080fd5b604080517f524546455245525f524f4c4500000000000000000000000000000000000000008152905190819003600c01902081565b6040805160008051602061531d8339815191528152905190819003600d019020600090611dcb9033612cf6565b611e095760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b600a5460ff16611e4d5760405160e560020a62461bcd02815260040180806020018281038252602f8152602001806154d2602f913960400191505060405180910390fd5b50600a805460ff19169055600190565b6000611e6761467d565b600254600160a060020a03908116911614611ecc576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff1615611f3f576040805160e560020a62461bcd02815260206004820152601e60248201527f4d616e61676572526f6c653a20616c72656164792066696e616c697a65640000604482015290519081900360640190fd5b611f4983836117ff565b50600192915050565b601e5490565b60606006600001805480602002602001604051908101604052809291908181526020018280548015611fb357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611f95575b5050505050905090565b600b54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561203057600080fd5b505af1158015612044573d6000803e3d6000fd5b505050506040513d602081101561205a57600080fd5b5050600a54604080517f15b60639000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018790526044820186905284151560648301523360848301529151600093849384938493610100909304909116916315b606399160a48082019260809290919082900301818787803b1580156120ee57600080fd5b505af1158015612102573d6000803e3d6000fd5b505050506040513d608081101561211857600080fd5b5080516020820151604083015160609093015191965094509092509050831561247357801561246e576000612169606461215d6012548a6145c490919063ffffffff16565b9063ffffffff61472616565b90506000612187606461215d6013548b6145c490919063ffffffff16565b9050600061219b898463ffffffff61476816565b33600090815260196020526040902054909150600160a060020a031615612325576121cc818363ffffffff61476816565b600b5433600090815260196020908152604080832054815160e060020a63a9059cbb028152600160a060020a0391821660048201526024810189905291519596509093169363a9059cbb93604480820194918390030190829087803b15801561223457600080fd5b505af1158015612248573d6000803e3d6000fd5b505050506040513d602081101561225e57600080fd5b5050600b546040805160008051602061538383398151915281529051908190036014019020600160a060020a039091169063a9059cbb906122a0906000612cd8565b856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156122f357600080fd5b505af1158015612307573d6000803e3d6000fd5b505050506040513d602081101561231d57600080fd5b506123e59050565b600b546040805160008051602061538383398151915281529051908190036014019020600160a060020a039091169063a9059cbb90612365906000612cd8565b856040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505050506040513d60208110156123e257600080fd5b50505b600b546040805160e060020a63a9059cbb028152600160a060020a038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561243e57600080fd5b505af1158015612452573d6000803e3d6000fd5b505050506040513d602081101561246857600080fd5b50505050505b61250b565b6000831180156124805750805b1561250b57600b546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156124de57600080fd5b505af11580156124f2573d6000803e3d6000fd5b505050506040513d602081101561250857600080fd5b50505b5050505050505050565b61251e336147aa565b565b600080600c60009054906101000a9004600160a060020a0316600160a060020a031663313ce5676040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561257457600080fd5b505afa158015612588573d6000803e3d6000fd5b505050506040513d602081101561259e57600080fd5b5051600e549091506114709060ff8316600a0a9061215d90869063ffffffff6145c416565b600a546101009004600160a060020a031690565b6040805160008051602061531d8339815191528152905190819003600d0190206000906126049033612cf6565b6126425760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152905190819003601001902061267e9085612cf6565b6126bc5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152ea6033913960400191505060405180910390fd5b81156127a957600160a060020a03831661271057604051600160a060020a0385169083156108fc029084906000818181858888f19350505050158015612706573d6000803e3d6000fd5b5060019050611470565b82600160a060020a031663a9059cbb85846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561277357600080fd5b505af1158015612787573d6000803e3d6000fd5b505050506040513d602081101561279d57600080fd5b50600191506114709050565b5060009392505050565b600a54604080517f15b60639000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820186905234604483015284151560648301523360848301529151600093849384938493610100909304909116916315b606399160a48082019260809290919082900301818787803b15801561284457600080fd5b505af1158015612858573d6000803e3d6000fd5b505050506040513d608081101561286e57600080fd5b50805160208201516040830151606090930151919650945090925090508315612a6b5780612a665760006128b2606461215d601254346145c490919063ffffffff16565b905060006128d0606461215d601354346145c490919063ffffffff16565b905060006128e4348463ffffffff61476816565b33600090815260196020526040902054909150600160a060020a0316156129c657612915818363ffffffff61476816565b33600090815260196020526040808220549051929350600160a060020a03169184156108fc0291859190818181858888f1935050505015801561295c573d6000803e3d6000fd5b506040805160008051602061538383398151915281529051908190036014019020612988906000612cd8565b600160a060020a03166108fc849081150290604051600060405180830381858888f193505050501580156129c0573d6000803e3d6000fd5b50612a2b565b60408051600080516020615383833981519152815290519081900360140190206129f1906000612cd8565b600160a060020a03166108fc849081150290604051600060405180830381858888f19350505050158015612a29573d6000803e3d6000fd5b505b604051600160a060020a0386169082156108fc029083906000818181858888f19350505050158015612a61573d6000803e3d6000fd5b505050505b612ab4565b600083118015612a79575080155b15612ab457604051600160a060020a0383169084156108fc029085906000818181858888f1935050505015801561250b573d6000803e3d6000fd5b50505050505050565b600160a060020a031660009081526018602052604090205490565b60606003600001805480602002602001604051908101604052809291908181526020018280548015611fb357602002820191906000526020600020908154600160a060020a03168152600190910190602001808311611f95575050505050905090565b601454600090612b5a90670de0b6b3a76400009063ffffffff6145c416565b601c54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490529051929350600160a060020a03909116916323b872dd916064808201926020929091908290030181600087803b158015612bd057600080fd5b505af1158015612be4573d6000803e3d6000fd5b505050506040513d6020811015612bfa57600080fd5b5050601e54612c3090612c2190670de0b6b3a76400009061215d908563ffffffff6145c416565b6016549063ffffffff61462016565b601655600a54601e54610100909104600160a060020a031690634f63d3ce908490612c5b90856145c4565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015612cad57600080fd5b505af1158015612cc1573d6000803e3d6000fd5b505050505050565b600254600160a060020a031690565b6000828152602081905260408120611470908363ffffffff6147f216565b6000828152602081905260408120611470908363ffffffff61452c16565b6040805160008051602061531d8339815191528152905190819003600d019020600090612d419033612cf6565b612d7f5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b50600e55600190565b600081815260016020908152604091829020805483518184028101840190945280845260609392830182828015612de857602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612dca575b50505050509050919050565b600080600080600a60019054906101000a9004600160a060020a0316600160a060020a0316639f2ac7f887876040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060806040518083038186803b158015612e7057600080fd5b505afa158015612e84573d6000803e3d6000fd5b505050506040513d6080811015612e9a57600080fd5b508051602082015160408301516060909301519199909850919650945092505050565b60006114ad60068363ffffffff61455716565b6040805160008051602061531d8339815191528152905190819003600d019020600090612efd9033612cf6565b612f3b5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b612f4760098b8b615200565b5050600a805460ff191697151597909717909655600d9390935560129190915560135560145550601555506001919050565b612f823361149a565b612fc05760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155e7602c913960400191505060405180910390fd5b612fc9816147fe565b50565b6040805160008051602061531d8339815191528152905190819003600d019020600090612ff99033612cf6565b6130375760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b600f859055601084905561304d60118484615200565b50600195945050505050565b604080516000805160206153838339815191528152905190819003601401902081565b60008181526020819052604081206114ad90614846565b6040805160008051602061531d8339815191528152905190819003600d0190206000906130c09033612cf6565b6130fe5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b6040805160008051602061538383398151915281529051908190036014019020849061312a9082612cf6565b8061316c5750604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152905190819003601001902061316c9082612cf6565b806132055750601b54604080517f24851914000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915191909216916324851914916024808301926020929190829003018186803b1580156131d857600080fd5b505afa1580156131ec573d6000803e3d6000fd5b505050506040513d602081101561320257600080fd5b50515b1561324157600160a060020a0384811660009081526019602052604090208054600160a060020a0319169185169190911790556001915061327b565b60405160e560020a62461bcd02815260040180806020018281038252602381526020018061542b6023913960400191505060405180910390fd5b509392505050565b604080516000805160206155288339815191528152905190819003601101902081565b600a54601c54600d54601d546009805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181526060976000978897889788979660ff90941695600160a060020a039093169491939092879183018282801561335b5780601f106133305761010080835404028352916020019161335b565b820191906000526020600020905b81548152906001019060200180831161333e57829003601f168201915b50505050509450945094509450945094509091929394565b600082815260208190526040902060030154613391906117bc61467d565b6133cf5760405160e560020a62461bcd0281526004018080602001828103825260308152602001806153fb6030913960400191505060405180910390fd5b6118098282614851565b600080600061340b604051808060008051602061531d833981519152815250600d019050604051809103902033612cf6565b6134495760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b6040805160008051602061533d833981519152815290519081900360140190206134739085612cf6565b6134b15760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152ea6033913960400191505060405180910390fd5b600080806134be87612abd565b90506000805b828110156136af57600160a060020a03891660009081526018602052604081208054839081106134f057fe5b60009182526020909120600690910201600381015490915060ff16156136a65760058101546004820154600160a060020a0390911695501561362557600160a060020a038516613591576004810154604051600160a060020a038c169180156108fc02916000818181858888f19350505050158015613573573d6000803e3d6000fd5b50600481015461358a90879063ffffffff61462016565b9550613625565b84600160a060020a031663a9059cbb8b83600401546040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156135f857600080fd5b505af115801561360c573d6000803e3d6000fd5b505050506040513d602081101561362257600080fd5b50505b600160a060020a038a16600090815260186020526040812080548490811061364957fe5b60009182526020808320600692909202909101600301805460ff191693151593909317909255600160a060020a038c16815260189091526040812080548490811061369057fe5b9060005260206000209060060201600401819055505b506001016134c4565b50979296509094509092505050565b6040805160008051602061531d8339815191528152905190819003600d0190206000906136eb9033612cf6565b6137295760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b6040805160008051602061533d833981519152815290519081900360140190206137539085612cf6565b6137915760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152ea6033913960400191505060405180910390fd5b61379c848484614941565b949350505050565b6137ad3361149a565b6137eb5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155e7602c913960400191505060405180910390fd5b600a8054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902060009061385f9033612cf6565b61389d5760405160e560020a62461bcd02815260040180806020018281038252603e815260200180615637603e913960400191505060405180910390fd5b600160a060020a0385166000908152601860205260409020805460019190869081106138c557fe5b906000526020600020906006020160030160006101000a81548160ff021916908315150217905550826018600087600160a060020a0316600160a060020a03168152602001908152602001600020858154811061391e57fe5b906000526020600020906006020160040181905550816018600087600160a060020a0316600160a060020a03168152602001908152602001600020858154811061396457fe5b906000526020600020906006020160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555060019050949350505050565b6139ae3361149a565b6139ec5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155e7602c913960400191505060405180910390fd5b61251e33614c25565b6000806000613a11601f54601d5461476890919063ffffffff16565b90506000613a308261215d601d54601e546145c490919063ffffffff16565b9050613a4e8161215d87670de0b6b3a764000063ffffffff6145c416565b601f54601d54613a639163ffffffff61476816565b935093505050915091565b600a54604080517f9b58a9a8000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152602482018690523360448301528415156064830152915161010090930490911691639b58a9a89160848082019260009290919082900301818387803b158015613af057600080fd5b505af1158015612ab4573d6000803e3d6000fd5b613b0d3361149a565b613b4b5760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806155e7602c913960400191505060405180910390fd5b612fc981614c6d565b6040805160008051602061531d8339815191528152905190819003600d019020600090613b819033612cf6565b613bbf5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b6040805160008051602061552883398151915281529051908190036011019020613be99084612cf6565b613c275760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152ea6033913960400191505060405180910390fd5b601a54604080517f1208333a000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0386811660248301526044820186905291519190921691631208333a9160648083019260209291908290030181600087803b158015613c9c57600080fd5b505af1158015613cb0573d6000803e3d6000fd5b505050506040513d6020811015613cc657600080fd5b5050604051600160a060020a0384169083156108fc029084906000818181858888f19350505050158015613cfe573d6000803e3d6000fd5b5060019392505050565b6000806000601b60009054906101000a9004600160a060020a0316600160a060020a031663e3bbb5656040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d5e57600080fd5b505afa158015613d72573d6000803e3d6000fd5b505050506040513d6020811015613d8857600080fd5b5051604080517f8e15f4730000000000000000000000000000000000000000000000000000000081528151600160a060020a0390931692638e15f47392600480840193919291829003018186803b158015613de257600080fd5b505afa158015613df6573d6000803e3d6000fd5b505050506040513d6040811015613e0c57600080fd5b50805160209091015190925090506000613e3b33613e368560ff8616600a0a63ffffffff61472616565b612df4565b5091925060009150508115613f5357601c546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015613ea157600080fd5b505af1158015613eb5573d6000803e3d6000fd5b505050506040513d6020811015613ecb57600080fd5b5050600a54604080517fbb7598060000000000000000000000000000000000000000000000000000000081523360048201529051610100909204600160a060020a03169163bb7598069160248082019260009290919082900301818387803b158015613f3657600080fd5b505af1158015613f4a573d6000803e3d6000fd5b50505050600190505b604080518381523360208201528215158183015290517f9d6ad47cb919b7aa19b4e438ceeaa7b16afb7e9a6afe89335044b64c3cb4adca9181900360600190a1935050505090565b613fa361467d565b600254600160a060020a03908116911614614008576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600160a060020a0381166140505760405160e560020a62461bcd02815260040180806020018281038252602681526020018061535d6026913960400191505060405180910390fd5b600254604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600160a060020a031916600160a060020a0392909216919091179055565b6040805160008051602061531d8339815191528152905190819003600d0190206000906140d99033612cf6565b6141175760405160e560020a62461bcd0281526004018080602001828103825260328152602001806153a36032913960400191505060405180910390fd5b6040805160008051602061533d833981519152815290519081900360140190206141419085612cf6565b61417f5760405160e560020a62461bcd0281526004018080602001828103825260338152602001806152ea6033913960400191505060405180910390fd5b600061419b606461215d601254876145c490919063ffffffff16565b905060006141b9606461215d601354886145c490919063ffffffff16565b600160a060020a03878116600090815260196020526040812054929350911615614204576141fd826141f1888663ffffffff61476816565b9063ffffffff61476816565b9050614217565b614214868463ffffffff61476816565b90505b600160a060020a039687166000908152601860209081526040808320815160c08101835294855242858401908152600d5492860192835260608601858152608087018681529a8d1660a088019081528354600180820186559488529590962096516006909502909601938455518382015590516002830155925160038201805460ff1916911515919091179055955160048701555160059095018054600160a060020a031916959097169490941790955550909392505050565b6000806060600f546010546011808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156143735780601f1061434857610100808354040283529160200191614373565b820191906000526020600020905b81548152906001019060200180831161435657829003601f168201915b50505050509050925092509250909192565b600a54604080517f854fe7ac000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015260248201899052604482018890526064820187905285151560848301523360a483015284151560c483015291516101009093049091169163854fe7ac9160e48082019260009290919082900301818387803b15801561441d57600080fd5b505af1158015612508573d6000803e3d6000fd5b6040805160008051602061533d8339815191528152905190819003601401902081565b600e5460125460135460145460155460165460175490919293949596565b61447c8282614557565b156144d1576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b600061147083600160a060020a038416614cb4565b600061147083600160a060020a03841684614ccc565b6000600160a060020a0382166145a15760405160e560020a62461bcd0281526004018080602001828103825260228152602001806155966022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b6000826145d3575060006114ad565b828202828482816145e057fe5b04146114705760405160e560020a62461bcd0281526004018080602001828103825260218152602001806155756021913960400191505060405180910390fd5b600082820183811015611470576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600082815260208190526040902061469f908263ffffffff61454116565b156118095760008281526001602081815260408320805492830181558352909120018054600160a060020a031916600160a060020a0383161790556146e261467d565b600160a060020a031681600160a060020a0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061147083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614d41565b600061147083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614de6565b6147bb60068263ffffffff614e4316565b604051600160a060020a038216907f9c8e7d83025bef8a04c664b2f753f64b8814bdb7e27291d7e50935f18cc3c71290600090a250565b60006114708383614f8b565b61480f60038263ffffffff61447216565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b60006114ad82614ff2565b600082815260208190526040902061486f908263ffffffff614ff616565b156118095760005b6000838152600160205260409020548110156148f45760008381526001602052604090208054600160a060020a0384169190839081106148b357fe5b600091825260209091200154600160a060020a031614156148ec5760008381526001602052604090206148e790829061500b565b6148f4565b600101614877565b506148fd61467d565b600160a060020a031681600160a060020a0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b600a5460009060ff166149885760405160e560020a62461bcd0281526004018080602001828103825260248152602001806156136024913960400191505060405180910390fd5b60408051600080516020615383833981519152815290519081900360140190206000906149b59082612cd8565b905060006149ea620186a06149de8661215d606461215d6012548c6145c490919063ffffffff16565b9063ffffffff6145c416565b90506000614a13620186a06149de8761215d606461215d6013548d6145c490919063ffffffff16565b600160a060020a03888116600090815260196020526040812054929350911615614ad157600160a060020a0380891660009081526019602052604080822054905192169184156108fc0291859190818181858888f19350505050158015614a7e573d6000803e3d6000fd5b50604051600160a060020a0385169084156108fc029085906000818181858888f19350505050158015614ab5573d6000803e3d6000fd5b50614aca826141f1898663ffffffff61476816565b9050614b1b565b604051600160a060020a0385169084156108fc029085906000818181858888f19350505050158015614b07573d6000803e3d6000fd5b50614b18878463ffffffff61476816565b90505b600160a060020a038881166000908152601860209081526040808320815160c08101835286815242818501908152600d54938201938452606082018681526080830187815260a08401888152855460018082018855968a529790982093516006909702909301958655905192850192909255915160028401555160038301805460ff1916911515919091179055516004820155905160059091018054600160a060020a03191691909216179055601654614bd59088614620565b601655604080518881529051600160a060020a038a16917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a2506001979650505050505050565b614c3660038263ffffffff614e4316565b604051600160a060020a038216907f26b6063d78aefcf96f02ff06bc9822b5a623278253add7fffa5fb453db39981090600090a250565b614c7e60068263ffffffff61447216565b604051600160a060020a038216907e47706786c922d17b39285dc59d696bafea72c0b003d3841ae1202076f4c2e490600090a250565b60009081526002919091016020526040902054151590565b6000614cd88484614cb4565b614d3957508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a0386161790558554858252600287019093526040902091909155611470565b506000611470565b60008183614dd05760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d95578181015183820152602001614d7d565b50505050905090810190601f168015614dc25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614ddc57fe5b0495945050505050565b60008184841115614e3b5760405160e560020a62461bcd028152602060048201818152835160248401528351909283926044909101919085019080838360008315614d95578181015183820152602001614d7d565b505050900390565b614e4d8282614557565b614e8b5760405160e560020a62461bcd02815260040180806020018281038252602181526020018061544e6021913960400191505060405180910390fd5b600160a060020a03811660009081526002830160205260409020548015614f665782546000198083019190810190600090869083908110614ec857fe5b6000918252602090912001548654600160a060020a0390911691508190879085908110614ef157fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790558554869080614f2557fe5b6000828152602080822083016000199081018054600160a060020a0319169055909201909255600160a060020a038716825260028801905260408120555050505b50600160a060020a03166000908152600190910160205260409020805460ff19169055565b81546000908210614fd05760405160e560020a62461bcd0281526004018080602001828103825260228152602001806152996022913960400191505060405180910390fd5b826000018281548110614fdf57fe5b9060005260206000200154905092915050565b5490565b600061147083600160a060020a0384166150b5565b815b8154600019018110156150845781816001018154811061502957fe5b9060005260206000200160009054906101000a9004600160a060020a031682828154811061505357fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560010161500d565b508080548061508f57fe5b60008281526020902081016000199081018054600160a060020a03191690550190555050565b600081815260028301602052604081205480156151f657835460001980830191908101906000908790839081106150e857fe5b906000526020600020015490508087600001848154811061510557fe5b600091825260209091200155865487908061511c57fe5b60019003818190600052602060002001600090559055600087600101838154811061514357fe5b600091825260209091200154600189018054600160a060020a03909216925082918690811061516e57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550876001018054806151a957fe5b6000828152602080822083016000199081018054600160a060020a031916905590920190925592815260028901909252506040808220600194850190558682528120555091506114ad9050565b60009150506114ad565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106152415782800160ff1982351617855561526e565b8280016001018555821561526e579182015b8281111561526e578235825591602001919060010190615253565b5061527a92915061527e565b5090565b61126a91905b8082111561527a576000815560010161528456fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74496e766573746d656e74506f6f6c3a207468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e504f4f4c5f5245474953545259000000000000000000000000000000000000004c494d495445445f504152544e45525f524f4c450000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737347454e4552414c5f504152544e45525f524f4c45000000000000000000000000526f6c65733a2063616c6c657220646f6573206e6f7420686176652074686520706f6f6c20726567797374727920726f6c65546f6b656e73616c65506f6f6c3a2077652063616e27742073656c6c203020746f6b656e732e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b655468652073656e64657220646f6573206e6f742068617665207065726d697373696f6e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65546f6b656e73616c65506f6f6c3a2077652063616e27742073656c6c206d6f7265207468616e203330252066726f6d206f6e65207472616e73616374696f6e2e20506c6561736520646563726561736520696e766573746d656e7420616d6f756e742e496e766573746d656e74506f6f6c3a2074686520706f6f6c20697320616c7265616479206465616374697661746564546f6b656e73616c65506f6f6c3a206d696e696d616c20707572636861736520302e31424e422e535441525455505f5445414d5f524f4c45000000000000000000000000000000496e766573746d656e74506f6f6c3a2074686520706f6f6c20697320616c726561647920616374697661746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734f70656e42695365613a20796f75206d7573742073656e64206d696e696d616c20616d6f756e74206f72206d6f72655465616d526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205465616d20726f6c65496e766573746d656e74506f6f6c3a20706f6f6c206465706f73697420626c6f636b6564526f6c65733a2063616c6c657220646f6573206e6f742068617665207468652072657475726e20696e7665736d656e74206c706172746e657220726f6c65a264697066735822122089ca0248498019765071b025bbb49e24927b75a337a38cfc8f02ac7dbc94eb8464736f6c63430006080033416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737353555045525f41444d494e5f524f4c450000000000000000000000000000000000000000000000000000000002474589f8e03110efc56ed3d69d60294d9ff0630000000000000000000000004f476c35f1d823c24c476db1eecb97db3a6a49a1000000000000000000000000027d865ef0b4d1372affe941272f47e013cac669000000000000000000000000f52e9da33ffde0a12418e93ce6fe8b56912121640000000000000000000000004e54b369aecfe04e6ef3f6c768f7a77f39c388c800000000000000000000000075113e57034ffdbd696df54ce843761ace5ee1090000000000000000000000000d94f6119982ee3a85f99cd5e24901e8319acad3000000000000000000000000a03255c3c16a7d998c570f5b55d15c330c317ea80000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f

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

00000000000000000000000002474589f8e03110efc56ed3d69d60294d9ff0630000000000000000000000004f476c35f1d823c24c476db1eecb97db3a6a49a1000000000000000000000000027d865ef0b4d1372affe941272f47e013cac669000000000000000000000000f52e9da33ffde0a12418e93ce6fe8b56912121640000000000000000000000004e54b369aecfe04e6ef3f6c768f7a77f39c388c800000000000000000000000075113e57034ffdbd696df54ce843761ace5ee1090000000000000000000000000d94f6119982ee3a85f99cd5e24901e8319acad3000000000000000000000000a03255c3c16a7d998c570f5b55d15c330c317ea80000000000000000000000000000000000000000000001b1ae4d6e2ef5000000000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f

-----Decoded View---------------
Arg [0] : tokenForTokensale (address): 0x02474589f8e03110efc56ed3d69d60294d9ff063
Arg [1] : superAdmin (address): 0x4f476c35f1d823c24c476db1eecb97db3a6a49a1
Arg [2] : gPartner (address): 0x027d865ef0b4d1372affe941272f47e013cac669
Arg [3] : lPartner (address): 0xf52e9da33ffde0a12418e93ce6fe8b5691212164
Arg [4] : team (address): 0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8
Arg [5] : poolRegistry (address): 0x75113e57034ffdbd696df54ce843761ace5ee109
Arg [6] : returnInvestmentLpartner (address): 0x0d94f6119982ee3a85f99cd5e24901e8319acad3
Arg [7] : assetsManageTeam (address): 0xa03255c3c16a7d998c570f5b55d15c330c317ea8
Arg [8] : initialBalance (uint256): 8000000000000000000000
Arg [9] : busdContract (address): 0xc2132d05d31c914a87c6611c10748aeb04b58e8f

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000002474589f8e03110efc56ed3d69d60294d9ff063
Arg [1] : 0000000000000000000000004f476c35f1d823c24c476db1eecb97db3a6a49a1
Arg [2] : 000000000000000000000000027d865ef0b4d1372affe941272f47e013cac669
Arg [3] : 000000000000000000000000f52e9da33ffde0a12418e93ce6fe8b5691212164
Arg [4] : 0000000000000000000000004e54b369aecfe04e6ef3f6c768f7a77f39c388c8
Arg [5] : 00000000000000000000000075113e57034ffdbd696df54ce843761ace5ee109
Arg [6] : 0000000000000000000000000d94f6119982ee3a85f99cd5e24901e8319acad3
Arg [7] : 000000000000000000000000a03255c3c16a7d998c570f5b55d15c330c317ea8
Arg [8] : 0000000000000000000000000000000000000000000001b1ae4d6e2ef5000000
Arg [9] : 000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f


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.