Contract 0xa5ca66874ca008d7bcd3f3f817a87f98bea75fd2

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xb8cdd3482eeab80fe7827436e4de7ab10b495539d2fd0a7a03f85e808f7aa620Add Manager77109202021-05-25 7:56:33193 days 21 hrs agoOpenBiSea: Deployer IN  0xa5ca66874ca008d7bcd3f3f817a87f98bea75fd20 BNB0.000469965
0xff47f2f78928fe838cde361624a7d1128a137fee36354d2b5811b39c646f0befAdd Manager68938822021-04-26 6:14:26222 days 22 hrs agoOpenBiSea: Deployer IN  0xa5ca66874ca008d7bcd3f3f817a87f98bea75fd20 BNB0.000469965
0xa064c46cd2ff1b8cf24f57847c41265236b6d9c395d42966d158192b3ae2ec40Add Manager68938472021-04-26 6:12:41222 days 22 hrs agoOpenBiSea: Deployer IN  0xa5ca66874ca008d7bcd3f3f817a87f98bea75fd20 BNB0.000469965
0x85c6cd9eb33b751dcc95364a0f34ec2fa0f61b162888370e39949c5401d9e5790x6080604068938152021-04-26 6:11:05222 days 22 hrs agoOpenBiSea: Deployer IN  Contract Creation0 BNB0.05716766
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AssetsManageTeam

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 8 : AssetManageTeam.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/ManagerRole.sol";
import "./interface/IERC20.sol";
import "./interface/IPool.sol";
import "./interface/IRoleModel.sol";
import "./utils/EnumerableSet.sol";
import "./math/SafeMath.sol";
contract AssetsManageTeam is ManagerRole, IRoleModel {
    using EnumerableSet for EnumerableSet.AddressSet;
    using SafeMath for uint256;
    event Request(address indexed pool, address from, uint256 maxValue);
    event Approve(address indexed pool, address to, uint256 maxValueToken, uint256 maxValue);
    event Disapprove(address indexed pool, address to);
    event Lock(address indexed pool, address to);
    event Unlock(address indexed pool, address to);
    event DepositERC20(address indexed pool, address from, address token, uint256 value);
    event Withdraw(address indexed pool, address to, uint256 value, address token);
    struct TeamOperation {
        address token;                 // Address token
        uint256 amountToken;           // Count token deposit
        uint256 withdraw;         // Count withdraw main network coin (ETH,BNB)
        uint256 time;                  // Time deposit
    }
    struct TeamAccount {
        bool lock;                     // Lock operation
        uint256 maxValueToken;         // Max value deposit token
        uint256 madeValueToken;        // Already made value
        uint256 maxValue;         // Max value withdraw main network coin (ETH,BNB)
        uint256 madeValue;        // Already withdrawn main network coin (ETH,BNB)
        address token;                 // Address token for withdrawal
    }
    mapping(address => mapping(address => TeamOperation[])) private _performedOperations;// Collection of investors who made a deposit token
    mapping(address => mapping(address => TeamAccount)) private _requests; // A collection of those who made the request
    mapping(address => mapping(address => TeamAccount)) private _approval;// Collection of those to whom the request was confirmed
    mapping(address => EnumerableSet.AddressSet) private _requestsTeam;// Collection of addresses that made the request
    mapping(address => EnumerableSet.AddressSet) private _approvalTeam;// Collection of addresses to which the request was confirmed
    function _depositToken(address pool, address team, address token, uint256 amount) external onlyManager returns (bool) {
        require(amount > 0, "AssetsManageTeam: the number of sent token is 0");
        require(!_approval[pool][team].lock, "AssetsManageTeam: deposit token locked");
        uint256 newAmount = _approval[pool][team].madeValueToken.add(amount);
        require(newAmount <= _approval[pool][team].maxValueToken, "AssetsManageTeam: token deposit not confirmed");
        IERC20(token).transferFrom(team, pool, amount);
        _approval[pool][team].madeValueToken = newAmount;
        _performedOperations[pool][team].push(TeamOperation(token,amount,0,block.timestamp));
        emit DepositERC20(pool, team, token, amount);
        return true;
    }
    function _withdrawInternal(address pool,address token, address team, uint256 amount) private returns (bool) {
        require(amount > 0, "AssetsManageTeam: the number of sent token is 0");
        require(!_approval[pool][team].lock, "AssetsManageTeam: deposit token locked");
        uint256 newAmount = _approval[pool][team].madeValue.add(amount);
        require(newAmount <= _approval[pool][team].maxValue, "AssetsManageTeam: withdraw not confirmed");
        _approval[pool][team].madeValue = newAmount;
        _performedOperations[pool][team].push(TeamOperation(token,0,amount,block.timestamp));
        emit Withdraw(pool, team, amount,token);
        return true;
    }
    function _withdraw(address pool, address team, uint256 amount) external onlyManager returns (bool) {
        return _withdrawInternal(pool, address(0), team, amount);
    }
    function _withdrawTokensToStartup(address pool,address token, address team, uint256 amount) external onlyManager returns (bool) {
        return _withdrawInternal(pool, token, team, amount);
    }
    function _requestInternal(bool withdraw, address pool, address team, uint256 maxValue,address token) private returns (bool) {
        require(pool != address(0), "AssetsManageTeam: pool zero address");
        require(team != address(0), "AssetsManageTeam: team zero address");
        require(maxValue > 0, "AssetsManageTeam: value is zero");
        require(IPool(pool).hasRole(STARTUP_TEAM_ROLE, team), "AssetsManageTeam: sender has no role TEAM");
        if (withdraw) {
            _requests[pool][team] = TeamAccount(true, 0, 0, maxValue, 0, token);
        } else {
            _requests[pool][team] = TeamAccount(true, maxValue, 0, 0, 0, token);
        }
        _requestsTeam[pool].add(team);
        emit Request(pool, team, maxValue);
        return true;
    }
    function _request(bool withdraw, address pool, address team, uint256 maxValue) external onlyManager returns(bool) {
        return _requestInternal(withdraw, pool, team, maxValue, address(0));
    }
    function _requestTokensWidthdrawalFromStartup(address pool, address token, address team, uint256 maxValue) external onlyManager returns(bool) {
        return _requestInternal(true, pool, team, maxValue, token);
    }
    function _approveTokensWidthdrawalFromStartup(address pool, address token, address team, address owner) external onlyManager returns(bool) {
        require(pool != address(0), "AssetsManageTeam: pool zero address");
        require(team != address(0), "AssetsManageTeam: team zero address");
        require(IPool(pool).hasRole(GENERAL_PARTNER_ROLE, owner), "AssetsManageTeam: owner has no role GPartner");
        uint256 maxValueToken = _requests[pool][team].maxValueToken;
        uint256 maxValue = _requests[pool][team].maxValue;
        if(_requests[pool][team].maxValue > 0) {
            if (_approvalTeam[pool].contains(team)) {
                _approval[pool][team].maxValue = (_approval[pool][team].maxValue).add(maxValue);
            } else {
                _approval[pool][team] = TeamAccount(false, 0, 0, maxValue, 0, token);
                _approvalTeam[pool].add(team);
            }
        }
        delete _requests[pool][team];
        _requestsTeam[pool].remove(team);
        emit Approve(pool, team, maxValueToken, maxValue);
        return true;
    }
    function _approve(address pool, address team, address owner) external onlyManager returns(bool) {
        require(pool != address(0), "AssetsManageTeam: pool zero address");
        require(team != address(0), "AssetsManageTeam: team zero address");
        require(IPool(pool).hasRole(GENERAL_PARTNER_ROLE, owner), "AssetsManageTeam: owner has no role GPartner");
        uint256 maxValueToken = _requests[pool][team].maxValueToken;
        uint256 maxValue = _requests[pool][team].maxValue;
        if (_requests[pool][team].maxValueToken > 0) {
            if (_approvalTeam[pool].contains(team)) {
                _approval[pool][team].maxValueToken = (_approval[pool][team].maxValueToken).add(maxValueToken);
            } else {
                _approval[pool][team] = TeamAccount(false, maxValueToken, 0, 0, 0,address(0));
                _approvalTeam[pool].add(team);
            }
        } else  if(_requests[pool][team].maxValue > 0) {
            if (_approvalTeam[pool].contains(team)) {
                _approval[pool][team].maxValue = (_approval[pool][team].maxValue).add(maxValue);
            } else {
                _approval[pool][team] = TeamAccount(false, 0, 0, maxValue, 0,address(0));
                _approvalTeam[pool].add(team);
            }
        }
        delete _requests[pool][team];
        _requestsTeam[pool].remove(team);
        emit Approve(pool, team, maxValueToken, maxValue);
        return true;
    }
    function _disapprove(address pool, address team, address owner) external onlyManager returns(bool) {
        require(_requestsTeam[pool].contains(team), "AssetsManageTeam: there is no request for this account");
        require(IPool(pool).hasRole(GENERAL_PARTNER_ROLE, owner), "AssetsManageTeam: owner has no role GPartner");
        delete _requests[pool][team];
        _requestsTeam[pool].remove(team);
        emit Disapprove(pool, team);
        return true;
    }
    function _lock(address pool, address team, address owner) external onlyManager returns(bool) {
        require(_approvalTeam[pool].contains(team), "AssetsManageTeam: team address not exists");
        require(!_approval[pool][team].lock, "AssetsManageTeam: the account is already blocked");
        require(IPool(pool).hasRole(GENERAL_PARTNER_ROLE, owner), "AssetsManageTeam: owner has no role GPartner");
        _approval[pool][team].lock = true;
        emit Lock(pool, team);
        return true;
    }
    function _unlock(address pool, address team, address owner) external onlyManager returns(bool) {
        require(_approvalTeam[pool].contains(team), "AssetsManageTeam: team address not exists");
        require(_approval[pool][team].lock, "AssetsManageTeam: the account is already blocked");
        require(IPool(pool).hasRole(GENERAL_PARTNER_ROLE, owner), "AssetsManageTeam: owner has no role GPartner");
        _approval[pool][team].lock = false;
        emit Unlock(pool, team);
        return true;
    }
    function getPerformedOperationsLength(address pool, address owner) public view returns(uint256 length) {
        return _performedOperations[pool][owner].length;
    }
    function getPerformedOperations(address pool, address owner, uint256 index) public view returns(address token, uint256 amountToken, uint256 withdraw, uint256 time) {
        return (_performedOperations[pool][owner][index].token,_performedOperations[pool][owner][index].amountToken, _performedOperations[pool][owner][index].withdraw,_performedOperations[pool][owner][index].time);
    }
    function getRequests(address pool) public view returns(address[] memory) {
        return _requestsTeam[pool].collection();
    }
    function getApproval(address pool) public view returns(address[] memory) {
        return _approvalTeam[pool].collection();
    }
    function getRequestTeamAddress(address pool, address team) public view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue) {
        return (_requests[pool][team].lock,_requests[pool][team].maxValueToken,_requests[pool][team].madeValueToken,_requests[pool][team].maxValue,_requests[pool][team].madeValue);
    }
    function getApproveTeamAddress(address pool, address team) public view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue) {
        return ( _approval[pool][team].lock,_approval[pool][team].maxValueToken,_approval[pool][team].madeValueToken,_approval[pool][team].maxValue,_approval[pool][team].madeValue);
    }
}

