// SPDX-License-Identifier: MIT pragma solidity ^0.8.15; library AccessControlStorage { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } struct Layout { mapping(bytes32 => RoleData) roles; } bytes32 internal constant STORAGE_SLOT = keccak256("openzeppelin.contracts.storage.AccessControl"); function layout() internal pure returns (Layout storage l) { bytes32 slot = STORAGE_SLOT; assembly { l.slot := slot } } }