File 2 of 8 : ManagerRole.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 ManagerRole {
    using Roles for Roles.Role;
    event ManagerAdded(address indexed account);
    event ManagerRemoved(address indexed account);
    Roles.Role private _managers;
    constructor () internal {
        _addManager(msg.sender);
    }
    modifier onlyManager() {
        require(isManager(msg.sender), "ManagerRole: caller does not have the Manager role");
        _;
    }
    function isManager(address account) public view returns (bool) {
        return _managers.has(account);
    }
    function getManagerAddresses() public view returns (address[] memory) {
        return _managers.accounts;
    }
    function addManager(address account) public onlyManager {
        _addManager(account);
    }
    function renounceManager() public {
        _removeManager(msg.sender);
    }
    function _addManager(address account) internal {
        _managers.add(account);
        emit ManagerAdded(account);
    }
    function _removeManager(address account) internal {
        _managers.remove(account);
        emit ManagerRemoved(account);
    }
}

File 3 of 8 : 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 4 of 8 : 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 5 of 8 : IPool.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 IPool {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleMemberCount(bytes32 role) external view returns (uint256);
    function getDeposit(address owner, uint256 index) external view returns(uint256 amount, uint256 time, uint256 lock_period, bool refund_authorize, uint256 amountWithdrawal, address investedToken);
    function getDepositLength(address owner) external view returns(uint256);
    function getMembersRole(bytes32 role) external view returns (address[] memory Accounts);
    function getInfoPool() external view returns(string memory name,bool isPublicPool, address token, uint256 locked);
    function getInfoPoolFees() external view returns(uint256 rate, uint256 depositFixedFee, uint256 referralDepositFee, uint256 annualPercent, uint256 penaltyEarlyWithdraw, uint256 totalInvestLpartner, uint256 premiumFee);
    function getReferral(address lPartner) external view returns (address);
    function getPoolValues() external view returns(uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue);
    function getPoolPairReserves() external view     returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, address token0, address token1, address weth,uint price0CumulativeLast,uint price1CumulativeLast);
    function _updatePool(string calldata name,bool isPublicPool, address token, uint256 locked, uint256 depositFixedFee, uint256 referralDepositFee, uint256 annualPercent, uint256 penaltyEarlyWithdraw) external returns (bool);
    function _setRate(uint256 rate) external returns (bool);
    function _setTeamReward(uint256 teamReward) external returns (bool);
    function _setPoolValues(uint256 poolValueUSD,uint256 poolValue, string calldata proofOfValue) external returns (bool);
    function _depositPoolRegistry(address sender, uint256 amount, uint256 feesMultipier) external returns (bool);
    function _depositTokenPoolRegistry(address payable sender, uint256 amount) external returns (bool);
    function _depositInvestmentInTokensToPool(address payable sender, uint256 amount, address token) external returns (bool);
    function _withdrawTeam(address payable sender, uint256 amount) external returns (bool);
    function _withdrawTokensToStartup(address payable sender,address token, uint256 amount) external returns (bool);
    function _returnsInTokensFromTeam(address payable sender,address token, uint256 amount) external returns (bool);
    function _activateDepositToPool() external returns (bool);
    function _disactivateDepositToPool() external returns (bool);
    function _setReferral(address sender, address lPartner, address referral) external returns (bool);
    function _approveWithdrawLpartner(address lPartner, uint256 index, uint256 amount, address investedToken) external returns (bool);
    function _withdrawLPartner(address payable sender) external returns (bool, uint256, address);
    function _withdrawSuperAdmin(address payable sender,address token, uint256 amount) external returns (bool);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
}

File 6 of 8 : 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 7 of 8 : 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 8 of 8 : 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)));
    }
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"maxValueToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"Approve","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"DepositERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Disapprove","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ManagerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"Request","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"Withdraw","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":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"_approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"_approveTokensWidthdrawalFromStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_depositToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"_disapprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"_lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"withdraw","type":"bool"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"_request","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"_requestTokensWidthdrawalFromStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"_unlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdrawTokensToStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getApproval","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"getApproveTeamAddress","outputs":[{"internalType":"bool","name":"lock","type":"bool"},{"internalType":"uint256","name":"maxValueToken","type":"uint256"},{"internalType":"uint256","name":"madeValueToken","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"uint256","name":"madeValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getManagerAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getPerformedOperations","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"withdraw","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"getPerformedOperationsLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"getRequestTeamAddress","outputs":[{"internalType":"bool","name":"lock","type":"bool"},{"internalType":"uint256","name":"maxValueToken","type":"uint256"},{"internalType":"uint256","name":"madeValueToken","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"uint256","name":"madeValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getRequests","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceManager","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5062000026336401000000006200002c810204565b620001e1565b62000047600082640100000000620021f76200007e82021704565b604051600160a060020a038216907f3b4a40cccf2058c593542587329dd385be4f0b588db5471fbd9598e56dd7093a90600090a250565b6200009382826401000000006200015b810204565b156200010057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b6000600160a060020a038216620001be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620033096022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b61311880620001f16000396000f3fe608060405234801561001057600080fd5b50600436106101e1576000357c01000000000000000000000000000000000000000000000000000000009004806398545b1e11610116578063d4977563116100b4578063e33d82211161008e578063e33d822114610637578063f3ae241514610673578063f8b91abe14610699578063fe070e9d146106a1576101e1565b8063d4977563146105ab578063d85d2b13146105d9578063da076a8714610611576101e1565b8063c1abd757116100f0578063c1abd7571461052b578063c5c0291f14610533578063ca2a33d91461056b578063cbc5906e146105a3576101e1565b806398545b1e14610485578063afe56b1b146104bd578063b95b78d3146104c5576101e1565b806338013f02116101835780635ac8b0051161015d5780635ac8b0051461039b57806362cb27f5146103a3578063804e44f3146103e1578063871f470d14610457576101e1565b806338013f021461033057806340a5a151146103385780634460bdd614610393576101e1565b80631cda4a8d116101bf5780631cda4a8d146102aa578063261fef02146102c45780632beee459146102cc5780632d06177a14610308576101e1565b80630e3158f3146101e65780631208333a146102385780631bbd0b371461026e575b600080fd5b610224600480360360808110156101fc57600080fd5b508035151590600160a060020a036020820135811691604081013590911690606001356106a9565b604080519115158252519081900360200190f35b6102246004803603606081101561024e57600080fd5b50600160a060020a03813581169160208101359091169060400135610709565b6102246004803603608081101561028457600080fd5b50600160a060020a03813581169160208101358216916040820135169060600135610769565b6102b2610a9f565b60408051918252519081900360200190f35b6102b2610ad4565b610224600480360360808110156102e257600080fd5b50600160a060020a03813581169160208101358216916040820135169060600135610b09565b61032e6004803603602081101561031e57600080fd5b5035600160a060020a0316610b60565b005b6102b2610bb3565b6103666004803603604081101561034e57600080fd5b50600160a060020a0381358116916020013516610be8565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b6102b2610c35565b6102b2610c6a565b610224600480360360808110156103b957600080fd5b50600160a060020a038135811691602081013582169160408201358116916060013516610c9f565b610407600480360360208110156103f757600080fd5b5035600160a060020a0316611121565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561044357818101518382015260200161042b565b505050509050019250505060405180910390f35b6103666004803603604081101561046d57600080fd5b50600160a060020a038135811691602001351661114b565b6102246004803603606081101561049b57600080fd5b50600160a060020a038135811691602081013582169160409091013516611197565b6104076113f8565b6104fb600480360360608110156104db57600080fd5b50600160a060020a0381358116916020810135909116906040013561145c565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b6102b2611584565b6102246004803603606081101561054957600080fd5b50600160a060020a0381358116916020810135821691604090910135166115a7565b6102246004803603606081101561058157600080fd5b50600160a060020a0381358116916020810135821691604090910135166117f0565b6102b2611e6f565b6102b2600480360360408110156105c157600080fd5b50600160a060020a0381358116916020013516611ea4565b610224600480360360608110156105ef57600080fd5b50600160a060020a038135811691602081013582169160409091013516611ecf565b6104076004803603602081101561062757600080fd5b5035600160a060020a031661212c565b6102246004803603608081101561064d57600080fd5b50600160a060020a03813581169160208101358216916040820135169060600135612150565b6102246004803603602081101561068957600080fd5b5035600160a060020a03166121a5565b61032e6121b7565b6102b26121c2565b60006106b4336121a5565b6106f25760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b6107008585858560006122b1565b95945050505050565b6000610714336121a5565b6107525760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b61075f8460008585612704565b90505b9392505050565b6000610774336121a5565b6107b25760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b600082116107f45760405160e560020a62461bcd02815260040180806020018281038252602f8152602001806130b4602f913960400191505060405180910390fd5b600160a060020a0380861660009081526005602090815260408083209388168352929052205460ff161561085c5760405160e560020a62461bcd02815260040180806020018281038252602681526020018061305e6026913960400191505060405180910390fd5b600160a060020a038086166000908152600560209081526040808320938816835292905290812060020154610897908463ffffffff61294e16565b600160a060020a038088166000908152600560209081526040808320938a16835292905220600101549091508111156109045760405160e560020a62461bcd02815260040180806020018281038252602d815260200180612f02602d913960400191505060405180910390fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301528881166024830152604482018690529151918616916323b872dd916064808201926020929091908290030181600087803b15801561097857600080fd5b505af115801561098c573d6000803e3d6000fd5b505050506040513d60208110156109a257600080fd5b5050600160a060020a0386811660008181526005602090815260408083208a861680855290835281842060029081018890558585526003808552838620838752855283862084516080810186528d8a168082528188018e81528288018a8152426060808601918252865460018082018955978e529c8c902095516004909d029095018054600160a060020a0319169c909e169b909b178d559051938c01939093559151938a01939093559551970196909655815190815291820192909252808201879052905191927f801a94bfaa839fe8aafeefa94d06f3f7e194d9719a6d4ee0df2ed8e9a33d239592918290030190a250600195945050505050565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152905190819003600d01902081565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902081565b6000610b14336121a5565b610b525760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b6107006001868585886122b1565b610b69336121a5565b610ba75760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b610bb0816129ab565b50565b604080517f4f5241434c4500000000000000000000000000000000000000000000000000008152905190819003600601902081565b600160a060020a03918216600090815260046020818152604080842094909516835292909252919091208054600182015460028301546003840154939094015460ff909216949093929190565b604080517f53555045525f41444d494e5f524f4c45000000000000000000000000000000008152905190819003601001902081565b604080517f524546455245525f524f4c4500000000000000000000000000000000000000008152905190819003600c01902081565b6000610caa336121a5565b610ce85760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b600160a060020a038516610d305760405160e560020a62461bcd02815260040180806020018281038252602381526020018061303b6023913960400191505060405180910390fd5b600160a060020a038316610d785760405160e560020a62461bcd0281526004018080602001828103825260238152602001806130186023913960400191505060405180910390fd5b60408051600080516020612f2f8339815191528152815190819003601401812060e260020a63247452150282526004820152600160a060020a0384811660248301529151918716916391d1485491604480820192602092909190829003018186803b158015610de657600080fd5b505afa158015610dfa573d6000803e3d6000fd5b505050506040513d6020811015610e1057600080fd5b5051610e505760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612f4f602c913960400191505060405180910390fd5b600160a060020a0385811660009081526004602090815260408083209387168352929052206001810154600390910154801561104f57600160a060020a0387166000908152600760205260409020610eae908663ffffffff6129f316565b15610f1a57600160a060020a03808816600090815260056020908152604080832093891683529290522060030154610eec908263ffffffff61294e16565b600160a060020a038089166000908152600560209081526040808320938a168352929052206003015561104f565b6040518060c0016040528060001515815260200160008152602001600081526020018281526020016000815260200187600160a060020a03168152506005600089600160a060020a0316600160a060020a03168152602001908152602001600020600087600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a0316021790555090505061104d85600760008a600160a060020a0316600160a060020a03168152602001908152602001600020612a0890919063ffffffff16565b505b600160a060020a038088166000818152600460208181526040808420958b168452948152848320805460ff1916815560018101849055600281018490556003810184905591820183905560059091018054600160a060020a03191690559181526006909152206110c5908663ffffffff612a1e16565b5060408051600160a060020a038781168252602082018590528183018490529151918916917f8c287cb9c6b85cc52f4e58fb0c3f906c19db890e7288d3bfcfb6a9a66a5d33449181900360600190a25060019695505050505050565b600160a060020a038116600090815260066020526040902060609061114590612a33565b92915050565b600160a060020a0391821660009081526005602090815260408083209390941682529190915220805460018201546002830154600384015460049094015460ff90931694919390929091565b60006111a2336121a5565b6111e05760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b600160a060020a0384166000908152600760205260409020611208908463ffffffff6129f316565b6112465760405160e560020a62461bcd028152600401808060200182810382526029815260200180612e7a6029913960400191505060405180910390fd5b600160a060020a0380851660009081526005602090815260408083209387168352929052205460ff16156112ae5760405160e560020a62461bcd0281526004018080602001828103825260308152602001806130846030913960400191505060405180910390fd5b60408051600080516020612f2f8339815191528152815190819003601401812060e260020a63247452150282526004820152600160a060020a0384811660248301529151918616916391d1485491604480820192602092909190829003018186803b15801561131c57600080fd5b505afa158015611330573d6000803e3d6000fd5b505050506040513d602081101561134657600080fd5b50516113865760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612f4f602c913960400191505060405180910390fd5b600160a060020a03808516600081815260056020908152604080832094881680845294825291829020805460ff191660011790558151938452905191927ffe91b4a3f0b869e79b842bb3b107673cc2b3f2c942484d11cc2ae2a5723e5ea6929081900390910190a25060019392505050565b60606000800180548060200260200160405190810160405280929190818152602001828054801561145257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611434575b5050505050905090565b600160a060020a03808416600090815260036020908152604080832093861683529290529081208054829182918291908690811061149657fe5b60009182526020808320600490920290910154600160a060020a038a811684526003835260408085208b83168652909352919092208054919092169190879081106114dd57fe5b6000918252602080832060016004909302019190910154600160a060020a03808c168452600383526040808520918c1685529252912080548890811061151f57fe5b6000918252602080832060026004909302019190910154600160a060020a03808d168452600383526040808520918d1685529252912080548990811061156157fe5b906000526020600020906004020160030154935093509350935093509350935093565b60408051600080516020612f2f8339815191528152905190819003601401902081565b60006115b2336121a5565b6115f05760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b600160a060020a0384166000908152600660205260409020611618908463ffffffff6129f316565b6116565760405160e560020a62461bcd028152600401808060200182810382526036815260200180612ea36036913960400191505060405180910390fd5b60408051600080516020612f2f8339815191528152815190819003601401812060e260020a63247452150282526004820152600160a060020a0384811660248301529151918616916391d1485491604480820192602092909190829003018186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d60208110156116ee57600080fd5b505161172e5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612f4f602c913960400191505060405180910390fd5b600160a060020a0380851660008181526004602081815260408084209589168452948152848320805460ff1916815560018101849055600281018490556003810184905591820183905560059091018054600160a060020a03191690559181526006909152206117a4908463ffffffff612a1e16565b5060408051600160a060020a0385811682529151918616917fe48d69e5bbd9b67db75a91bdc646ff64bcd92ec6152c3ccdb05c692d921a21119181900360200190a25060019392505050565b60006117fb336121a5565b6118395760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b600160a060020a0384166118815760405160e560020a62461bcd02815260040180806020018281038252602381526020018061303b6023913960400191505060405180910390fd5b600160a060020a0383166118c95760405160e560020a62461bcd0281526004018080602001828103825260238152602001806130186023913960400191505060405180910390fd5b60408051600080516020612f2f8339815191528152815190819003601401812060e260020a63247452150282526004820152600160a060020a0384811660248301529151918616916391d1485491604480820192602092909190829003018186803b15801561193757600080fd5b505afa15801561194b573d6000803e3d6000fd5b505050506040513d602081101561196157600080fd5b50516119a15760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612f4f602c913960400191505060405180910390fd5b600160a060020a03848116600090815260046020908152604080832093871683529290522060018101546003909101548115611ba657600160a060020a03861660009081526007602052604090206119ff908663ffffffff6129f316565b15611a6b57600160a060020a03808716600090815260056020908152604080832093891683529290522060010154611a3d908363ffffffff61294e16565b600160a060020a038088166000908152600560209081526040808320938a1683529290522060010155611ba1565b6040518060c001604052806000151581526020018381526020016000815260200160008152602001600081526020016000600160a060020a03168152506005600088600160a060020a0316600160a060020a03168152602001908152602001600020600087600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a03160217905550905050611b9f856007600089600160a060020a0316600160a060020a03168152602001908152602001600020612a0890919063ffffffff16565b505b611d9e565b600160a060020a0380871660009081526004602090815260408083209389168352929052206003015415611d9e57600160a060020a0386166000908152600760205260409020611bfc908663ffffffff6129f316565b15611c6857600160a060020a03808716600090815260056020908152604080832093891683529290522060030154611c3a908263ffffffff61294e16565b600160a060020a038088166000908152600560209081526040808320938a1683529290522060030155611d9e565b6040518060c001604052806000151581526020016000815260200160008152602001828152602001600081526020016000600160a060020a03168152506005600088600160a060020a0316600160a060020a03168152602001908152602001600020600087600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a03160217905550905050611d9c856007600089600160a060020a0316600160a060020a03168152602001908152602001600020612a0890919063ffffffff16565b505b600160a060020a038087166000818152600460208181526040808420958b168452948152848320805460ff1916815560018101849055600281018490556003810184905591820183905560059091018054600160a060020a0319169055918152600690915220611e14908663ffffffff612a1e16565b5060408051600160a060020a038781168252602082018590528183018490529151918816917f8c287cb9c6b85cc52f4e58fb0c3f906c19db890e7288d3bfcfb6a9a66a5d33449181900360600190a250600195945050505050565b604080517f535441525455505f5445414d5f524f4c450000000000000000000000000000008152905190819003601101902081565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6000611eda336121a5565b611f185760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b600160a060020a0384166000908152600760205260409020611f40908463ffffffff6129f316565b611f7e5760405160e560020a62461bcd028152600401808060200182810382526029815260200180612e7a6029913960400191505060405180910390fd5b600160a060020a0380851660009081526005602090815260408083209387168352929052205460ff16611fe55760405160e560020a62461bcd0281526004018080602001828103825260308152602001806130846030913960400191505060405180910390fd5b60408051600080516020612f2f8339815191528152815190819003601401812060e260020a63247452150282526004820152600160a060020a0384811660248301529151918616916391d1485491604480820192602092909190829003018186803b15801561205357600080fd5b505afa158015612067573d6000803e3d6000fd5b505050506040513d602081101561207d57600080fd5b50516120bd5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612f4f602c913960400191505060405180910390fd5b600160a060020a03808516600081815260056020908152604080832094881680845294825291829020805460ff191690558151938452905191927fe1a73032dbcf93360e474ead69c6b929f25a0ae7beaed38e82112cf2a98168f4929081900390910190a25060019392505050565b600160a060020a038116600090815260076020526040902060609061114590612a33565b600061215b336121a5565b6121995760405160e560020a62461bcd028152600401808060200182810382526032815260200180612f9c6032913960400191505060405180910390fd5b61070085858585612704565b6000611145818363ffffffff612a3e16565b6121c033612aab565b565b604080517f4c494d495445445f504152544e45525f524f4c450000000000000000000000008152905190819003601401902081565b6122018282612a3e565b15612256576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a03166000818152600183810160209081526040808420805460ff191684179055855492830186558584528184209092018054600160a060020a03191685179055845493835260029094019093529190912055565b6000600160a060020a0385166122fb5760405160e560020a62461bcd02815260040180806020018281038252602381526020018061303b6023913960400191505060405180910390fd5b600160a060020a0384166123435760405160e560020a62461bcd0281526004018080602001828103825260238152602001806130186023913960400191505060405180910390fd5b6000831161239b576040805160e560020a62461bcd02815260206004820152601f60248201527f4173736574734d616e6167655465616d3a2076616c7565206973207a65726f00604482015290519081900360640190fd5b604080517f535441525455505f5445414d5f524f4c450000000000000000000000000000008152815190819003601101812060e260020a63247452150282526004820152600160a060020a0386811660248301529151918716916391d1485491604480820192602092909190829003018186803b15801561241b57600080fd5b505afa15801561242f573d6000803e3d6000fd5b505050506040513d602081101561244557600080fd5b50516124855760405160e560020a62461bcd028152600401808060200182810382526029815260200180612ed96029913960400191505060405180910390fd5b851561258c576040518060c0016040528060011515815260200160008152602001600081526020018481526020016000815260200183600160a060020a03168152506004600087600160a060020a0316600160a060020a03168152602001908152602001600020600086600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a03160217905550905050612689565b6040518060c0016040528060011515815260200184815260200160008152602001600081526020016000815260200183600160a060020a03168152506004600087600160a060020a0316600160a060020a03168152602001908152602001600020600086600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083600160a060020a031602179055509050505b600160a060020a03851660009081526006602052604090206126b1908563ffffffff612a0816565b5060408051600160a060020a038681168252602082018690528251908816927f199889bb68377137835ceba2106404907a1747d53227634bb4a6b613800e3cb3928290030190a250600195945050505050565b60008082116127475760405160e560020a62461bcd02815260040180806020018281038252602f8152602001806130b4602f913960400191505060405180910390fd5b600160a060020a0380861660009081526005602090815260408083209387168352929052205460ff16156127af5760405160e560020a62461bcd02815260040180806020018281038252602681526020018061305e6026913960400191505060405180910390fd5b600160a060020a0380861660009081526005602090815260408083209387168352929052908120600401546127ea908463ffffffff61294e16565b600160a060020a038088166000908152600560209081526040808320938916835292905220600301549091508111156128575760405160e560020a62461bcd028152600401808060200182810382526028815260200180612fce6028913960400191505060405180910390fd5b600160a060020a03868116600081815260056020908152604080832089861680855290835281842060049081018890558585526003808552838620838752855283862084516080810186528e8a168082528188018981528288018f8152426060808601918252865460018082018955978e529c8c902095519c9098029094018054600160a060020a0319169b909d169a909a178c5551928b0192909255965160028a01559551970196909655815190815291820188905281810192909252905191927f3ed4ee04a905a278b050a856bbe7ddaaf327a30514373e65aa6103beeae488c392918290030190a250600195945050505050565b600082820183811015610762576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6129bc60008263ffffffff6121f716565b604051600160a060020a038216907f3b4a40cccf2058c593542587329dd385be4f0b588db5471fbd9598e56dd7093a90600090a250565b600061076283600160a060020a038416612af3565b600061076283600160a060020a03841684612b0b565b600061076283600160a060020a038416612b80565b606061114582612ccb565b6000600160a060020a038216612a885760405160e560020a62461bcd028152600401808060200182810382526022815260200180612ff66022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b612abc60008263ffffffff612d3116565b604051600160a060020a038216907fef69f7d97228658c92417be1b16b19058315de71fecb435d07b7d23728b6bd3190600090a250565b60009081526002919091016020526040902054151590565b6000612b178484612af3565b612b7857508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a0386161790558554858252600287019093526040902091909155610762565b506000610762565b60008181526002830160205260408120548015612cc15783546000198083019190810190600090879083908110612bb357fe5b9060005260206000200154905080876000018481548110612bd057fe5b6000918252602090912001558654879080612be757fe5b600190038181906000526020600020016000905590556000876001018381548110612c0e57fe5b600091825260209091200154600189018054600160a060020a039092169250829186908110612c3957fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555087600101805480612c7457fe5b6000828152602080822083016000199081018054600160a060020a031916905590920190925592815260028901909252506040808220600194850190558682528120555091506111459050565b6000915050611145565b606081600101805480602002602001604051908101604052809291908181526020018280548015612d2557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612d07575b50505050509050919050565b612d3b8282612a3e565b612d795760405160e560020a62461bcd028152600401808060200182810382526021815260200180612f7b6021913960400191505060405180910390fd5b600160a060020a03811660009081526002830160205260409020548015612e545782546000198083019190810190600090869083908110612db657fe5b6000918252602090912001548654600160a060020a0390911691508190879085908110612ddf57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790558554869080612e1357fe5b6000828152602080822083016000199081018054600160a060020a0319169055909201909255600160a060020a038716825260028801905260408120555050505b50600160a060020a03166000908152600190910160205260409020805460ff1916905556fe4173736574734d616e6167655465616d3a207465616d2061646472657373206e6f74206578697374734173736574734d616e6167655465616d3a207468657265206973206e6f207265717565737420666f722074686973206163636f756e744173736574734d616e6167655465616d3a2073656e64657220686173206e6f20726f6c65205445414d4173736574734d616e6167655465616d3a20746f6b656e206465706f736974206e6f7420636f6e6669726d656447454e4552414c5f504152544e45525f524f4c450000000000000000000000004173736574734d616e6167655465616d3a206f776e657220686173206e6f20726f6c652047506172746e6572526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654d616e61676572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d616e6167657220726f6c654173736574734d616e6167655465616d3a207769746864726177206e6f7420636f6e6669726d6564526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734173736574734d616e6167655465616d3a207465616d207a65726f20616464726573734173736574734d616e6167655465616d3a20706f6f6c207a65726f20616464726573734173736574734d616e6167655465616d3a206465706f73697420746f6b656e206c6f636b65644173736574734d616e6167655465616d3a20746865206163636f756e7420697320616c726561647920626c6f636b65644173736574734d616e6167655465616d3a20746865206e756d626572206f662073656e7420746f6b656e2069732030a2646970667358221220e6a7b01b617da25289e3102183161d38f903bf3de5cf658b19604df120ea365d64736f6c63430006080033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

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.