From 731870211ac9e7f0ec656566e3d0ab8d24d892d8 Mon Sep 17 00:00:00 2001 From: SimFG Date: Sat, 28 May 2022 00:04:01 +0800 Subject: [PATCH] Support role-based access control (only pb) (#16987) Signed-off-by: SimFG --- internal/core/src/pb/CMakeLists.txt | 4 +- internal/core/src/pb/common.pb.cc | 656 ++++- internal/core/src/pb/common.pb.h | 298 ++- internal/distributed/proxy/client/client.go | 13 + internal/distributed/proxy/service.go | 45 + .../distributed/rootcoord/client/client.go | 117 + internal/distributed/rootcoord/service.go | 45 + internal/proto/common.proto | 56 +- internal/proto/commonpb/common.pb.go | 615 +++-- internal/proto/internal.proto | 13 + internal/proto/internalpb/internal.pb.go | 372 ++- internal/proto/milvus.proto | 263 +- internal/proto/milvuspb/milvus.pb.go | 2154 +++++++++++++++-- internal/proto/proxy.proto | 8 + internal/proto/proxypb/proxy.pb.go | 170 +- internal/proto/root_coord.proto | 13 +- internal/proto/rootcoordpb/root_coord.pb.go | 521 +++- internal/proxy/impl.go | 45 + internal/util/mock/proxy_client.go | 4 + internal/util/mock/rootcoord_client.go | 40 +- scripts/proto_gen_go.sh | 27 +- 21 files changed, 4617 insertions(+), 862 deletions(-) diff --git a/internal/core/src/pb/CMakeLists.txt b/internal/core/src/pb/CMakeLists.txt index 45d120b228..87871684d8 100644 --- a/internal/core/src/pb/CMakeLists.txt +++ b/internal/core/src/pb/CMakeLists.txt @@ -17,7 +17,8 @@ set( proto_file_names common.proto ) -set( PROTO_PATH "${MILVUS_SOURCE_DIR}/../proto/" ) +set( PROTO_PATH "${MILVUS_SOURCE_DIR}/../proto/") +set( PROTO_GOOGLE_PATH "${MILVUS_SOURCE_DIR}/../../cmake_build/thirdparty/protobuf/protobuf-src/src/" ) FOREACH(proto_file ${proto_file_names}) STRING( REGEX REPLACE "[^/]proto" "" proto_src_file_name ${proto_file} ) @@ -27,6 +28,7 @@ FOREACH(proto_file ${proto_file_names}) OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${proto_src_file_name}.pb.h" "${CMAKE_CURRENT_SOURCE_DIR}/${proto_src_file_name}.pb.cc" COMMAND protobuf::protoc --proto_path=${PROTO_PATH}/ + --proto_path=${PROTO_GOOGLE_PATH}/ --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/ ${proto_file} DEPENDS ${PROTO_PATH}/${proto_file} ) diff --git a/internal/core/src/pb/common.pb.cc b/internal/core/src/pb/common.pb.cc index 76a4257b11..84a12b2a6e 100644 --- a/internal/core/src/pb/common.pb.cc +++ b/internal/core/src/pb/common.pb.cc @@ -17,6 +17,7 @@ #include extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_MsgBase_common_2eproto; extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_PlaceholderValue_common_2eproto; +extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_PrivilegeExt_common_2eproto; namespace milvus { namespace proto { namespace common { @@ -60,6 +61,10 @@ class DMLMsgHeaderDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DMLMsgHeader_default_instance_; +class PrivilegeExtDefaultTypeInternal { + public: + ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; +} _PrivilegeExt_default_instance_; } // namespace common } // namespace proto } // namespace milvus @@ -192,6 +197,20 @@ static void InitDefaultsscc_info_PlaceholderValue_common_2eproto() { ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_PlaceholderValue_common_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsscc_info_PlaceholderValue_common_2eproto}, {}}; +static void InitDefaultsscc_info_PrivilegeExt_common_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::milvus::proto::common::_PrivilegeExt_default_instance_; + new (ptr) ::milvus::proto::common::PrivilegeExt(); + ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); + } + ::milvus::proto::common::PrivilegeExt::InitAsDefaultInstance(); +} + +::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_PrivilegeExt_common_2eproto = + {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsscc_info_PrivilegeExt_common_2eproto}, {}}; + static void InitDefaultsscc_info_Status_common_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -206,8 +225,8 @@ static void InitDefaultsscc_info_Status_common_2eproto() { ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Status_common_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsscc_info_Status_common_2eproto}, {}}; -static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_common_2eproto[10]; -static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_common_2eproto[9]; +static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_common_2eproto[11]; +static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_common_2eproto[11]; static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_common_2eproto = nullptr; const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_common_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { @@ -281,6 +300,14 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_common_2eproto::offsets[] PROT ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::milvus::proto::common::DMLMsgHeader, base_), PROTOBUF_FIELD_OFFSET(::milvus::proto::common::DMLMsgHeader, shardname_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, resource_type_), + PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, resource_privilege_), + PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, resource_name_index_), }; static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::milvus::proto::common::Status)}, @@ -293,6 +320,7 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB { 48, -1, sizeof(::milvus::proto::common::MsgBase)}, { 57, -1, sizeof(::milvus::proto::common::MsgHeader)}, { 63, -1, sizeof(::milvus::proto::common::DMLMsgHeader)}, + { 70, -1, sizeof(::milvus::proto::common::PrivilegeExt)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { @@ -306,104 +334,132 @@ static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = reinterpret_cast(&::milvus::proto::common::_MsgBase_default_instance_), reinterpret_cast(&::milvus::proto::common::_MsgHeader_default_instance_), reinterpret_cast(&::milvus::proto::common::_DMLMsgHeader_default_instance_), + reinterpret_cast(&::milvus::proto::common::_PrivilegeExt_default_instance_), }; const char descriptor_table_protodef_common_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = - "\n\014common.proto\022\023milvus.proto.common\"L\n\006S" - "tatus\0222\n\nerror_code\030\001 \001(\0162\036.milvus.proto" - ".common.ErrorCode\022\016\n\006reason\030\002 \001(\t\"*\n\014Key" - "ValuePair\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"(\n" - "\013KeyDataPair\022\013\n\003key\030\001 \001(\t\022\014\n\004data\030\002 \001(\014\"" - "\025\n\004Blob\022\r\n\005value\030\001 \001(\014\"c\n\020PlaceholderVal" - "ue\022\013\n\003tag\030\001 \001(\t\0222\n\004type\030\002 \001(\0162$.milvus.p" - "roto.common.PlaceholderType\022\016\n\006values\030\003 " - "\003(\014\"O\n\020PlaceholderGroup\022;\n\014placeholders\030" - "\001 \003(\0132%.milvus.proto.common.PlaceholderV" - "alue\"#\n\007Address\022\n\n\002ip\030\001 \001(\t\022\014\n\004port\030\002 \001(" - "\003\"m\n\007MsgBase\022.\n\010msg_type\030\001 \001(\0162\034.milvus." - "proto.common.MsgType\022\r\n\005msgID\030\002 \001(\003\022\021\n\tt" - "imestamp\030\003 \001(\004\022\020\n\010sourceID\030\004 \001(\003\"7\n\tMsgH" - "eader\022*\n\004base\030\001 \001(\0132\034.milvus.proto.commo" - "n.MsgBase\"M\n\014DMLMsgHeader\022*\n\004base\030\001 \001(\0132" - "\034.milvus.proto.common.MsgBase\022\021\n\tshardNa" - "me\030\002 \001(\t*\252\006\n\tErrorCode\022\013\n\007Success\020\000\022\023\n\017U" - "nexpectedError\020\001\022\021\n\rConnectFailed\020\002\022\024\n\020P" - "ermissionDenied\020\003\022\027\n\023CollectionNotExists" - "\020\004\022\023\n\017IllegalArgument\020\005\022\024\n\020IllegalDimens" - "ion\020\007\022\024\n\020IllegalIndexType\020\010\022\031\n\025IllegalCo" - "llectionName\020\t\022\017\n\013IllegalTOPK\020\n\022\024\n\020Illeg" - "alRowRecord\020\013\022\023\n\017IllegalVectorID\020\014\022\027\n\023Il" - "legalSearchResult\020\r\022\020\n\014FileNotFound\020\016\022\016\n" - "\nMetaFailed\020\017\022\017\n\013CacheFailed\020\020\022\026\n\022Cannot" - "CreateFolder\020\021\022\024\n\020CannotCreateFile\020\022\022\026\n\022" - "CannotDeleteFolder\020\023\022\024\n\020CannotDeleteFile" - "\020\024\022\023\n\017BuildIndexError\020\025\022\020\n\014IllegalNLIST\020" - "\026\022\025\n\021IllegalMetricType\020\027\022\017\n\013OutOfMemory\020" - "\030\022\021\n\rIndexNotExist\020\031\022\023\n\017EmptyCollection\020" - "\032\022\033\n\027UpdateImportTaskFailure\020\033\022\032\n\026Collec" - "tionNameNotFound\020\034\022\033\n\027CreateCredentialFa" - "ilure\020\035\022\033\n\027UpdateCredentialFailure\020\036\022\033\n\027" - "DeleteCredentialFailure\020\037\022\030\n\024GetCredenti" - "alFailure\020 \022\030\n\024ListCredUsersFailure\020!\022\022\n" - "\016NotShardLeader\020\"\022\026\n\022NoReplicaAvailable\020" - "#\022\022\n\rDDRequestRace\020\350\007*X\n\nIndexState\022\022\n\016I" - "ndexStateNone\020\000\022\014\n\010Unissued\020\001\022\016\n\nInProgr" - "ess\020\002\022\014\n\010Finished\020\003\022\n\n\006Failed\020\004*\202\001\n\014Segm" - "entState\022\024\n\020SegmentStateNone\020\000\022\014\n\010NotExi" - "st\020\001\022\013\n\007Growing\020\002\022\n\n\006Sealed\020\003\022\013\n\007Flushed" - "\020\004\022\014\n\010Flushing\020\005\022\013\n\007Dropped\020\006\022\r\n\tImporti" - "ng\020\007*>\n\017PlaceholderType\022\010\n\004None\020\000\022\020\n\014Bin" - "aryVector\020d\022\017\n\013FloatVector\020e*\362\n\n\007MsgType" - "\022\r\n\tUndefined\020\000\022\024\n\020CreateCollection\020d\022\022\n" - "\016DropCollection\020e\022\021\n\rHasCollection\020f\022\026\n\022" - "DescribeCollection\020g\022\023\n\017ShowCollections\020" - "h\022\024\n\020GetSystemConfigs\020i\022\022\n\016LoadCollectio" - "n\020j\022\025\n\021ReleaseCollection\020k\022\017\n\013CreateAlia" - "s\020l\022\r\n\tDropAlias\020m\022\016\n\nAlterAlias\020n\022\024\n\017Cr" - "eatePartition\020\310\001\022\022\n\rDropPartition\020\311\001\022\021\n\014" - "HasPartition\020\312\001\022\026\n\021DescribePartition\020\313\001\022" - "\023\n\016ShowPartitions\020\314\001\022\023\n\016LoadPartitions\020\315" - "\001\022\026\n\021ReleasePartitions\020\316\001\022\021\n\014ShowSegment" - "s\020\372\001\022\024\n\017DescribeSegment\020\373\001\022\021\n\014LoadSegmen" - "ts\020\374\001\022\024\n\017ReleaseSegments\020\375\001\022\024\n\017HandoffSe" - "gments\020\376\001\022\030\n\023LoadBalanceSegments\020\377\001\022\025\n\020D" - "escribeSegments\020\200\002\022\020\n\013CreateIndex\020\254\002\022\022\n\r" - "DescribeIndex\020\255\002\022\016\n\tDropIndex\020\256\002\022\013\n\006Inse" - "rt\020\220\003\022\013\n\006Delete\020\221\003\022\n\n\005Flush\020\222\003\022\027\n\022Resend" - "SegmentStats\020\223\003\022\013\n\006Search\020\364\003\022\021\n\014SearchRe" - "sult\020\365\003\022\022\n\rGetIndexState\020\366\003\022\032\n\025GetIndexB" - "uildProgress\020\367\003\022\034\n\027GetCollectionStatisti" - "cs\020\370\003\022\033\n\026GetPartitionStatistics\020\371\003\022\r\n\010Re" - "trieve\020\372\003\022\023\n\016RetrieveResult\020\373\003\022\024\n\017WatchD" - "mChannels\020\374\003\022\025\n\020RemoveDmChannels\020\375\003\022\027\n\022W" - "atchQueryChannels\020\376\003\022\030\n\023RemoveQueryChann" - "els\020\377\003\022\035\n\030SealedSegmentsChangeInfo\020\200\004\022\027\n" - "\022WatchDeltaChannels\020\201\004\022\024\n\017GetShardLeader" - "s\020\202\004\022\020\n\013GetReplicas\020\203\004\022\020\n\013SegmentInfo\020\330\004" - "\022\017\n\nSystemInfo\020\331\004\022\024\n\017GetRecoveryInfo\020\332\004\022" - "\024\n\017GetSegmentState\020\333\004\022\r\n\010TimeTick\020\260\t\022\023\n\016" - "QueryNodeStats\020\261\t\022\016\n\tLoadIndex\020\262\t\022\016\n\tReq" - "uestID\020\263\t\022\017\n\nRequestTSO\020\264\t\022\024\n\017AllocateSe" - "gment\020\265\t\022\026\n\021SegmentStatistics\020\266\t\022\025\n\020Segm" - "entFlushDone\020\267\t\022\017\n\nDataNodeTt\020\270\t\022\025\n\020Crea" - "teCredential\020\334\013\022\022\n\rGetCredential\020\335\013\022\025\n\020D" - "eleteCredential\020\336\013\022\025\n\020UpdateCredential\020\337" - "\013\022\026\n\021ListCredUsernames\020\340\013*\"\n\007DslType\022\007\n\003" - "Dsl\020\000\022\016\n\nBoolExprV1\020\001*B\n\017CompactionState" - "\022\021\n\rUndefiedState\020\000\022\r\n\tExecuting\020\001\022\r\n\tCo" - "mpleted\020\002*X\n\020ConsistencyLevel\022\n\n\006Strong\020" - "\000\022\013\n\007Session\020\001\022\013\n\007Bounded\020\002\022\016\n\nEventuall" - "y\020\003\022\016\n\nCustomized\020\004*\227\001\n\013ImportState\022\021\n\rI" - "mportPending\020\000\022\020\n\014ImportFailed\020\001\022\021\n\rImpo" - "rtStarted\020\002\022\024\n\020ImportDownloaded\020\003\022\020\n\014Imp" - "ortParsed\020\004\022\023\n\017ImportPersisted\020\005\022\023\n\017Impo" - "rtCompleted\020\006BW\n\016io.milvus.grpcB\013CommonP" - "rotoP\001Z3github.com/milvus-io/milvus/inte" - "rnal/proto/commonpb\240\001\001b\006proto3" + "\n\014common.proto\022\023milvus.proto.common\032 goo" + "gle/protobuf/descriptor.proto\"L\n\006Status\022" + "2\n\nerror_code\030\001 \001(\0162\036.milvus.proto.commo" + "n.ErrorCode\022\016\n\006reason\030\002 \001(\t\"*\n\014KeyValueP" + "air\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"(\n\013KeyDa" + "taPair\022\013\n\003key\030\001 \001(\t\022\014\n\004data\030\002 \001(\014\"\025\n\004Blo" + "b\022\r\n\005value\030\001 \001(\014\"c\n\020PlaceholderValue\022\013\n\003" + "tag\030\001 \001(\t\0222\n\004type\030\002 \001(\0162$.milvus.proto.c" + "ommon.PlaceholderType\022\016\n\006values\030\003 \003(\014\"O\n" + "\020PlaceholderGroup\022;\n\014placeholders\030\001 \003(\0132" + "%.milvus.proto.common.PlaceholderValue\"#" + "\n\007Address\022\n\n\002ip\030\001 \001(\t\022\014\n\004port\030\002 \001(\003\"m\n\007M" + "sgBase\022.\n\010msg_type\030\001 \001(\0162\034.milvus.proto." + "common.MsgType\022\r\n\005msgID\030\002 \001(\003\022\021\n\ttimesta" + "mp\030\003 \001(\004\022\020\n\010sourceID\030\004 \001(\003\"7\n\tMsgHeader\022" + "*\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgB" + "ase\"M\n\014DMLMsgHeader\022*\n\004base\030\001 \001(\0132\034.milv" + "us.proto.common.MsgBase\022\021\n\tshardName\030\002 \001" + "(\t\"\251\001\n\014PrivilegeExt\0228\n\rresource_type\030\001 \001" + "(\0162!.milvus.proto.common.ResourceType\022B\n" + "\022resource_privilege\030\002 \001(\0162&.milvus.proto" + ".common.ResourcePrivilege\022\033\n\023resource_na" + "me_index\030\003 \001(\005*\276\010\n\tErrorCode\022\013\n\007Success\020" + "\000\022\023\n\017UnexpectedError\020\001\022\021\n\rConnectFailed\020" + "\002\022\024\n\020PermissionDenied\020\003\022\027\n\023CollectionNot" + "Exists\020\004\022\023\n\017IllegalArgument\020\005\022\024\n\020Illegal" + "Dimension\020\007\022\024\n\020IllegalIndexType\020\010\022\031\n\025Ill" + "egalCollectionName\020\t\022\017\n\013IllegalTOPK\020\n\022\024\n" + "\020IllegalRowRecord\020\013\022\023\n\017IllegalVectorID\020\014" + "\022\027\n\023IllegalSearchResult\020\r\022\020\n\014FileNotFoun" + "d\020\016\022\016\n\nMetaFailed\020\017\022\017\n\013CacheFailed\020\020\022\026\n\022" + "CannotCreateFolder\020\021\022\024\n\020CannotCreateFile" + "\020\022\022\026\n\022CannotDeleteFolder\020\023\022\024\n\020CannotDele" + "teFile\020\024\022\023\n\017BuildIndexError\020\025\022\020\n\014Illegal" + "NLIST\020\026\022\025\n\021IllegalMetricType\020\027\022\017\n\013OutOfM" + "emory\020\030\022\021\n\rIndexNotExist\020\031\022\023\n\017EmptyColle" + "ction\020\032\022\033\n\027UpdateImportTaskFailure\020\033\022\032\n\026" + "CollectionNameNotFound\020\034\022\033\n\027CreateCreden" + "tialFailure\020\035\022\033\n\027UpdateCredentialFailure" + "\020\036\022\033\n\027DeleteCredentialFailure\020\037\022\030\n\024GetCr" + "edentialFailure\020 \022\030\n\024ListCredUsersFailur" + "e\020!\022\022\n\016GetUserFailure\020\"\022\025\n\021CreateRoleFai" + "lure\020#\022\023\n\017DropRoleFailure\020$\022\032\n\026OperateUs" + "erRoleFailure\020%\022\025\n\021SelectRoleFailure\020&\022\025" + "\n\021SelectUserFailure\020\'\022\031\n\025SelectResourceF" + "ailure\020(\022\033\n\027OperatePrivilegeFailure\020)\022\026\n" + "\022SelectGrantFailure\020*\022!\n\035RefreshPolicyIn" + "foCacheFailure\020+\022\025\n\021ListPolicyFailure\020,\022" + "\022\n\016NotShardLeader\020-\022\026\n\022NoReplicaAvailabl" + "e\020.\022\022\n\rDDRequestRace\020\350\007*X\n\nIndexState\022\022\n" + "\016IndexStateNone\020\000\022\014\n\010Unissued\020\001\022\016\n\nInPro" + "gress\020\002\022\014\n\010Finished\020\003\022\n\n\006Failed\020\004*\202\001\n\014Se" + "gmentState\022\024\n\020SegmentStateNone\020\000\022\014\n\010NotE" + "xist\020\001\022\013\n\007Growing\020\002\022\n\n\006Sealed\020\003\022\013\n\007Flush" + "ed\020\004\022\014\n\010Flushing\020\005\022\013\n\007Dropped\020\006\022\r\n\tImpor" + "ting\020\007*>\n\017PlaceholderType\022\010\n\004None\020\000\022\020\n\014B" + "inaryVector\020d\022\017\n\013FloatVector\020e*\266\014\n\007MsgTy" + "pe\022\r\n\tUndefined\020\000\022\024\n\020CreateCollection\020d\022" + "\022\n\016DropCollection\020e\022\021\n\rHasCollection\020f\022\026" + "\n\022DescribeCollection\020g\022\023\n\017ShowCollection" + "s\020h\022\024\n\020GetSystemConfigs\020i\022\022\n\016LoadCollect" + "ion\020j\022\025\n\021ReleaseCollection\020k\022\017\n\013CreateAl" + "ias\020l\022\r\n\tDropAlias\020m\022\016\n\nAlterAlias\020n\022\024\n\017" + "CreatePartition\020\310\001\022\022\n\rDropPartition\020\311\001\022\021" + "\n\014HasPartition\020\312\001\022\026\n\021DescribePartition\020\313" + "\001\022\023\n\016ShowPartitions\020\314\001\022\023\n\016LoadPartitions" + "\020\315\001\022\026\n\021ReleasePartitions\020\316\001\022\021\n\014ShowSegme" + "nts\020\372\001\022\024\n\017DescribeSegment\020\373\001\022\021\n\014LoadSegm" + "ents\020\374\001\022\024\n\017ReleaseSegments\020\375\001\022\024\n\017Handoff" + "Segments\020\376\001\022\030\n\023LoadBalanceSegments\020\377\001\022\025\n" + "\020DescribeSegments\020\200\002\022\020\n\013CreateIndex\020\254\002\022\022" + "\n\rDescribeIndex\020\255\002\022\016\n\tDropIndex\020\256\002\022\013\n\006In" + "sert\020\220\003\022\013\n\006Delete\020\221\003\022\n\n\005Flush\020\222\003\022\027\n\022Rese" + "ndSegmentStats\020\223\003\022\013\n\006Search\020\364\003\022\021\n\014Search" + "Result\020\365\003\022\022\n\rGetIndexState\020\366\003\022\032\n\025GetInde" + "xBuildProgress\020\367\003\022\034\n\027GetCollectionStatis" + "tics\020\370\003\022\033\n\026GetPartitionStatistics\020\371\003\022\r\n\010" + "Retrieve\020\372\003\022\023\n\016RetrieveResult\020\373\003\022\024\n\017Watc" + "hDmChannels\020\374\003\022\025\n\020RemoveDmChannels\020\375\003\022\027\n" + "\022WatchQueryChannels\020\376\003\022\030\n\023RemoveQueryCha" + "nnels\020\377\003\022\035\n\030SealedSegmentsChangeInfo\020\200\004\022" + "\027\n\022WatchDeltaChannels\020\201\004\022\024\n\017GetShardLead" + "ers\020\202\004\022\020\n\013GetReplicas\020\203\004\022\020\n\013SegmentInfo\020" + "\330\004\022\017\n\nSystemInfo\020\331\004\022\024\n\017GetRecoveryInfo\020\332" + "\004\022\024\n\017GetSegmentState\020\333\004\022\r\n\010TimeTick\020\260\t\022\023" + "\n\016QueryNodeStats\020\261\t\022\016\n\tLoadIndex\020\262\t\022\016\n\tR" + "equestID\020\263\t\022\017\n\nRequestTSO\020\264\t\022\024\n\017Allocate" + "Segment\020\265\t\022\026\n\021SegmentStatistics\020\266\t\022\025\n\020Se" + "gmentFlushDone\020\267\t\022\017\n\nDataNodeTt\020\270\t\022\025\n\020Cr" + "eateCredential\020\334\013\022\022\n\rGetCredential\020\335\013\022\025\n" + "\020DeleteCredential\020\336\013\022\025\n\020UpdateCredential" + "\020\337\013\022\026\n\021ListCredUsernames\020\340\013\022\017\n\nCreateRol" + "e\020\300\014\022\r\n\010DropRole\020\301\014\022\024\n\017OperateUserRole\020\302" + "\014\022\017\n\nSelectRole\020\303\014\022\017\n\nSelectUser\020\304\014\022\023\n\016S" + "electResource\020\305\014\022\025\n\020OperatePrivilege\020\306\014\022" + "\020\n\013SelectGrant\020\307\014\022\033\n\026RefreshPolicyInfoCa" + "che\020\310\014\022\017\n\nListPolicy\020\311\014*\"\n\007DslType\022\007\n\003Ds" + "l\020\000\022\016\n\nBoolExprV1\020\001*B\n\017CompactionState\022\021" + "\n\rUndefiedState\020\000\022\r\n\tExecuting\020\001\022\r\n\tComp" + "leted\020\002*X\n\020ConsistencyLevel\022\n\n\006Strong\020\000\022" + "\013\n\007Session\020\001\022\013\n\007Bounded\020\002\022\016\n\nEventually\020" + "\003\022\016\n\nCustomized\020\004*\227\001\n\013ImportState\022\021\n\rImp" + "ortPending\020\000\022\020\n\014ImportFailed\020\001\022\021\n\rImport" + "Started\020\002\022\024\n\020ImportDownloaded\020\003\022\020\n\014Impor" + "tParsed\020\004\022\023\n\017ImportPersisted\020\005\022\023\n\017Import" + "Completed\020\006*\036\n\014ResourceType\022\016\n\nCollectio" + "n\020\000*\335\001\n\021ResourcePrivilege\022\020\n\014PrivilegeAl" + "l\020\000\022\023\n\017PrivilegeCreate\020\001\022\021\n\rPrivilegeDro" + "p\020\002\022\022\n\016PrivilegeAlter\020\003\022\021\n\rPrivilegeRead" + "\020\004\022\021\n\rPrivilegeLoad\020\005\022\024\n\020PrivilegeReleas" + "e\020\006\022\024\n\020PrivilegeCompact\020\007\022\023\n\017PrivilegeIn" + "sert\020\010\022\023\n\017PrivilegeDelete\020\t:^\n\021privilege" + "_ext_obj\022\037.google.protobuf.MessageOption" + "s\030\351\007 \001(\0132!.milvus.proto.common.Privilege" + "ExtBW\n\016io.milvus.grpcB\013CommonProtoP\001Z3gi" + "thub.com/milvus-io/milvus/internal/proto" + "/commonpb\240\001\001b\006proto3" ; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_common_2eproto_deps[1] = { + &::descriptor_table_google_2fprotobuf_2fdescriptor_2eproto, }; -static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_common_2eproto_sccs[10] = { +static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_common_2eproto_sccs[11] = { &scc_info_Address_common_2eproto.base, &scc_info_Blob_common_2eproto.base, &scc_info_DMLMsgHeader_common_2eproto.base, @@ -413,15 +469,16 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_com &scc_info_MsgHeader_common_2eproto.base, &scc_info_PlaceholderGroup_common_2eproto.base, &scc_info_PlaceholderValue_common_2eproto.base, + &scc_info_PrivilegeExt_common_2eproto.base, &scc_info_Status_common_2eproto.base, }; static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_common_2eproto_once; static bool descriptor_table_common_2eproto_initialized = false; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_common_2eproto = { - &descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 3630, - &descriptor_table_common_2eproto_once, descriptor_table_common_2eproto_sccs, descriptor_table_common_2eproto_deps, 10, 0, + &descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 4660, + &descriptor_table_common_2eproto_once, descriptor_table_common_2eproto_sccs, descriptor_table_common_2eproto_deps, 11, 1, schemas, file_default_instances, TableStruct_common_2eproto::offsets, - file_level_metadata_common_2eproto, 10, file_level_enum_descriptors_common_2eproto, file_level_service_descriptors_common_2eproto, + file_level_metadata_common_2eproto, 11, file_level_enum_descriptors_common_2eproto, file_level_service_descriptors_common_2eproto, }; // Force running AddDescriptors() at dynamic initialization time. @@ -470,6 +527,17 @@ bool ErrorCode_IsValid(int value) { case 33: case 34: case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: case 1000: return true; default: @@ -602,6 +670,16 @@ bool MsgType_IsValid(int value) { case 1502: case 1503: case 1504: + case 1600: + case 1601: + case 1602: + case 1603: + case 1604: + case 1605: + case 1606: + case 1607: + case 1608: + case 1609: return true; default: return false; @@ -673,6 +751,41 @@ bool ImportState_IsValid(int value) { } } +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ResourceType_descriptor() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_common_2eproto); + return file_level_enum_descriptors_common_2eproto[9]; +} +bool ResourceType_IsValid(int value) { + switch (value) { + case 0: + return true; + default: + return false; + } +} + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ResourcePrivilege_descriptor() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_common_2eproto); + return file_level_enum_descriptors_common_2eproto[10]; +} +bool ResourcePrivilege_IsValid(int value) { + switch (value) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + return true; + default: + return false; + } +} + // =================================================================== @@ -3812,6 +3925,352 @@ void DMLMsgHeader::InternalSwap(DMLMsgHeader* other) { } +// =================================================================== + +void PrivilegeExt::InitAsDefaultInstance() { +} +class PrivilegeExt::_Internal { + public: +}; + +PrivilegeExt::PrivilegeExt() + : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:milvus.proto.common.PrivilegeExt) +} +PrivilegeExt::PrivilegeExt(const PrivilegeExt& from) + : ::PROTOBUF_NAMESPACE_ID::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::memcpy(&resource_type_, &from.resource_type_, + static_cast(reinterpret_cast(&resource_name_index_) - + reinterpret_cast(&resource_type_)) + sizeof(resource_name_index_)); + // @@protoc_insertion_point(copy_constructor:milvus.proto.common.PrivilegeExt) +} + +void PrivilegeExt::SharedCtor() { + ::memset(&resource_type_, 0, static_cast( + reinterpret_cast(&resource_name_index_) - + reinterpret_cast(&resource_type_)) + sizeof(resource_name_index_)); +} + +PrivilegeExt::~PrivilegeExt() { + // @@protoc_insertion_point(destructor:milvus.proto.common.PrivilegeExt) + SharedDtor(); +} + +void PrivilegeExt::SharedDtor() { +} + +void PrivilegeExt::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const PrivilegeExt& PrivilegeExt::default_instance() { + ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_PrivilegeExt_common_2eproto.base); + return *internal_default_instance(); +} + + +void PrivilegeExt::Clear() { +// @@protoc_insertion_point(message_clear_start:milvus.proto.common.PrivilegeExt) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + ::memset(&resource_type_, 0, static_cast( + reinterpret_cast(&resource_name_index_) - + reinterpret_cast(&resource_type_)) + sizeof(resource_name_index_)); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* PrivilegeExt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { +#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure + while (!ctx->Done(&ptr)) { + ::PROTOBUF_NAMESPACE_ID::uint32 tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + CHK_(ptr); + switch (tag >> 3) { + // .milvus.proto.common.ResourceType resource_type = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { + ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr); + CHK_(ptr); + set_resource_type(static_cast<::milvus::proto::common::ResourceType>(val)); + } else goto handle_unusual; + continue; + // .milvus.proto.common.ResourcePrivilege resource_privilege = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { + ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr); + CHK_(ptr); + set_resource_privilege(static_cast<::milvus::proto::common::ResourcePrivilege>(val)); + } else goto handle_unusual; + continue; + // int32 resource_name_index = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { + resource_name_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->SetLastTag(tag); + goto success; + } + ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx); + CHK_(ptr != nullptr); + continue; + } + } // switch + } // while +success: + return ptr; +failure: + ptr = nullptr; + goto success; +#undef CHK_ +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool PrivilegeExt::MergePartialFromCodedStream( + ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::PROTOBUF_NAMESPACE_ID::uint32 tag; + // @@protoc_insertion_point(parse_start:milvus.proto.common.PrivilegeExt) + for (;;) { + ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .milvus.proto.common.ResourceType resource_type = 1; + case 1: { + if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) { + int value = 0; + DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive< + int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + set_resource_type(static_cast< ::milvus::proto::common::ResourceType >(value)); + } else { + goto handle_unusual; + } + break; + } + + // .milvus.proto.common.ResourcePrivilege resource_privilege = 2; + case 2: { + if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) { + int value = 0; + DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive< + int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + set_resource_privilege(static_cast< ::milvus::proto::common::ResourcePrivilege >(value)); + } else { + goto handle_unusual; + } + break; + } + + // int32 resource_name_index = 3; + case 3: { + if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) { + + DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive< + ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>( + input, &resource_name_index_))); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:milvus.proto.common.PrivilegeExt) + return true; +failure: + // @@protoc_insertion_point(parse_failure:milvus.proto.common.PrivilegeExt) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void PrivilegeExt::SerializeWithCachedSizes( + ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:milvus.proto.common.PrivilegeExt) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .milvus.proto.common.ResourceType resource_type = 1; + if (this->resource_type() != 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum( + 1, this->resource_type(), output); + } + + // .milvus.proto.common.ResourcePrivilege resource_privilege = 2; + if (this->resource_privilege() != 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum( + 2, this->resource_privilege(), output); + } + + // int32 resource_name_index = 3; + if (this->resource_name_index() != 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(3, this->resource_name_index(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:milvus.proto.common.PrivilegeExt) +} + +::PROTOBUF_NAMESPACE_ID::uint8* PrivilegeExt::InternalSerializeWithCachedSizesToArray( + ::PROTOBUF_NAMESPACE_ID::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:milvus.proto.common.PrivilegeExt) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .milvus.proto.common.ResourceType resource_type = 1; + if (this->resource_type() != 0) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 1, this->resource_type(), target); + } + + // .milvus.proto.common.ResourcePrivilege resource_privilege = 2; + if (this->resource_privilege() != 0) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( + 2, this->resource_privilege(), target); + } + + // int32 resource_name_index = 3; + if (this->resource_name_index() != 0) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->resource_name_index(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:milvus.proto.common.PrivilegeExt) + return target; +} + +size_t PrivilegeExt::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:milvus.proto.common.PrivilegeExt) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // .milvus.proto.common.ResourceType resource_type = 1; + if (this->resource_type() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->resource_type()); + } + + // .milvus.proto.common.ResourcePrivilege resource_privilege = 2; + if (this->resource_privilege() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->resource_privilege()); + } + + // int32 resource_name_index = 3; + if (this->resource_name_index() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + this->resource_name_index()); + } + + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void PrivilegeExt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:milvus.proto.common.PrivilegeExt) + GOOGLE_DCHECK_NE(&from, this); + const PrivilegeExt* source = + ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:milvus.proto.common.PrivilegeExt) + ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:milvus.proto.common.PrivilegeExt) + MergeFrom(*source); + } +} + +void PrivilegeExt::MergeFrom(const PrivilegeExt& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:milvus.proto.common.PrivilegeExt) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.resource_type() != 0) { + set_resource_type(from.resource_type()); + } + if (from.resource_privilege() != 0) { + set_resource_privilege(from.resource_privilege()); + } + if (from.resource_name_index() != 0) { + set_resource_name_index(from.resource_name_index()); + } +} + +void PrivilegeExt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:milvus.proto.common.PrivilegeExt) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void PrivilegeExt::CopyFrom(const PrivilegeExt& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:milvus.proto.common.PrivilegeExt) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool PrivilegeExt::IsInitialized() const { + return true; +} + +void PrivilegeExt::InternalSwap(PrivilegeExt* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + swap(resource_type_, other->resource_type_); + swap(resource_privilege_, other->resource_privilege_); + swap(resource_name_index_, other->resource_name_index_); +} + +::PROTOBUF_NAMESPACE_ID::Metadata PrivilegeExt::GetMetadata() const { + return GetMetadataStatic(); +} + +::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::google::protobuf::MessageOptions, + ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::milvus::proto::common::PrivilegeExt >, 11, false > + privilege_ext_obj(kPrivilegeExtObjFieldNumber, *::milvus::proto::common::PrivilegeExt::internal_default_instance()); + // @@protoc_insertion_point(namespace_scope) } // namespace common } // namespace proto @@ -3847,6 +4306,9 @@ template<> PROTOBUF_NOINLINE ::milvus::proto::common::MsgHeader* Arena::CreateMa template<> PROTOBUF_NOINLINE ::milvus::proto::common::DMLMsgHeader* Arena::CreateMaybeMessage< ::milvus::proto::common::DMLMsgHeader >(Arena* arena) { return Arena::CreateInternal< ::milvus::proto::common::DMLMsgHeader >(arena); } +template<> PROTOBUF_NOINLINE ::milvus::proto::common::PrivilegeExt* Arena::CreateMaybeMessage< ::milvus::proto::common::PrivilegeExt >(Arena* arena) { + return Arena::CreateInternal< ::milvus::proto::common::PrivilegeExt >(arena); +} PROTOBUF_NAMESPACE_CLOSE // @@protoc_insertion_point(global_scope) diff --git a/internal/core/src/pb/common.pb.h b/internal/core/src/pb/common.pb.h index de1b4d36cc..8800a335eb 100644 --- a/internal/core/src/pb/common.pb.h +++ b/internal/core/src/pb/common.pb.h @@ -33,6 +33,7 @@ #include // IWYU pragma: export #include #include +#include // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_common_2eproto @@ -48,7 +49,7 @@ struct TableStruct_common_2eproto { PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); - static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[10] + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[11] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; @@ -85,6 +86,9 @@ extern PlaceholderGroupDefaultTypeInternal _PlaceholderGroup_default_instance_; class PlaceholderValue; class PlaceholderValueDefaultTypeInternal; extern PlaceholderValueDefaultTypeInternal _PlaceholderValue_default_instance_; +class PrivilegeExt; +class PrivilegeExtDefaultTypeInternal; +extern PrivilegeExtDefaultTypeInternal _PrivilegeExt_default_instance_; class Status; class StatusDefaultTypeInternal; extern StatusDefaultTypeInternal _Status_default_instance_; @@ -101,6 +105,7 @@ template<> ::milvus::proto::common::MsgBase* Arena::CreateMaybeMessage<::milvus: template<> ::milvus::proto::common::MsgHeader* Arena::CreateMaybeMessage<::milvus::proto::common::MsgHeader>(Arena*); template<> ::milvus::proto::common::PlaceholderGroup* Arena::CreateMaybeMessage<::milvus::proto::common::PlaceholderGroup>(Arena*); template<> ::milvus::proto::common::PlaceholderValue* Arena::CreateMaybeMessage<::milvus::proto::common::PlaceholderValue>(Arena*); +template<> ::milvus::proto::common::PrivilegeExt* Arena::CreateMaybeMessage<::milvus::proto::common::PrivilegeExt>(Arena*); template<> ::milvus::proto::common::Status* Arena::CreateMaybeMessage<::milvus::proto::common::Status>(Arena*); PROTOBUF_NAMESPACE_CLOSE namespace milvus { @@ -141,8 +146,19 @@ enum ErrorCode : int { DeleteCredentialFailure = 31, GetCredentialFailure = 32, ListCredUsersFailure = 33, - NotShardLeader = 34, - NoReplicaAvailable = 35, + GetUserFailure = 34, + CreateRoleFailure = 35, + DropRoleFailure = 36, + OperateUserRoleFailure = 37, + SelectRoleFailure = 38, + SelectUserFailure = 39, + SelectResourceFailure = 40, + OperatePrivilegeFailure = 41, + SelectGrantFailure = 42, + RefreshPolicyInfoCacheFailure = 43, + ListPolicyFailure = 44, + NotShardLeader = 45, + NoReplicaAvailable = 46, DDRequestRace = 1000, ErrorCode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ErrorCode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() @@ -319,12 +335,22 @@ enum MsgType : int { DeleteCredential = 1502, UpdateCredential = 1503, ListCredUsernames = 1504, + CreateRole = 1600, + DropRole = 1601, + OperateUserRole = 1602, + SelectRole = 1603, + SelectUser = 1604, + SelectResource = 1605, + OperatePrivilege = 1606, + SelectGrant = 1607, + RefreshPolicyInfoCache = 1608, + ListPolicy = 1609, MsgType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), MsgType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool MsgType_IsValid(int value); constexpr MsgType MsgType_MIN = Undefined; -constexpr MsgType MsgType_MAX = ListCredUsernames; +constexpr MsgType MsgType_MAX = ListPolicy; constexpr int MsgType_ARRAYSIZE = MsgType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MsgType_descriptor(); @@ -450,6 +476,63 @@ inline bool ImportState_Parse( return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ImportState_descriptor(), name, value); } +enum ResourceType : int { + Collection = 0, + ResourceType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ResourceType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ResourceType_IsValid(int value); +constexpr ResourceType ResourceType_MIN = Collection; +constexpr ResourceType ResourceType_MAX = Collection; +constexpr int ResourceType_ARRAYSIZE = ResourceType_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ResourceType_descriptor(); +template +inline const std::string& ResourceType_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ResourceType_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ResourceType_descriptor(), enum_t_value); +} +inline bool ResourceType_Parse( + const std::string& name, ResourceType* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ResourceType_descriptor(), name, value); +} +enum ResourcePrivilege : int { + PrivilegeAll = 0, + PrivilegeCreate = 1, + PrivilegeDrop = 2, + PrivilegeAlter = 3, + PrivilegeRead = 4, + PrivilegeLoad = 5, + PrivilegeRelease = 6, + PrivilegeCompact = 7, + PrivilegeInsert = 8, + PrivilegeDelete = 9, + ResourcePrivilege_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), + ResourcePrivilege_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() +}; +bool ResourcePrivilege_IsValid(int value); +constexpr ResourcePrivilege ResourcePrivilege_MIN = PrivilegeAll; +constexpr ResourcePrivilege ResourcePrivilege_MAX = PrivilegeDelete; +constexpr int ResourcePrivilege_ARRAYSIZE = ResourcePrivilege_MAX + 1; + +const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ResourcePrivilege_descriptor(); +template +inline const std::string& ResourcePrivilege_Name(T enum_t_value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to function ResourcePrivilege_Name."); + return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( + ResourcePrivilege_descriptor(), enum_t_value); +} +inline bool ResourcePrivilege_Parse( + const std::string& name, ResourcePrivilege* value) { + return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( + ResourcePrivilege_descriptor(), name, value); +} // =================================================================== class Status : @@ -1908,8 +1991,157 @@ class DMLMsgHeader : mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_common_2eproto; }; +// ------------------------------------------------------------------- + +class PrivilegeExt : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.common.PrivilegeExt) */ { + public: + PrivilegeExt(); + virtual ~PrivilegeExt(); + + PrivilegeExt(const PrivilegeExt& from); + PrivilegeExt(PrivilegeExt&& from) noexcept + : PrivilegeExt() { + *this = ::std::move(from); + } + + inline PrivilegeExt& operator=(const PrivilegeExt& from) { + CopyFrom(from); + return *this; + } + inline PrivilegeExt& operator=(PrivilegeExt&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const PrivilegeExt& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const PrivilegeExt* internal_default_instance() { + return reinterpret_cast( + &_PrivilegeExt_default_instance_); + } + static constexpr int kIndexInFileMessages = + 10; + + friend void swap(PrivilegeExt& a, PrivilegeExt& b) { + a.Swap(&b); + } + inline void Swap(PrivilegeExt* other) { + if (other == this) return; + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline PrivilegeExt* New() const final { + return CreateMaybeMessage(nullptr); + } + + PrivilegeExt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const PrivilegeExt& from); + void MergeFrom(const PrivilegeExt& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + #else + bool MergePartialFromCodedStream( + ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const final; + ::PROTOBUF_NAMESPACE_ID::uint8* InternalSerializeWithCachedSizesToArray( + ::PROTOBUF_NAMESPACE_ID::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(PrivilegeExt* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "milvus.proto.common.PrivilegeExt"; + } + private: + inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_common_2eproto); + return ::descriptor_table_common_2eproto.file_level_metadata[kIndexInFileMessages]; + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kResourceTypeFieldNumber = 1, + kResourcePrivilegeFieldNumber = 2, + kResourceNameIndexFieldNumber = 3, + }; + // .milvus.proto.common.ResourceType resource_type = 1; + void clear_resource_type(); + ::milvus::proto::common::ResourceType resource_type() const; + void set_resource_type(::milvus::proto::common::ResourceType value); + + // .milvus.proto.common.ResourcePrivilege resource_privilege = 2; + void clear_resource_privilege(); + ::milvus::proto::common::ResourcePrivilege resource_privilege() const; + void set_resource_privilege(::milvus::proto::common::ResourcePrivilege value); + + // int32 resource_name_index = 3; + void clear_resource_name_index(); + ::PROTOBUF_NAMESPACE_ID::int32 resource_name_index() const; + void set_resource_name_index(::PROTOBUF_NAMESPACE_ID::int32 value); + + // @@protoc_insertion_point(class_scope:milvus.proto.common.PrivilegeExt) + private: + class _Internal; + + ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_; + int resource_type_; + int resource_privilege_; + ::PROTOBUF_NAMESPACE_ID::int32 resource_name_index_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_common_2eproto; +}; // =================================================================== +static const int kPrivilegeExtObjFieldNumber = 1001; +extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::google::protobuf::MessageOptions, + ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::milvus::proto::common::PrivilegeExt >, 11, false > + privilege_ext_obj; // =================================================================== @@ -2709,6 +2941,52 @@ inline void DMLMsgHeader::set_allocated_shardname(std::string* shardname) { // @@protoc_insertion_point(field_set_allocated:milvus.proto.common.DMLMsgHeader.shardName) } +// ------------------------------------------------------------------- + +// PrivilegeExt + +// .milvus.proto.common.ResourceType resource_type = 1; +inline void PrivilegeExt::clear_resource_type() { + resource_type_ = 0; +} +inline ::milvus::proto::common::ResourceType PrivilegeExt::resource_type() const { + // @@protoc_insertion_point(field_get:milvus.proto.common.PrivilegeExt.resource_type) + return static_cast< ::milvus::proto::common::ResourceType >(resource_type_); +} +inline void PrivilegeExt::set_resource_type(::milvus::proto::common::ResourceType value) { + + resource_type_ = value; + // @@protoc_insertion_point(field_set:milvus.proto.common.PrivilegeExt.resource_type) +} + +// .milvus.proto.common.ResourcePrivilege resource_privilege = 2; +inline void PrivilegeExt::clear_resource_privilege() { + resource_privilege_ = 0; +} +inline ::milvus::proto::common::ResourcePrivilege PrivilegeExt::resource_privilege() const { + // @@protoc_insertion_point(field_get:milvus.proto.common.PrivilegeExt.resource_privilege) + return static_cast< ::milvus::proto::common::ResourcePrivilege >(resource_privilege_); +} +inline void PrivilegeExt::set_resource_privilege(::milvus::proto::common::ResourcePrivilege value) { + + resource_privilege_ = value; + // @@protoc_insertion_point(field_set:milvus.proto.common.PrivilegeExt.resource_privilege) +} + +// int32 resource_name_index = 3; +inline void PrivilegeExt::clear_resource_name_index() { + resource_name_index_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 PrivilegeExt::resource_name_index() const { + // @@protoc_insertion_point(field_get:milvus.proto.common.PrivilegeExt.resource_name_index) + return resource_name_index_; +} +inline void PrivilegeExt::set_resource_name_index(::PROTOBUF_NAMESPACE_ID::int32 value) { + + resource_name_index_ = value; + // @@protoc_insertion_point(field_set:milvus.proto.common.PrivilegeExt.resource_name_index) +} + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ @@ -2730,6 +3008,8 @@ inline void DMLMsgHeader::set_allocated_shardname(std::string* shardname) { // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) @@ -2784,6 +3064,16 @@ template <> inline const EnumDescriptor* GetEnumDescriptor< ::milvus::proto::common::ImportState>() { return ::milvus::proto::common::ImportState_descriptor(); } +template <> struct is_proto_enum< ::milvus::proto::common::ResourceType> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::milvus::proto::common::ResourceType>() { + return ::milvus::proto::common::ResourceType_descriptor(); +} +template <> struct is_proto_enum< ::milvus::proto::common::ResourcePrivilege> : ::std::true_type {}; +template <> +inline const EnumDescriptor* GetEnumDescriptor< ::milvus::proto::common::ResourcePrivilege>() { + return ::milvus::proto::common::ResourcePrivilege_descriptor(); +} PROTOBUF_NAMESPACE_CLOSE diff --git a/internal/distributed/proxy/client/client.go b/internal/distributed/proxy/client/client.go index fcd506a4be..88d4a14024 100644 --- a/internal/distributed/proxy/client/client.go +++ b/internal/distributed/proxy/client/client.go @@ -209,3 +209,16 @@ func (c *Client) ClearCredUsersCache(ctx context.Context, req *internalpb.ClearC } return ret.(*commonpb.Status), err } + +func (c *Client) RefreshPolicyInfoCache(ctx context.Context, req *proxypb.RefreshPolicyInfoCacheRequest) (*commonpb.Status, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(proxypb.ProxyClient).RefreshPolicyInfoCache(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*commonpb.Status), err +} diff --git a/internal/distributed/proxy/service.go b/internal/distributed/proxy/service.go index 7380d51105..2a133dda31 100644 --- a/internal/distributed/proxy/service.go +++ b/internal/distributed/proxy/service.go @@ -844,3 +844,48 @@ func (s *Server) DeleteCredential(ctx context.Context, req *milvuspb.DeleteCrede func (s *Server) ListCredUsers(ctx context.Context, req *milvuspb.ListCredUsersRequest) (*milvuspb.ListCredUsersResponse, error) { return s.proxy.ListCredUsers(ctx, req) } + +func (s *Server) CreateRole(ctx context.Context, request *milvuspb.CreateRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) DropRole(ctx context.Context, request *milvuspb.DropRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) OperateUserRole(ctx context.Context, request *milvuspb.OperateUserRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectRole(ctx context.Context, request *milvuspb.SelectRoleRequest) (*milvuspb.SelectRoleResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectUser(ctx context.Context, request *milvuspb.SelectUserRequest) (*milvuspb.SelectUserResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectResource(ctx context.Context, request *milvuspb.SelectResourceRequest) (*milvuspb.SelectResourceResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) OperatePrivilege(ctx context.Context, request *milvuspb.OperatePrivilegeRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectGrant(ctx context.Context, request *milvuspb.SelectGrantRequest) (*milvuspb.SelectGrantResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) RefreshPolicyInfoCache(ctx context.Context, request *proxypb.RefreshPolicyInfoCacheRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} diff --git a/internal/distributed/rootcoord/client/client.go b/internal/distributed/rootcoord/client/client.go index b416a3ca7c..5e972c2352 100644 --- a/internal/distributed/rootcoord/client/client.go +++ b/internal/distributed/rootcoord/client/client.go @@ -626,3 +626,120 @@ func (c *Client) ListCredUsers(ctx context.Context, req *milvuspb.ListCredUsersR } return ret.(*milvuspb.ListCredUsersResponse), err } + +func (c *Client) CreateRole(ctx context.Context, req *milvuspb.CreateRoleRequest) (*commonpb.Status, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).CreateRole(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*commonpb.Status), err +} + +func (c *Client) DropRole(ctx context.Context, req *milvuspb.DropRoleRequest) (*commonpb.Status, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).DropRole(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*commonpb.Status), err +} + +func (c *Client) OperateUserRole(ctx context.Context, req *milvuspb.OperateUserRoleRequest) (*commonpb.Status, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).OperateUserRole(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*commonpb.Status), err +} + +func (c *Client) SelectRole(ctx context.Context, req *milvuspb.SelectRoleRequest) (*milvuspb.SelectRoleResponse, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).SelectRole(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*milvuspb.SelectRoleResponse), err +} + +func (c *Client) SelectUser(ctx context.Context, req *milvuspb.SelectUserRequest) (*milvuspb.SelectUserResponse, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).SelectUser(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*milvuspb.SelectUserResponse), err +} + +func (c *Client) SelectResource(ctx context.Context, req *milvuspb.SelectResourceRequest) (*milvuspb.SelectResourceResponse, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).SelectResource(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*milvuspb.SelectResourceResponse), err +} + +func (c *Client) OperatePrivilege(ctx context.Context, req *milvuspb.OperatePrivilegeRequest) (*commonpb.Status, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).OperatePrivilege(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*commonpb.Status), err +} + +func (c *Client) SelectGrant(ctx context.Context, req *milvuspb.SelectGrantRequest) (*milvuspb.SelectGrantResponse, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).SelectGrant(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*milvuspb.SelectGrantResponse), err +} + +func (c *Client) ListPolicy(ctx context.Context, req *internalpb.ListPolicyRequest) (*internalpb.ListPolicyResponse, error) { + ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) { + if !funcutil.CheckCtxValid(ctx) { + return nil, ctx.Err() + } + return client.(rootcoordpb.RootCoordClient).ListPolicy(ctx, req) + }) + if err != nil { + return nil, err + } + return ret.(*internalpb.ListPolicyResponse), err +} diff --git a/internal/distributed/rootcoord/service.go b/internal/distributed/rootcoord/service.go index 14b7ce6cce..1359f9f8d5 100644 --- a/internal/distributed/rootcoord/service.go +++ b/internal/distributed/rootcoord/service.go @@ -483,3 +483,48 @@ func (s *Server) DeleteCredential(ctx context.Context, request *milvuspb.DeleteC func (s *Server) ListCredUsers(ctx context.Context, request *milvuspb.ListCredUsersRequest) (*milvuspb.ListCredUsersResponse, error) { return s.rootCoord.ListCredUsers(ctx, request) } + +func (s *Server) CreateRole(ctx context.Context, request *milvuspb.CreateRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) DropRole(ctx context.Context, request *milvuspb.DropRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) OperateUserRole(ctx context.Context, request *milvuspb.OperateUserRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectRole(ctx context.Context, request *milvuspb.SelectRoleRequest) (*milvuspb.SelectRoleResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectUser(ctx context.Context, request *milvuspb.SelectUserRequest) (*milvuspb.SelectUserResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectResource(ctx context.Context, request *milvuspb.SelectResourceRequest) (*milvuspb.SelectResourceResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) OperatePrivilege(ctx context.Context, info *milvuspb.OperatePrivilegeRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) SelectGrant(ctx context.Context, request *milvuspb.SelectGrantRequest) (*milvuspb.SelectGrantResponse, error) { + //TODO implement me + panic("implement me") +} + +func (s *Server) ListPolicy(ctx context.Context, request *internalpb.ListPolicyRequest) (*internalpb.ListPolicyResponse, error) { + //TODO implement me + panic("implement me") +} diff --git a/internal/proto/common.proto b/internal/proto/common.proto index d18677f57d..b2352d1568 100644 --- a/internal/proto/common.proto +++ b/internal/proto/common.proto @@ -8,6 +8,8 @@ option java_package = "io.milvus.grpc"; option java_outer_classname = "CommonProto"; option java_generate_equals_and_hash = true; +import "google/protobuf/descriptor.proto"; + enum ErrorCode { Success = 0; UnexpectedError = 1; @@ -42,8 +44,19 @@ enum ErrorCode { DeleteCredentialFailure = 31; GetCredentialFailure = 32; ListCredUsersFailure = 33; - NotShardLeader = 34; - NoReplicaAvailable = 35; + GetUserFailure = 34; + CreateRoleFailure = 35; + DropRoleFailure = 36; + OperateUserRoleFailure = 37; + SelectRoleFailure = 38; + SelectUserFailure = 39; + SelectResourceFailure = 40; + OperatePrivilegeFailure = 41; + SelectGrantFailure = 42; + RefreshPolicyInfoCacheFailure = 43; + ListPolicyFailure = 44; + NotShardLeader = 45; + NoReplicaAvailable = 46; // internal error code. DDRequestRace = 1000; @@ -197,6 +210,18 @@ enum MsgType { DeleteCredential = 1502; UpdateCredential = 1503; ListCredUsernames = 1504; + + /* RBAC */ + CreateRole = 1600; + DropRole = 1601; + OperateUserRole = 1602; + SelectRole = 1603; + SelectUser = 1604; + SelectResource = 1605; + OperatePrivilege = 1606; + SelectGrant = 1607; + RefreshPolicyInfoCache = 1608; + ListPolicy = 1609; } message MsgBase { @@ -245,3 +270,30 @@ enum ImportState { ImportPersisted = 5; ImportCompleted = 6; } + +enum ResourceType { + Collection = 0; +} + +enum ResourcePrivilege { + PrivilegeAll = 0; + PrivilegeCreate = 1; + PrivilegeDrop = 2; + PrivilegeAlter = 3; + PrivilegeRead = 4; + PrivilegeLoad = 5; + PrivilegeRelease = 6; + PrivilegeCompact = 7; + PrivilegeInsert = 8; + PrivilegeDelete = 9; +} + +message PrivilegeExt { + ResourceType resource_type = 1; + ResourcePrivilege resource_privilege = 2; + int32 resource_name_index = 3; +} + +extend google.protobuf.MessageOptions { + PrivilegeExt privilege_ext_obj = 1001; +} \ No newline at end of file diff --git a/internal/proto/commonpb/common.pb.go b/internal/proto/commonpb/common.pb.go index d93886128e..748714befd 100644 --- a/internal/proto/commonpb/common.pb.go +++ b/internal/proto/commonpb/common.pb.go @@ -6,6 +6,7 @@ package commonpb import ( fmt "fmt" proto "github.com/golang/protobuf/proto" + descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" math "math" ) @@ -23,41 +24,52 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type ErrorCode int32 const ( - ErrorCode_Success ErrorCode = 0 - ErrorCode_UnexpectedError ErrorCode = 1 - ErrorCode_ConnectFailed ErrorCode = 2 - ErrorCode_PermissionDenied ErrorCode = 3 - ErrorCode_CollectionNotExists ErrorCode = 4 - ErrorCode_IllegalArgument ErrorCode = 5 - ErrorCode_IllegalDimension ErrorCode = 7 - ErrorCode_IllegalIndexType ErrorCode = 8 - ErrorCode_IllegalCollectionName ErrorCode = 9 - ErrorCode_IllegalTOPK ErrorCode = 10 - ErrorCode_IllegalRowRecord ErrorCode = 11 - ErrorCode_IllegalVectorID ErrorCode = 12 - ErrorCode_IllegalSearchResult ErrorCode = 13 - ErrorCode_FileNotFound ErrorCode = 14 - ErrorCode_MetaFailed ErrorCode = 15 - ErrorCode_CacheFailed ErrorCode = 16 - ErrorCode_CannotCreateFolder ErrorCode = 17 - ErrorCode_CannotCreateFile ErrorCode = 18 - ErrorCode_CannotDeleteFolder ErrorCode = 19 - ErrorCode_CannotDeleteFile ErrorCode = 20 - ErrorCode_BuildIndexError ErrorCode = 21 - ErrorCode_IllegalNLIST ErrorCode = 22 - ErrorCode_IllegalMetricType ErrorCode = 23 - ErrorCode_OutOfMemory ErrorCode = 24 - ErrorCode_IndexNotExist ErrorCode = 25 - ErrorCode_EmptyCollection ErrorCode = 26 - ErrorCode_UpdateImportTaskFailure ErrorCode = 27 - ErrorCode_CollectionNameNotFound ErrorCode = 28 - ErrorCode_CreateCredentialFailure ErrorCode = 29 - ErrorCode_UpdateCredentialFailure ErrorCode = 30 - ErrorCode_DeleteCredentialFailure ErrorCode = 31 - ErrorCode_GetCredentialFailure ErrorCode = 32 - ErrorCode_ListCredUsersFailure ErrorCode = 33 - ErrorCode_NotShardLeader ErrorCode = 34 - ErrorCode_NoReplicaAvailable ErrorCode = 35 + ErrorCode_Success ErrorCode = 0 + ErrorCode_UnexpectedError ErrorCode = 1 + ErrorCode_ConnectFailed ErrorCode = 2 + ErrorCode_PermissionDenied ErrorCode = 3 + ErrorCode_CollectionNotExists ErrorCode = 4 + ErrorCode_IllegalArgument ErrorCode = 5 + ErrorCode_IllegalDimension ErrorCode = 7 + ErrorCode_IllegalIndexType ErrorCode = 8 + ErrorCode_IllegalCollectionName ErrorCode = 9 + ErrorCode_IllegalTOPK ErrorCode = 10 + ErrorCode_IllegalRowRecord ErrorCode = 11 + ErrorCode_IllegalVectorID ErrorCode = 12 + ErrorCode_IllegalSearchResult ErrorCode = 13 + ErrorCode_FileNotFound ErrorCode = 14 + ErrorCode_MetaFailed ErrorCode = 15 + ErrorCode_CacheFailed ErrorCode = 16 + ErrorCode_CannotCreateFolder ErrorCode = 17 + ErrorCode_CannotCreateFile ErrorCode = 18 + ErrorCode_CannotDeleteFolder ErrorCode = 19 + ErrorCode_CannotDeleteFile ErrorCode = 20 + ErrorCode_BuildIndexError ErrorCode = 21 + ErrorCode_IllegalNLIST ErrorCode = 22 + ErrorCode_IllegalMetricType ErrorCode = 23 + ErrorCode_OutOfMemory ErrorCode = 24 + ErrorCode_IndexNotExist ErrorCode = 25 + ErrorCode_EmptyCollection ErrorCode = 26 + ErrorCode_UpdateImportTaskFailure ErrorCode = 27 + ErrorCode_CollectionNameNotFound ErrorCode = 28 + ErrorCode_CreateCredentialFailure ErrorCode = 29 + ErrorCode_UpdateCredentialFailure ErrorCode = 30 + ErrorCode_DeleteCredentialFailure ErrorCode = 31 + ErrorCode_GetCredentialFailure ErrorCode = 32 + ErrorCode_ListCredUsersFailure ErrorCode = 33 + ErrorCode_GetUserFailure ErrorCode = 34 + ErrorCode_CreateRoleFailure ErrorCode = 35 + ErrorCode_DropRoleFailure ErrorCode = 36 + ErrorCode_OperateUserRoleFailure ErrorCode = 37 + ErrorCode_SelectRoleFailure ErrorCode = 38 + ErrorCode_SelectUserFailure ErrorCode = 39 + ErrorCode_SelectResourceFailure ErrorCode = 40 + ErrorCode_OperatePrivilegeFailure ErrorCode = 41 + ErrorCode_SelectGrantFailure ErrorCode = 42 + ErrorCode_RefreshPolicyInfoCacheFailure ErrorCode = 43 + ErrorCode_ListPolicyFailure ErrorCode = 44 + ErrorCode_NotShardLeader ErrorCode = 45 + ErrorCode_NoReplicaAvailable ErrorCode = 46 // internal error code. ErrorCode_DDRequestRace ErrorCode = 1000 ) @@ -96,48 +108,70 @@ var ErrorCode_name = map[int32]string{ 31: "DeleteCredentialFailure", 32: "GetCredentialFailure", 33: "ListCredUsersFailure", - 34: "NotShardLeader", - 35: "NoReplicaAvailable", + 34: "GetUserFailure", + 35: "CreateRoleFailure", + 36: "DropRoleFailure", + 37: "OperateUserRoleFailure", + 38: "SelectRoleFailure", + 39: "SelectUserFailure", + 40: "SelectResourceFailure", + 41: "OperatePrivilegeFailure", + 42: "SelectGrantFailure", + 43: "RefreshPolicyInfoCacheFailure", + 44: "ListPolicyFailure", + 45: "NotShardLeader", + 46: "NoReplicaAvailable", 1000: "DDRequestRace", } var ErrorCode_value = map[string]int32{ - "Success": 0, - "UnexpectedError": 1, - "ConnectFailed": 2, - "PermissionDenied": 3, - "CollectionNotExists": 4, - "IllegalArgument": 5, - "IllegalDimension": 7, - "IllegalIndexType": 8, - "IllegalCollectionName": 9, - "IllegalTOPK": 10, - "IllegalRowRecord": 11, - "IllegalVectorID": 12, - "IllegalSearchResult": 13, - "FileNotFound": 14, - "MetaFailed": 15, - "CacheFailed": 16, - "CannotCreateFolder": 17, - "CannotCreateFile": 18, - "CannotDeleteFolder": 19, - "CannotDeleteFile": 20, - "BuildIndexError": 21, - "IllegalNLIST": 22, - "IllegalMetricType": 23, - "OutOfMemory": 24, - "IndexNotExist": 25, - "EmptyCollection": 26, - "UpdateImportTaskFailure": 27, - "CollectionNameNotFound": 28, - "CreateCredentialFailure": 29, - "UpdateCredentialFailure": 30, - "DeleteCredentialFailure": 31, - "GetCredentialFailure": 32, - "ListCredUsersFailure": 33, - "NotShardLeader": 34, - "NoReplicaAvailable": 35, - "DDRequestRace": 1000, + "Success": 0, + "UnexpectedError": 1, + "ConnectFailed": 2, + "PermissionDenied": 3, + "CollectionNotExists": 4, + "IllegalArgument": 5, + "IllegalDimension": 7, + "IllegalIndexType": 8, + "IllegalCollectionName": 9, + "IllegalTOPK": 10, + "IllegalRowRecord": 11, + "IllegalVectorID": 12, + "IllegalSearchResult": 13, + "FileNotFound": 14, + "MetaFailed": 15, + "CacheFailed": 16, + "CannotCreateFolder": 17, + "CannotCreateFile": 18, + "CannotDeleteFolder": 19, + "CannotDeleteFile": 20, + "BuildIndexError": 21, + "IllegalNLIST": 22, + "IllegalMetricType": 23, + "OutOfMemory": 24, + "IndexNotExist": 25, + "EmptyCollection": 26, + "UpdateImportTaskFailure": 27, + "CollectionNameNotFound": 28, + "CreateCredentialFailure": 29, + "UpdateCredentialFailure": 30, + "DeleteCredentialFailure": 31, + "GetCredentialFailure": 32, + "ListCredUsersFailure": 33, + "GetUserFailure": 34, + "CreateRoleFailure": 35, + "DropRoleFailure": 36, + "OperateUserRoleFailure": 37, + "SelectRoleFailure": 38, + "SelectUserFailure": 39, + "SelectResourceFailure": 40, + "OperatePrivilegeFailure": 41, + "SelectGrantFailure": 42, + "RefreshPolicyInfoCacheFailure": 43, + "ListPolicyFailure": 44, + "NotShardLeader": 45, + "NoReplicaAvailable": 46, + "DDRequestRace": 1000, } func (x ErrorCode) String() string { @@ -332,6 +366,17 @@ const ( MsgType_DeleteCredential MsgType = 1502 MsgType_UpdateCredential MsgType = 1503 MsgType_ListCredUsernames MsgType = 1504 + // RBAC + MsgType_CreateRole MsgType = 1600 + MsgType_DropRole MsgType = 1601 + MsgType_OperateUserRole MsgType = 1602 + MsgType_SelectRole MsgType = 1603 + MsgType_SelectUser MsgType = 1604 + MsgType_SelectResource MsgType = 1605 + MsgType_OperatePrivilege MsgType = 1606 + MsgType_SelectGrant MsgType = 1607 + MsgType_RefreshPolicyInfoCache MsgType = 1608 + MsgType_ListPolicy MsgType = 1609 ) var MsgType_name = map[int32]string{ @@ -402,6 +447,16 @@ var MsgType_name = map[int32]string{ 1502: "DeleteCredential", 1503: "UpdateCredential", 1504: "ListCredUsernames", + 1600: "CreateRole", + 1601: "DropRole", + 1602: "OperateUserRole", + 1603: "SelectRole", + 1604: "SelectUser", + 1605: "SelectResource", + 1606: "OperatePrivilege", + 1607: "SelectGrant", + 1608: "RefreshPolicyInfoCache", + 1609: "ListPolicy", } var MsgType_value = map[string]int32{ @@ -472,6 +527,16 @@ var MsgType_value = map[string]int32{ "DeleteCredential": 1502, "UpdateCredential": 1503, "ListCredUsernames": 1504, + "CreateRole": 1600, + "DropRole": 1601, + "OperateUserRole": 1602, + "SelectRole": 1603, + "SelectUser": 1604, + "SelectResource": 1605, + "OperatePrivilege": 1606, + "SelectGrant": 1607, + "RefreshPolicyInfoCache": 1608, + "ListPolicy": 1609, } func (x MsgType) String() string { @@ -609,6 +674,77 @@ func (ImportState) EnumDescriptor() ([]byte, []int) { return fileDescriptor_555bd8c177793206, []int{8} } +type ResourceType int32 + +const ( + ResourceType_Collection ResourceType = 0 +) + +var ResourceType_name = map[int32]string{ + 0: "Collection", +} + +var ResourceType_value = map[string]int32{ + "Collection": 0, +} + +func (x ResourceType) String() string { + return proto.EnumName(ResourceType_name, int32(x)) +} + +func (ResourceType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_555bd8c177793206, []int{9} +} + +type ResourcePrivilege int32 + +const ( + ResourcePrivilege_PrivilegeAll ResourcePrivilege = 0 + ResourcePrivilege_PrivilegeCreate ResourcePrivilege = 1 + ResourcePrivilege_PrivilegeDrop ResourcePrivilege = 2 + ResourcePrivilege_PrivilegeAlter ResourcePrivilege = 3 + ResourcePrivilege_PrivilegeRead ResourcePrivilege = 4 + ResourcePrivilege_PrivilegeLoad ResourcePrivilege = 5 + ResourcePrivilege_PrivilegeRelease ResourcePrivilege = 6 + ResourcePrivilege_PrivilegeCompact ResourcePrivilege = 7 + ResourcePrivilege_PrivilegeInsert ResourcePrivilege = 8 + ResourcePrivilege_PrivilegeDelete ResourcePrivilege = 9 +) + +var ResourcePrivilege_name = map[int32]string{ + 0: "PrivilegeAll", + 1: "PrivilegeCreate", + 2: "PrivilegeDrop", + 3: "PrivilegeAlter", + 4: "PrivilegeRead", + 5: "PrivilegeLoad", + 6: "PrivilegeRelease", + 7: "PrivilegeCompact", + 8: "PrivilegeInsert", + 9: "PrivilegeDelete", +} + +var ResourcePrivilege_value = map[string]int32{ + "PrivilegeAll": 0, + "PrivilegeCreate": 1, + "PrivilegeDrop": 2, + "PrivilegeAlter": 3, + "PrivilegeRead": 4, + "PrivilegeLoad": 5, + "PrivilegeRelease": 6, + "PrivilegeCompact": 7, + "PrivilegeInsert": 8, + "PrivilegeDelete": 9, +} + +func (x ResourcePrivilege) String() string { + return proto.EnumName(ResourcePrivilege_name, int32(x)) +} + +func (ResourcePrivilege) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_555bd8c177793206, []int{10} +} + type Status struct { ErrorCode ErrorCode `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3,enum=milvus.proto.common.ErrorCode" json:"error_code,omitempty"` Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` @@ -1082,6 +1218,70 @@ func (m *DMLMsgHeader) GetShardName() string { return "" } +type PrivilegeExt struct { + ResourceType ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,proto3,enum=milvus.proto.common.ResourceType" json:"resource_type,omitempty"` + ResourcePrivilege ResourcePrivilege `protobuf:"varint,2,opt,name=resource_privilege,json=resourcePrivilege,proto3,enum=milvus.proto.common.ResourcePrivilege" json:"resource_privilege,omitempty"` + ResourceNameIndex int32 `protobuf:"varint,3,opt,name=resource_name_index,json=resourceNameIndex,proto3" json:"resource_name_index,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PrivilegeExt) Reset() { *m = PrivilegeExt{} } +func (m *PrivilegeExt) String() string { return proto.CompactTextString(m) } +func (*PrivilegeExt) ProtoMessage() {} +func (*PrivilegeExt) Descriptor() ([]byte, []int) { + return fileDescriptor_555bd8c177793206, []int{10} +} + +func (m *PrivilegeExt) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PrivilegeExt.Unmarshal(m, b) +} +func (m *PrivilegeExt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PrivilegeExt.Marshal(b, m, deterministic) +} +func (m *PrivilegeExt) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrivilegeExt.Merge(m, src) +} +func (m *PrivilegeExt) XXX_Size() int { + return xxx_messageInfo_PrivilegeExt.Size(m) +} +func (m *PrivilegeExt) XXX_DiscardUnknown() { + xxx_messageInfo_PrivilegeExt.DiscardUnknown(m) +} + +var xxx_messageInfo_PrivilegeExt proto.InternalMessageInfo + +func (m *PrivilegeExt) GetResourceType() ResourceType { + if m != nil { + return m.ResourceType + } + return ResourceType_Collection +} + +func (m *PrivilegeExt) GetResourcePrivilege() ResourcePrivilege { + if m != nil { + return m.ResourcePrivilege + } + return ResourcePrivilege_PrivilegeAll +} + +func (m *PrivilegeExt) GetResourceNameIndex() int32 { + if m != nil { + return m.ResourceNameIndex + } + return 0 +} + +var E_PrivilegeExtObj = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.MessageOptions)(nil), + ExtensionType: (*PrivilegeExt)(nil), + Field: 1001, + Name: "milvus.proto.common.privilege_ext_obj", + Tag: "bytes,1001,opt,name=privilege_ext_obj", + Filename: "common.proto", +} + func init() { proto.RegisterEnum("milvus.proto.common.ErrorCode", ErrorCode_name, ErrorCode_value) proto.RegisterEnum("milvus.proto.common.IndexState", IndexState_name, IndexState_value) @@ -1092,6 +1292,8 @@ func init() { proto.RegisterEnum("milvus.proto.common.CompactionState", CompactionState_name, CompactionState_value) proto.RegisterEnum("milvus.proto.common.ConsistencyLevel", ConsistencyLevel_name, ConsistencyLevel_value) proto.RegisterEnum("milvus.proto.common.ImportState", ImportState_name, ImportState_value) + proto.RegisterEnum("milvus.proto.common.ResourceType", ResourceType_name, ResourceType_value) + proto.RegisterEnum("milvus.proto.common.ResourcePrivilege", ResourcePrivilege_name, ResourcePrivilege_value) proto.RegisterType((*Status)(nil), "milvus.proto.common.Status") proto.RegisterType((*KeyValuePair)(nil), "milvus.proto.common.KeyValuePair") proto.RegisterType((*KeyDataPair)(nil), "milvus.proto.common.KeyDataPair") @@ -1102,129 +1304,156 @@ func init() { proto.RegisterType((*MsgBase)(nil), "milvus.proto.common.MsgBase") proto.RegisterType((*MsgHeader)(nil), "milvus.proto.common.MsgHeader") proto.RegisterType((*DMLMsgHeader)(nil), "milvus.proto.common.DMLMsgHeader") + proto.RegisterType((*PrivilegeExt)(nil), "milvus.proto.common.PrivilegeExt") + proto.RegisterExtension(E_PrivilegeExtObj) } func init() { proto.RegisterFile("common.proto", fileDescriptor_555bd8c177793206) } var fileDescriptor_555bd8c177793206 = []byte{ - // 1895 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcb, 0x6f, 0x1c, 0x49, - 0x19, 0x77, 0xcf, 0x4c, 0x6c, 0x4f, 0xcd, 0xd8, 0xae, 0x94, 0x1d, 0xc7, 0x9b, 0x64, 0x17, 0x33, - 0x80, 0x14, 0x59, 0xda, 0x04, 0x12, 0x09, 0xb8, 0x2c, 0x92, 0x3d, 0x63, 0x3b, 0xa3, 0xd8, 0x8e, - 0x99, 0x71, 0xb2, 0x2b, 0x24, 0x88, 0xca, 0xdd, 0x9f, 0x67, 0x8a, 0x54, 0x57, 0x35, 0x55, 0xd5, - 0x8e, 0x87, 0xd3, 0xb2, 0xfc, 0x03, 0xb0, 0x1c, 0xb8, 0x72, 0x46, 0x80, 0x78, 0xc3, 0x9f, 0xc0, - 0xfb, 0xcc, 0x1b, 0x8e, 0x9c, 0x11, 0xcf, 0x7d, 0xa2, 0xaf, 0xba, 0xa7, 0xbb, 0x9d, 0x64, 0xc5, - 0x61, 0x6f, 0xf5, 0xfd, 0xbe, 0x47, 0x7d, 0xef, 0x2a, 0xd2, 0x0e, 0x75, 0x1c, 0x6b, 0x75, 0x23, - 0x31, 0xda, 0x69, 0xb6, 0x1c, 0x0b, 0x79, 0x9a, 0xda, 0x8c, 0xba, 0x91, 0xb1, 0x3a, 0x0f, 0xc9, - 0xec, 0xd0, 0x71, 0x97, 0x5a, 0xf6, 0x12, 0x21, 0x60, 0x8c, 0x36, 0x0f, 0x43, 0x1d, 0xc1, 0x5a, - 0xb0, 0x1e, 0x5c, 0x5f, 0xbc, 0xf5, 0xc2, 0x8d, 0x67, 0xe8, 0xdc, 0xd8, 0x46, 0xb1, 0xae, 0x8e, - 0x60, 0xd0, 0x84, 0xe9, 0x91, 0xad, 0x92, 0x59, 0x03, 0xdc, 0x6a, 0xb5, 0x56, 0x5b, 0x0f, 0xae, - 0x37, 0x07, 0x39, 0xd5, 0xf9, 0x38, 0x69, 0xdf, 0x85, 0xc9, 0x03, 0x2e, 0x53, 0x38, 0xe4, 0xc2, - 0x30, 0x4a, 0xea, 0x8f, 0x60, 0xe2, 0xed, 0x37, 0x07, 0x78, 0x64, 0x2b, 0xe4, 0xc2, 0x29, 0xb2, - 0x73, 0xc5, 0x8c, 0xe8, 0xdc, 0x26, 0xad, 0xbb, 0x30, 0xe9, 0x71, 0xc7, 0xdf, 0x43, 0x8d, 0x91, - 0x46, 0xc4, 0x1d, 0xf7, 0x5a, 0xed, 0x81, 0x3f, 0x77, 0xae, 0x91, 0xc6, 0x96, 0xd4, 0xc7, 0xa5, - 0xc9, 0xc0, 0x33, 0x73, 0x93, 0xa7, 0x84, 0x1e, 0x4a, 0x1e, 0xc2, 0x58, 0xcb, 0x08, 0x8c, 0x77, - 0x09, 0xed, 0x3a, 0x3e, 0x9a, 0xda, 0x75, 0x7c, 0xc4, 0x3e, 0x49, 0x1a, 0x6e, 0x92, 0x64, 0xde, - 0x2c, 0xde, 0xfa, 0xf0, 0x33, 0x33, 0x50, 0x31, 0x73, 0x34, 0x49, 0x60, 0xe0, 0x35, 0x30, 0x05, - 0xfe, 0x22, 0xbb, 0x56, 0x5f, 0xaf, 0x5f, 0x6f, 0x0f, 0x72, 0xaa, 0xf3, 0xd9, 0x73, 0xf7, 0xee, - 0x1a, 0x9d, 0x26, 0xac, 0x4f, 0xda, 0x49, 0x89, 0xd9, 0xb5, 0x60, 0xbd, 0x7e, 0xbd, 0x75, 0xeb, - 0x23, 0xff, 0xef, 0x36, 0xef, 0xf4, 0xe0, 0x9c, 0x6a, 0xe7, 0x45, 0x32, 0xb7, 0x19, 0x45, 0x06, - 0xac, 0x65, 0x8b, 0xa4, 0x26, 0x92, 0x3c, 0x98, 0x9a, 0x48, 0x30, 0x47, 0x89, 0x36, 0xce, 0xc7, - 0x52, 0x1f, 0xf8, 0x73, 0xe7, 0xf5, 0x80, 0xcc, 0xed, 0xdb, 0xd1, 0x16, 0xb7, 0xc0, 0x3e, 0x41, - 0xe6, 0x63, 0x3b, 0x7a, 0xe8, 0xe3, 0xcd, 0x2a, 0x7e, 0xed, 0x99, 0x1e, 0xec, 0xdb, 0x91, 0x8f, - 0x73, 0x2e, 0xce, 0x0e, 0x98, 0xe0, 0xd8, 0x8e, 0xfa, 0xbd, 0xdc, 0x72, 0x46, 0xb0, 0x6b, 0xa4, - 0xe9, 0x44, 0x0c, 0xd6, 0xf1, 0x38, 0x59, 0xab, 0xaf, 0x07, 0xd7, 0x1b, 0x83, 0x12, 0x60, 0x57, - 0xc8, 0xbc, 0xd5, 0xa9, 0x09, 0xa1, 0xdf, 0x5b, 0x6b, 0x78, 0xb5, 0x82, 0xee, 0xbc, 0x44, 0x9a, - 0xfb, 0x76, 0x74, 0x07, 0x78, 0x04, 0x86, 0x7d, 0x94, 0x34, 0x8e, 0xb9, 0xcd, 0x3c, 0x6a, 0xbd, - 0xb7, 0x47, 0x18, 0xc1, 0xc0, 0x4b, 0x76, 0x3e, 0x47, 0xda, 0xbd, 0xfd, 0xbd, 0xf7, 0x61, 0x01, - 0x5d, 0xb7, 0x63, 0x6e, 0xa2, 0x03, 0x1e, 0x4f, 0x1b, 0xb1, 0x04, 0x36, 0xbe, 0x39, 0x4b, 0x9a, - 0x45, 0xd7, 0xb3, 0x16, 0x99, 0x1b, 0xa6, 0x61, 0x08, 0xd6, 0xd2, 0x19, 0xb6, 0x4c, 0x96, 0xee, - 0x2b, 0x38, 0x4b, 0x20, 0x74, 0x10, 0x79, 0x19, 0x1a, 0xb0, 0x8b, 0x64, 0xa1, 0xab, 0x95, 0x82, - 0xd0, 0xed, 0x70, 0x21, 0x21, 0xa2, 0x35, 0xb6, 0x42, 0xe8, 0x21, 0x98, 0x58, 0x58, 0x2b, 0xb4, - 0xea, 0x81, 0x12, 0x10, 0xd1, 0x3a, 0xbb, 0x4c, 0x96, 0xbb, 0x5a, 0x4a, 0x08, 0x9d, 0xd0, 0xea, - 0x40, 0xbb, 0xed, 0x33, 0x61, 0x9d, 0xa5, 0x0d, 0x34, 0xdb, 0x97, 0x12, 0x46, 0x5c, 0x6e, 0x9a, - 0x51, 0x1a, 0x83, 0x72, 0xf4, 0x02, 0xda, 0xc8, 0xc1, 0x9e, 0x88, 0x41, 0xa1, 0x25, 0x3a, 0x57, - 0x41, 0xfb, 0x2a, 0x82, 0x33, 0xac, 0x0f, 0x9d, 0x67, 0xcf, 0x91, 0x4b, 0x39, 0x5a, 0xb9, 0x80, - 0xc7, 0x40, 0x9b, 0x6c, 0x89, 0xb4, 0x72, 0xd6, 0xd1, 0xbd, 0xc3, 0xbb, 0x94, 0x54, 0x2c, 0x0c, - 0xf4, 0xe3, 0x01, 0x84, 0xda, 0x44, 0xb4, 0x55, 0x71, 0xe1, 0x01, 0x84, 0x4e, 0x9b, 0x7e, 0x8f, - 0xb6, 0xd1, 0xe1, 0x1c, 0x1c, 0x02, 0x37, 0xe1, 0x78, 0x00, 0x36, 0x95, 0x8e, 0x2e, 0x30, 0x4a, - 0xda, 0x3b, 0x42, 0xc2, 0x81, 0x76, 0x3b, 0x3a, 0x55, 0x11, 0x5d, 0x64, 0x8b, 0x84, 0xec, 0x83, - 0xe3, 0x79, 0x06, 0x96, 0xf0, 0xda, 0x2e, 0x0f, 0xc7, 0x90, 0x03, 0x94, 0xad, 0x12, 0xd6, 0xe5, - 0x4a, 0x69, 0xd7, 0x35, 0xc0, 0x1d, 0xec, 0xf8, 0x7e, 0xa6, 0x17, 0xd1, 0x9d, 0x73, 0xb8, 0x90, - 0x40, 0x59, 0x29, 0xdd, 0x03, 0x09, 0x85, 0xf4, 0x72, 0x29, 0x9d, 0xe3, 0x28, 0xbd, 0x82, 0xce, - 0x6f, 0xa5, 0x42, 0x46, 0x3e, 0x25, 0x59, 0x59, 0x2e, 0xa1, 0x8f, 0xb9, 0xf3, 0x07, 0x7b, 0xfd, - 0xe1, 0x11, 0x5d, 0x65, 0x97, 0xc8, 0xc5, 0x1c, 0xd9, 0x07, 0x67, 0x44, 0xe8, 0x93, 0x77, 0x19, - 0x5d, 0xbd, 0x97, 0xba, 0x7b, 0x27, 0xfb, 0x10, 0x6b, 0x33, 0xa1, 0x6b, 0x58, 0x50, 0x6f, 0x69, - 0x5a, 0x22, 0xfa, 0x1c, 0xde, 0xb0, 0x1d, 0x27, 0x6e, 0x52, 0xa6, 0x97, 0x5e, 0x61, 0x57, 0xc9, - 0xe5, 0xfb, 0x49, 0xc4, 0x1d, 0xf4, 0x63, 0x1c, 0xb6, 0x23, 0x6e, 0x1f, 0x61, 0xb8, 0xa9, 0x01, - 0x7a, 0x95, 0x5d, 0x21, 0xab, 0xe7, 0x6b, 0x51, 0x24, 0xeb, 0x1a, 0x2a, 0x66, 0xd1, 0x76, 0x0d, - 0x44, 0xa0, 0x9c, 0xe0, 0x72, 0xaa, 0xf8, 0x7c, 0x69, 0xf5, 0x69, 0xe6, 0x0b, 0xc8, 0xcc, 0x22, - 0x7f, 0x9a, 0xf9, 0x01, 0xb6, 0x46, 0x56, 0x76, 0xc1, 0x3d, 0xcd, 0x59, 0x47, 0xce, 0x9e, 0xb0, - 0x9e, 0x75, 0xdf, 0x82, 0xb1, 0x53, 0xce, 0x07, 0x19, 0x23, 0x8b, 0x07, 0xda, 0x0d, 0xb1, 0xf9, - 0xf7, 0xfc, 0x38, 0xd1, 0x0e, 0x26, 0xff, 0x40, 0x0f, 0x20, 0x91, 0x22, 0xe4, 0x9b, 0xa7, 0x5c, - 0x48, 0x7e, 0x2c, 0x81, 0x7e, 0x88, 0x31, 0xb2, 0xd0, 0xeb, 0x0d, 0xe0, 0x0b, 0x29, 0x58, 0x37, - 0xe0, 0x21, 0xd0, 0xbf, 0xcd, 0x6d, 0xbc, 0x42, 0x88, 0xcf, 0x15, 0xbe, 0x2b, 0x80, 0xd6, 0x4a, - 0xea, 0x40, 0x2b, 0xa0, 0x33, 0xac, 0x4d, 0xe6, 0xef, 0x2b, 0x61, 0x6d, 0x0a, 0x11, 0x0d, 0xb0, - 0x4f, 0xfa, 0xea, 0xd0, 0xe8, 0x11, 0xae, 0x30, 0x5a, 0x43, 0xee, 0x8e, 0x50, 0xc2, 0x8e, 0xfd, - 0x84, 0x10, 0x32, 0x9b, 0x37, 0x4c, 0x63, 0xe3, 0xb5, 0x80, 0xb4, 0x87, 0x30, 0xc2, 0x69, 0xc8, - 0x8c, 0xaf, 0x10, 0x5a, 0xa5, 0x4b, 0xf3, 0x45, 0x9d, 0x02, 0x9c, 0xd6, 0x5d, 0xa3, 0x1f, 0x0b, - 0x35, 0xa2, 0x35, 0xb4, 0x36, 0x04, 0x2e, 0xbd, 0xe5, 0x16, 0x99, 0xdb, 0x91, 0xa9, 0xbf, 0xa6, - 0xe1, 0x2f, 0x45, 0x02, 0xc5, 0x2e, 0x20, 0xab, 0x67, 0x74, 0x92, 0x40, 0x44, 0x67, 0xd9, 0x02, - 0x69, 0x66, 0xd5, 0x44, 0xde, 0xdc, 0xc6, 0xa7, 0xc8, 0xd2, 0x13, 0xeb, 0x9f, 0xcd, 0x93, 0x46, - 0x7e, 0x35, 0x25, 0xed, 0x2d, 0xa1, 0xb8, 0x99, 0x64, 0x23, 0x43, 0x23, 0x6c, 0xa5, 0x1d, 0xa9, - 0xb9, 0xcb, 0x01, 0xd8, 0xf8, 0x3b, 0xf1, 0xfb, 0xd7, 0x2b, 0x2e, 0x90, 0xe6, 0x7d, 0x15, 0xc1, - 0x89, 0x50, 0x10, 0xd1, 0x19, 0xdf, 0xca, 0x59, 0x13, 0x94, 0x3d, 0x15, 0x61, 0x06, 0xd1, 0x99, - 0x0a, 0x06, 0xd8, 0x8f, 0x77, 0xb8, 0xad, 0x40, 0x27, 0x58, 0xa2, 0x1e, 0xd8, 0xd0, 0x88, 0xe3, - 0xaa, 0xfa, 0x08, 0xfb, 0x74, 0x38, 0xd6, 0x8f, 0x4b, 0xcc, 0xd2, 0x31, 0xde, 0xb4, 0x0b, 0x6e, - 0x38, 0xb1, 0x0e, 0xe2, 0xae, 0x56, 0x27, 0x62, 0x64, 0xa9, 0xc0, 0x9b, 0xf6, 0x34, 0x8f, 0x2a, - 0xea, 0x9f, 0xc7, 0x09, 0x19, 0x80, 0x04, 0x6e, 0xab, 0x56, 0x1f, 0xf9, 0x61, 0xf6, 0xae, 0x6e, - 0x4a, 0xc1, 0x2d, 0x95, 0x18, 0x0a, 0x7a, 0x99, 0x91, 0x31, 0x16, 0x75, 0x53, 0x3a, 0x30, 0x19, - 0xad, 0xd8, 0x0a, 0x59, 0xca, 0xe4, 0x0f, 0xb9, 0x71, 0xc2, 0x1b, 0xf9, 0x59, 0xe0, 0xdb, 0xc7, - 0xe8, 0xa4, 0xc4, 0x7e, 0x8e, 0xbb, 0xb3, 0x7d, 0x87, 0xdb, 0x12, 0xfa, 0x45, 0xc0, 0x56, 0xc9, - 0xc5, 0x69, 0x68, 0x25, 0xfe, 0xcb, 0x80, 0x2d, 0x93, 0x45, 0x0c, 0xad, 0xc0, 0x2c, 0xfd, 0x95, - 0x07, 0x31, 0x88, 0x0a, 0xf8, 0x6b, 0x6f, 0x21, 0x8f, 0xa2, 0x82, 0xff, 0xc6, 0x5f, 0x86, 0x16, - 0xf2, 0x26, 0xb2, 0xf4, 0x8d, 0x00, 0x3d, 0x9d, 0x5e, 0x96, 0xc3, 0xf4, 0x4d, 0x2f, 0x88, 0x56, - 0x0b, 0xc1, 0xb7, 0xbc, 0x60, 0x6e, 0xb3, 0x40, 0xdf, 0xf6, 0xe8, 0x1d, 0xae, 0x22, 0x7d, 0x72, - 0x52, 0xa0, 0xef, 0x04, 0x6c, 0x8d, 0x2c, 0xa3, 0xfa, 0x16, 0x97, 0x5c, 0x85, 0xa5, 0xfc, 0xbb, - 0x01, 0xbb, 0x44, 0xe8, 0x13, 0xd7, 0x59, 0xfa, 0x6a, 0x8d, 0xd1, 0x69, 0x7e, 0xfd, 0xf0, 0xd0, - 0x6f, 0xd5, 0x7c, 0xae, 0x72, 0xc1, 0x0c, 0xfb, 0x76, 0x8d, 0x2d, 0x66, 0x49, 0xcf, 0xe8, 0xef, - 0xd4, 0x58, 0x8b, 0xcc, 0xf6, 0x95, 0x05, 0xe3, 0xe8, 0x57, 0xb0, 0xbf, 0x67, 0xb3, 0xc5, 0x40, - 0xbf, 0x8a, 0x63, 0x74, 0xc1, 0xf7, 0x37, 0x7d, 0x1d, 0x1f, 0x1d, 0x36, 0x00, 0x0b, 0x2a, 0xaa, - 0xcc, 0x8e, 0xa5, 0x5f, 0xf3, 0x1a, 0xd9, 0x56, 0xa7, 0xff, 0xa8, 0xfb, 0xd4, 0x54, 0x57, 0xfc, - 0x3f, 0xeb, 0xe8, 0xc2, 0x2e, 0xb8, 0x72, 0x9c, 0xe9, 0xbf, 0xea, 0xec, 0x0a, 0xb9, 0x34, 0xc5, - 0xfc, 0xc2, 0x2d, 0x06, 0xf9, 0xdf, 0x75, 0x76, 0x8d, 0x5c, 0xc6, 0xed, 0x53, 0xf4, 0x0d, 0x2a, - 0x09, 0xeb, 0x44, 0x68, 0xe9, 0x7f, 0xea, 0xec, 0x2a, 0x59, 0xdd, 0x05, 0x57, 0xd4, 0xa3, 0xc2, - 0xfc, 0x6f, 0x9d, 0x2d, 0x90, 0xf9, 0x01, 0x6e, 0x64, 0x38, 0x05, 0xfa, 0x46, 0x1d, 0x8b, 0x3a, - 0x25, 0x73, 0x77, 0xde, 0xac, 0x63, 0xaa, 0x5f, 0xe6, 0x2e, 0x1c, 0xf7, 0xe2, 0xee, 0x98, 0x2b, - 0x05, 0xd2, 0xd2, 0xb7, 0xea, 0x98, 0xd0, 0x01, 0xc4, 0xfa, 0x14, 0x2a, 0xf0, 0xdb, 0x3e, 0x68, - 0x2f, 0xfc, 0xe9, 0x14, 0xcc, 0xa4, 0x60, 0xbc, 0x53, 0xc7, 0xd2, 0x64, 0xf2, 0xe7, 0x39, 0xef, - 0xd6, 0xd9, 0xf3, 0x64, 0x2d, 0x5b, 0x16, 0xd3, 0xc2, 0x20, 0x73, 0x04, 0x7d, 0x75, 0xa2, 0xe9, - 0xab, 0x8d, 0xc2, 0x62, 0x0f, 0xa4, 0xe3, 0x85, 0xde, 0x97, 0x1a, 0xe8, 0x17, 0x0e, 0x57, 0xb9, - 0x40, 0x2d, 0x7d, 0xad, 0x81, 0x15, 0xdd, 0x05, 0x97, 0xef, 0x50, 0x4b, 0xbf, 0xec, 0x91, 0xdc, - 0xb2, 0x37, 0xf9, 0xdb, 0x06, 0x5b, 0x22, 0x24, 0x9b, 0x49, 0x0f, 0xfc, 0x6e, 0x6a, 0x0a, 0x9f, - 0xe4, 0x53, 0x30, 0x13, 0x8f, 0xfe, 0xbe, 0xb8, 0xa0, 0xb2, 0xf9, 0xe8, 0x1f, 0x1a, 0x98, 0xb2, - 0x23, 0x11, 0xc3, 0x91, 0x08, 0x1f, 0xd1, 0xef, 0x36, 0x31, 0x65, 0x3e, 0xa2, 0x03, 0x1d, 0x41, - 0x56, 0xe1, 0xef, 0x35, 0xb1, 0x61, 0xb0, 0x0f, 0xb3, 0x86, 0xf9, 0xbe, 0xa7, 0xf3, 0xed, 0xdd, - 0xef, 0xd1, 0x1f, 0xe0, 0xd7, 0x80, 0xe4, 0xf4, 0xd1, 0xf0, 0x1e, 0xfd, 0x61, 0x13, 0xaf, 0xda, - 0x94, 0x52, 0x87, 0xdc, 0x15, 0xd3, 0xf0, 0xa3, 0x26, 0x8e, 0x53, 0xe5, 0xf6, 0xbc, 0x6a, 0x3f, - 0x6e, 0x62, 0xee, 0x73, 0xdc, 0x37, 0x5b, 0x0f, 0x97, 0xe2, 0x4f, 0xbc, 0x55, 0xfc, 0xc8, 0xa3, - 0x27, 0x47, 0x8e, 0xfe, 0xd4, 0xcb, 0x3d, 0xf9, 0xda, 0xd1, 0x3f, 0xb6, 0xf2, 0xfe, 0xaa, 0x60, - 0x7f, 0x6a, 0x65, 0xf3, 0x71, 0xfe, 0x79, 0xa3, 0x7f, 0xf6, 0xf0, 0x93, 0x4f, 0x22, 0xfd, 0x4b, - 0x0b, 0x1d, 0xab, 0xbe, 0x6a, 0x8a, 0xc7, 0x60, 0xe9, 0x5f, 0x5b, 0x1b, 0x1d, 0x32, 0xd7, 0xb3, - 0xd2, 0xef, 0xdc, 0x39, 0x52, 0xef, 0x59, 0x49, 0x67, 0x70, 0x45, 0x6d, 0x69, 0x2d, 0xb7, 0xcf, - 0x12, 0xf3, 0xe0, 0x63, 0x34, 0xd8, 0xd8, 0x22, 0x4b, 0x5d, 0x1d, 0x27, 0xbc, 0x68, 0x55, 0xbf, - 0x66, 0xb3, 0xfd, 0x0c, 0x51, 0x96, 0xe6, 0x19, 0xdc, 0x73, 0xdb, 0x67, 0x10, 0xa6, 0xfe, 0x35, - 0x08, 0x90, 0x44, 0x25, 0x74, 0x30, 0xa2, 0xb5, 0x8d, 0x57, 0x08, 0xed, 0x6a, 0x65, 0x85, 0x75, - 0xa0, 0xc2, 0xc9, 0x1e, 0x9c, 0x82, 0xf4, 0x6f, 0x8e, 0x33, 0x5a, 0x8d, 0xe8, 0x8c, 0xff, 0x3a, - 0x82, 0xff, 0x02, 0x66, 0x2f, 0xd3, 0x16, 0x3e, 0xff, 0xfe, 0x7f, 0xb8, 0x48, 0xc8, 0xf6, 0x29, - 0x28, 0x97, 0x72, 0x29, 0x27, 0xb4, 0x8e, 0x74, 0x37, 0xb5, 0x4e, 0xc7, 0xe2, 0x8b, 0xfe, 0xed, - 0xfb, 0x7a, 0x40, 0x5a, 0xd9, 0x33, 0x54, 0xb8, 0x96, 0x91, 0x87, 0xa0, 0x22, 0xe1, 0x8d, 0xe3, - 0xf7, 0xc6, 0x43, 0xf9, 0x83, 0x19, 0x94, 0x42, 0x43, 0xc7, 0x8d, 0x9b, 0xfe, 0x43, 0x33, 0xa8, - 0xa7, 0x1f, 0x2b, 0xa9, 0x79, 0xe4, 0xdf, 0xc2, 0x42, 0xf5, 0x90, 0x1b, 0xeb, 0x1f, 0x44, 0xfc, - 0xfd, 0xe5, 0xf6, 0x8d, 0x8f, 0x27, 0xa2, 0x17, 0x4a, 0xb0, 0x8c, 0x79, 0x76, 0xeb, 0x65, 0xb2, - 0x28, 0xf4, 0xf4, 0x8b, 0x3d, 0x32, 0x49, 0xb8, 0xd5, 0xea, 0xfa, 0x2f, 0xf6, 0x21, 0x7e, 0xb7, - 0x0f, 0x83, 0xcf, 0xdc, 0x1e, 0x09, 0x37, 0x4e, 0x8f, 0xf1, 0xe3, 0x7d, 0x33, 0x13, 0x7b, 0x51, - 0xe8, 0xfc, 0x74, 0x53, 0x28, 0x87, 0x75, 0x92, 0x37, 0xfd, 0xe7, 0xfc, 0x66, 0xf6, 0x39, 0x4f, - 0x8e, 0xbf, 0x11, 0x04, 0xc7, 0xb3, 0x1e, 0xba, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x26, - 0x27, 0x54, 0xc3, 0xc7, 0x0e, 0x00, 0x00, + // 2302 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x49, 0x73, 0x24, 0x47, + 0x15, 0x56, 0xa9, 0x7b, 0xd4, 0xea, 0xec, 0x92, 0x94, 0x93, 0x9a, 0x45, 0x1e, 0x8f, 0x6d, 0xb9, + 0xb1, 0x8d, 0x10, 0x58, 0x03, 0x76, 0x04, 0x10, 0x44, 0x98, 0x08, 0xa9, 0x5b, 0xd2, 0x74, 0x58, + 0x4b, 0x53, 0x2d, 0xd9, 0x0e, 0x22, 0x40, 0x91, 0xaa, 0x7a, 0x6a, 0x95, 0xa7, 0xaa, 0xb2, 0xc8, + 0xcc, 0xd6, 0xa8, 0x39, 0x19, 0xf3, 0x07, 0xc0, 0x1c, 0xb8, 0xf2, 0x03, 0x80, 0x60, 0x35, 0x9c, + 0x08, 0x76, 0x6c, 0xb6, 0x33, 0x9b, 0x81, 0x23, 0xdc, 0x59, 0xbd, 0x12, 0x2f, 0xb3, 0x36, 0xc9, + 0x32, 0x1c, 0xb8, 0x75, 0x7e, 0x6f, 0x7f, 0xf9, 0x96, 0xca, 0x26, 0xae, 0x2f, 0xe2, 0x58, 0x24, + 0x2b, 0xa9, 0x14, 0x5a, 0xb0, 0xf9, 0x38, 0x8c, 0x4e, 0x46, 0xca, 0x9e, 0x56, 0x2c, 0xe9, 0xc6, + 0xe2, 0x50, 0x88, 0x61, 0x04, 0xb7, 0x0c, 0x78, 0x38, 0x3a, 0xba, 0x15, 0x80, 0xf2, 0x65, 0x98, + 0x6a, 0x21, 0x2d, 0x63, 0xfb, 0x80, 0x4c, 0x0d, 0x34, 0xd7, 0x23, 0xc5, 0x9e, 0x20, 0x04, 0xa4, + 0x14, 0xf2, 0xc0, 0x17, 0x01, 0x2c, 0x38, 0x8b, 0xce, 0xd2, 0xec, 0x63, 0xf7, 0xaf, 0x5c, 0xa0, + 0x75, 0x65, 0x1d, 0xd9, 0x3a, 0x22, 0x00, 0xaf, 0x09, 0xf9, 0x4f, 0x76, 0x8d, 0x4c, 0x49, 0xe0, + 0x4a, 0x24, 0x0b, 0x93, 0x8b, 0xce, 0x52, 0xd3, 0xcb, 0x4e, 0xed, 0x0f, 0x12, 0xf7, 0x49, 0x18, + 0x3f, 0xc5, 0xa3, 0x11, 0xf4, 0x79, 0x28, 0x19, 0x25, 0xb5, 0x3b, 0x30, 0x36, 0xfa, 0x9b, 0x1e, + 0xfe, 0x64, 0x57, 0xc8, 0xa5, 0x13, 0x24, 0x67, 0x82, 0xf6, 0xd0, 0x7e, 0x9c, 0xb4, 0x9e, 0x84, + 0x71, 0x97, 0x6b, 0xfe, 0x0e, 0x62, 0x8c, 0xd4, 0x03, 0xae, 0xb9, 0x91, 0x72, 0x3d, 0xf3, 0xbb, + 0x7d, 0x93, 0xd4, 0xd7, 0x22, 0x71, 0x58, 0xaa, 0x74, 0x0c, 0x31, 0x53, 0x79, 0x42, 0x68, 0x3f, + 0xe2, 0x3e, 0x1c, 0x8b, 0x28, 0x00, 0x69, 0x5c, 0x42, 0xbd, 0x9a, 0x0f, 0x73, 0xbd, 0x9a, 0x0f, + 0xd9, 0x87, 0x49, 0x5d, 0x8f, 0x53, 0xeb, 0xcd, 0xec, 0x63, 0x0f, 0x5d, 0x98, 0x81, 0x8a, 0x9a, + 0xbd, 0x71, 0x0a, 0x9e, 0x91, 0xc0, 0x14, 0x18, 0x43, 0x6a, 0xa1, 0xb6, 0x58, 0x5b, 0x72, 0xbd, + 0xec, 0xd4, 0xfe, 0xc4, 0x19, 0xbb, 0x9b, 0x52, 0x8c, 0x52, 0xd6, 0x23, 0x6e, 0x5a, 0x62, 0x6a, + 0xc1, 0x59, 0xac, 0x2d, 0xb5, 0x1e, 0x7b, 0xf8, 0x7f, 0x59, 0x33, 0x4e, 0x7b, 0x67, 0x44, 0xdb, + 0x8f, 0x92, 0xc6, 0x6a, 0x10, 0x48, 0x50, 0x8a, 0xcd, 0x92, 0xc9, 0x30, 0xcd, 0x82, 0x99, 0x0c, + 0x53, 0xcc, 0x51, 0x2a, 0xa4, 0x36, 0xb1, 0xd4, 0x3c, 0xf3, 0xbb, 0xfd, 0x82, 0x43, 0x1a, 0xdb, + 0x6a, 0xb8, 0xc6, 0x15, 0xb0, 0x0f, 0x91, 0xe9, 0x58, 0x0d, 0x0f, 0x4c, 0xbc, 0xf6, 0xc6, 0x6f, + 0x5e, 0xe8, 0xc1, 0xb6, 0x1a, 0x9a, 0x38, 0x1b, 0xb1, 0xfd, 0x81, 0x09, 0x8e, 0xd5, 0xb0, 0xd7, + 0xcd, 0x34, 0xdb, 0x03, 0xbb, 0x49, 0x9a, 0x3a, 0x8c, 0x41, 0x69, 0x1e, 0xa7, 0x0b, 0xb5, 0x45, + 0x67, 0xa9, 0xee, 0x95, 0x00, 0xbb, 0x41, 0xa6, 0x95, 0x18, 0x49, 0x1f, 0x7a, 0xdd, 0x85, 0xba, + 0x11, 0x2b, 0xce, 0xed, 0x27, 0x48, 0x73, 0x5b, 0x0d, 0x6f, 0x03, 0x0f, 0x40, 0xb2, 0xf7, 0x93, + 0xfa, 0x21, 0x57, 0xd6, 0xa3, 0xd6, 0x3b, 0x7b, 0x84, 0x11, 0x78, 0x86, 0xb3, 0xfd, 0x49, 0xe2, + 0x76, 0xb7, 0xb7, 0xfe, 0x0f, 0x0d, 0xe8, 0xba, 0x3a, 0xe6, 0x32, 0xd8, 0xe1, 0x71, 0x5e, 0x88, + 0x25, 0xd0, 0x7e, 0xc5, 0x21, 0x6e, 0x5f, 0x86, 0x27, 0x61, 0x04, 0x43, 0x58, 0x3f, 0xd5, 0x6c, + 0x83, 0xcc, 0x48, 0xb0, 0xde, 0x57, 0xb3, 0xf7, 0xe0, 0x85, 0x96, 0xbc, 0x8c, 0xd3, 0xa4, 0xd0, + 0x95, 0x95, 0x13, 0xdb, 0x27, 0xac, 0xd0, 0x93, 0xe6, 0x06, 0xb2, 0xd2, 0x7b, 0xe4, 0xbf, 0x2a, + 0x2b, 0xdc, 0xf1, 0x2e, 0xcb, 0xf3, 0x10, 0x5b, 0x21, 0xf3, 0x85, 0xda, 0x84, 0xc7, 0x70, 0x10, + 0x26, 0x01, 0x9c, 0x9a, 0x2b, 0xb9, 0x54, 0xf2, 0x63, 0x68, 0x3d, 0x24, 0x2c, 0x7f, 0x6f, 0x9a, + 0x34, 0x8b, 0xae, 0x66, 0x2d, 0xd2, 0x18, 0x8c, 0x7c, 0x1f, 0x94, 0xa2, 0x13, 0x6c, 0x9e, 0xcc, + 0xed, 0x27, 0x70, 0x9a, 0x82, 0xaf, 0x21, 0x30, 0x3c, 0xd4, 0x61, 0x97, 0xc9, 0x4c, 0x47, 0x24, + 0x09, 0xf8, 0x7a, 0x83, 0x87, 0x11, 0x04, 0x74, 0x92, 0x5d, 0x21, 0xb4, 0x0f, 0x32, 0x0e, 0x95, + 0x0a, 0x45, 0xd2, 0x85, 0x24, 0x84, 0x80, 0xd6, 0xd8, 0x75, 0x32, 0xdf, 0x11, 0x51, 0x04, 0xbe, + 0x0e, 0x45, 0xb2, 0x23, 0xf4, 0xfa, 0x69, 0xa8, 0xb4, 0xa2, 0x75, 0x54, 0xdb, 0x8b, 0x22, 0x18, + 0xf2, 0x68, 0x55, 0x0e, 0x47, 0x31, 0x24, 0x9a, 0x5e, 0x42, 0x1d, 0x19, 0xd8, 0x0d, 0x63, 0x48, + 0x50, 0x13, 0x6d, 0x54, 0x50, 0xe3, 0x2c, 0xe6, 0x8d, 0x4e, 0xb3, 0x7b, 0xc8, 0xd5, 0x0c, 0xad, + 0x18, 0xe0, 0x31, 0xd0, 0x26, 0x9b, 0x23, 0xad, 0x8c, 0xb4, 0xb7, 0xdb, 0x7f, 0x92, 0x92, 0x8a, + 0x06, 0x4f, 0xdc, 0xf5, 0xc0, 0x17, 0x32, 0xa0, 0xad, 0x8a, 0x0b, 0x4f, 0x81, 0xaf, 0x85, 0xec, + 0x75, 0xa9, 0x8b, 0x0e, 0x67, 0xe0, 0x00, 0xb8, 0xf4, 0x8f, 0x3d, 0x50, 0xa3, 0x48, 0xd3, 0x19, + 0x46, 0x89, 0xbb, 0x11, 0x46, 0xb0, 0x23, 0xf4, 0x86, 0x18, 0x25, 0x01, 0x9d, 0x65, 0xb3, 0x84, + 0x6c, 0x83, 0xe6, 0x59, 0x06, 0xe6, 0xd0, 0x6c, 0x87, 0xfb, 0xc7, 0x90, 0x01, 0x94, 0x5d, 0x23, + 0xac, 0xc3, 0x93, 0x44, 0xe8, 0x8e, 0x04, 0xae, 0x61, 0xc3, 0xf4, 0x2b, 0xbd, 0x8c, 0xee, 0x9c, + 0xc1, 0xc3, 0x08, 0x28, 0x2b, 0xb9, 0xbb, 0x10, 0x41, 0xc1, 0x3d, 0x5f, 0x72, 0x67, 0x38, 0x72, + 0x5f, 0x41, 0xe7, 0xd7, 0x46, 0x61, 0x14, 0x98, 0x94, 0xd8, 0x6b, 0xb9, 0x8a, 0x3e, 0x66, 0xce, + 0xef, 0x6c, 0xf5, 0x06, 0x7b, 0xf4, 0x1a, 0xbb, 0x4a, 0x2e, 0x67, 0xc8, 0x36, 0x68, 0x19, 0xfa, + 0x26, 0x79, 0xd7, 0xd1, 0xd5, 0xdd, 0x91, 0xde, 0x3d, 0xda, 0x86, 0x58, 0xc8, 0x31, 0x5d, 0xc0, + 0x0b, 0x35, 0x9a, 0xf2, 0x2b, 0xa2, 0xf7, 0xa0, 0x85, 0xf5, 0x38, 0xd5, 0xe3, 0x32, 0xbd, 0xf4, + 0x06, 0xbb, 0x97, 0x5c, 0xdf, 0x4f, 0x03, 0xae, 0xa1, 0x17, 0xe3, 0x30, 0xd9, 0xe3, 0xea, 0x0e, + 0x86, 0x3b, 0x92, 0x40, 0xef, 0x65, 0x37, 0xc8, 0xb5, 0xb3, 0x77, 0x51, 0x24, 0xeb, 0x26, 0x0a, + 0xda, 0x68, 0x3b, 0x12, 0x02, 0x48, 0x74, 0xc8, 0xa3, 0x5c, 0xf0, 0xbe, 0x52, 0xeb, 0xdb, 0x89, + 0xf7, 0x23, 0xd1, 0x46, 0xfe, 0x76, 0xe2, 0x03, 0x6c, 0x81, 0x5c, 0xd9, 0x04, 0xfd, 0x76, 0xca, + 0x22, 0x52, 0xb6, 0x42, 0x65, 0x48, 0xfb, 0x0a, 0xa4, 0xca, 0x29, 0x0f, 0x32, 0x46, 0x66, 0x37, + 0x41, 0x23, 0x98, 0x63, 0x6d, 0xcc, 0x93, 0x75, 0xcf, 0x13, 0x11, 0xe4, 0xf0, 0xbb, 0x30, 0x07, + 0x5d, 0x29, 0xd2, 0x2a, 0xf8, 0x10, 0x86, 0xb9, 0x9b, 0x82, 0xe4, 0x1a, 0x50, 0x47, 0x95, 0xf6, + 0x30, 0xea, 0x19, 0x00, 0x66, 0xa0, 0x0a, 0x3f, 0x52, 0xc2, 0x55, 0xab, 0xef, 0xc6, 0x1a, 0xce, + 0xb8, 0xb3, 0x8e, 0xcc, 0x49, 0x4b, 0x18, 0x75, 0x66, 0xa4, 0xe8, 0xea, 0x9c, 0xf8, 0x1e, 0x2c, + 0x15, 0x2b, 0xb7, 0x29, 0x79, 0xa2, 0x73, 0x7c, 0x99, 0x3d, 0x48, 0xee, 0xf3, 0xe0, 0x48, 0x82, + 0x3a, 0xee, 0x8b, 0x28, 0xf4, 0xc7, 0xbd, 0xe4, 0x48, 0x14, 0x25, 0x89, 0x2c, 0xef, 0x45, 0x4f, + 0x30, 0x2d, 0x96, 0x9e, 0xc3, 0xef, 0xc3, 0x9c, 0xec, 0x08, 0x3d, 0xc0, 0x81, 0xb7, 0x65, 0x46, + 0x28, 0x7d, 0x14, 0xad, 0xec, 0x08, 0x0f, 0xd2, 0x28, 0xf4, 0xf9, 0xea, 0x09, 0x0f, 0x23, 0x7e, + 0x18, 0x01, 0x5d, 0x61, 0x8c, 0xcc, 0x74, 0xbb, 0x1e, 0x7c, 0x6a, 0x04, 0x4a, 0x7b, 0xdc, 0x07, + 0xfa, 0x97, 0xc6, 0xf2, 0x33, 0x84, 0x98, 0xfa, 0xc1, 0x6f, 0x09, 0x40, 0x6d, 0xe5, 0x69, 0x47, + 0x24, 0x40, 0x27, 0x98, 0x4b, 0xa6, 0xf7, 0x93, 0x50, 0xa9, 0x11, 0x04, 0xd4, 0xc1, 0xde, 0xe9, + 0x25, 0x7d, 0x29, 0x86, 0xb8, 0xb6, 0xe8, 0x24, 0x52, 0x37, 0xc2, 0x24, 0x54, 0xc7, 0x66, 0x6a, + 0x10, 0x32, 0x95, 0x35, 0x51, 0x7d, 0xf9, 0x79, 0x87, 0xb8, 0x03, 0x18, 0xe2, 0x84, 0xb0, 0xca, + 0xaf, 0x10, 0x5a, 0x3d, 0x97, 0xea, 0x8b, 0xda, 0x75, 0x70, 0x82, 0x6d, 0x4a, 0x71, 0x37, 0x4c, + 0x86, 0x74, 0x12, 0xb5, 0x0d, 0x80, 0x47, 0x46, 0x73, 0x8b, 0x34, 0x36, 0xa2, 0x91, 0x31, 0x53, + 0x37, 0x46, 0xf1, 0x80, 0x6c, 0x97, 0x90, 0x84, 0x77, 0x9d, 0x42, 0x40, 0xa7, 0xd8, 0x0c, 0x69, + 0xda, 0x0a, 0x47, 0x5a, 0x63, 0xf9, 0xa3, 0x64, 0xee, 0xdc, 0xca, 0x67, 0xd3, 0xa4, 0x9e, 0x99, + 0xa6, 0xc4, 0x5d, 0x0b, 0x13, 0x2e, 0xc7, 0x76, 0x8c, 0xd0, 0x00, 0xdb, 0x6b, 0x23, 0x12, 0x5c, + 0x67, 0x00, 0x2c, 0xbf, 0xe8, 0x9a, 0x9d, 0x6b, 0x04, 0x67, 0x48, 0x73, 0x3f, 0x09, 0xe0, 0x28, + 0x4c, 0x20, 0xa0, 0x13, 0xa6, 0xbd, 0x6d, 0x63, 0x94, 0x7d, 0x16, 0x60, 0x06, 0xd1, 0x99, 0x0a, + 0x06, 0xd8, 0xa3, 0xb7, 0xb9, 0xaa, 0x40, 0x47, 0x78, 0x45, 0x5d, 0xf3, 0x45, 0x77, 0x58, 0x15, + 0x1f, 0x62, 0xdd, 0x0e, 0x8e, 0xc5, 0xdd, 0x12, 0x53, 0xf4, 0x18, 0x2d, 0x6d, 0x82, 0x1e, 0x8c, + 0x95, 0x86, 0xb8, 0x23, 0x92, 0xa3, 0x70, 0xa8, 0x68, 0x88, 0x96, 0xb6, 0x04, 0x0f, 0x2a, 0xe2, + 0xcf, 0x62, 0x91, 0x78, 0x10, 0x01, 0x57, 0x55, 0xad, 0x77, 0xcc, 0x80, 0x33, 0xae, 0xae, 0x46, + 0x21, 0x57, 0x34, 0xc2, 0x50, 0xd0, 0x4b, 0x7b, 0x8c, 0xf1, 0x52, 0x57, 0x23, 0x0d, 0xd2, 0x9e, + 0x13, 0x76, 0x85, 0xcc, 0x59, 0xfe, 0x3e, 0x97, 0x3a, 0x34, 0x4a, 0x5e, 0x72, 0x4c, 0xf9, 0x48, + 0x91, 0x96, 0xd8, 0xcb, 0xb8, 0x4f, 0xdc, 0xdb, 0x5c, 0x95, 0xd0, 0xcf, 0x1d, 0x76, 0x8d, 0x5c, + 0xce, 0x43, 0x2b, 0xf1, 0x5f, 0x38, 0x6c, 0x9e, 0xcc, 0x62, 0x68, 0x05, 0xa6, 0xe8, 0x2f, 0x0d, + 0x88, 0x41, 0x54, 0xc0, 0x5f, 0x19, 0x0d, 0x59, 0x14, 0x15, 0xfc, 0xd7, 0xc6, 0x18, 0x6a, 0xc8, + 0x8a, 0x48, 0xd1, 0x57, 0x1d, 0xf4, 0x34, 0x37, 0x96, 0xc1, 0xf4, 0x35, 0xc3, 0x88, 0x5a, 0x0b, + 0xc6, 0xd7, 0x0d, 0x63, 0xa6, 0xb3, 0x40, 0xdf, 0x30, 0xe8, 0x6d, 0x9e, 0x04, 0xe2, 0xe8, 0xa8, + 0x40, 0xdf, 0x74, 0xd8, 0x02, 0x99, 0x47, 0xf1, 0x35, 0x1e, 0xf1, 0xc4, 0x2f, 0xf9, 0xdf, 0x72, + 0xd8, 0x55, 0x42, 0xcf, 0x99, 0x53, 0xf4, 0xb9, 0x49, 0x46, 0xf3, 0xfc, 0x9a, 0xe6, 0xa1, 0x5f, + 0x9e, 0x34, 0xb9, 0xca, 0x18, 0x2d, 0xf6, 0x95, 0x49, 0x36, 0x6b, 0x93, 0x6e, 0xcf, 0x5f, 0x9d, + 0x64, 0x2d, 0x32, 0xd5, 0x4b, 0x14, 0x48, 0x4d, 0x3f, 0x87, 0xf5, 0x3d, 0x65, 0x87, 0x25, 0xfd, + 0x3c, 0xb6, 0xd1, 0x25, 0x53, 0xdf, 0xf4, 0x05, 0x5c, 0xc4, 0xcc, 0x03, 0x05, 0x49, 0x50, 0xe9, + 0x1d, 0x45, 0xbf, 0x60, 0x24, 0xec, 0xa6, 0xa3, 0x7f, 0xab, 0x99, 0xd4, 0x54, 0xd7, 0xde, 0xdf, + 0x6b, 0xe8, 0xc2, 0x26, 0xe8, 0xb2, 0x9d, 0xe9, 0x3f, 0x6a, 0xec, 0x06, 0xb9, 0x9a, 0x63, 0x66, + 0x09, 0x15, 0x8d, 0xfc, 0xcf, 0x1a, 0xbb, 0x49, 0xae, 0xe3, 0x44, 0x2e, 0xea, 0x06, 0x85, 0x42, + 0xa5, 0x43, 0x5f, 0xd1, 0x7f, 0xd5, 0xd8, 0xbd, 0xe4, 0xda, 0x26, 0xe8, 0xe2, 0x3e, 0x2a, 0xc4, + 0x7f, 0xd7, 0xd8, 0x0c, 0x99, 0xf6, 0x70, 0x4b, 0xc1, 0x09, 0xd0, 0x57, 0x6b, 0x78, 0xa9, 0xf9, + 0x31, 0x73, 0xe7, 0xb5, 0x1a, 0xa6, 0xfa, 0x69, 0xae, 0xfd, 0xe3, 0x6e, 0xdc, 0x39, 0xe6, 0x49, + 0x02, 0x91, 0xa2, 0xaf, 0xd7, 0x30, 0xa1, 0x1e, 0xc4, 0xe2, 0x04, 0x2a, 0xf0, 0x1b, 0x26, 0x68, + 0xc3, 0xfc, 0xb1, 0x11, 0xc8, 0x71, 0x41, 0x78, 0xb3, 0x86, 0x57, 0x63, 0xf9, 0xcf, 0x52, 0xde, + 0xaa, 0xb1, 0xfb, 0xc8, 0x82, 0x1d, 0x16, 0xf9, 0xc5, 0x20, 0x71, 0x08, 0x38, 0x49, 0xe9, 0x73, + 0xf5, 0x42, 0x63, 0x17, 0x22, 0xcd, 0x0b, 0xb9, 0xcf, 0xd4, 0xd1, 0x2f, 0x6c, 0xae, 0x72, 0x80, + 0x2a, 0xfa, 0x7c, 0x1d, 0x6f, 0x74, 0x13, 0x74, 0x36, 0x43, 0x15, 0xfd, 0xac, 0x41, 0x32, 0xcd, + 0x46, 0xe5, 0x6f, 0xea, 0x6c, 0x8e, 0x10, 0xdb, 0x93, 0x06, 0xf8, 0x6d, 0xae, 0x0a, 0x3f, 0x53, + 0x4e, 0x40, 0x9a, 0x19, 0x4e, 0x7f, 0x57, 0x18, 0xa8, 0x4c, 0x3e, 0xfa, 0xfb, 0x3a, 0xa6, 0x6c, + 0x2f, 0x8c, 0x61, 0x2f, 0xf4, 0xef, 0xd0, 0xaf, 0x35, 0x31, 0x65, 0x26, 0xa2, 0x1d, 0x11, 0x80, + 0xbd, 0xe1, 0xaf, 0x37, 0xb1, 0x60, 0xb0, 0x0e, 0x6d, 0xc1, 0x7c, 0xc3, 0x9c, 0xb3, 0xe9, 0xdd, + 0xeb, 0xd2, 0x6f, 0xe2, 0xe7, 0x12, 0xc9, 0xce, 0x7b, 0x83, 0x5d, 0xfa, 0xad, 0x26, 0x9a, 0x5a, + 0x8d, 0x22, 0xe1, 0x73, 0x5d, 0x74, 0xc3, 0xb7, 0x9b, 0xd8, 0x4e, 0x15, 0xeb, 0xd9, 0xad, 0xbd, + 0xd8, 0xc4, 0xdc, 0x67, 0xb8, 0x29, 0xb6, 0x2e, 0x0e, 0xc5, 0xef, 0x18, 0xad, 0xf8, 0x78, 0x43, + 0x4f, 0xf6, 0x34, 0xfd, 0xae, 0xe1, 0x3b, 0xff, 0x05, 0x40, 0xff, 0xd0, 0xca, 0xea, 0xab, 0x82, + 0xbd, 0xd2, 0xb2, 0xfd, 0x71, 0x76, 0xe5, 0xd3, 0x3f, 0x1a, 0xf8, 0xfc, 0x67, 0x02, 0xfd, 0x53, + 0x0b, 0x1d, 0xab, 0x6e, 0x7a, 0xfc, 0xde, 0x55, 0xf4, 0xcf, 0x2d, 0xf4, 0xa0, 0xdc, 0xe9, 0xf4, + 0xfb, 0x2e, 0x26, 0x2b, 0xdf, 0xe6, 0xf4, 0x07, 0x2e, 0x86, 0x79, 0x6e, 0x8f, 0xd3, 0x1f, 0xba, + 0xe6, 0x3a, 0x8a, 0x0d, 0x4e, 0x7f, 0x54, 0x01, 0x90, 0x8b, 0xfe, 0xd8, 0x35, 0x13, 0xe8, 0xcc, + 0xd6, 0xa6, 0x3f, 0x71, 0xd1, 0xb7, 0xf3, 0xfb, 0x9a, 0xfe, 0xd4, 0xb5, 0xd7, 0x5d, 0x6c, 0x6a, + 0xfa, 0x33, 0x17, 0x3b, 0xe0, 0xe2, 0x1d, 0x4d, 0x5f, 0x32, 0xb6, 0xca, 0xed, 0x4c, 0x5f, 0x76, + 0x97, 0xdb, 0xa4, 0xd1, 0x55, 0x91, 0xd9, 0x1b, 0x0d, 0x52, 0xeb, 0xaa, 0x88, 0x4e, 0xe0, 0x98, + 0x5d, 0x13, 0x22, 0x5a, 0x3f, 0x4d, 0xe5, 0x53, 0x1f, 0xa0, 0xce, 0xf2, 0x1a, 0x99, 0xeb, 0x88, + 0x38, 0xe5, 0x45, 0xbb, 0x99, 0x55, 0x61, 0x77, 0x0c, 0x04, 0xb6, 0x54, 0x26, 0x70, 0x56, 0xaf, + 0x9f, 0x82, 0x3f, 0x32, 0x1b, 0xcd, 0xc1, 0x23, 0x0a, 0x61, 0x92, 0x03, 0x3a, 0xb9, 0xfc, 0x0c, + 0xa1, 0x1d, 0x91, 0xa8, 0x50, 0x69, 0x48, 0xfc, 0xf1, 0x16, 0x9c, 0x40, 0x64, 0xf6, 0xa6, 0x96, + 0x22, 0x19, 0xd2, 0x09, 0xf3, 0x24, 0x00, 0xf3, 0x69, 0x6f, 0xb7, 0xeb, 0x1a, 0x7e, 0xd6, 0x99, + 0xef, 0xfe, 0x59, 0x42, 0xd6, 0x4f, 0x20, 0xd1, 0x23, 0x1e, 0x45, 0x63, 0x5a, 0xc3, 0x73, 0x67, + 0xa4, 0xb4, 0x88, 0xc3, 0x4f, 0x9b, 0xfd, 0xfd, 0x45, 0x87, 0xb4, 0xec, 0x2a, 0x2d, 0x5c, 0xb3, + 0xc7, 0x3e, 0x24, 0x41, 0x68, 0x94, 0xe3, 0x67, 0xab, 0x81, 0xb2, 0xa5, 0xef, 0x94, 0x4c, 0x03, + 0xcd, 0xa5, 0xce, 0xdf, 0x17, 0x16, 0xea, 0x8a, 0xbb, 0x49, 0x24, 0x78, 0x60, 0xf6, 0x79, 0x21, + 0xda, 0xe7, 0x52, 0x99, 0xa5, 0x8e, 0x5f, 0xf5, 0x99, 0x7e, 0x69, 0xe2, 0x09, 0xe8, 0xa5, 0x12, + 0x2c, 0x63, 0x9e, 0x5a, 0xbe, 0x9f, 0xb8, 0xd5, 0x97, 0x99, 0xf1, 0xbc, 0x5c, 0x77, 0x13, 0xcb, + 0xaf, 0x38, 0xb8, 0x40, 0xce, 0x3f, 0xad, 0x68, 0xe5, 0x25, 0xb8, 0x1a, 0x45, 0xf6, 0x85, 0x54, + 0x20, 0xb6, 0xe0, 0x6c, 0x04, 0x05, 0x88, 0x45, 0x47, 0x71, 0x98, 0xcf, 0x56, 0x24, 0x35, 0x48, + 0x5a, 0x3b, 0xc3, 0xe6, 0x01, 0xc7, 0x00, 0xaa, 0x10, 0xf6, 0xad, 0x7d, 0x17, 0x55, 0xb8, 0xcc, + 0xfa, 0xa1, 0x53, 0x67, 0xd0, 0xac, 0x00, 0x68, 0xe3, 0x8c, 0x37, 0xd9, 0x5e, 0x98, 0x3e, 0x03, + 0x66, 0xfb, 0xa1, 0xf9, 0x11, 0x41, 0x2e, 0x17, 0x4f, 0xce, 0x03, 0x38, 0xd5, 0x07, 0xe2, 0xf0, + 0x59, 0xf6, 0xc0, 0x8a, 0xfd, 0xcb, 0x68, 0x25, 0xff, 0xcb, 0x68, 0x65, 0x1b, 0x94, 0xe2, 0x43, + 0xd8, 0x4d, 0xcd, 0x02, 0x5d, 0xf8, 0x6b, 0xc3, 0xbc, 0xa9, 0x2f, 0x7e, 0xe9, 0x56, 0xdf, 0xc8, + 0xde, 0x5c, 0x5a, 0x39, 0xed, 0x1e, 0x3e, 0xbb, 0xf6, 0x34, 0x99, 0x0d, 0x45, 0x2e, 0x37, 0x94, + 0xa9, 0xbf, 0xd6, 0xea, 0x18, 0xb9, 0x3e, 0xea, 0xe8, 0x3b, 0x1f, 0x7f, 0x7c, 0x18, 0xea, 0xe3, + 0xd1, 0x21, 0x6a, 0xbb, 0x65, 0xd9, 0x1e, 0x0d, 0x45, 0xf6, 0xeb, 0x56, 0x98, 0x68, 0x6c, 0xee, + 0xc8, 0xfe, 0x99, 0x75, 0xcb, 0x5a, 0x4c, 0x0f, 0xbf, 0xe4, 0x38, 0x87, 0x53, 0x06, 0x7a, 0xfc, + 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x1f, 0x15, 0x60, 0x12, 0x13, 0x00, 0x00, } diff --git a/internal/proto/internal.proto b/internal/proto/internal.proto index f1641cea3c..27be877f93 100644 --- a/internal/proto/internal.proto +++ b/internal/proto/internal.proto @@ -281,4 +281,17 @@ message ClearCredUsersCacheRequest { message CredentialInfo { string username = 1; string encrypted_password = 2; + string tenant = 3; + bool is_super = 4; } + +message ListPolicyRequest { + // Not useful for now + common.MsgBase base = 1; +} + +message ListPolicyResponse { + // Contain error_code and reason + common.Status status = 1; + repeated string policy_infos = 2; +} \ No newline at end of file diff --git a/internal/proto/internalpb/internal.pb.go b/internal/proto/internalpb/internal.pb.go index 1ae79ed0b0..e4589b626e 100644 --- a/internal/proto/internalpb/internal.pb.go +++ b/internal/proto/internalpb/internal.pb.go @@ -2363,6 +2363,8 @@ var xxx_messageInfo_ClearCredUsersCacheRequest proto.InternalMessageInfo type CredentialInfo struct { Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` EncryptedPassword string `protobuf:"bytes,2,opt,name=encrypted_password,json=encryptedPassword,proto3" json:"encrypted_password,omitempty"` + Tenant string `protobuf:"bytes,3,opt,name=tenant,proto3" json:"tenant,omitempty"` + IsSuper bool `protobuf:"varint,4,opt,name=is_super,json=isSuper,proto3" json:"is_super,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2407,6 +2409,108 @@ func (m *CredentialInfo) GetEncryptedPassword() string { return "" } +func (m *CredentialInfo) GetTenant() string { + if m != nil { + return m.Tenant + } + return "" +} + +func (m *CredentialInfo) GetIsSuper() bool { + if m != nil { + return m.IsSuper + } + return false +} + +type ListPolicyRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListPolicyRequest) Reset() { *m = ListPolicyRequest{} } +func (m *ListPolicyRequest) String() string { return proto.CompactTextString(m) } +func (*ListPolicyRequest) ProtoMessage() {} +func (*ListPolicyRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_41f4a519b878ee3b, []int{33} +} + +func (m *ListPolicyRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListPolicyRequest.Unmarshal(m, b) +} +func (m *ListPolicyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListPolicyRequest.Marshal(b, m, deterministic) +} +func (m *ListPolicyRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPolicyRequest.Merge(m, src) +} +func (m *ListPolicyRequest) XXX_Size() int { + return xxx_messageInfo_ListPolicyRequest.Size(m) +} +func (m *ListPolicyRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListPolicyRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPolicyRequest proto.InternalMessageInfo + +func (m *ListPolicyRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +type ListPolicyResponse struct { + // Contain error_code and reason + Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + PolicyInfos []string `protobuf:"bytes,2,rep,name=policy_infos,json=policyInfos,proto3" json:"policy_infos,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListPolicyResponse) Reset() { *m = ListPolicyResponse{} } +func (m *ListPolicyResponse) String() string { return proto.CompactTextString(m) } +func (*ListPolicyResponse) ProtoMessage() {} +func (*ListPolicyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_41f4a519b878ee3b, []int{34} +} + +func (m *ListPolicyResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListPolicyResponse.Unmarshal(m, b) +} +func (m *ListPolicyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListPolicyResponse.Marshal(b, m, deterministic) +} +func (m *ListPolicyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPolicyResponse.Merge(m, src) +} +func (m *ListPolicyResponse) XXX_Size() int { + return xxx_messageInfo_ListPolicyResponse.Size(m) +} +func (m *ListPolicyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListPolicyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPolicyResponse proto.InternalMessageInfo + +func (m *ListPolicyResponse) GetStatus() *commonpb.Status { + if m != nil { + return m.Status + } + return nil +} + +func (m *ListPolicyResponse) GetPolicyInfos() []string { + if m != nil { + return m.PolicyInfos + } + return nil +} + func init() { proto.RegisterEnum("milvus.proto.internal.StateCode", StateCode_name, StateCode_value) proto.RegisterEnum("milvus.proto.internal.InsertDataVersion", InsertDataVersion_name, InsertDataVersion_value) @@ -2443,140 +2547,146 @@ func init() { proto.RegisterType((*ChannelTimeTickMsg)(nil), "milvus.proto.internal.ChannelTimeTickMsg") proto.RegisterType((*ClearCredUsersCacheRequest)(nil), "milvus.proto.internal.ClearCredUsersCacheRequest") proto.RegisterType((*CredentialInfo)(nil), "milvus.proto.internal.CredentialInfo") + proto.RegisterType((*ListPolicyRequest)(nil), "milvus.proto.internal.ListPolicyRequest") + proto.RegisterType((*ListPolicyResponse)(nil), "milvus.proto.internal.ListPolicyResponse") } func init() { proto.RegisterFile("internal.proto", fileDescriptor_41f4a519b878ee3b) } var fileDescriptor_41f4a519b878ee3b = []byte{ - // 2069 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4f, 0x73, 0x1c, 0x47, - 0x15, 0xcf, 0xec, 0xac, 0xb4, 0xbb, 0x6f, 0x57, 0xab, 0x55, 0x5b, 0x76, 0xc6, 0xb2, 0x93, 0x28, - 0x93, 0x00, 0xc2, 0x26, 0xb6, 0x51, 0x42, 0x92, 0x02, 0x0a, 0xc7, 0xd2, 0x82, 0xd9, 0x72, 0x6c, - 0xc4, 0xc8, 0x71, 0x15, 0x70, 0x98, 0xea, 0xdd, 0x69, 0xad, 0x06, 0xcf, 0x4c, 0x8f, 0xba, 0x7b, - 0x24, 0xaf, 0x4f, 0x1c, 0x38, 0x41, 0xc1, 0x8d, 0x0b, 0x55, 0x70, 0xe6, 0x1b, 0x70, 0x83, 0x2a, - 0x4e, 0x39, 0x71, 0xe2, 0xc2, 0x57, 0xa1, 0x38, 0x50, 0xfd, 0x67, 0xfe, 0xec, 0x6a, 0x25, 0x4b, - 0x4a, 0x85, 0x38, 0x55, 0xb9, 0x4d, 0xbf, 0xf7, 0xba, 0xfb, 0xf5, 0xfb, 0xfd, 0xde, 0xeb, 0xd7, - 0xbb, 0xd0, 0x0d, 0x13, 0x41, 0x58, 0x82, 0xa3, 0x5b, 0x29, 0xa3, 0x82, 0xa2, 0xcb, 0x71, 0x18, - 0x1d, 0x66, 0x5c, 0x8f, 0x6e, 0xe5, 0xca, 0xb5, 0xce, 0x88, 0xc6, 0x31, 0x4d, 0xb4, 0x78, 0xad, - 0xc3, 0x47, 0xfb, 0x24, 0xc6, 0x7a, 0xe4, 0xfe, 0xcd, 0x82, 0xa5, 0x6d, 0x1a, 0xa7, 0x34, 0x21, - 0x89, 0x18, 0x24, 0x7b, 0x14, 0x5d, 0x81, 0xc5, 0x84, 0x06, 0x64, 0xd0, 0x77, 0xac, 0x75, 0x6b, - 0xc3, 0xf6, 0xcc, 0x08, 0x21, 0xa8, 0x33, 0x1a, 0x11, 0xa7, 0xb6, 0x6e, 0x6d, 0xb4, 0x3c, 0xf5, - 0x8d, 0xee, 0x02, 0x70, 0x81, 0x05, 0xf1, 0x47, 0x34, 0x20, 0x8e, 0xbd, 0x6e, 0x6d, 0x74, 0x37, - 0xd7, 0x6f, 0xcd, 0xf5, 0xe2, 0xd6, 0xae, 0x34, 0xdc, 0xa6, 0x01, 0xf1, 0x5a, 0x3c, 0xff, 0x44, - 0x1f, 0x01, 0x90, 0x67, 0x82, 0x61, 0x3f, 0x4c, 0xf6, 0xa8, 0x53, 0x5f, 0xb7, 0x37, 0xda, 0x9b, - 0x6f, 0x4e, 0x2f, 0x60, 0x9c, 0x7f, 0x40, 0x26, 0x4f, 0x70, 0x94, 0x91, 0x1d, 0x1c, 0x32, 0xaf, - 0xa5, 0x26, 0x49, 0x77, 0xdd, 0x7f, 0x5b, 0xb0, 0x5c, 0x1c, 0x40, 0xed, 0xc1, 0xd1, 0x77, 0x61, - 0x41, 0x6d, 0xa1, 0x4e, 0xd0, 0xde, 0x7c, 0xfb, 0x04, 0x8f, 0xa6, 0xce, 0xed, 0xe9, 0x29, 0xe8, - 0x13, 0xb8, 0xc4, 0xb3, 0xe1, 0x28, 0x57, 0xf9, 0x4a, 0xca, 0x9d, 0x9a, 0x72, 0xed, 0x6c, 0x2b, - 0xa1, 0xea, 0x02, 0xc6, 0xa5, 0x77, 0x61, 0x51, 0xae, 0x94, 0x71, 0x15, 0xa5, 0xf6, 0xe6, 0xb5, - 0xb9, 0x87, 0xdc, 0x55, 0x26, 0x9e, 0x31, 0x75, 0xaf, 0xc1, 0xd5, 0xfb, 0x44, 0xcc, 0x9c, 0xce, - 0x23, 0x07, 0x19, 0xe1, 0xc2, 0x28, 0x1f, 0x87, 0x31, 0x79, 0x1c, 0x8e, 0x9e, 0x6e, 0xef, 0xe3, - 0x24, 0x21, 0x51, 0xae, 0x7c, 0x0d, 0xae, 0xdd, 0x27, 0x6a, 0x42, 0xc8, 0x45, 0x38, 0xe2, 0x33, - 0xea, 0xcb, 0x70, 0xe9, 0x3e, 0x11, 0xfd, 0x60, 0x46, 0xfc, 0x04, 0x9a, 0x8f, 0x24, 0xd8, 0x92, - 0x06, 0xef, 0x43, 0x03, 0x07, 0x01, 0x23, 0x9c, 0x9b, 0x28, 0x5e, 0x9f, 0xeb, 0xf1, 0x3d, 0x6d, - 0xe3, 0xe5, 0xc6, 0xf3, 0x68, 0xe2, 0xfe, 0x12, 0x60, 0x90, 0x84, 0x62, 0x07, 0x33, 0x1c, 0xf3, - 0x13, 0x09, 0xd6, 0x87, 0x0e, 0x17, 0x98, 0x09, 0x3f, 0x55, 0x76, 0x26, 0xe4, 0x67, 0x60, 0x43, - 0x5b, 0x4d, 0xd3, 0xab, 0xbb, 0x3f, 0x03, 0xd8, 0x15, 0x2c, 0x4c, 0xc6, 0x1f, 0x87, 0x5c, 0xc8, - 0xbd, 0x0e, 0xa5, 0x9d, 0x3c, 0x84, 0xbd, 0xd1, 0xf2, 0xcc, 0xa8, 0x02, 0x47, 0xed, 0xec, 0x70, - 0xdc, 0x85, 0x76, 0x1e, 0xee, 0x87, 0x7c, 0x8c, 0xee, 0x40, 0x7d, 0x88, 0x39, 0x39, 0x35, 0x3c, - 0x0f, 0xf9, 0x78, 0x0b, 0x73, 0xe2, 0x29, 0x4b, 0xf7, 0x37, 0x36, 0xbc, 0xba, 0xcd, 0x88, 0x22, - 0x7f, 0x14, 0x91, 0x91, 0x08, 0x69, 0x62, 0x62, 0x7f, 0xfe, 0xd5, 0xd0, 0xab, 0xd0, 0x08, 0x86, - 0x7e, 0x82, 0xe3, 0x3c, 0xd8, 0x8b, 0xc1, 0xf0, 0x11, 0x8e, 0x09, 0xfa, 0x3a, 0x74, 0x47, 0xc5, - 0xfa, 0x52, 0xa2, 0x38, 0xd7, 0xf2, 0x66, 0xa4, 0xe8, 0x6d, 0x58, 0x4a, 0x31, 0x13, 0x61, 0x61, - 0x56, 0x57, 0x66, 0xd3, 0x42, 0x09, 0x68, 0x30, 0x1c, 0xf4, 0x9d, 0x05, 0x05, 0x96, 0xfa, 0x46, - 0x2e, 0x74, 0xca, 0xb5, 0x06, 0x7d, 0x67, 0x51, 0xe9, 0xa6, 0x64, 0x68, 0x1d, 0xda, 0xc5, 0x42, - 0x83, 0xbe, 0xd3, 0x50, 0x26, 0x55, 0x91, 0x04, 0x47, 0xd7, 0x22, 0xa7, 0xb9, 0x6e, 0x6d, 0x74, - 0x3c, 0x33, 0x42, 0x77, 0xe0, 0xd2, 0x61, 0xc8, 0x44, 0x86, 0x23, 0xc3, 0x4f, 0xe9, 0x07, 0x77, - 0x5a, 0x0a, 0xc1, 0x79, 0x2a, 0xb4, 0x09, 0xab, 0xe9, 0xfe, 0x84, 0x87, 0xa3, 0x99, 0x29, 0xa0, - 0xa6, 0xcc, 0xd5, 0xb9, 0xff, 0xb0, 0xe0, 0x72, 0x9f, 0xd1, 0xf4, 0xa5, 0x80, 0x22, 0x0f, 0x72, - 0xfd, 0x94, 0x20, 0x2f, 0x1c, 0x0f, 0xb2, 0xfb, 0xbb, 0x1a, 0x5c, 0xd1, 0x8c, 0xda, 0xc9, 0x03, - 0xfb, 0x39, 0x9c, 0xe2, 0x1b, 0xb0, 0x5c, 0xee, 0xaa, 0x0d, 0xe6, 0x1f, 0xe3, 0x6b, 0xd0, 0x2d, - 0x00, 0xd6, 0x76, 0xff, 0x5f, 0x4a, 0xb9, 0xbf, 0xad, 0xc1, 0xaa, 0x04, 0xf5, 0xab, 0x68, 0xc8, - 0x68, 0xfc, 0xd9, 0x02, 0xa4, 0xd9, 0x71, 0x2f, 0x0a, 0x31, 0xff, 0x22, 0x63, 0xb1, 0x0a, 0x0b, - 0x58, 0xfa, 0x60, 0x42, 0xa0, 0x07, 0x2e, 0x87, 0x9e, 0x44, 0xeb, 0xf3, 0xf2, 0xae, 0xd8, 0xd4, - 0xae, 0x6e, 0xfa, 0x27, 0x0b, 0x56, 0xee, 0x45, 0x82, 0xb0, 0x97, 0x34, 0x28, 0x7f, 0xaf, 0xe5, - 0xa8, 0x0d, 0x92, 0x80, 0x3c, 0xfb, 0x22, 0x1d, 0x7c, 0x0d, 0x60, 0x2f, 0x24, 0x51, 0x50, 0x65, - 0x6f, 0x4b, 0x49, 0x3e, 0x13, 0x73, 0x1d, 0x68, 0xa8, 0x45, 0x0a, 0xd6, 0xe6, 0x43, 0xd9, 0x03, - 0xe8, 0x7e, 0xd0, 0xf4, 0x00, 0xcd, 0x33, 0xf7, 0x00, 0x6a, 0x9a, 0xe9, 0x01, 0xfe, 0x59, 0x87, - 0xa5, 0x41, 0xc2, 0x09, 0x13, 0x17, 0x0f, 0xde, 0x75, 0x68, 0xf1, 0x7d, 0xcc, 0xd4, 0x41, 0x4d, - 0xf8, 0x4a, 0x41, 0x35, 0xb4, 0xf6, 0x8b, 0x42, 0x5b, 0x3f, 0x63, 0x71, 0x58, 0x38, 0xad, 0x38, - 0x2c, 0x9e, 0x12, 0xe2, 0xc6, 0x8b, 0x8b, 0x43, 0xf3, 0xf8, 0xed, 0x2b, 0x0f, 0x48, 0xc6, 0xb1, - 0x6c, 0x5a, 0xfb, 0x4e, 0x4b, 0xe9, 0x4b, 0x01, 0x7a, 0x1d, 0x40, 0x84, 0x31, 0xe1, 0x02, 0xc7, - 0xa9, 0xbe, 0x47, 0xeb, 0x5e, 0x45, 0x22, 0xef, 0x6e, 0x46, 0x8f, 0x06, 0x7d, 0xee, 0xb4, 0xd7, - 0x6d, 0xd9, 0xc4, 0xe9, 0x11, 0x7a, 0x0f, 0x9a, 0x8c, 0x1e, 0xf9, 0x01, 0x16, 0xd8, 0xe9, 0x28, - 0xf0, 0xae, 0xce, 0x0d, 0xf6, 0x56, 0x44, 0x87, 0x5e, 0x83, 0xd1, 0xa3, 0x3e, 0x16, 0x18, 0xdd, - 0x85, 0xb6, 0x62, 0x00, 0xd7, 0x13, 0x97, 0xd4, 0xc4, 0xd7, 0xa7, 0x27, 0x9a, 0x67, 0xcb, 0x8f, - 0xa4, 0x9d, 0x9c, 0xe4, 0x69, 0x6a, 0x72, 0xb5, 0xc0, 0x55, 0x68, 0x26, 0x59, 0xec, 0x33, 0x7a, - 0xc4, 0x9d, 0xee, 0xba, 0xb5, 0x51, 0xf7, 0x1a, 0x49, 0x16, 0x7b, 0xf4, 0x88, 0xa3, 0x2d, 0x68, - 0x1c, 0x12, 0xc6, 0x43, 0x9a, 0x38, 0xcb, 0xea, 0x81, 0xb2, 0x71, 0x42, 0x13, 0xaf, 0x19, 0x23, - 0x97, 0x7b, 0xa2, 0xed, 0xbd, 0x7c, 0xa2, 0xfb, 0xaf, 0x3a, 0x2c, 0xed, 0x12, 0xcc, 0x46, 0xfb, - 0x17, 0x27, 0xd4, 0x2a, 0x2c, 0x30, 0x72, 0x30, 0xe8, 0x2b, 0x32, 0xd9, 0x9e, 0x1e, 0x14, 0xf8, - 0xda, 0xa7, 0xe0, 0x5b, 0x9f, 0x83, 0xaf, 0x0b, 0x9d, 0x0a, 0x98, 0xdc, 0x59, 0x50, 0x28, 0x4c, - 0xc9, 0x50, 0x0f, 0xec, 0x80, 0x47, 0x8a, 0x3a, 0x2d, 0x4f, 0x7e, 0xa2, 0x9b, 0xb0, 0x92, 0x46, - 0x78, 0x44, 0xf6, 0x69, 0x14, 0x10, 0xe6, 0x8f, 0x19, 0xcd, 0x52, 0x45, 0x9f, 0x8e, 0xd7, 0xab, - 0x28, 0xee, 0x4b, 0x39, 0xfa, 0x00, 0x9a, 0x01, 0x8f, 0x7c, 0x31, 0x49, 0x89, 0xe2, 0x4f, 0xf7, - 0x84, 0x63, 0xf6, 0x79, 0xf4, 0x78, 0x92, 0x12, 0xaf, 0x11, 0xe8, 0x0f, 0x74, 0x07, 0x56, 0x39, - 0x61, 0x21, 0x8e, 0xc2, 0xe7, 0x24, 0xf0, 0xc9, 0xb3, 0x94, 0xf9, 0x69, 0x84, 0x13, 0x45, 0xb2, - 0x8e, 0x87, 0x4a, 0xdd, 0x0f, 0x9f, 0xa5, 0x6c, 0x27, 0xc2, 0x09, 0xda, 0x80, 0x1e, 0xcd, 0x44, - 0x9a, 0x09, 0xdf, 0xd0, 0x20, 0x0c, 0x14, 0xe7, 0x6c, 0xaf, 0xab, 0xe5, 0x0a, 0x75, 0x3e, 0x08, - 0xd0, 0x37, 0xa1, 0x27, 0x18, 0x3e, 0x24, 0x91, 0x5f, 0x90, 0xd1, 0x69, 0x2b, 0xc0, 0x97, 0xb5, - 0xfc, 0x71, 0x2e, 0x46, 0xb7, 0xe1, 0xd2, 0x38, 0xc3, 0x0c, 0x27, 0x82, 0x90, 0x8a, 0x75, 0x47, - 0x59, 0xa3, 0x42, 0x55, 0x4e, 0xb8, 0x09, 0x2b, 0xd2, 0x8c, 0x66, 0xa2, 0x62, 0xbe, 0xa4, 0xcc, - 0x7b, 0x46, 0x51, 0x1a, 0x77, 0xa1, 0x96, 0x1c, 0x28, 0xae, 0xd9, 0x5e, 0x2d, 0x39, 0x90, 0x40, - 0x0a, 0x9a, 0x3e, 0x55, 0x1c, 0xb3, 0x3d, 0xf5, 0x2d, 0x93, 0x28, 0x26, 0x82, 0x85, 0x23, 0x19, - 0x16, 0xa7, 0xa7, 0x70, 0xa8, 0x48, 0xdc, 0xff, 0xda, 0x25, 0xad, 0x78, 0x16, 0x09, 0x7e, 0x01, - 0x5a, 0x5d, 0xe4, 0x25, 0x53, 0x72, 0xd1, 0xae, 0x72, 0xf1, 0x0d, 0x68, 0x6b, 0xe7, 0x34, 0xe6, - 0xf5, 0x59, 0x7f, 0xa5, 0x81, 0xcc, 0xb2, 0x83, 0x8c, 0xb0, 0x90, 0x70, 0x53, 0xf6, 0x21, 0xc9, - 0xe2, 0x9f, 0x6a, 0x09, 0xba, 0x04, 0x0b, 0x82, 0xa6, 0xfe, 0xd3, 0xbc, 0x5c, 0x09, 0x9a, 0x3e, - 0x40, 0xdf, 0x87, 0x35, 0x4e, 0x70, 0x44, 0x02, 0xbf, 0x28, 0x2f, 0xdc, 0xe7, 0xea, 0xd8, 0x24, - 0x70, 0x1a, 0x0a, 0x66, 0x47, 0x5b, 0xec, 0x16, 0x06, 0xbb, 0x46, 0x2f, 0x51, 0x1c, 0xe9, 0xb6, - 0x7d, 0x6a, 0x5a, 0x53, 0x75, 0xf6, 0xa8, 0x54, 0x15, 0x13, 0x3e, 0x04, 0x67, 0x1c, 0xd1, 0x21, - 0x8e, 0xfc, 0x63, 0xbb, 0xaa, 0x27, 0x84, 0xed, 0x5d, 0xd1, 0xfa, 0xdd, 0x99, 0x2d, 0xe5, 0xf1, - 0x78, 0x14, 0x8e, 0x48, 0xe0, 0x0f, 0x23, 0x3a, 0x74, 0x40, 0xd1, 0x15, 0xb4, 0x48, 0xd6, 0x2b, - 0x49, 0x53, 0x63, 0x20, 0xc3, 0x30, 0xa2, 0x59, 0x22, 0x14, 0xf9, 0x6c, 0xaf, 0xab, 0xe5, 0x8f, - 0xb2, 0x78, 0x5b, 0x4a, 0xd1, 0x5b, 0xb0, 0x64, 0x2c, 0xe9, 0xde, 0x1e, 0x27, 0x42, 0xb1, 0xce, - 0xf6, 0x3a, 0x5a, 0xf8, 0x13, 0x25, 0x73, 0xff, 0x68, 0xc3, 0xb2, 0x27, 0xa3, 0x4b, 0x0e, 0xc9, - 0x97, 0xa9, 0xae, 0x9c, 0x94, 0xdf, 0x8b, 0xe7, 0xca, 0xef, 0xc6, 0x99, 0xf3, 0xbb, 0x79, 0xae, - 0xfc, 0x6e, 0x9d, 0x2f, 0xbf, 0x61, 0x7e, 0x7e, 0xbb, 0x7f, 0x99, 0x02, 0xe7, 0x25, 0xc8, 0xce, - 0x1b, 0x60, 0x87, 0x81, 0x6e, 0x15, 0xdb, 0x9b, 0xce, 0xdc, 0xbb, 0x71, 0xd0, 0xe7, 0x9e, 0x34, - 0x9a, 0xbd, 0x4f, 0x17, 0xce, 0x7d, 0x9f, 0xfe, 0x00, 0xae, 0x1d, 0xcf, 0x59, 0x66, 0xc2, 0x11, - 0x38, 0x8b, 0x0a, 0xbb, 0xab, 0xb3, 0x49, 0x9b, 0xc7, 0x2b, 0x40, 0xdf, 0x86, 0xd5, 0x4a, 0xd6, - 0x96, 0x13, 0x1b, 0xfa, 0x0d, 0x5f, 0xea, 0xca, 0x29, 0xa7, 0xe5, 0x6d, 0xf3, 0xb4, 0xbc, 0x75, - 0x3f, 0xb5, 0x61, 0xa9, 0x4f, 0x22, 0x22, 0xc8, 0x57, 0xed, 0xde, 0x89, 0xed, 0xde, 0xb7, 0x00, - 0x85, 0x89, 0x78, 0xff, 0x3d, 0x3f, 0x65, 0x61, 0x8c, 0xd9, 0xc4, 0x7f, 0x4a, 0x26, 0x79, 0x41, - 0xec, 0x29, 0xcd, 0x8e, 0x56, 0x3c, 0x20, 0x13, 0xfe, 0xc2, 0xf6, 0xaf, 0xda, 0x6f, 0xe9, 0x0a, - 0x58, 0xf4, 0x5b, 0xdf, 0x83, 0xce, 0xd4, 0x16, 0x9d, 0x17, 0x10, 0xb6, 0x9d, 0x96, 0xfb, 0xba, - 0xff, 0xb1, 0xa0, 0xf5, 0x31, 0xc5, 0x81, 0x7a, 0xf9, 0x5c, 0x10, 0xc6, 0xa2, 0xa9, 0xad, 0xcd, - 0x36, 0xb5, 0xd7, 0xa1, 0x7c, 0xbc, 0x18, 0x20, 0x2b, 0xaf, 0x99, 0xca, 0xab, 0xa4, 0x3e, 0xfd, - 0x2a, 0x79, 0x03, 0xda, 0xa1, 0x74, 0xc8, 0x4f, 0xb1, 0xd8, 0xd7, 0x35, 0xb1, 0xe5, 0x81, 0x12, - 0xed, 0x48, 0x89, 0x7c, 0xb6, 0xe4, 0x06, 0xea, 0xd9, 0xb2, 0x78, 0xe6, 0x67, 0x8b, 0x59, 0x44, - 0x3d, 0x5b, 0x7e, 0x6d, 0x01, 0xa8, 0x83, 0xcb, 0x7a, 0x70, 0x7c, 0x51, 0xeb, 0x22, 0x8b, 0xca, - 0x62, 0xad, 0x90, 0x22, 0x11, 0x16, 0x65, 0x52, 0x71, 0x13, 0x1c, 0x24, 0x51, 0xd3, 0x2a, 0x93, - 0x50, 0xdc, 0xfd, 0xbd, 0x05, 0xa0, 0xaa, 0x82, 0x76, 0x63, 0x96, 0x7e, 0xd6, 0xe9, 0x0f, 0xba, - 0xda, 0x74, 0xe8, 0xb6, 0xf2, 0xd0, 0xc9, 0xda, 0x26, 0x1f, 0xe2, 0x73, 0xce, 0x50, 0xe9, 0xc0, - 0xf3, 0xc3, 0x9b, 0xe8, 0xaa, 0x6f, 0xf7, 0x0f, 0x16, 0x74, 0x8c, 0x77, 0xda, 0xa5, 0x29, 0x94, - 0xad, 0x59, 0x94, 0x55, 0x1b, 0x13, 0x53, 0x36, 0xf1, 0x79, 0xf8, 0x9c, 0x18, 0x87, 0x40, 0x8b, - 0x76, 0xc3, 0xe7, 0x64, 0x8a, 0xbc, 0xf6, 0x34, 0x79, 0x6f, 0xc2, 0x0a, 0x23, 0x23, 0x92, 0x88, - 0x68, 0xe2, 0xc7, 0x34, 0x08, 0xf7, 0x42, 0x12, 0x28, 0x36, 0x34, 0xbd, 0x5e, 0xae, 0x78, 0x68, - 0xe4, 0xee, 0xa7, 0x16, 0x74, 0x65, 0xe7, 0x33, 0x79, 0x44, 0x03, 0xa2, 0x3d, 0x3b, 0x3f, 0x63, - 0x3f, 0x52, 0x67, 0x31, 0xe1, 0xd1, 0x3f, 0x79, 0xbf, 0x75, 0xd2, 0x3f, 0x28, 0x95, 0x18, 0x78, - 0x4d, 0x4e, 0xc6, 0x7a, 0xcf, 0x2d, 0x53, 0xec, 0xcf, 0x14, 0xe2, 0x12, 0x58, 0x53, 0xef, 0x75, - 0x88, 0x7f, 0x65, 0x41, 0xfb, 0x21, 0x1f, 0xef, 0x50, 0xae, 0xea, 0x05, 0x7a, 0x13, 0x3a, 0xa6, - 0x46, 0xeb, 0x62, 0x65, 0xa9, 0x64, 0x69, 0x8f, 0xca, 0x1f, 0x50, 0xe5, 0x2d, 0x15, 0xf3, 0xb1, - 0x41, 0xbc, 0xe3, 0xe9, 0x01, 0x5a, 0x83, 0x66, 0xcc, 0xc7, 0xea, 0x01, 0x61, 0x32, 0xac, 0x18, - 0x4b, 0xd8, 0xca, 0x7b, 0xb7, 0xae, 0xee, 0xdd, 0x52, 0xe0, 0xfe, 0xd5, 0x02, 0x64, 0x7e, 0xa0, - 0xfd, 0x4c, 0xbf, 0xb2, 0x2b, 0xc2, 0x56, 0x7f, 0x04, 0xae, 0xa9, 0x74, 0x9d, 0x92, 0xcd, 0xd4, - 0x37, 0xfb, 0x58, 0x7d, 0xbb, 0x09, 0x2b, 0x01, 0xd9, 0xc3, 0x59, 0x54, 0x6d, 0x15, 0xb4, 0xcb, - 0x3d, 0xa3, 0x28, 0x5b, 0x85, 0xeb, 0xb0, 0xb6, 0x1d, 0x11, 0xcc, 0xb6, 0x19, 0x09, 0x3e, 0xe1, - 0x84, 0xf1, 0x6d, 0x3c, 0xda, 0xcf, 0xef, 0x22, 0xf7, 0x17, 0xd0, 0x95, 0x0a, 0x92, 0x88, 0x10, - 0x47, 0xea, 0xaf, 0x95, 0x35, 0x68, 0x66, 0x5c, 0xc2, 0x51, 0x04, 0xb6, 0x18, 0xa3, 0x77, 0x00, - 0x91, 0x64, 0xc4, 0x26, 0xa9, 0x4c, 0xd6, 0x14, 0x73, 0x7e, 0x44, 0x59, 0x60, 0x2e, 0xa4, 0x95, - 0x42, 0xb3, 0x63, 0x14, 0x37, 0x3e, 0x84, 0x56, 0xf1, 0xbf, 0x1a, 0xea, 0x41, 0x67, 0x90, 0x84, - 0x42, 0x35, 0x5f, 0x61, 0x32, 0xee, 0xbd, 0x82, 0xda, 0xd0, 0xf8, 0x31, 0xc1, 0x91, 0xd8, 0x9f, - 0xf4, 0x2c, 0xd4, 0x81, 0xe6, 0xbd, 0x61, 0x42, 0x59, 0x8c, 0xa3, 0x5e, 0xed, 0xc6, 0x26, 0xac, - 0x1c, 0x7b, 0xf0, 0x4a, 0x13, 0x8f, 0x1e, 0xc9, 0x58, 0x06, 0xbd, 0x57, 0xd0, 0x32, 0xb4, 0xb7, - 0x69, 0x94, 0xc5, 0x89, 0x16, 0x58, 0x5b, 0x1f, 0xfc, 0xfc, 0x3b, 0xe3, 0x50, 0xec, 0x67, 0x43, - 0x19, 0xf8, 0xdb, 0x1a, 0x89, 0x77, 0x42, 0x6a, 0xbe, 0x6e, 0xe7, 0x24, 0xbb, 0xad, 0xc0, 0x29, - 0x86, 0xe9, 0x70, 0xb8, 0xa8, 0x24, 0xef, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x2f, 0x82, - 0x53, 0xb1, 0x1c, 0x00, 0x00, + // 2137 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcd, 0x73, 0x1c, 0x47, + 0x15, 0xcf, 0xec, 0xac, 0xb4, 0xbb, 0x6f, 0x57, 0xab, 0x55, 0x5b, 0x76, 0xc6, 0xb2, 0x93, 0xc8, + 0x93, 0x00, 0xc2, 0x26, 0xb6, 0x51, 0x42, 0x92, 0x02, 0x0a, 0xc7, 0xd2, 0x06, 0xb3, 0xe5, 0x0f, + 0xc4, 0xc8, 0x71, 0x15, 0x5c, 0xa6, 0x7a, 0x77, 0x5a, 0xab, 0xc6, 0x33, 0xd3, 0xe3, 0xee, 0x1e, + 0xc9, 0xeb, 0x13, 0x07, 0x4e, 0x50, 0x70, 0xe3, 0x42, 0x15, 0x9c, 0xf9, 0x0f, 0xb8, 0x41, 0x15, + 0xa7, 0x9c, 0x38, 0x71, 0xe1, 0x5f, 0xa1, 0x38, 0x50, 0xfd, 0x31, 0xbb, 0xb3, 0xab, 0x95, 0x2c, + 0x29, 0x15, 0xe2, 0x54, 0xe5, 0x36, 0xfd, 0xde, 0xeb, 0xee, 0xf7, 0xf1, 0x7b, 0xaf, 0xdf, 0xdb, + 0x85, 0x36, 0x4d, 0x25, 0xe1, 0x29, 0x8e, 0x6f, 0x66, 0x9c, 0x49, 0x86, 0x2e, 0x26, 0x34, 0x3e, + 0xc8, 0x85, 0x59, 0xdd, 0x2c, 0x98, 0x6b, 0xad, 0x01, 0x4b, 0x12, 0x96, 0x1a, 0xf2, 0x5a, 0x4b, + 0x0c, 0xf6, 0x49, 0x82, 0xcd, 0xca, 0xff, 0x9b, 0x03, 0x4b, 0xdb, 0x2c, 0xc9, 0x58, 0x4a, 0x52, + 0xd9, 0x4b, 0xf7, 0x18, 0xba, 0x04, 0x8b, 0x29, 0x8b, 0x48, 0xaf, 0xeb, 0x39, 0xeb, 0xce, 0x86, + 0x1b, 0xd8, 0x15, 0x42, 0x50, 0xe5, 0x2c, 0x26, 0x5e, 0x65, 0xdd, 0xd9, 0x68, 0x04, 0xfa, 0x1b, + 0xdd, 0x01, 0x10, 0x12, 0x4b, 0x12, 0x0e, 0x58, 0x44, 0x3c, 0x77, 0xdd, 0xd9, 0x68, 0x6f, 0xae, + 0xdf, 0x9c, 0xab, 0xc5, 0xcd, 0x5d, 0x25, 0xb8, 0xcd, 0x22, 0x12, 0x34, 0x44, 0xf1, 0x89, 0x3e, + 0x06, 0x20, 0xcf, 0x25, 0xc7, 0x21, 0x4d, 0xf7, 0x98, 0x57, 0x5d, 0x77, 0x37, 0x9a, 0x9b, 0xd7, + 0xa6, 0x0f, 0xb0, 0xca, 0xdf, 0x27, 0xa3, 0x27, 0x38, 0xce, 0xc9, 0x0e, 0xa6, 0x3c, 0x68, 0xe8, + 0x4d, 0x4a, 0x5d, 0xff, 0xdf, 0x0e, 0x2c, 0x8f, 0x0d, 0xd0, 0x77, 0x08, 0xf4, 0x7d, 0x58, 0xd0, + 0x57, 0x68, 0x0b, 0x9a, 0x9b, 0xef, 0x1c, 0xa3, 0xd1, 0x94, 0xdd, 0x81, 0xd9, 0x82, 0x3e, 0x85, + 0x0b, 0x22, 0xef, 0x0f, 0x0a, 0x56, 0xa8, 0xa9, 0xc2, 0xab, 0x68, 0xd5, 0x4e, 0x77, 0x12, 0x2a, + 0x1f, 0x60, 0x55, 0x7a, 0x0f, 0x16, 0xd5, 0x49, 0xb9, 0xd0, 0x5e, 0x6a, 0x6e, 0x5e, 0x99, 0x6b, + 0xe4, 0xae, 0x16, 0x09, 0xac, 0xa8, 0x7f, 0x05, 0x2e, 0xdf, 0x23, 0x72, 0xc6, 0xba, 0x80, 0x3c, + 0xcb, 0x89, 0x90, 0x96, 0xf9, 0x98, 0x26, 0xe4, 0x31, 0x1d, 0x3c, 0xdd, 0xde, 0xc7, 0x69, 0x4a, + 0xe2, 0x82, 0xf9, 0x06, 0x5c, 0xb9, 0x47, 0xf4, 0x06, 0x2a, 0x24, 0x1d, 0x88, 0x19, 0xf6, 0x45, + 0xb8, 0x70, 0x8f, 0xc8, 0x6e, 0x34, 0x43, 0x7e, 0x02, 0xf5, 0x47, 0x2a, 0xd8, 0x0a, 0x06, 0x1f, + 0x40, 0x0d, 0x47, 0x11, 0x27, 0x42, 0x58, 0x2f, 0x5e, 0x9d, 0xab, 0xf1, 0x5d, 0x23, 0x13, 0x14, + 0xc2, 0xf3, 0x60, 0xe2, 0xff, 0x12, 0xa0, 0x97, 0x52, 0xb9, 0x83, 0x39, 0x4e, 0xc4, 0xb1, 0x00, + 0xeb, 0x42, 0x4b, 0x48, 0xcc, 0x65, 0x98, 0x69, 0x39, 0xeb, 0xf2, 0x53, 0xa0, 0xa1, 0xa9, 0xb7, + 0x99, 0xd3, 0xfd, 0x9f, 0x03, 0xec, 0x4a, 0x4e, 0xd3, 0xe1, 0x03, 0x2a, 0xa4, 0xba, 0xeb, 0x40, + 0xc9, 0x29, 0x23, 0xdc, 0x8d, 0x46, 0x60, 0x57, 0xa5, 0x70, 0x54, 0x4e, 0x1f, 0x8e, 0x3b, 0xd0, + 0x2c, 0xdc, 0xfd, 0x50, 0x0c, 0xd1, 0x6d, 0xa8, 0xf6, 0xb1, 0x20, 0x27, 0xba, 0xe7, 0xa1, 0x18, + 0x6e, 0x61, 0x41, 0x02, 0x2d, 0xe9, 0xff, 0xc6, 0x85, 0xd7, 0xb7, 0x39, 0xd1, 0xe0, 0x8f, 0x63, + 0x32, 0x90, 0x94, 0xa5, 0xd6, 0xf7, 0x67, 0x3f, 0x0d, 0xbd, 0x0e, 0xb5, 0xa8, 0x1f, 0xa6, 0x38, + 0x29, 0x9c, 0xbd, 0x18, 0xf5, 0x1f, 0xe1, 0x84, 0xa0, 0x6f, 0x42, 0x7b, 0x30, 0x3e, 0x5f, 0x51, + 0x34, 0xe6, 0x1a, 0xc1, 0x0c, 0x15, 0xbd, 0x03, 0x4b, 0x19, 0xe6, 0x92, 0x8e, 0xc5, 0xaa, 0x5a, + 0x6c, 0x9a, 0xa8, 0x02, 0x1a, 0xf5, 0x7b, 0x5d, 0x6f, 0x41, 0x07, 0x4b, 0x7f, 0x23, 0x1f, 0x5a, + 0x93, 0xb3, 0x7a, 0x5d, 0x6f, 0x51, 0xf3, 0xa6, 0x68, 0x68, 0x1d, 0x9a, 0xe3, 0x83, 0x7a, 0x5d, + 0xaf, 0xa6, 0x45, 0xca, 0x24, 0x15, 0x1c, 0x53, 0x8b, 0xbc, 0xfa, 0xba, 0xb3, 0xd1, 0x0a, 0xec, + 0x0a, 0xdd, 0x86, 0x0b, 0x07, 0x94, 0xcb, 0x1c, 0xc7, 0x16, 0x9f, 0x4a, 0x0f, 0xe1, 0x35, 0x74, + 0x04, 0xe7, 0xb1, 0xd0, 0x26, 0xac, 0x66, 0xfb, 0x23, 0x41, 0x07, 0x33, 0x5b, 0x40, 0x6f, 0x99, + 0xcb, 0xf3, 0xff, 0xe1, 0xc0, 0xc5, 0x2e, 0x67, 0xd9, 0x2b, 0x11, 0x8a, 0xc2, 0xc9, 0xd5, 0x13, + 0x9c, 0xbc, 0x70, 0xd4, 0xc9, 0xfe, 0xef, 0x2a, 0x70, 0xc9, 0x20, 0x6a, 0xa7, 0x70, 0xec, 0x17, + 0x60, 0xc5, 0xb7, 0x60, 0x79, 0x72, 0xab, 0x11, 0x98, 0x6f, 0xc6, 0x37, 0xa0, 0x3d, 0x0e, 0xb0, + 0x91, 0xfb, 0xff, 0x42, 0xca, 0xff, 0x6d, 0x05, 0x56, 0x55, 0x50, 0xbf, 0xf6, 0x86, 0xf2, 0xc6, + 0x9f, 0x1d, 0x40, 0x06, 0x1d, 0x77, 0x63, 0x8a, 0xc5, 0x97, 0xe9, 0x8b, 0x55, 0x58, 0xc0, 0x4a, + 0x07, 0xeb, 0x02, 0xb3, 0xf0, 0x05, 0x74, 0x54, 0xb4, 0xbe, 0x28, 0xed, 0xc6, 0x97, 0xba, 0xe5, + 0x4b, 0xff, 0xe4, 0xc0, 0xca, 0xdd, 0x58, 0x12, 0xfe, 0x8a, 0x3a, 0xe5, 0xef, 0x95, 0x22, 0x6a, + 0xbd, 0x34, 0x22, 0xcf, 0xbf, 0x4c, 0x05, 0xdf, 0x00, 0xd8, 0xa3, 0x24, 0x8e, 0xca, 0xe8, 0x6d, + 0x68, 0xca, 0xe7, 0x42, 0xae, 0x07, 0x35, 0x7d, 0xc8, 0x18, 0xb5, 0xc5, 0x52, 0xf5, 0x00, 0xa6, + 0x1f, 0xb4, 0x3d, 0x40, 0xfd, 0xd4, 0x3d, 0x80, 0xde, 0x66, 0x7b, 0x80, 0x7f, 0x56, 0x61, 0xa9, + 0x97, 0x0a, 0xc2, 0xe5, 0xf9, 0x9d, 0x77, 0x15, 0x1a, 0x62, 0x1f, 0x73, 0x6d, 0xa8, 0x75, 0xdf, + 0x84, 0x50, 0x76, 0xad, 0xfb, 0x32, 0xd7, 0x56, 0x4f, 0x59, 0x1c, 0x16, 0x4e, 0x2a, 0x0e, 0x8b, + 0x27, 0xb8, 0xb8, 0xf6, 0xf2, 0xe2, 0x50, 0x3f, 0xfa, 0xfa, 0x2a, 0x03, 0xc9, 0x30, 0x51, 0x4d, + 0x6b, 0xd7, 0x6b, 0x68, 0xfe, 0x84, 0x80, 0xde, 0x04, 0x90, 0x34, 0x21, 0x42, 0xe2, 0x24, 0x33, + 0xef, 0x68, 0x35, 0x28, 0x51, 0xd4, 0xdb, 0xcd, 0xd9, 0x61, 0xaf, 0x2b, 0xbc, 0xe6, 0xba, 0xab, + 0x9a, 0x38, 0xb3, 0x42, 0xef, 0x43, 0x9d, 0xb3, 0xc3, 0x30, 0xc2, 0x12, 0x7b, 0x2d, 0x1d, 0xbc, + 0xcb, 0x73, 0x9d, 0xbd, 0x15, 0xb3, 0x7e, 0x50, 0xe3, 0xec, 0xb0, 0x8b, 0x25, 0x46, 0x77, 0xa0, + 0xa9, 0x11, 0x20, 0xcc, 0xc6, 0x25, 0xbd, 0xf1, 0xcd, 0xe9, 0x8d, 0x76, 0x6c, 0xf9, 0xb1, 0x92, + 0x53, 0x9b, 0x02, 0x03, 0x4d, 0xa1, 0x0f, 0xb8, 0x0c, 0xf5, 0x34, 0x4f, 0x42, 0xce, 0x0e, 0x85, + 0xd7, 0x5e, 0x77, 0x36, 0xaa, 0x41, 0x2d, 0xcd, 0x93, 0x80, 0x1d, 0x0a, 0xb4, 0x05, 0xb5, 0x03, + 0xc2, 0x05, 0x65, 0xa9, 0xb7, 0xac, 0x07, 0x94, 0x8d, 0x63, 0x9a, 0x78, 0x83, 0x18, 0x75, 0xdc, + 0x13, 0x23, 0x1f, 0x14, 0x1b, 0xfd, 0x7f, 0x55, 0x61, 0x69, 0x97, 0x60, 0x3e, 0xd8, 0x3f, 0x3f, + 0xa0, 0x56, 0x61, 0x81, 0x93, 0x67, 0xbd, 0xae, 0x06, 0x93, 0x1b, 0x98, 0xc5, 0x38, 0xbe, 0xee, + 0x09, 0xf1, 0xad, 0xce, 0x89, 0xaf, 0x0f, 0xad, 0x52, 0x30, 0x85, 0xb7, 0xa0, 0xa3, 0x30, 0x45, + 0x43, 0x1d, 0x70, 0x23, 0x11, 0x6b, 0xe8, 0x34, 0x02, 0xf5, 0x89, 0x6e, 0xc0, 0x4a, 0x16, 0xe3, + 0x01, 0xd9, 0x67, 0x71, 0x44, 0x78, 0x38, 0xe4, 0x2c, 0xcf, 0x34, 0x7c, 0x5a, 0x41, 0xa7, 0xc4, + 0xb8, 0xa7, 0xe8, 0xe8, 0x43, 0xa8, 0x47, 0x22, 0x0e, 0xe5, 0x28, 0x23, 0x1a, 0x3f, 0xed, 0x63, + 0xcc, 0xec, 0x8a, 0xf8, 0xf1, 0x28, 0x23, 0x41, 0x2d, 0x32, 0x1f, 0xe8, 0x36, 0xac, 0x0a, 0xc2, + 0x29, 0x8e, 0xe9, 0x0b, 0x12, 0x85, 0xe4, 0x79, 0xc6, 0xc3, 0x2c, 0xc6, 0xa9, 0x06, 0x59, 0x2b, + 0x40, 0x13, 0xde, 0x27, 0xcf, 0x33, 0xbe, 0x13, 0xe3, 0x14, 0x6d, 0x40, 0x87, 0xe5, 0x32, 0xcb, + 0x65, 0x68, 0x61, 0x40, 0x23, 0x8d, 0x39, 0x37, 0x68, 0x1b, 0xba, 0x8e, 0xba, 0xe8, 0x45, 0xe8, + 0xdb, 0xd0, 0x91, 0x1c, 0x1f, 0x90, 0x38, 0x1c, 0x83, 0xd1, 0x6b, 0xea, 0x80, 0x2f, 0x1b, 0xfa, + 0xe3, 0x82, 0x8c, 0x6e, 0xc1, 0x85, 0x61, 0x8e, 0x39, 0x4e, 0x25, 0x21, 0x25, 0xe9, 0x96, 0x96, + 0x46, 0x63, 0xd6, 0x64, 0xc3, 0x0d, 0x58, 0x51, 0x62, 0x2c, 0x97, 0x25, 0xf1, 0x25, 0x2d, 0xde, + 0xb1, 0x8c, 0x89, 0x70, 0x1b, 0x2a, 0xe9, 0x33, 0x8d, 0x35, 0x37, 0xa8, 0xa4, 0xcf, 0x54, 0x20, + 0x25, 0xcb, 0x9e, 0x6a, 0x8c, 0xb9, 0x81, 0xfe, 0x56, 0x49, 0x94, 0x10, 0xc9, 0xe9, 0x40, 0xb9, + 0xc5, 0xeb, 0xe8, 0x38, 0x94, 0x28, 0xfe, 0x7f, 0xdd, 0x09, 0xac, 0x44, 0x1e, 0x4b, 0x71, 0x0e, + 0x58, 0x9d, 0x67, 0x92, 0x99, 0x60, 0xd1, 0x2d, 0x63, 0xf1, 0x2d, 0x68, 0x1a, 0xe5, 0x4c, 0xcc, + 0xab, 0xb3, 0xfa, 0x2a, 0x01, 0x95, 0x65, 0xcf, 0x72, 0xc2, 0x29, 0x11, 0xb6, 0xec, 0x43, 0x9a, + 0x27, 0x3f, 0x33, 0x14, 0x74, 0x01, 0x16, 0x24, 0xcb, 0xc2, 0xa7, 0x45, 0xb9, 0x92, 0x2c, 0xbb, + 0x8f, 0x7e, 0x08, 0x6b, 0x82, 0xe0, 0x98, 0x44, 0xe1, 0xb8, 0xbc, 0x88, 0x50, 0x68, 0xb3, 0x49, + 0xe4, 0xd5, 0x74, 0x98, 0x3d, 0x23, 0xb1, 0x3b, 0x16, 0xd8, 0xb5, 0x7c, 0x15, 0xc5, 0x81, 0x69, + 0xdb, 0xa7, 0xb6, 0xd5, 0x75, 0x67, 0x8f, 0x26, 0xac, 0xf1, 0x86, 0x8f, 0xc0, 0x1b, 0xc6, 0xac, + 0x8f, 0xe3, 0xf0, 0xc8, 0xad, 0x7a, 0x84, 0x70, 0x83, 0x4b, 0x86, 0xbf, 0x3b, 0x73, 0xa5, 0x32, + 0x4f, 0xc4, 0x74, 0x40, 0xa2, 0xb0, 0x1f, 0xb3, 0xbe, 0x07, 0x1a, 0xae, 0x60, 0x48, 0xaa, 0x5e, + 0x29, 0x98, 0x5a, 0x01, 0xe5, 0x86, 0x01, 0xcb, 0x53, 0xa9, 0xc1, 0xe7, 0x06, 0x6d, 0x43, 0x7f, + 0x94, 0x27, 0xdb, 0x8a, 0x8a, 0xde, 0x86, 0x25, 0x2b, 0xc9, 0xf6, 0xf6, 0x04, 0x91, 0x1a, 0x75, + 0x6e, 0xd0, 0x32, 0xc4, 0x9f, 0x6a, 0x9a, 0xff, 0x47, 0x17, 0x96, 0x03, 0xe5, 0x5d, 0x72, 0x40, + 0xbe, 0x4a, 0x75, 0xe5, 0xb8, 0xfc, 0x5e, 0x3c, 0x53, 0x7e, 0xd7, 0x4e, 0x9d, 0xdf, 0xf5, 0x33, + 0xe5, 0x77, 0xe3, 0x6c, 0xf9, 0x0d, 0xf3, 0xf3, 0xdb, 0xff, 0xcb, 0x54, 0x70, 0x5e, 0x81, 0xec, + 0xbc, 0x0e, 0x2e, 0x8d, 0x4c, 0xab, 0xd8, 0xdc, 0xf4, 0xe6, 0xbe, 0x8d, 0xbd, 0xae, 0x08, 0x94, + 0xd0, 0xec, 0x7b, 0xba, 0x70, 0xe6, 0xf7, 0xf4, 0x47, 0x70, 0xe5, 0x68, 0xce, 0x72, 0xeb, 0x8e, + 0xc8, 0x5b, 0xd4, 0xb1, 0xbb, 0x3c, 0x9b, 0xb4, 0x85, 0xbf, 0x22, 0xf4, 0x5d, 0x58, 0x2d, 0x65, + 0xed, 0x64, 0x63, 0xcd, 0xcc, 0xf0, 0x13, 0xde, 0x64, 0xcb, 0x49, 0x79, 0x5b, 0x3f, 0x29, 0x6f, + 0xfd, 0xcf, 0x5c, 0x58, 0xea, 0x92, 0x98, 0x48, 0xf2, 0x75, 0xbb, 0x77, 0x6c, 0xbb, 0xf7, 0x1d, + 0x40, 0x34, 0x95, 0x1f, 0xbc, 0x1f, 0x66, 0x9c, 0x26, 0x98, 0x8f, 0xc2, 0xa7, 0x64, 0x54, 0x14, + 0xc4, 0x8e, 0xe6, 0xec, 0x18, 0xc6, 0x7d, 0x32, 0x12, 0x2f, 0x6d, 0xff, 0xca, 0xfd, 0x96, 0xa9, + 0x80, 0xe3, 0x7e, 0xeb, 0x07, 0xd0, 0x9a, 0xba, 0xa2, 0xf5, 0x12, 0xc0, 0x36, 0xb3, 0xc9, 0xbd, + 0xfe, 0x7f, 0x1c, 0x68, 0x3c, 0x60, 0x38, 0xd2, 0x93, 0xcf, 0x39, 0xc3, 0x38, 0x6e, 0x6a, 0x2b, + 0xb3, 0x4d, 0xed, 0x55, 0x98, 0x0c, 0x2f, 0x36, 0x90, 0xa5, 0x69, 0xa6, 0x34, 0x95, 0x54, 0xa7, + 0xa7, 0x92, 0xb7, 0xa0, 0x49, 0x95, 0x42, 0x61, 0x86, 0xe5, 0xbe, 0xa9, 0x89, 0x8d, 0x00, 0x34, + 0x69, 0x47, 0x51, 0xd4, 0xd8, 0x52, 0x08, 0xe8, 0xb1, 0x65, 0xf1, 0xd4, 0x63, 0x8b, 0x3d, 0x44, + 0x8f, 0x2d, 0xbf, 0x76, 0x00, 0xb4, 0xe1, 0xaa, 0x1e, 0x1c, 0x3d, 0xd4, 0x39, 0xcf, 0xa1, 0xaa, + 0x58, 0xeb, 0x48, 0x91, 0x18, 0xcb, 0x49, 0x52, 0x09, 0xeb, 0x1c, 0xa4, 0xa2, 0x66, 0x58, 0x36, + 0xa1, 0x84, 0xff, 0x7b, 0x07, 0x40, 0x57, 0x05, 0xa3, 0xc6, 0x2c, 0xfc, 0x9c, 0x93, 0x07, 0xba, + 0xca, 0xb4, 0xeb, 0xb6, 0x0a, 0xd7, 0xa9, 0xda, 0xa6, 0x06, 0xf1, 0x39, 0x36, 0x94, 0x3a, 0xf0, + 0xc2, 0x78, 0xeb, 0x5d, 0xfd, 0xed, 0xff, 0xc1, 0x81, 0x96, 0xd5, 0xce, 0xa8, 0x34, 0x15, 0x65, + 0x67, 0x36, 0xca, 0xba, 0x8d, 0x49, 0x18, 0x1f, 0x85, 0x82, 0xbe, 0x20, 0x56, 0x21, 0x30, 0xa4, + 0x5d, 0xfa, 0x82, 0x4c, 0x81, 0xd7, 0x9d, 0x06, 0xef, 0x0d, 0x58, 0xe1, 0x64, 0x40, 0x52, 0x19, + 0x8f, 0xc2, 0x84, 0x45, 0x74, 0x8f, 0x92, 0x48, 0xa3, 0xa1, 0x1e, 0x74, 0x0a, 0xc6, 0x43, 0x4b, + 0xf7, 0x3f, 0x73, 0xa0, 0xad, 0x3a, 0x9f, 0xd1, 0x23, 0x16, 0x11, 0xa3, 0xd9, 0xd9, 0x11, 0xfb, + 0xb1, 0xb6, 0xc5, 0xba, 0xc7, 0xfc, 0xe4, 0xfd, 0xf6, 0x71, 0xff, 0xa0, 0x94, 0x7c, 0x10, 0xd4, + 0x05, 0x19, 0x9a, 0x3b, 0xb7, 0x6c, 0xb1, 0x3f, 0x95, 0x8b, 0x27, 0x81, 0xb5, 0xf5, 0xde, 0xb8, + 0xf8, 0x57, 0x0e, 0x34, 0x1f, 0x8a, 0xe1, 0x0e, 0x13, 0xba, 0x5e, 0xa0, 0x6b, 0xd0, 0xb2, 0x35, + 0xda, 0x14, 0x2b, 0x47, 0x27, 0x4b, 0x73, 0x30, 0xf9, 0x01, 0x55, 0xbd, 0x52, 0x89, 0x18, 0xda, + 0x88, 0xb7, 0x02, 0xb3, 0x40, 0x6b, 0x50, 0x4f, 0xc4, 0x50, 0x0f, 0x10, 0x36, 0xc3, 0xc6, 0x6b, + 0x15, 0xb6, 0xc9, 0xbb, 0x5b, 0xd5, 0xef, 0xee, 0x84, 0xe0, 0xff, 0xd5, 0x01, 0x64, 0x7f, 0xa0, + 0xfd, 0x5c, 0xbf, 0xb2, 0x6b, 0xc0, 0x96, 0x7f, 0x04, 0xae, 0xe8, 0x74, 0x9d, 0xa2, 0xcd, 0xd4, + 0x37, 0xf7, 0x48, 0x7d, 0xbb, 0x01, 0x2b, 0x11, 0xd9, 0xc3, 0x79, 0x5c, 0x6e, 0x15, 0x8c, 0xca, + 0x1d, 0xcb, 0x98, 0xb4, 0x0a, 0x57, 0x61, 0x6d, 0x3b, 0x26, 0x98, 0x6f, 0x73, 0x12, 0x7d, 0x2a, + 0x08, 0x17, 0xdb, 0x78, 0xb0, 0x5f, 0xbc, 0x45, 0x2a, 0x9d, 0xda, 0x8a, 0x43, 0x52, 0x49, 0x71, + 0xac, 0xff, 0x5b, 0x59, 0x83, 0x7a, 0x2e, 0x54, 0x3c, 0xc6, 0x9e, 0x1d, 0xaf, 0xd1, 0xbb, 0x80, + 0x48, 0x3a, 0xe0, 0xa3, 0x4c, 0x65, 0x6b, 0x86, 0x85, 0x38, 0x64, 0x3c, 0xb2, 0x2f, 0xd2, 0xca, + 0x98, 0xb3, 0x63, 0x19, 0x6a, 0x0e, 0x97, 0x24, 0xc5, 0xa9, 0x2c, 0x1e, 0x26, 0xb3, 0x52, 0x18, + 0xa7, 0x22, 0x14, 0x79, 0x46, 0xb8, 0xc5, 0x6f, 0x8d, 0x8a, 0x5d, 0xb5, 0xf4, 0x3f, 0x81, 0x95, + 0x07, 0x54, 0xc8, 0x1d, 0x16, 0xd3, 0xc1, 0xe8, 0xdc, 0x2f, 0xa6, 0x1f, 0x03, 0x2a, 0x1f, 0x23, + 0x32, 0x96, 0x4e, 0x35, 0x3c, 0xce, 0xe9, 0x1b, 0x9e, 0x6b, 0xd0, 0xca, 0xf4, 0x31, 0xfa, 0x6f, + 0xc0, 0x22, 0x62, 0x4d, 0x43, 0x53, 0x1e, 0x13, 0xd7, 0x3f, 0x82, 0xc6, 0xf8, 0x0f, 0x44, 0xd4, + 0x81, 0x56, 0x2f, 0xa5, 0x52, 0x77, 0x99, 0x34, 0x1d, 0x76, 0x5e, 0x43, 0x4d, 0xa8, 0xfd, 0x84, + 0xe0, 0x58, 0xee, 0x8f, 0x3a, 0x0e, 0x6a, 0x41, 0xfd, 0x6e, 0x3f, 0x65, 0x3c, 0xc1, 0x71, 0xa7, + 0x72, 0x7d, 0x13, 0x56, 0x8e, 0x4c, 0xf6, 0x4a, 0x24, 0x60, 0x87, 0xca, 0x9a, 0xa8, 0xf3, 0x1a, + 0x5a, 0x86, 0xe6, 0x36, 0x8b, 0xf3, 0x24, 0x35, 0x04, 0x67, 0xeb, 0xc3, 0x5f, 0x7c, 0x6f, 0x48, + 0xe5, 0x7e, 0xde, 0x57, 0x0a, 0xdf, 0x32, 0x16, 0xbc, 0x4b, 0x99, 0xfd, 0xba, 0x55, 0x64, 0xd3, + 0x2d, 0x6d, 0xd4, 0x78, 0x99, 0xf5, 0xfb, 0x8b, 0x9a, 0xf2, 0xde, 0xff, 0x02, 0x00, 0x00, 0xff, + 0xff, 0x0e, 0x5f, 0x80, 0x10, 0x9a, 0x1d, 0x00, 0x00, } diff --git a/internal/proto/milvus.proto b/internal/proto/milvus.proto index c2232ac9ad..98f082aa6c 100644 --- a/internal/proto/milvus.proto +++ b/internal/proto/milvus.proto @@ -10,6 +10,7 @@ option java_generate_equals_and_hash = true; import "common.proto"; import "schema.proto"; +import "google/protobuf/descriptor.proto"; service MilvusService { rpc CreateCollection(CreateCollectionRequest) returns (common.Status) {} @@ -73,6 +74,16 @@ service MilvusService { rpc UpdateCredential(UpdateCredentialRequest) returns (common.Status) {} rpc DeleteCredential(DeleteCredentialRequest) returns (common.Status) {} rpc ListCredUsers(ListCredUsersRequest) returns (ListCredUsersResponse) {} + + // https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control + rpc CreateRole(CreateRoleRequest) returns (common.Status) {} + rpc DropRole(DropRoleRequest) returns (common.Status) {} + rpc OperateUserRole(OperateUserRoleRequest) returns (common.Status) {} + rpc SelectRole(SelectRoleRequest) returns (SelectRoleResponse) {} + rpc SelectUser(SelectUserRequest) returns (SelectUserResponse) {} + rpc SelectResource(SelectResourceRequest) returns (SelectResourceResponse) {} + rpc OperatePrivilege(OperatePrivilegeRequest) returns (common.Status) {} + rpc SelectGrant(SelectGrantRequest) returns (SelectGrantResponse) {} } message CreateAliasRequest { @@ -99,14 +110,19 @@ message AlterAliasRequest{ * Create collection in milvus */ message CreateCollectionRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeCreate + resource_name_index: 3 + }; // Not useful for now common.MsgBase base = 1; // Not useful for now string db_name = 2; // The unique collection name in milvus.(Required) - string collection_name = 3; + string collection_name = 3; // The serialized `schema.CollectionSchema`(Required) - bytes schema = 4; + bytes schema = 4; // Once set, no modification is allowed (Optional) // https://github.com/milvus-io/milvus/issues/6690 int32 shards_num = 5; @@ -115,11 +131,16 @@ message CreateCollectionRequest { } /** -* Drop collection in milvus, also will drop data in collection. +* Drop collection in milvus, also will drop data in collection. */ message DropCollectionRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeDrop + resource_name_index: 3 + }; // Not useful for now - common.MsgBase base = 1; + common.MsgBase base = 1; // Not useful for now string db_name = 2; // The unique collection name in milvus.(Required) @@ -130,12 +151,17 @@ message DropCollectionRequest { * Check collection exist in milvus or not. */ message HasCollectionRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeRead + resource_name_index: 3 + }; // Not useful for now common.MsgBase base = 1; // Not useful for now string db_name = 2; // The collection name you want to check. - string collection_name = 3; + string collection_name = 3; // If time_stamp is not zero, will return true when time_stamp >= created collection timestamp, otherwise will return false. uint64 time_stamp = 4; } @@ -155,6 +181,11 @@ message StringResponse { * Get collection meta datas like: schema, collectionID, shards number ... */ message DescribeCollectionRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeRead + resource_name_index: 3 + }; // Not useful for now common.MsgBase base = 1; // Not useful for now @@ -201,6 +232,11 @@ message DescribeCollectionResponse { * Load collection data into query nodes, then you can do vector search on this collection. */ message LoadCollectionRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeLoad + resource_name_index: 3 + }; // Not useful for now common.MsgBase base = 1; // Not useful for now @@ -215,6 +251,11 @@ message LoadCollectionRequest { * Release collection data from query nodes, then you can't do vector search on this collection. */ message ReleaseCollectionRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeRelease + resource_name_index: 3 + }; // Not useful for now common.MsgBase base = 1; // Not useful for now @@ -227,6 +268,11 @@ message ReleaseCollectionRequest { * Get collection statistics like row_count. */ message GetCollectionStatisticsRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeRead + resource_name_index: 3 + }; // Not useful for now common.MsgBase base = 1; // Not useful for now @@ -249,16 +295,20 @@ message GetCollectionStatisticsResponse { * This is for ShowCollectionsRequest type field. */ enum ShowType { - // Will return all colloections + // Will return all colloections All = 0; // Will return loaded collections with their inMemory_percentages InMemory = 1; } /* -* List collections +* List collections */ message ShowCollectionsRequest { + option (common.privilege_ext_obj) = { + resource_type: Collection + resource_privilege: PrivilegeRead + }; // Not useful for now common.MsgBase base = 1; // Not useful for now @@ -268,7 +318,7 @@ message ShowCollectionsRequest { // Decide return Loaded collections or All collections(Optional) ShowType type = 4; // When type is InMemory, will return these collection's inMemory_percentages.(Optional) - repeated string collection_names = 5; + repeated string collection_names = 5; } /* @@ -286,7 +336,7 @@ message ShowCollectionsResponse { // The utc timestamp calculated by created_timestamp repeated uint64 created_utc_timestamps = 5; // Load percentage on querynode when type is InMemory - repeated int64 inMemory_percentages = 6; + repeated int64 inMemory_percentages = 6; } /* @@ -314,7 +364,7 @@ message DropPartitionRequest { // The collection name in milvus string collection_name = 3; // The partition name you want to drop - string partition_name = 4; + string partition_name = 4; } /* @@ -374,7 +424,7 @@ message GetPartitionStatisticsRequest { // The collection name in milvus string collection_name = 3; // The partition name you want to collect statistics - string partition_name = 4; + string partition_name = 4; } message GetPartitionStatisticsResponse { @@ -449,7 +499,7 @@ message ShowSegmentsResponse { */ message CreateIndexRequest { // Not useful for now - common.MsgBase base = 1; + common.MsgBase base = 1; // Not useful for now string db_name = 2; // The particular collection name you want to create index. @@ -463,7 +513,7 @@ message CreateIndexRequest { } /* -* Get created index information. +* Get created index information. * Current release of Milvus only supports showing latest built index. */ message DescribeIndexRequest { @@ -476,7 +526,7 @@ message DescribeIndexRequest { // The vector field name in this particular collection string field_name = 4; // No need to set up for now @2021.06.30 - string index_name = 5; + string index_name = 5; } /* @@ -504,7 +554,7 @@ message DescribeIndexResponse { } /* -* Get index building progress +* Get index building progress */ message GetIndexBuildProgressRequest { // Not useful for now @@ -647,7 +697,7 @@ message VectorsArray { oneof array { VectorIDs id_array = 1; // vector ids schema.VectorField data_array = 2; // vectors data - } + } } message CalcDistanceRequest { @@ -802,16 +852,16 @@ message ImportRequest { repeated string files = 5; // file paths to be imported repeated common.KeyValuePair options = 6; // import options, bucket, etc. } - + message ImportResponse { common.Status status = 1; repeated int64 tasks = 2; // id array of import tasks } - + message GetImportStateRequest { int64 task = 1; // id of an import task } - + message GetImportStateResponse { common.Status status = 1; common.ImportState state = 2; // is this import task finished or not @@ -912,3 +962,178 @@ message ListCredUsersRequest { common.MsgBase base = 1; } +// https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control +message RoleEntity { + string name = 1; +} + +message UserEntity { + string name = 1; +} + +message CreateRoleRequest { + // Not useful for now + common.MsgBase base = 1; + // role + RoleEntity entity = 2; +} + +message DropRoleRequest { + // Not useful for now + common.MsgBase base = 1; + // role name + string role_name = 2; +} + +enum OperateUserRoleType { + AddUserToRole = 0; + RemoveUserFromRole = 1; +} + +message OperateUserRoleRequest { + // Not useful for now + common.MsgBase base = 1; + // username + string username = 2; + // role name + string role_name = 3; + // operation type + OperateUserRoleType type = 4; +} + +message SelectRoleRequest { + // Not useful for now + common.MsgBase base = 1; + // role + RoleEntity role = 2; + // include user info + bool include_user_info = 3; +} + +message RoleResult { + RoleEntity role = 1; + repeated UserEntity users = 2; +} + +message SelectRoleResponse { + // Not useful for now + common.Status status = 1; + // role result array + repeated RoleResult results = 2; +} + +message SelectUserRequest { + // Not useful for now + common.MsgBase base = 1; + // user + UserEntity user = 2; + // include user info + bool include_role_info = 3; +} + +message UserResult { + UserEntity user = 1; + repeated RoleEntity roles = 2; +} + +message SelectUserResponse { + // Not useful for now + common.Status status = 1; + // user result array + repeated UserResult result = 2; +} + +message ResourceEntity { + string type = 1; +} + +message PrivilegeEntity { + string name = 1; +} + +message SelectResourceRequest { + // Not useful for now + common.MsgBase base = 1; + // resource + ResourceEntity entity = 2; + // include privilege info + bool include_privilege_info = 3; +} + +message ResourceResult { + ResourceEntity resource = 1; + repeated PrivilegeEntity privileges = 2; +} + +message SelectResourceResponse { + // Not useful for now + common.Status status = 1; + // resource result array + repeated ResourceResult results = 2; +} + +message PrincipalEntity { + // principal type, including user, role + string principal_type = 1; + // principal, including user entity or role entity + oneof principal { + UserEntity user = 2; + RoleEntity role = 3; + } +} + +message GrantorEntity { + UserEntity user = 1; + PrivilegeEntity privilege = 2; +} + +message GrantEntity { + // principal + PrincipalEntity principal = 1; + // resource + ResourceEntity resource = 2; + // resource name + string resource_name = 3; + // privilege + GrantorEntity grantor = 4; +} + +message SelectGrantRequest { + // Not useful for now + common.MsgBase base = 1; + // grant + GrantEntity entity = 2; +} + +message SelectGrantResponse { + // Not useful for now + common.Status status = 1; + // grant info array + repeated GrantEntity entities = 2; +} + +enum OperatePrivilegeType { + Grant = 0; + Revoke = 1; +} + +message OperatePrivilegeRequest { + // Not useful for now + common.MsgBase base = 1; + // grant + GrantEntity entity = 2; + // operation type + OperatePrivilegeType type = 3; +} + +message MilvusExt { + string version = 1; +} + +extend google.protobuf.FileOptions { + MilvusExt milvus_ext_obj = 1001; +} + +option (milvus_ext_obj) = { + version: "2.1.0" +}; \ No newline at end of file diff --git a/internal/proto/milvuspb/milvus.pb.go b/internal/proto/milvuspb/milvus.pb.go index a6681ff479..97ea840186 100644 --- a/internal/proto/milvuspb/milvus.pb.go +++ b/internal/proto/milvuspb/milvus.pb.go @@ -7,6 +7,7 @@ import ( context "context" fmt "fmt" proto "github.com/golang/protobuf/proto" + descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" commonpb "github.com/milvus-io/milvus/internal/proto/commonpb" schemapb "github.com/milvus-io/milvus/internal/proto/schemapb" grpc "google.golang.org/grpc" @@ -55,6 +56,56 @@ func (ShowType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_02345ba45cc0e303, []int{0} } +type OperateUserRoleType int32 + +const ( + OperateUserRoleType_AddUserToRole OperateUserRoleType = 0 + OperateUserRoleType_RemoveUserFromRole OperateUserRoleType = 1 +) + +var OperateUserRoleType_name = map[int32]string{ + 0: "AddUserToRole", + 1: "RemoveUserFromRole", +} + +var OperateUserRoleType_value = map[string]int32{ + "AddUserToRole": 0, + "RemoveUserFromRole": 1, +} + +func (x OperateUserRoleType) String() string { + return proto.EnumName(OperateUserRoleType_name, int32(x)) +} + +func (OperateUserRoleType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{1} +} + +type OperatePrivilegeType int32 + +const ( + OperatePrivilegeType_Grant OperatePrivilegeType = 0 + OperatePrivilegeType_Revoke OperatePrivilegeType = 1 +) + +var OperatePrivilegeType_name = map[int32]string{ + 0: "Grant", + 1: "Revoke", +} + +var OperatePrivilegeType_value = map[string]int32{ + "Grant": 0, + "Revoke": 1, +} + +func (x OperatePrivilegeType) String() string { + return proto.EnumName(OperatePrivilegeType_name, int32(x)) +} + +func (OperatePrivilegeType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{2} +} + type CreateAliasRequest struct { Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` @@ -5749,8 +5800,1203 @@ func (m *ListCredUsersRequest) GetBase() *commonpb.MsgBase { return nil } +// https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control +type RoleEntity struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RoleEntity) Reset() { *m = RoleEntity{} } +func (m *RoleEntity) String() string { return proto.CompactTextString(m) } +func (*RoleEntity) ProtoMessage() {} +func (*RoleEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{89} +} + +func (m *RoleEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RoleEntity.Unmarshal(m, b) +} +func (m *RoleEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RoleEntity.Marshal(b, m, deterministic) +} +func (m *RoleEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoleEntity.Merge(m, src) +} +func (m *RoleEntity) XXX_Size() int { + return xxx_messageInfo_RoleEntity.Size(m) +} +func (m *RoleEntity) XXX_DiscardUnknown() { + xxx_messageInfo_RoleEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_RoleEntity proto.InternalMessageInfo + +func (m *RoleEntity) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +type UserEntity struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UserEntity) Reset() { *m = UserEntity{} } +func (m *UserEntity) String() string { return proto.CompactTextString(m) } +func (*UserEntity) ProtoMessage() {} +func (*UserEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{90} +} + +func (m *UserEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserEntity.Unmarshal(m, b) +} +func (m *UserEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserEntity.Marshal(b, m, deterministic) +} +func (m *UserEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserEntity.Merge(m, src) +} +func (m *UserEntity) XXX_Size() int { + return xxx_messageInfo_UserEntity.Size(m) +} +func (m *UserEntity) XXX_DiscardUnknown() { + xxx_messageInfo_UserEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_UserEntity proto.InternalMessageInfo + +func (m *UserEntity) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +type CreateRoleRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // role + Entity *RoleEntity `protobuf:"bytes,2,opt,name=entity,proto3" json:"entity,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateRoleRequest) Reset() { *m = CreateRoleRequest{} } +func (m *CreateRoleRequest) String() string { return proto.CompactTextString(m) } +func (*CreateRoleRequest) ProtoMessage() {} +func (*CreateRoleRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{91} +} + +func (m *CreateRoleRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateRoleRequest.Unmarshal(m, b) +} +func (m *CreateRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateRoleRequest.Marshal(b, m, deterministic) +} +func (m *CreateRoleRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateRoleRequest.Merge(m, src) +} +func (m *CreateRoleRequest) XXX_Size() int { + return xxx_messageInfo_CreateRoleRequest.Size(m) +} +func (m *CreateRoleRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateRoleRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateRoleRequest proto.InternalMessageInfo + +func (m *CreateRoleRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *CreateRoleRequest) GetEntity() *RoleEntity { + if m != nil { + return m.Entity + } + return nil +} + +type DropRoleRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // role name + RoleName string `protobuf:"bytes,2,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DropRoleRequest) Reset() { *m = DropRoleRequest{} } +func (m *DropRoleRequest) String() string { return proto.CompactTextString(m) } +func (*DropRoleRequest) ProtoMessage() {} +func (*DropRoleRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{92} +} + +func (m *DropRoleRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DropRoleRequest.Unmarshal(m, b) +} +func (m *DropRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DropRoleRequest.Marshal(b, m, deterministic) +} +func (m *DropRoleRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DropRoleRequest.Merge(m, src) +} +func (m *DropRoleRequest) XXX_Size() int { + return xxx_messageInfo_DropRoleRequest.Size(m) +} +func (m *DropRoleRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DropRoleRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DropRoleRequest proto.InternalMessageInfo + +func (m *DropRoleRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *DropRoleRequest) GetRoleName() string { + if m != nil { + return m.RoleName + } + return "" +} + +type OperateUserRoleRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // username + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + // role name + RoleName string `protobuf:"bytes,3,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + // operation type + Type OperateUserRoleType `protobuf:"varint,4,opt,name=type,proto3,enum=milvus.proto.milvus.OperateUserRoleType" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OperateUserRoleRequest) Reset() { *m = OperateUserRoleRequest{} } +func (m *OperateUserRoleRequest) String() string { return proto.CompactTextString(m) } +func (*OperateUserRoleRequest) ProtoMessage() {} +func (*OperateUserRoleRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{93} +} + +func (m *OperateUserRoleRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OperateUserRoleRequest.Unmarshal(m, b) +} +func (m *OperateUserRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OperateUserRoleRequest.Marshal(b, m, deterministic) +} +func (m *OperateUserRoleRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_OperateUserRoleRequest.Merge(m, src) +} +func (m *OperateUserRoleRequest) XXX_Size() int { + return xxx_messageInfo_OperateUserRoleRequest.Size(m) +} +func (m *OperateUserRoleRequest) XXX_DiscardUnknown() { + xxx_messageInfo_OperateUserRoleRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_OperateUserRoleRequest proto.InternalMessageInfo + +func (m *OperateUserRoleRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *OperateUserRoleRequest) GetUsername() string { + if m != nil { + return m.Username + } + return "" +} + +func (m *OperateUserRoleRequest) GetRoleName() string { + if m != nil { + return m.RoleName + } + return "" +} + +func (m *OperateUserRoleRequest) GetType() OperateUserRoleType { + if m != nil { + return m.Type + } + return OperateUserRoleType_AddUserToRole +} + +type SelectRoleRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // role + Role *RoleEntity `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + // include user info + IncludeUserInfo bool `protobuf:"varint,3,opt,name=include_user_info,json=includeUserInfo,proto3" json:"include_user_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectRoleRequest) Reset() { *m = SelectRoleRequest{} } +func (m *SelectRoleRequest) String() string { return proto.CompactTextString(m) } +func (*SelectRoleRequest) ProtoMessage() {} +func (*SelectRoleRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{94} +} + +func (m *SelectRoleRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectRoleRequest.Unmarshal(m, b) +} +func (m *SelectRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectRoleRequest.Marshal(b, m, deterministic) +} +func (m *SelectRoleRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectRoleRequest.Merge(m, src) +} +func (m *SelectRoleRequest) XXX_Size() int { + return xxx_messageInfo_SelectRoleRequest.Size(m) +} +func (m *SelectRoleRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SelectRoleRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectRoleRequest proto.InternalMessageInfo + +func (m *SelectRoleRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *SelectRoleRequest) GetRole() *RoleEntity { + if m != nil { + return m.Role + } + return nil +} + +func (m *SelectRoleRequest) GetIncludeUserInfo() bool { + if m != nil { + return m.IncludeUserInfo + } + return false +} + +type RoleResult struct { + Role *RoleEntity `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Users []*UserEntity `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RoleResult) Reset() { *m = RoleResult{} } +func (m *RoleResult) String() string { return proto.CompactTextString(m) } +func (*RoleResult) ProtoMessage() {} +func (*RoleResult) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{95} +} + +func (m *RoleResult) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RoleResult.Unmarshal(m, b) +} +func (m *RoleResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RoleResult.Marshal(b, m, deterministic) +} +func (m *RoleResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoleResult.Merge(m, src) +} +func (m *RoleResult) XXX_Size() int { + return xxx_messageInfo_RoleResult.Size(m) +} +func (m *RoleResult) XXX_DiscardUnknown() { + xxx_messageInfo_RoleResult.DiscardUnknown(m) +} + +var xxx_messageInfo_RoleResult proto.InternalMessageInfo + +func (m *RoleResult) GetRole() *RoleEntity { + if m != nil { + return m.Role + } + return nil +} + +func (m *RoleResult) GetUsers() []*UserEntity { + if m != nil { + return m.Users + } + return nil +} + +type SelectRoleResponse struct { + // Not useful for now + Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // role result array + Results []*RoleResult `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectRoleResponse) Reset() { *m = SelectRoleResponse{} } +func (m *SelectRoleResponse) String() string { return proto.CompactTextString(m) } +func (*SelectRoleResponse) ProtoMessage() {} +func (*SelectRoleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{96} +} + +func (m *SelectRoleResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectRoleResponse.Unmarshal(m, b) +} +func (m *SelectRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectRoleResponse.Marshal(b, m, deterministic) +} +func (m *SelectRoleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectRoleResponse.Merge(m, src) +} +func (m *SelectRoleResponse) XXX_Size() int { + return xxx_messageInfo_SelectRoleResponse.Size(m) +} +func (m *SelectRoleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SelectRoleResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectRoleResponse proto.InternalMessageInfo + +func (m *SelectRoleResponse) GetStatus() *commonpb.Status { + if m != nil { + return m.Status + } + return nil +} + +func (m *SelectRoleResponse) GetResults() []*RoleResult { + if m != nil { + return m.Results + } + return nil +} + +type SelectUserRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // user + User *UserEntity `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` + // include user info + IncludeRoleInfo bool `protobuf:"varint,3,opt,name=include_role_info,json=includeRoleInfo,proto3" json:"include_role_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectUserRequest) Reset() { *m = SelectUserRequest{} } +func (m *SelectUserRequest) String() string { return proto.CompactTextString(m) } +func (*SelectUserRequest) ProtoMessage() {} +func (*SelectUserRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{97} +} + +func (m *SelectUserRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectUserRequest.Unmarshal(m, b) +} +func (m *SelectUserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectUserRequest.Marshal(b, m, deterministic) +} +func (m *SelectUserRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectUserRequest.Merge(m, src) +} +func (m *SelectUserRequest) XXX_Size() int { + return xxx_messageInfo_SelectUserRequest.Size(m) +} +func (m *SelectUserRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SelectUserRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectUserRequest proto.InternalMessageInfo + +func (m *SelectUserRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *SelectUserRequest) GetUser() *UserEntity { + if m != nil { + return m.User + } + return nil +} + +func (m *SelectUserRequest) GetIncludeRoleInfo() bool { + if m != nil { + return m.IncludeRoleInfo + } + return false +} + +type UserResult struct { + User *UserEntity `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Roles []*RoleEntity `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UserResult) Reset() { *m = UserResult{} } +func (m *UserResult) String() string { return proto.CompactTextString(m) } +func (*UserResult) ProtoMessage() {} +func (*UserResult) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{98} +} + +func (m *UserResult) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserResult.Unmarshal(m, b) +} +func (m *UserResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserResult.Marshal(b, m, deterministic) +} +func (m *UserResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserResult.Merge(m, src) +} +func (m *UserResult) XXX_Size() int { + return xxx_messageInfo_UserResult.Size(m) +} +func (m *UserResult) XXX_DiscardUnknown() { + xxx_messageInfo_UserResult.DiscardUnknown(m) +} + +var xxx_messageInfo_UserResult proto.InternalMessageInfo + +func (m *UserResult) GetUser() *UserEntity { + if m != nil { + return m.User + } + return nil +} + +func (m *UserResult) GetRoles() []*RoleEntity { + if m != nil { + return m.Roles + } + return nil +} + +type SelectUserResponse struct { + // Not useful for now + Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // user result array + Result []*UserResult `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectUserResponse) Reset() { *m = SelectUserResponse{} } +func (m *SelectUserResponse) String() string { return proto.CompactTextString(m) } +func (*SelectUserResponse) ProtoMessage() {} +func (*SelectUserResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{99} +} + +func (m *SelectUserResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectUserResponse.Unmarshal(m, b) +} +func (m *SelectUserResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectUserResponse.Marshal(b, m, deterministic) +} +func (m *SelectUserResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectUserResponse.Merge(m, src) +} +func (m *SelectUserResponse) XXX_Size() int { + return xxx_messageInfo_SelectUserResponse.Size(m) +} +func (m *SelectUserResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SelectUserResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectUserResponse proto.InternalMessageInfo + +func (m *SelectUserResponse) GetStatus() *commonpb.Status { + if m != nil { + return m.Status + } + return nil +} + +func (m *SelectUserResponse) GetResult() []*UserResult { + if m != nil { + return m.Result + } + return nil +} + +type ResourceEntity struct { + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ResourceEntity) Reset() { *m = ResourceEntity{} } +func (m *ResourceEntity) String() string { return proto.CompactTextString(m) } +func (*ResourceEntity) ProtoMessage() {} +func (*ResourceEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{100} +} + +func (m *ResourceEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ResourceEntity.Unmarshal(m, b) +} +func (m *ResourceEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ResourceEntity.Marshal(b, m, deterministic) +} +func (m *ResourceEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResourceEntity.Merge(m, src) +} +func (m *ResourceEntity) XXX_Size() int { + return xxx_messageInfo_ResourceEntity.Size(m) +} +func (m *ResourceEntity) XXX_DiscardUnknown() { + xxx_messageInfo_ResourceEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_ResourceEntity proto.InternalMessageInfo + +func (m *ResourceEntity) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +type PrivilegeEntity struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PrivilegeEntity) Reset() { *m = PrivilegeEntity{} } +func (m *PrivilegeEntity) String() string { return proto.CompactTextString(m) } +func (*PrivilegeEntity) ProtoMessage() {} +func (*PrivilegeEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{101} +} + +func (m *PrivilegeEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PrivilegeEntity.Unmarshal(m, b) +} +func (m *PrivilegeEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PrivilegeEntity.Marshal(b, m, deterministic) +} +func (m *PrivilegeEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrivilegeEntity.Merge(m, src) +} +func (m *PrivilegeEntity) XXX_Size() int { + return xxx_messageInfo_PrivilegeEntity.Size(m) +} +func (m *PrivilegeEntity) XXX_DiscardUnknown() { + xxx_messageInfo_PrivilegeEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_PrivilegeEntity proto.InternalMessageInfo + +func (m *PrivilegeEntity) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +type SelectResourceRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // resource + Entity *ResourceEntity `protobuf:"bytes,2,opt,name=entity,proto3" json:"entity,omitempty"` + // include privilege info + IncludePrivilegeInfo bool `protobuf:"varint,3,opt,name=include_privilege_info,json=includePrivilegeInfo,proto3" json:"include_privilege_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectResourceRequest) Reset() { *m = SelectResourceRequest{} } +func (m *SelectResourceRequest) String() string { return proto.CompactTextString(m) } +func (*SelectResourceRequest) ProtoMessage() {} +func (*SelectResourceRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{102} +} + +func (m *SelectResourceRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectResourceRequest.Unmarshal(m, b) +} +func (m *SelectResourceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectResourceRequest.Marshal(b, m, deterministic) +} +func (m *SelectResourceRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectResourceRequest.Merge(m, src) +} +func (m *SelectResourceRequest) XXX_Size() int { + return xxx_messageInfo_SelectResourceRequest.Size(m) +} +func (m *SelectResourceRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SelectResourceRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectResourceRequest proto.InternalMessageInfo + +func (m *SelectResourceRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *SelectResourceRequest) GetEntity() *ResourceEntity { + if m != nil { + return m.Entity + } + return nil +} + +func (m *SelectResourceRequest) GetIncludePrivilegeInfo() bool { + if m != nil { + return m.IncludePrivilegeInfo + } + return false +} + +type ResourceResult struct { + Resource *ResourceEntity `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` + Privileges []*PrivilegeEntity `protobuf:"bytes,2,rep,name=privileges,proto3" json:"privileges,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ResourceResult) Reset() { *m = ResourceResult{} } +func (m *ResourceResult) String() string { return proto.CompactTextString(m) } +func (*ResourceResult) ProtoMessage() {} +func (*ResourceResult) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{103} +} + +func (m *ResourceResult) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ResourceResult.Unmarshal(m, b) +} +func (m *ResourceResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ResourceResult.Marshal(b, m, deterministic) +} +func (m *ResourceResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResourceResult.Merge(m, src) +} +func (m *ResourceResult) XXX_Size() int { + return xxx_messageInfo_ResourceResult.Size(m) +} +func (m *ResourceResult) XXX_DiscardUnknown() { + xxx_messageInfo_ResourceResult.DiscardUnknown(m) +} + +var xxx_messageInfo_ResourceResult proto.InternalMessageInfo + +func (m *ResourceResult) GetResource() *ResourceEntity { + if m != nil { + return m.Resource + } + return nil +} + +func (m *ResourceResult) GetPrivileges() []*PrivilegeEntity { + if m != nil { + return m.Privileges + } + return nil +} + +type SelectResourceResponse struct { + // Not useful for now + Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // resource result array + Results []*ResourceResult `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectResourceResponse) Reset() { *m = SelectResourceResponse{} } +func (m *SelectResourceResponse) String() string { return proto.CompactTextString(m) } +func (*SelectResourceResponse) ProtoMessage() {} +func (*SelectResourceResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{104} +} + +func (m *SelectResourceResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectResourceResponse.Unmarshal(m, b) +} +func (m *SelectResourceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectResourceResponse.Marshal(b, m, deterministic) +} +func (m *SelectResourceResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectResourceResponse.Merge(m, src) +} +func (m *SelectResourceResponse) XXX_Size() int { + return xxx_messageInfo_SelectResourceResponse.Size(m) +} +func (m *SelectResourceResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SelectResourceResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectResourceResponse proto.InternalMessageInfo + +func (m *SelectResourceResponse) GetStatus() *commonpb.Status { + if m != nil { + return m.Status + } + return nil +} + +func (m *SelectResourceResponse) GetResults() []*ResourceResult { + if m != nil { + return m.Results + } + return nil +} + +type PrincipalEntity struct { + // principal type, including user, role + PrincipalType string `protobuf:"bytes,1,opt,name=principal_type,json=principalType,proto3" json:"principal_type,omitempty"` + // principal, including user entity or role entity + // + // Types that are valid to be assigned to Principal: + // *PrincipalEntity_User + // *PrincipalEntity_Role + Principal isPrincipalEntity_Principal `protobuf_oneof:"principal"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PrincipalEntity) Reset() { *m = PrincipalEntity{} } +func (m *PrincipalEntity) String() string { return proto.CompactTextString(m) } +func (*PrincipalEntity) ProtoMessage() {} +func (*PrincipalEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{105} +} + +func (m *PrincipalEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PrincipalEntity.Unmarshal(m, b) +} +func (m *PrincipalEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PrincipalEntity.Marshal(b, m, deterministic) +} +func (m *PrincipalEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrincipalEntity.Merge(m, src) +} +func (m *PrincipalEntity) XXX_Size() int { + return xxx_messageInfo_PrincipalEntity.Size(m) +} +func (m *PrincipalEntity) XXX_DiscardUnknown() { + xxx_messageInfo_PrincipalEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_PrincipalEntity proto.InternalMessageInfo + +func (m *PrincipalEntity) GetPrincipalType() string { + if m != nil { + return m.PrincipalType + } + return "" +} + +type isPrincipalEntity_Principal interface { + isPrincipalEntity_Principal() +} + +type PrincipalEntity_User struct { + User *UserEntity `protobuf:"bytes,2,opt,name=user,proto3,oneof"` +} + +type PrincipalEntity_Role struct { + Role *RoleEntity `protobuf:"bytes,3,opt,name=role,proto3,oneof"` +} + +func (*PrincipalEntity_User) isPrincipalEntity_Principal() {} + +func (*PrincipalEntity_Role) isPrincipalEntity_Principal() {} + +func (m *PrincipalEntity) GetPrincipal() isPrincipalEntity_Principal { + if m != nil { + return m.Principal + } + return nil +} + +func (m *PrincipalEntity) GetUser() *UserEntity { + if x, ok := m.GetPrincipal().(*PrincipalEntity_User); ok { + return x.User + } + return nil +} + +func (m *PrincipalEntity) GetRole() *RoleEntity { + if x, ok := m.GetPrincipal().(*PrincipalEntity_Role); ok { + return x.Role + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*PrincipalEntity) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*PrincipalEntity_User)(nil), + (*PrincipalEntity_Role)(nil), + } +} + +type GrantorEntity struct { + User *UserEntity `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Privilege *PrivilegeEntity `protobuf:"bytes,2,opt,name=privilege,proto3" json:"privilege,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GrantorEntity) Reset() { *m = GrantorEntity{} } +func (m *GrantorEntity) String() string { return proto.CompactTextString(m) } +func (*GrantorEntity) ProtoMessage() {} +func (*GrantorEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{106} +} + +func (m *GrantorEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GrantorEntity.Unmarshal(m, b) +} +func (m *GrantorEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GrantorEntity.Marshal(b, m, deterministic) +} +func (m *GrantorEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_GrantorEntity.Merge(m, src) +} +func (m *GrantorEntity) XXX_Size() int { + return xxx_messageInfo_GrantorEntity.Size(m) +} +func (m *GrantorEntity) XXX_DiscardUnknown() { + xxx_messageInfo_GrantorEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_GrantorEntity proto.InternalMessageInfo + +func (m *GrantorEntity) GetUser() *UserEntity { + if m != nil { + return m.User + } + return nil +} + +func (m *GrantorEntity) GetPrivilege() *PrivilegeEntity { + if m != nil { + return m.Privilege + } + return nil +} + +type GrantEntity struct { + // principal + Principal *PrincipalEntity `protobuf:"bytes,1,opt,name=principal,proto3" json:"principal,omitempty"` + // resource + Resource *ResourceEntity `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"` + // resource name + ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + // privilege + Grantor *GrantorEntity `protobuf:"bytes,4,opt,name=grantor,proto3" json:"grantor,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GrantEntity) Reset() { *m = GrantEntity{} } +func (m *GrantEntity) String() string { return proto.CompactTextString(m) } +func (*GrantEntity) ProtoMessage() {} +func (*GrantEntity) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{107} +} + +func (m *GrantEntity) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GrantEntity.Unmarshal(m, b) +} +func (m *GrantEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GrantEntity.Marshal(b, m, deterministic) +} +func (m *GrantEntity) XXX_Merge(src proto.Message) { + xxx_messageInfo_GrantEntity.Merge(m, src) +} +func (m *GrantEntity) XXX_Size() int { + return xxx_messageInfo_GrantEntity.Size(m) +} +func (m *GrantEntity) XXX_DiscardUnknown() { + xxx_messageInfo_GrantEntity.DiscardUnknown(m) +} + +var xxx_messageInfo_GrantEntity proto.InternalMessageInfo + +func (m *GrantEntity) GetPrincipal() *PrincipalEntity { + if m != nil { + return m.Principal + } + return nil +} + +func (m *GrantEntity) GetResource() *ResourceEntity { + if m != nil { + return m.Resource + } + return nil +} + +func (m *GrantEntity) GetResourceName() string { + if m != nil { + return m.ResourceName + } + return "" +} + +func (m *GrantEntity) GetGrantor() *GrantorEntity { + if m != nil { + return m.Grantor + } + return nil +} + +type SelectGrantRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // grant + Entity *GrantEntity `protobuf:"bytes,2,opt,name=entity,proto3" json:"entity,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectGrantRequest) Reset() { *m = SelectGrantRequest{} } +func (m *SelectGrantRequest) String() string { return proto.CompactTextString(m) } +func (*SelectGrantRequest) ProtoMessage() {} +func (*SelectGrantRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{108} +} + +func (m *SelectGrantRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectGrantRequest.Unmarshal(m, b) +} +func (m *SelectGrantRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectGrantRequest.Marshal(b, m, deterministic) +} +func (m *SelectGrantRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectGrantRequest.Merge(m, src) +} +func (m *SelectGrantRequest) XXX_Size() int { + return xxx_messageInfo_SelectGrantRequest.Size(m) +} +func (m *SelectGrantRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SelectGrantRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectGrantRequest proto.InternalMessageInfo + +func (m *SelectGrantRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *SelectGrantRequest) GetEntity() *GrantEntity { + if m != nil { + return m.Entity + } + return nil +} + +type SelectGrantResponse struct { + // Not useful for now + Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // grant info array + Entities []*GrantEntity `protobuf:"bytes,2,rep,name=entities,proto3" json:"entities,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SelectGrantResponse) Reset() { *m = SelectGrantResponse{} } +func (m *SelectGrantResponse) String() string { return proto.CompactTextString(m) } +func (*SelectGrantResponse) ProtoMessage() {} +func (*SelectGrantResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{109} +} + +func (m *SelectGrantResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SelectGrantResponse.Unmarshal(m, b) +} +func (m *SelectGrantResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SelectGrantResponse.Marshal(b, m, deterministic) +} +func (m *SelectGrantResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SelectGrantResponse.Merge(m, src) +} +func (m *SelectGrantResponse) XXX_Size() int { + return xxx_messageInfo_SelectGrantResponse.Size(m) +} +func (m *SelectGrantResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SelectGrantResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SelectGrantResponse proto.InternalMessageInfo + +func (m *SelectGrantResponse) GetStatus() *commonpb.Status { + if m != nil { + return m.Status + } + return nil +} + +func (m *SelectGrantResponse) GetEntities() []*GrantEntity { + if m != nil { + return m.Entities + } + return nil +} + +type OperatePrivilegeRequest struct { + // Not useful for now + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + // grant + Entity *GrantEntity `protobuf:"bytes,2,opt,name=entity,proto3" json:"entity,omitempty"` + // operation type + Type OperatePrivilegeType `protobuf:"varint,3,opt,name=type,proto3,enum=milvus.proto.milvus.OperatePrivilegeType" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OperatePrivilegeRequest) Reset() { *m = OperatePrivilegeRequest{} } +func (m *OperatePrivilegeRequest) String() string { return proto.CompactTextString(m) } +func (*OperatePrivilegeRequest) ProtoMessage() {} +func (*OperatePrivilegeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{110} +} + +func (m *OperatePrivilegeRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OperatePrivilegeRequest.Unmarshal(m, b) +} +func (m *OperatePrivilegeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OperatePrivilegeRequest.Marshal(b, m, deterministic) +} +func (m *OperatePrivilegeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_OperatePrivilegeRequest.Merge(m, src) +} +func (m *OperatePrivilegeRequest) XXX_Size() int { + return xxx_messageInfo_OperatePrivilegeRequest.Size(m) +} +func (m *OperatePrivilegeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_OperatePrivilegeRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_OperatePrivilegeRequest proto.InternalMessageInfo + +func (m *OperatePrivilegeRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *OperatePrivilegeRequest) GetEntity() *GrantEntity { + if m != nil { + return m.Entity + } + return nil +} + +func (m *OperatePrivilegeRequest) GetType() OperatePrivilegeType { + if m != nil { + return m.Type + } + return OperatePrivilegeType_Grant +} + +type MilvusExt struct { + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MilvusExt) Reset() { *m = MilvusExt{} } +func (m *MilvusExt) String() string { return proto.CompactTextString(m) } +func (*MilvusExt) ProtoMessage() {} +func (*MilvusExt) Descriptor() ([]byte, []int) { + return fileDescriptor_02345ba45cc0e303, []int{111} +} + +func (m *MilvusExt) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MilvusExt.Unmarshal(m, b) +} +func (m *MilvusExt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MilvusExt.Marshal(b, m, deterministic) +} +func (m *MilvusExt) XXX_Merge(src proto.Message) { + xxx_messageInfo_MilvusExt.Merge(m, src) +} +func (m *MilvusExt) XXX_Size() int { + return xxx_messageInfo_MilvusExt.Size(m) +} +func (m *MilvusExt) XXX_DiscardUnknown() { + xxx_messageInfo_MilvusExt.DiscardUnknown(m) +} + +var xxx_messageInfo_MilvusExt proto.InternalMessageInfo + +func (m *MilvusExt) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +var E_MilvusExtObj = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.FileOptions)(nil), + ExtensionType: (*MilvusExt)(nil), + Field: 1001, + Name: "milvus.proto.milvus.milvus_ext_obj", + Tag: "bytes,1001,opt,name=milvus_ext_obj", + Filename: "milvus.proto", +} + func init() { proto.RegisterEnum("milvus.proto.milvus.ShowType", ShowType_name, ShowType_value) + proto.RegisterEnum("milvus.proto.milvus.OperateUserRoleType", OperateUserRoleType_name, OperateUserRoleType_value) + proto.RegisterEnum("milvus.proto.milvus.OperatePrivilegeType", OperatePrivilegeType_name, OperatePrivilegeType_value) proto.RegisterType((*CreateAliasRequest)(nil), "milvus.proto.milvus.CreateAliasRequest") proto.RegisterType((*DropAliasRequest)(nil), "milvus.proto.milvus.DropAliasRequest") proto.RegisterType((*AlterAliasRequest)(nil), "milvus.proto.milvus.AlterAliasRequest") @@ -5841,280 +7087,360 @@ func init() { proto.RegisterType((*DeleteCredentialRequest)(nil), "milvus.proto.milvus.DeleteCredentialRequest") proto.RegisterType((*ListCredUsersResponse)(nil), "milvus.proto.milvus.ListCredUsersResponse") proto.RegisterType((*ListCredUsersRequest)(nil), "milvus.proto.milvus.ListCredUsersRequest") + proto.RegisterType((*RoleEntity)(nil), "milvus.proto.milvus.RoleEntity") + proto.RegisterType((*UserEntity)(nil), "milvus.proto.milvus.UserEntity") + proto.RegisterType((*CreateRoleRequest)(nil), "milvus.proto.milvus.CreateRoleRequest") + proto.RegisterType((*DropRoleRequest)(nil), "milvus.proto.milvus.DropRoleRequest") + proto.RegisterType((*OperateUserRoleRequest)(nil), "milvus.proto.milvus.OperateUserRoleRequest") + proto.RegisterType((*SelectRoleRequest)(nil), "milvus.proto.milvus.SelectRoleRequest") + proto.RegisterType((*RoleResult)(nil), "milvus.proto.milvus.RoleResult") + proto.RegisterType((*SelectRoleResponse)(nil), "milvus.proto.milvus.SelectRoleResponse") + proto.RegisterType((*SelectUserRequest)(nil), "milvus.proto.milvus.SelectUserRequest") + proto.RegisterType((*UserResult)(nil), "milvus.proto.milvus.UserResult") + proto.RegisterType((*SelectUserResponse)(nil), "milvus.proto.milvus.SelectUserResponse") + proto.RegisterType((*ResourceEntity)(nil), "milvus.proto.milvus.ResourceEntity") + proto.RegisterType((*PrivilegeEntity)(nil), "milvus.proto.milvus.PrivilegeEntity") + proto.RegisterType((*SelectResourceRequest)(nil), "milvus.proto.milvus.SelectResourceRequest") + proto.RegisterType((*ResourceResult)(nil), "milvus.proto.milvus.ResourceResult") + proto.RegisterType((*SelectResourceResponse)(nil), "milvus.proto.milvus.SelectResourceResponse") + proto.RegisterType((*PrincipalEntity)(nil), "milvus.proto.milvus.PrincipalEntity") + proto.RegisterType((*GrantorEntity)(nil), "milvus.proto.milvus.GrantorEntity") + proto.RegisterType((*GrantEntity)(nil), "milvus.proto.milvus.GrantEntity") + proto.RegisterType((*SelectGrantRequest)(nil), "milvus.proto.milvus.SelectGrantRequest") + proto.RegisterType((*SelectGrantResponse)(nil), "milvus.proto.milvus.SelectGrantResponse") + proto.RegisterType((*OperatePrivilegeRequest)(nil), "milvus.proto.milvus.OperatePrivilegeRequest") + proto.RegisterType((*MilvusExt)(nil), "milvus.proto.milvus.MilvusExt") + proto.RegisterExtension(E_MilvusExtObj) } func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) } var fileDescriptor_02345ba45cc0e303 = []byte{ - // 4284 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3c, 0x4d, 0x8f, 0x1c, 0xc7, - 0x75, 0xdb, 0x33, 0x3b, 0x5f, 0x6f, 0x3e, 0x76, 0x59, 0xfb, 0x35, 0x1a, 0x92, 0xe2, 0xb2, 0x65, - 0x4a, 0x2b, 0xd2, 0x22, 0xad, 0xa5, 0x2c, 0x39, 0x92, 0x03, 0x99, 0xe4, 0x46, 0xe4, 0x42, 0x24, - 0xb3, 0xea, 0x95, 0x6c, 0x38, 0x82, 0xd0, 0xa8, 0x9d, 0xae, 0x9d, 0xed, 0xb0, 0xa7, 0x7b, 0xd8, - 0x55, 0xc3, 0xe5, 0xea, 0x64, 0xc0, 0x41, 0x3e, 0x60, 0x45, 0x86, 0x11, 0x23, 0x89, 0x0f, 0x09, - 0x82, 0x7c, 0x00, 0xc9, 0x21, 0x41, 0xec, 0x1c, 0x12, 0xe4, 0x92, 0x1c, 0x72, 0xc8, 0x21, 0x40, - 0x9c, 0x5c, 0x82, 0xc0, 0x97, 0xfc, 0x85, 0x00, 0x3e, 0x26, 0x80, 0x51, 0x1f, 0xdd, 0xd3, 0xdd, - 0x53, 0x3d, 0x3b, 0xcb, 0x31, 0xcd, 0xe5, 0x6d, 0xfa, 0xd5, 0x7b, 0x55, 0xaf, 0x5e, 0xbd, 0x7a, - 0xf5, 0xea, 0xbd, 0x57, 0x03, 0x8d, 0xbe, 0xeb, 0x3d, 0x1a, 0xd2, 0xab, 0x83, 0x30, 0x60, 0x01, - 0x5a, 0x4a, 0x7e, 0x5d, 0x95, 0x1f, 0x9d, 0x46, 0x37, 0xe8, 0xf7, 0x03, 0x5f, 0x02, 0x3b, 0x0d, - 0xda, 0x3d, 0x20, 0x7d, 0x2c, 0xbf, 0xcc, 0x3f, 0x36, 0x00, 0xdd, 0x0a, 0x09, 0x66, 0xe4, 0x86, - 0xe7, 0x62, 0x6a, 0x91, 0x87, 0x43, 0x42, 0x19, 0xfa, 0x12, 0xcc, 0xef, 0x61, 0x4a, 0xda, 0xc6, - 0xba, 0xb1, 0x51, 0xdf, 0x3c, 0x77, 0x35, 0xd5, 0xad, 0xea, 0xee, 0x1e, 0xed, 0xdd, 0xc4, 0x94, - 0x58, 0x02, 0x13, 0xad, 0x41, 0xc5, 0xd9, 0xb3, 0x7d, 0xdc, 0x27, 0xed, 0xc2, 0xba, 0xb1, 0x51, - 0xb3, 0xca, 0xce, 0xde, 0x7d, 0xdc, 0x27, 0xe8, 0x15, 0x58, 0xe8, 0x06, 0x9e, 0x47, 0xba, 0xcc, - 0x0d, 0x7c, 0x89, 0x50, 0x14, 0x08, 0xad, 0x11, 0x58, 0x20, 0x2e, 0x43, 0x09, 0x73, 0x1e, 0xda, - 0xf3, 0xa2, 0x59, 0x7e, 0x98, 0x14, 0x16, 0xb7, 0xc2, 0x60, 0xf0, 0xb4, 0xb8, 0x8b, 0x07, 0x2d, - 0x26, 0x07, 0xfd, 0x23, 0x03, 0xce, 0xdc, 0xf0, 0x18, 0x09, 0x4f, 0xa9, 0x50, 0xfe, 0xb0, 0x00, - 0x6b, 0x72, 0xd5, 0x6e, 0xc5, 0xe8, 0xcf, 0x92, 0xcb, 0x55, 0x28, 0x4b, 0xad, 0x12, 0x6c, 0x36, - 0x2c, 0xf5, 0x85, 0xce, 0x03, 0xd0, 0x03, 0x1c, 0x3a, 0xd4, 0xf6, 0x87, 0xfd, 0x76, 0x69, 0xdd, - 0xd8, 0x28, 0x59, 0x35, 0x09, 0xb9, 0x3f, 0xec, 0x23, 0x0b, 0xce, 0x74, 0x03, 0x9f, 0xba, 0x94, - 0x11, 0xbf, 0x7b, 0x64, 0x7b, 0xe4, 0x11, 0xf1, 0xda, 0xe5, 0x75, 0x63, 0xa3, 0xb5, 0x79, 0x49, - 0xcb, 0xf7, 0xad, 0x11, 0xf6, 0x5d, 0x8e, 0x6c, 0x2d, 0x76, 0x33, 0x10, 0xf3, 0x3b, 0x06, 0xac, - 0x70, 0x85, 0x39, 0x15, 0x82, 0x31, 0xff, 0xca, 0x80, 0xe5, 0x3b, 0x98, 0x9e, 0x8e, 0x55, 0x3a, - 0x0f, 0xc0, 0xdc, 0x3e, 0xb1, 0x29, 0xc3, 0xfd, 0x81, 0x58, 0xa9, 0x79, 0xab, 0xc6, 0x21, 0xbb, - 0x1c, 0x60, 0x7e, 0x13, 0x1a, 0x37, 0x83, 0xc0, 0xb3, 0x08, 0x1d, 0x04, 0x3e, 0x25, 0xe8, 0x3a, - 0x94, 0x29, 0xc3, 0x6c, 0x48, 0x15, 0x93, 0x67, 0xb5, 0x4c, 0xee, 0x0a, 0x14, 0x4b, 0xa1, 0x72, - 0x7d, 0x7d, 0x84, 0xbd, 0xa1, 0xe4, 0xb1, 0x6a, 0xc9, 0x0f, 0xf3, 0x63, 0x68, 0xed, 0xb2, 0xd0, - 0xf5, 0x7b, 0x3f, 0xc7, 0xce, 0x6b, 0x51, 0xe7, 0xff, 0x69, 0xc0, 0x0b, 0x5b, 0x84, 0x76, 0x43, - 0x77, 0xef, 0x94, 0x6c, 0x07, 0x13, 0x1a, 0x23, 0xc8, 0xf6, 0x96, 0x10, 0x75, 0xd1, 0x4a, 0xc1, - 0x32, 0x8b, 0x51, 0xca, 0x2e, 0xc6, 0xb7, 0x4a, 0xd0, 0xd1, 0x4d, 0x6a, 0x16, 0xf1, 0xfd, 0x72, - 0xbc, 0x4b, 0x0b, 0x82, 0x28, 0xb3, 0xc7, 0xd4, 0xb9, 0x30, 0x1a, 0x6d, 0x57, 0x00, 0xe2, 0xcd, - 0x9c, 0x9d, 0x55, 0x51, 0x33, 0xab, 0x4d, 0x58, 0x79, 0xe4, 0x86, 0x6c, 0x88, 0x3d, 0xbb, 0x7b, - 0x80, 0x7d, 0x9f, 0x78, 0x42, 0x4e, 0xdc, 0x7c, 0x15, 0x37, 0x6a, 0xd6, 0x92, 0x6a, 0xbc, 0x25, - 0xdb, 0xb8, 0xb0, 0x28, 0x7a, 0x03, 0x56, 0x07, 0x07, 0x47, 0xd4, 0xed, 0x8e, 0x11, 0x95, 0x04, - 0xd1, 0x72, 0xd4, 0x9a, 0xa2, 0xba, 0x02, 0x67, 0xba, 0xc2, 0x02, 0x3a, 0x36, 0x97, 0x9a, 0x14, - 0x63, 0x59, 0x88, 0x71, 0x51, 0x35, 0x7c, 0x18, 0xc1, 0x39, 0x5b, 0x11, 0xf2, 0x90, 0x75, 0x13, - 0x04, 0x15, 0x41, 0xb0, 0xa4, 0x1a, 0x3f, 0x62, 0xdd, 0x11, 0x4d, 0xda, 0x76, 0x55, 0xb3, 0xb6, - 0xab, 0x0d, 0x15, 0x61, 0x8b, 0x09, 0x6d, 0xd7, 0x04, 0x9b, 0xd1, 0x27, 0xda, 0x86, 0x05, 0xca, - 0x70, 0xc8, 0xec, 0x41, 0x40, 0x5d, 0x2e, 0x17, 0xda, 0x86, 0xf5, 0xe2, 0x46, 0x7d, 0x73, 0x5d, - 0xbb, 0x48, 0xef, 0x93, 0xa3, 0x2d, 0xcc, 0xf0, 0x0e, 0x76, 0x43, 0xab, 0x25, 0x08, 0x77, 0x22, - 0x3a, 0xbd, 0x81, 0xac, 0xcf, 0x64, 0x20, 0x75, 0x5a, 0xdc, 0xd0, 0xda, 0xae, 0x1f, 0x19, 0xb0, - 0x72, 0x37, 0xc0, 0xce, 0xe9, 0xd8, 0x53, 0x97, 0xa0, 0x15, 0x92, 0x81, 0xe7, 0x76, 0x31, 0x5f, - 0x8f, 0x3d, 0x12, 0x8a, 0x5d, 0x55, 0xb2, 0x9a, 0x0a, 0x7a, 0x5f, 0x00, 0xcd, 0xcf, 0x0d, 0x68, - 0x5b, 0xc4, 0x23, 0x98, 0x9e, 0x0e, 0x5b, 0x60, 0x7e, 0xdf, 0x80, 0x17, 0x6f, 0x13, 0x96, 0xd8, - 0x55, 0x0c, 0x33, 0x97, 0x32, 0xb7, 0xfb, 0x2c, 0xfd, 0x0a, 0xf3, 0xbb, 0x06, 0x5c, 0xc8, 0x65, - 0x6b, 0x16, 0x23, 0xf3, 0x16, 0x94, 0xf8, 0x2f, 0xda, 0x2e, 0x08, 0x9d, 0xbf, 0x98, 0xa7, 0xf3, - 0x5f, 0xe7, 0xb6, 0x5b, 0x28, 0xbd, 0xc4, 0x37, 0xff, 0xc7, 0x80, 0xd5, 0xdd, 0x83, 0xe0, 0x70, - 0xc4, 0xd2, 0xd3, 0x10, 0x50, 0xda, 0xec, 0x16, 0x33, 0x66, 0x17, 0xbd, 0x0e, 0xf3, 0xec, 0x68, - 0x40, 0x84, 0x6e, 0xb5, 0x36, 0xcf, 0x5f, 0xd5, 0xb8, 0xd3, 0x57, 0x39, 0x93, 0x1f, 0x1e, 0x0d, - 0x88, 0x25, 0x50, 0xd1, 0xab, 0xb0, 0x98, 0x11, 0x79, 0x64, 0xb8, 0x16, 0xd2, 0x32, 0xa7, 0xe6, - 0x3f, 0x14, 0x60, 0x6d, 0x6c, 0x8a, 0xb3, 0x08, 0x5b, 0x37, 0x76, 0x41, 0x3b, 0x36, 0xdf, 0x3f, - 0x09, 0x54, 0xd7, 0xe1, 0x1e, 0x6f, 0x71, 0xa3, 0x68, 0x35, 0x13, 0xf6, 0xdb, 0xa1, 0xe8, 0x35, - 0x40, 0x63, 0x66, 0x55, 0x5a, 0xef, 0x79, 0xeb, 0x4c, 0xd6, 0xae, 0x0a, 0xdb, 0xad, 0x35, 0xac, - 0x52, 0x04, 0xf3, 0xd6, 0xb2, 0xc6, 0xb2, 0x52, 0xf4, 0x3a, 0x2c, 0xbb, 0xfe, 0x3d, 0xd2, 0x0f, - 0xc2, 0x23, 0x7b, 0x40, 0xc2, 0x2e, 0xf1, 0x19, 0xee, 0x11, 0xda, 0x2e, 0x0b, 0x8e, 0x96, 0xa2, - 0xb6, 0x9d, 0x51, 0x93, 0xf9, 0x77, 0x06, 0xac, 0x4a, 0x8f, 0x77, 0x07, 0x87, 0xcc, 0x3d, 0x05, - 0xd6, 0x68, 0x10, 0xf1, 0x21, 0xf1, 0xa4, 0x7f, 0xde, 0x8c, 0xa1, 0x62, 0x97, 0xfd, 0xd0, 0x80, - 0x65, 0xee, 0x8c, 0x3e, 0x4f, 0x3c, 0xff, 0xad, 0x01, 0x4b, 0x77, 0x30, 0x7d, 0x9e, 0x58, 0xfe, - 0x89, 0x3a, 0xa9, 0x62, 0x9e, 0x9f, 0xe9, 0x95, 0xed, 0x15, 0x58, 0x48, 0x33, 0x1d, 0x79, 0x3f, - 0xad, 0x14, 0xd7, 0x54, 0x73, 0xa4, 0x95, 0x74, 0x47, 0xda, 0xdf, 0x8f, 0x8e, 0xb4, 0xe7, 0x6b, - 0x82, 0xe6, 0x3f, 0x1a, 0x70, 0xfe, 0x36, 0x61, 0x31, 0xd7, 0xa7, 0xe2, 0xe8, 0x9b, 0x56, 0xa9, - 0x3e, 0x97, 0x07, 0xb7, 0x96, 0xf9, 0x67, 0x72, 0x40, 0x7e, 0xa7, 0x00, 0x2b, 0xfc, 0xf4, 0x38, - 0x1d, 0x4a, 0x30, 0xcd, 0x1d, 0x47, 0xa3, 0x28, 0x25, 0xed, 0x4e, 0x88, 0x8e, 0xdd, 0xf2, 0xd4, - 0xc7, 0xae, 0xf9, 0xa3, 0x82, 0x74, 0x17, 0x92, 0xd2, 0x98, 0x65, 0x59, 0x34, 0xbc, 0x16, 0xb4, - 0xbc, 0x9a, 0xd0, 0x88, 0x21, 0xdb, 0x5b, 0xd1, 0x31, 0x9a, 0x82, 0x9d, 0xda, 0x53, 0xf4, 0x33, - 0x03, 0x56, 0xa3, 0x5b, 0xe5, 0x2e, 0xe9, 0xf5, 0x89, 0xcf, 0x9e, 0x5c, 0x87, 0xb2, 0x1a, 0x50, - 0xd0, 0x68, 0xc0, 0x39, 0xa8, 0x51, 0x39, 0x4e, 0x7c, 0x61, 0x1c, 0x01, 0xcc, 0x7f, 0x32, 0x60, - 0x6d, 0x8c, 0x9d, 0x59, 0x16, 0xb1, 0x0d, 0x15, 0xd7, 0x77, 0xc8, 0xe3, 0x98, 0x9b, 0xe8, 0x93, - 0xb7, 0xec, 0x0d, 0x5d, 0xcf, 0x89, 0xd9, 0x88, 0x3e, 0xd1, 0x45, 0x68, 0x10, 0x1f, 0xef, 0x79, - 0xc4, 0x16, 0xb8, 0x42, 0x91, 0xab, 0x56, 0x5d, 0xc2, 0xb6, 0x39, 0x88, 0x13, 0xef, 0xbb, 0x44, - 0x10, 0x97, 0x24, 0xb1, 0xfa, 0x34, 0x7f, 0xd7, 0x80, 0x25, 0xae, 0x85, 0x8a, 0x7b, 0xfa, 0x74, - 0xa5, 0xb9, 0x0e, 0xf5, 0x84, 0x9a, 0xa9, 0x89, 0x24, 0x41, 0xe6, 0x03, 0x58, 0x4e, 0xb3, 0x33, - 0x8b, 0x34, 0x5f, 0x04, 0x88, 0xd7, 0x4a, 0xee, 0x86, 0xa2, 0x95, 0x80, 0x98, 0x9f, 0x15, 0xa2, - 0xd8, 0xb1, 0x10, 0xd3, 0x33, 0x0e, 0x6d, 0x89, 0x25, 0x49, 0xda, 0xf3, 0x9a, 0x80, 0x88, 0xe6, - 0x2d, 0x68, 0x90, 0xc7, 0x2c, 0xc4, 0xf6, 0x00, 0x87, 0xb8, 0x2f, 0xb7, 0xd5, 0x54, 0xa6, 0xb7, - 0x2e, 0xc8, 0x76, 0x04, 0x15, 0x1f, 0x44, 0xa8, 0x88, 0x1c, 0xa4, 0x2c, 0x07, 0x11, 0x10, 0x71, - 0x60, 0xfc, 0x2b, 0x77, 0xf6, 0x94, 0x36, 0x9f, 0x76, 0x81, 0xa4, 0xa7, 0x52, 0xca, 0x4e, 0xe5, - 0x2f, 0x0c, 0x58, 0x14, 0x53, 0x90, 0xf3, 0x19, 0xf0, 0x6e, 0x33, 0x34, 0x46, 0x86, 0x66, 0xc2, - 0xde, 0xfb, 0x25, 0x28, 0x2b, 0xb9, 0x17, 0xa7, 0x95, 0xbb, 0x22, 0x38, 0x66, 0x1a, 0xe6, 0x9f, - 0x1a, 0xb0, 0x92, 0x11, 0xf9, 0x2c, 0x0a, 0xff, 0x21, 0x20, 0x39, 0x43, 0x67, 0x34, 0xed, 0xe8, - 0x9c, 0xbe, 0xa4, 0x3d, 0x94, 0xb2, 0x42, 0xb2, 0xce, 0xb8, 0x19, 0x08, 0x35, 0x7f, 0x6c, 0xc0, - 0xb9, 0xdb, 0x84, 0x09, 0xd4, 0x9b, 0xdc, 0xe8, 0xec, 0x84, 0x41, 0x2f, 0x24, 0x94, 0x3e, 0xbf, - 0xfa, 0xf1, 0xfb, 0xd2, 0xb1, 0xd3, 0x4d, 0x69, 0x16, 0xf9, 0x5f, 0x84, 0x86, 0x18, 0x83, 0x38, - 0x76, 0x18, 0x1c, 0x52, 0xa5, 0x47, 0x75, 0x05, 0xb3, 0x82, 0x43, 0xa1, 0x10, 0x2c, 0x60, 0xd8, - 0x93, 0x08, 0xea, 0x44, 0x11, 0x10, 0xde, 0x2c, 0xf6, 0x60, 0xc4, 0x18, 0xef, 0x9c, 0x3c, 0xbf, - 0x32, 0xfe, 0x73, 0x03, 0x56, 0x32, 0x53, 0x99, 0x45, 0xb6, 0x5f, 0x96, 0x6e, 0xa7, 0x9c, 0x4c, - 0x6b, 0xf3, 0x82, 0x96, 0x26, 0x31, 0x98, 0xc4, 0x46, 0x17, 0xa0, 0xbe, 0x8f, 0x5d, 0xcf, 0x0e, - 0x09, 0xa6, 0x81, 0xaf, 0x26, 0x0a, 0x1c, 0x64, 0x09, 0x88, 0xf9, 0x2f, 0x86, 0x4c, 0xd0, 0x3d, - 0xe7, 0x16, 0xef, 0xcf, 0x0a, 0xd0, 0xdc, 0xf6, 0x29, 0x09, 0xd9, 0xe9, 0xbf, 0x9a, 0xa0, 0x77, - 0xa1, 0x2e, 0x26, 0x46, 0x6d, 0x07, 0x33, 0xac, 0x4e, 0xb3, 0x17, 0xb5, 0xd1, 0xfc, 0xf7, 0x38, - 0xde, 0x16, 0x66, 0xd8, 0x92, 0xd2, 0xa1, 0xfc, 0x37, 0x3a, 0x0b, 0xb5, 0x03, 0x4c, 0x0f, 0xec, - 0x07, 0xe4, 0x48, 0xfa, 0x8b, 0x4d, 0xab, 0xca, 0x01, 0xef, 0x93, 0x23, 0x8a, 0x5e, 0x80, 0xaa, - 0x3f, 0xec, 0xcb, 0x0d, 0x56, 0x59, 0x37, 0x36, 0x9a, 0x56, 0xc5, 0x1f, 0xf6, 0xc5, 0xf6, 0xfa, - 0xb7, 0x02, 0xb4, 0xee, 0x0d, 0xf9, 0x45, 0x48, 0xe4, 0x22, 0x86, 0x1e, 0x7b, 0x32, 0x65, 0xbc, - 0x0c, 0x45, 0xe9, 0x52, 0x70, 0x8a, 0xb6, 0x96, 0xf1, 0xed, 0x2d, 0x6a, 0x71, 0x24, 0x11, 0x87, - 0x1f, 0x76, 0xbb, 0xca, 0x3b, 0x2b, 0x0a, 0x66, 0x6b, 0x1c, 0x22, 0x7d, 0xb3, 0xb3, 0x50, 0x23, - 0x61, 0x18, 0xfb, 0x6e, 0x62, 0x2a, 0x24, 0x0c, 0x65, 0xa3, 0x09, 0x0d, 0xdc, 0x7d, 0xe0, 0x07, - 0x87, 0x1e, 0x71, 0x7a, 0xc4, 0x11, 0xcb, 0x5e, 0xb5, 0x52, 0x30, 0xa9, 0x18, 0x7c, 0xe1, 0xed, - 0xae, 0xcf, 0xc4, 0xa9, 0x5e, 0xe4, 0x8a, 0xc1, 0x21, 0xb7, 0x7c, 0xc6, 0x9b, 0x1d, 0xe2, 0x11, - 0x46, 0x44, 0x73, 0x45, 0x36, 0x4b, 0x88, 0x6a, 0x1e, 0x0e, 0x62, 0xea, 0xaa, 0x6c, 0x96, 0x10, - 0xde, 0x7c, 0x0e, 0x6a, 0xa3, 0x64, 0x43, 0x6d, 0x14, 0x6d, 0x14, 0x00, 0xf3, 0x27, 0x06, 0x34, - 0xb7, 0x44, 0x57, 0xcf, 0x81, 0xd2, 0x21, 0x98, 0x27, 0x8f, 0x07, 0xa1, 0xda, 0x3a, 0xe2, 0xf7, - 0x44, 0x3d, 0x32, 0xff, 0xbf, 0x08, 0xcd, 0x5d, 0x82, 0xc3, 0xee, 0xc1, 0x73, 0x11, 0x8d, 0x59, - 0x84, 0xa2, 0x43, 0x3d, 0x35, 0x3d, 0xfe, 0x13, 0x5d, 0x81, 0x33, 0x03, 0x0f, 0x77, 0xc9, 0x41, - 0xe0, 0x39, 0x24, 0xb4, 0x7b, 0x61, 0x30, 0x94, 0x29, 0xa6, 0x86, 0xb5, 0x98, 0x68, 0xb8, 0xcd, - 0xe1, 0xe8, 0x2d, 0xa8, 0x3a, 0xd4, 0xb3, 0xc5, 0x35, 0xb6, 0x22, 0x4c, 0xac, 0x7e, 0x7e, 0x5b, - 0xd4, 0x13, 0xb7, 0xd8, 0x8a, 0x23, 0x7f, 0xa0, 0x97, 0xa0, 0x19, 0x0c, 0xd9, 0x60, 0xc8, 0x6c, - 0xb9, 0x41, 0xdb, 0x55, 0xc1, 0x5e, 0x43, 0x02, 0xc5, 0xfe, 0xa5, 0xe8, 0x3d, 0x68, 0x52, 0x21, - 0xca, 0xc8, 0x83, 0xad, 0x4d, 0xeb, 0x49, 0x35, 0x24, 0x9d, 0x72, 0x61, 0x5f, 0x85, 0x45, 0x16, - 0xe2, 0x47, 0xc4, 0x4b, 0xe4, 0xc0, 0x40, 0xa8, 0xe5, 0x82, 0x84, 0x8f, 0xf2, 0x5f, 0xd7, 0x60, - 0xa9, 0x37, 0xc4, 0x21, 0xf6, 0x19, 0x21, 0x09, 0xec, 0xba, 0xc0, 0x46, 0x71, 0xd3, 0x88, 0xa0, - 0x05, 0x05, 0xff, 0xa1, 0xc8, 0x25, 0x15, 0xad, 0x82, 0xff, 0xd0, 0x7c, 0x1f, 0xe6, 0xef, 0xb8, - 0x4c, 0x08, 0x96, 0x6f, 0x76, 0x43, 0xdc, 0x1f, 0xc4, 0x96, 0x7e, 0x01, 0xaa, 0x61, 0x70, 0x28, - 0x8d, 0x17, 0xf7, 0xae, 0x1a, 0x56, 0x25, 0x0c, 0x0e, 0x85, 0x65, 0x12, 0x95, 0x04, 0x41, 0x48, - 0xa4, 0xaf, 0x58, 0xb0, 0xd4, 0x97, 0xf9, 0x37, 0xc6, 0x48, 0x99, 0xb8, 0xdd, 0xa1, 0x4f, 0x66, - 0x78, 0xde, 0x85, 0x4a, 0x28, 0xe9, 0x27, 0xe6, 0x40, 0x93, 0x23, 0x09, 0xe3, 0x19, 0x51, 0x4d, - 0x9f, 0x60, 0xf9, 0x0d, 0x03, 0x1a, 0xef, 0x79, 0x43, 0xfa, 0x34, 0x94, 0x5f, 0x17, 0xf6, 0x2f, - 0xea, 0x53, 0x0e, 0xdf, 0x2b, 0x40, 0x53, 0xb1, 0x31, 0x8b, 0xf7, 0x90, 0xcb, 0xca, 0x2e, 0xd4, - 0xf9, 0x90, 0x36, 0x25, 0xbd, 0x28, 0x18, 0x52, 0xdf, 0xdc, 0xd4, 0xfa, 0xca, 0x29, 0x36, 0x44, - 0x9a, 0x79, 0x57, 0x10, 0xfd, 0x8a, 0xcf, 0xc2, 0x23, 0x0b, 0xba, 0x31, 0xa0, 0xf3, 0x09, 0x2c, - 0x64, 0x9a, 0xb9, 0x12, 0x3d, 0x20, 0x47, 0xea, 0xd6, 0xc1, 0x7f, 0xa2, 0x37, 0x92, 0xc5, 0x00, - 0x79, 0xc7, 0xdf, 0xdd, 0xc0, 0xef, 0xdd, 0x08, 0x43, 0x7c, 0xa4, 0x8a, 0x05, 0xde, 0x2e, 0x7c, - 0xc5, 0x30, 0xff, 0xb9, 0x00, 0x8d, 0x0f, 0x86, 0x24, 0x3c, 0x7a, 0x96, 0x76, 0x29, 0x32, 0xa7, - 0xf3, 0x09, 0x73, 0x3a, 0x66, 0x0a, 0x4a, 0x1a, 0x53, 0xa0, 0x31, 0x68, 0x65, 0xad, 0x41, 0xd3, - 0xed, 0xf5, 0xca, 0x89, 0xf6, 0x7a, 0x35, 0x6f, 0xaf, 0x9b, 0x7f, 0x6d, 0xc4, 0x22, 0x9c, 0x69, - 0x37, 0xa6, 0xfc, 0x98, 0xc2, 0x89, 0xfd, 0x98, 0xa9, 0x77, 0xe3, 0x0f, 0x0d, 0xa8, 0x7d, 0x9d, - 0x74, 0x59, 0x10, 0x72, 0xfb, 0xa3, 0x21, 0x33, 0xa6, 0xf0, 0x29, 0x0b, 0x59, 0x9f, 0xf2, 0x3a, - 0x54, 0x5d, 0xc7, 0xc6, 0x5c, 0xbf, 0xc4, 0xb8, 0x93, 0x7c, 0x99, 0x8a, 0xeb, 0x08, 0x45, 0x9c, - 0x3e, 0x7a, 0xfe, 0x07, 0x06, 0x34, 0x24, 0xcf, 0x54, 0x52, 0xbe, 0x93, 0x18, 0xce, 0xd0, 0x29, - 0xbd, 0xfa, 0x88, 0x27, 0x7a, 0x67, 0x6e, 0x34, 0xec, 0x0d, 0x00, 0x2e, 0x64, 0x45, 0x2e, 0xf7, - 0xcc, 0xba, 0x96, 0x5b, 0x49, 0x2e, 0x04, 0x7e, 0x67, 0xce, 0xaa, 0x71, 0x2a, 0xd1, 0xc5, 0xcd, - 0x0a, 0x94, 0x04, 0xb5, 0xf9, 0x7f, 0x06, 0x2c, 0xdd, 0xc2, 0x5e, 0x77, 0xcb, 0xa5, 0x0c, 0xfb, - 0xdd, 0x19, 0xbc, 0x97, 0xb7, 0xa1, 0x12, 0x0c, 0x6c, 0x8f, 0xec, 0x33, 0xc5, 0xd2, 0xc5, 0x09, - 0x33, 0x92, 0x62, 0xb0, 0xca, 0xc1, 0xe0, 0x2e, 0xd9, 0x67, 0xe8, 0xab, 0x50, 0x0d, 0x06, 0x76, - 0xe8, 0xf6, 0x0e, 0x98, 0x92, 0xfe, 0x14, 0xc4, 0x95, 0x60, 0x60, 0x71, 0x8a, 0x44, 0x50, 0x62, - 0xfe, 0x84, 0x41, 0x09, 0xf3, 0x3f, 0xc6, 0xa6, 0x3f, 0xc3, 0x1e, 0x78, 0x1b, 0xaa, 0xae, 0xcf, - 0x6c, 0xc7, 0xa5, 0x91, 0x08, 0xce, 0xeb, 0x75, 0xc8, 0x67, 0x62, 0x06, 0x62, 0x4d, 0x7d, 0xc6, - 0xc7, 0x46, 0x5f, 0x03, 0xd8, 0xf7, 0x02, 0xac, 0xa8, 0xa5, 0x0c, 0x2e, 0xe8, 0xb7, 0x0f, 0x47, - 0x8b, 0xe8, 0x6b, 0x82, 0x88, 0xf7, 0x30, 0x5a, 0xd2, 0x7f, 0x37, 0x60, 0x65, 0x87, 0x84, 0xb2, - 0x54, 0x84, 0xa9, 0xf8, 0xe1, 0xb6, 0xbf, 0x1f, 0xa4, 0x43, 0xb8, 0x46, 0x26, 0x84, 0xfb, 0xf3, - 0x09, 0x5b, 0xa6, 0xae, 0x1c, 0x32, 0x91, 0x10, 0x5d, 0x39, 0xa2, 0x74, 0x89, 0xbc, 0xb2, 0xb5, - 0x72, 0x96, 0x49, 0xf1, 0x9b, 0xbc, 0xb9, 0x9a, 0xbf, 0x27, 0x2b, 0x1c, 0xb4, 0x93, 0x7a, 0x72, - 0x85, 0x5d, 0x05, 0x65, 0xe9, 0x33, 0x76, 0xff, 0x65, 0xc8, 0xd8, 0x8e, 0x1c, 0x43, 0xf4, 0x03, - 0x03, 0xd6, 0xf3, 0xb9, 0x9a, 0xe5, 0x88, 0xfe, 0x1a, 0x94, 0x5c, 0x7f, 0x3f, 0x88, 0xe2, 0x55, - 0x97, 0xb5, 0x7b, 0x41, 0x3f, 0xae, 0x24, 0x34, 0x7f, 0x5c, 0x80, 0x45, 0x61, 0xd4, 0x9f, 0xc1, - 0xf2, 0xf7, 0x49, 0xdf, 0xa6, 0xee, 0xa7, 0x24, 0x5a, 0xfe, 0x3e, 0xe9, 0xef, 0xba, 0x9f, 0x92, - 0x94, 0x66, 0x94, 0xd2, 0x9a, 0x31, 0x39, 0x1c, 0x9b, 0x8c, 0x47, 0x56, 0xd2, 0xf1, 0xc8, 0x55, - 0x28, 0xfb, 0x81, 0x43, 0xb6, 0xb7, 0xd4, 0x7d, 0x4d, 0x7d, 0x8d, 0x54, 0xad, 0x76, 0x32, 0x55, - 0xe3, 0x43, 0x89, 0x2e, 0x1c, 0x59, 0xe9, 0xc5, 0x79, 0x94, 0x9f, 0xe6, 0xe7, 0x06, 0x74, 0x6e, - 0x13, 0x96, 0x95, 0xea, 0xb3, 0xd3, 0xbf, 0xef, 0x1a, 0x70, 0x56, 0xcb, 0xd0, 0x2c, 0xaa, 0xf7, - 0x4e, 0x5a, 0xf5, 0xf4, 0xa1, 0xd2, 0xb1, 0x21, 0x95, 0xd6, 0xbd, 0x0e, 0x8d, 0xad, 0x61, 0xbf, - 0x1f, 0x3b, 0x63, 0x17, 0xa1, 0x11, 0xca, 0x9f, 0xf2, 0x32, 0x25, 0x4f, 0xe6, 0xba, 0x82, 0xf1, - 0x2b, 0x93, 0x79, 0x05, 0x9a, 0x8a, 0x44, 0x71, 0xdd, 0x81, 0x6a, 0xa8, 0x7e, 0x2b, 0xfc, 0xf8, - 0xdb, 0x5c, 0x81, 0x25, 0x8b, 0xf4, 0xb8, 0xd2, 0x87, 0x77, 0x5d, 0xff, 0x81, 0x1a, 0xc6, 0xfc, - 0xb6, 0x01, 0xcb, 0x69, 0xb8, 0xea, 0xeb, 0x4d, 0xa8, 0x60, 0xc7, 0x09, 0x09, 0xa5, 0x13, 0x97, - 0xe5, 0x86, 0xc4, 0xb1, 0x22, 0xe4, 0x84, 0xe4, 0x0a, 0x53, 0x4b, 0xce, 0xb4, 0xe1, 0xcc, 0x6d, - 0xc2, 0xee, 0x11, 0x16, 0xce, 0x94, 0x14, 0x6f, 0xf3, 0x6b, 0x8d, 0x20, 0x56, 0x6a, 0x11, 0x7d, - 0x9a, 0x9f, 0x19, 0x80, 0x92, 0x23, 0xcc, 0xb2, 0xcc, 0x49, 0x29, 0x17, 0xd2, 0x52, 0x96, 0xe5, - 0x45, 0xfd, 0x41, 0xe0, 0x13, 0x9f, 0x25, 0x1d, 0xb1, 0x66, 0x0c, 0x8d, 0x2a, 0x35, 0xd0, 0xdd, - 0x00, 0x3b, 0x37, 0xb1, 0x37, 0x9b, 0xe3, 0x70, 0x1e, 0x80, 0x86, 0x5d, 0x5b, 0xed, 0xe3, 0x82, - 0xb2, 0x4b, 0x61, 0xf7, 0xbe, 0xdc, 0xca, 0x17, 0xa0, 0xee, 0x50, 0xa6, 0x9a, 0xa3, 0x1c, 0x2d, - 0x38, 0x94, 0xc9, 0x76, 0x51, 0x3e, 0x4a, 0x09, 0xf6, 0x88, 0x63, 0x27, 0x52, 0x5c, 0xf3, 0x02, - 0x6d, 0x51, 0x36, 0xec, 0xc6, 0x70, 0xcd, 0xe6, 0x2a, 0x69, 0x37, 0xd7, 0x27, 0xb0, 0x76, 0x0f, - 0xfb, 0x43, 0xec, 0xdd, 0x0a, 0xfa, 0x03, 0x9c, 0x2a, 0x3d, 0xcc, 0x1a, 0x4a, 0x43, 0x63, 0x28, - 0x5f, 0x94, 0xb5, 0x69, 0xd2, 0x39, 0x17, 0x73, 0x9a, 0xb7, 0x12, 0x10, 0x93, 0x42, 0x7b, 0xbc, - 0xfb, 0x59, 0x16, 0x54, 0x30, 0x15, 0x75, 0x95, 0xb4, 0xde, 0x23, 0x98, 0xf9, 0x2e, 0xbc, 0x20, - 0xea, 0x04, 0x23, 0x50, 0x2a, 0xaa, 0x9e, 0xed, 0xc0, 0xd0, 0x74, 0xf0, 0x5b, 0x05, 0x61, 0x02, - 0xc7, 0x7a, 0x98, 0x85, 0xf1, 0xb7, 0xd3, 0xc1, 0xec, 0x2f, 0xe4, 0xd4, 0xc2, 0xa6, 0x47, 0x54, - 0xc6, 0x7a, 0x03, 0x16, 0xc8, 0x63, 0xd2, 0x1d, 0x32, 0xd7, 0xef, 0xed, 0x78, 0xd8, 0xbf, 0x1f, - 0xa8, 0x23, 0x29, 0x0b, 0x46, 0x5f, 0x80, 0x26, 0x97, 0x7e, 0x30, 0x64, 0x0a, 0x4f, 0x9e, 0x4d, - 0x69, 0x20, 0xef, 0x8f, 0xcf, 0xd7, 0x23, 0x8c, 0x38, 0x0a, 0x4f, 0x1e, 0x54, 0x59, 0xf0, 0x98, - 0x28, 0x39, 0x98, 0x9e, 0x44, 0x94, 0xff, 0x65, 0x64, 0x44, 0xa9, 0x7a, 0x78, 0x56, 0xa2, 0xbc, - 0x03, 0xd0, 0x27, 0x61, 0x8f, 0x6c, 0x0b, 0xe3, 0x2f, 0xef, 0xfe, 0x1b, 0x5a, 0xe3, 0x3f, 0xea, - 0xe0, 0x5e, 0x44, 0x60, 0x25, 0x68, 0xcd, 0xdb, 0xb0, 0xa4, 0x41, 0xe1, 0x76, 0x8d, 0x06, 0xc3, - 0xb0, 0x4b, 0xa2, 0xf0, 0x51, 0xf4, 0xc9, 0xcf, 0x41, 0x86, 0xc3, 0x1e, 0x61, 0x4a, 0x69, 0xd5, - 0x97, 0xf9, 0xa6, 0xc8, 0xff, 0x88, 0x50, 0x43, 0x4a, 0x53, 0xd3, 0xb9, 0x6c, 0x63, 0x2c, 0x97, - 0xbd, 0x2f, 0x92, 0x2d, 0x49, 0xba, 0x19, 0xeb, 0x10, 0xf6, 0x79, 0x57, 0xc4, 0x51, 0xef, 0x20, - 0xa2, 0x4f, 0xf3, 0xa7, 0x06, 0x34, 0xb7, 0xfb, 0x83, 0x60, 0x94, 0x67, 0x98, 0xfa, 0x32, 0x3a, - 0x1e, 0xa7, 0x2d, 0xe8, 0xe2, 0xb4, 0x2f, 0x41, 0x33, 0x5d, 0x45, 0x2f, 0x23, 0x43, 0x8d, 0x6e, - 0xb2, 0x7a, 0xfe, 0x2c, 0xd4, 0xc2, 0xe0, 0xd0, 0xe6, 0xa6, 0xd4, 0x51, 0x15, 0x0f, 0xd5, 0x30, - 0x38, 0xe4, 0x06, 0xd6, 0x41, 0xcb, 0x50, 0xda, 0x77, 0xbd, 0xb8, 0x58, 0x47, 0x7e, 0xa0, 0x77, - 0xf8, 0x55, 0x4d, 0x66, 0x44, 0xcb, 0xd3, 0xde, 0x98, 0x22, 0x0a, 0xf3, 0x63, 0x68, 0x45, 0xb3, - 0x9e, 0xf1, 0x01, 0x08, 0xc3, 0xf4, 0x41, 0x54, 0x8c, 0x20, 0x3f, 0xcc, 0x2b, 0x32, 0x51, 0x26, - 0xfa, 0x4f, 0x2d, 0x3a, 0x82, 0x79, 0x8e, 0xa1, 0xf6, 0x92, 0xf8, 0x6d, 0xfe, 0xb4, 0x00, 0xab, - 0x59, 0xec, 0x59, 0x58, 0x7a, 0x33, 0xbd, 0x7f, 0xf4, 0x35, 0xfe, 0xc9, 0xd1, 0xd4, 0xde, 0x51, - 0x2b, 0xd0, 0x0d, 0x86, 0x3e, 0x53, 0x06, 0x88, 0xaf, 0xc0, 0x2d, 0xfe, 0x8d, 0xd6, 0xa0, 0xe2, - 0x3a, 0xb6, 0xc7, 0x6f, 0x75, 0xf2, 0x4c, 0x2a, 0xbb, 0xce, 0x5d, 0x7e, 0xe3, 0x7b, 0x2b, 0xf2, - 0xb4, 0xa6, 0xae, 0x60, 0x90, 0xf8, 0xa8, 0x05, 0x05, 0xd7, 0x51, 0xd9, 0x8d, 0x82, 0xeb, 0xa0, - 0xaf, 0x40, 0xfb, 0x80, 0x0c, 0x43, 0x51, 0xd0, 0x26, 0xa2, 0x2f, 0xf6, 0x43, 0xee, 0x9f, 0xe1, - 0x3d, 0x4f, 0x86, 0xaf, 0xab, 0xd6, 0x6a, 0xdc, 0xbe, 0x85, 0x19, 0xfe, 0x20, 0x6a, 0x45, 0x6f, - 0xc0, 0x6a, 0x86, 0x52, 0xe5, 0x67, 0x85, 0x37, 0x5d, 0xb5, 0x96, 0x53, 0x74, 0xdb, 0xb2, 0xcd, - 0x6c, 0xc3, 0x2a, 0x9f, 0x80, 0x14, 0xc4, 0x87, 0x7c, 0xd9, 0x22, 0x47, 0xec, 0x7b, 0x06, 0xac, - 0x8d, 0x35, 0xcd, 0xb2, 0x22, 0x37, 0x92, 0x4a, 0x52, 0xdf, 0xbc, 0xa2, 0x35, 0x48, 0x7a, 0x15, - 0x88, 0x34, 0xea, 0xfb, 0xd2, 0x6b, 0xb2, 0x64, 0x1d, 0xe6, 0x53, 0xae, 0xea, 0xd9, 0x80, 0xc5, - 0x43, 0x97, 0x1d, 0xd8, 0xe2, 0x6d, 0x89, 0x70, 0x59, 0x64, 0x62, 0xbb, 0x6a, 0xb5, 0x38, 0x7c, - 0x97, 0x83, 0xb9, 0xdb, 0x42, 0xcd, 0xdf, 0x36, 0x60, 0x29, 0xc5, 0xd6, 0x2c, 0x62, 0xfa, 0x2a, - 0xf7, 0xe6, 0x64, 0x47, 0x4a, 0x52, 0xeb, 0x5a, 0x49, 0xa9, 0xd1, 0x84, 0xc9, 0x8e, 0x29, 0xcc, - 0xff, 0x36, 0xa0, 0x9e, 0x68, 0xe1, 0xd7, 0x44, 0xd5, 0x36, 0xba, 0x26, 0xc6, 0x80, 0xa9, 0xc4, - 0xf0, 0x12, 0x8c, 0x0c, 0x59, 0xa2, 0x3e, 0x3d, 0x51, 0x58, 0xe7, 0x50, 0x74, 0x07, 0x5a, 0x52, - 0x4c, 0x31, 0xeb, 0xda, 0xe8, 0x4d, 0x5c, 0x32, 0x88, 0x43, 0x47, 0x71, 0x69, 0x35, 0x69, 0xe2, - 0x4b, 0x66, 0x39, 0x03, 0x87, 0x88, 0x91, 0x4a, 0x63, 0x97, 0xb6, 0x46, 0x92, 0x94, 0x3b, 0xbe, - 0x1e, 0xc1, 0x0e, 0x09, 0xe3, 0xb9, 0xc5, 0xdf, 0xdc, 0xd3, 0x94, 0xbf, 0x6d, 0x7e, 0x11, 0x50, - 0x26, 0x19, 0x24, 0x88, 0xdf, 0x11, 0xd0, 0xcb, 0xb0, 0xe0, 0xf4, 0x53, 0x0f, 0x9b, 0x22, 0xd7, - 0xd8, 0xe9, 0x27, 0x5e, 0x34, 0xa5, 0x18, 0x9a, 0x4f, 0x33, 0xf4, 0xbf, 0x46, 0xfc, 0xdc, 0x33, - 0x24, 0x0e, 0xf1, 0x99, 0x8b, 0xbd, 0x27, 0xd7, 0xc9, 0x0e, 0x54, 0x87, 0x94, 0x84, 0x89, 0x13, - 0x24, 0xfe, 0xe6, 0x6d, 0x03, 0x4c, 0xe9, 0x61, 0x10, 0x3a, 0x8a, 0xcb, 0xf8, 0x7b, 0x42, 0x95, - 0xa2, 0x7c, 0x4a, 0xa8, 0xaf, 0x52, 0x7c, 0x13, 0xd6, 0xfa, 0x81, 0xe3, 0xee, 0xbb, 0xba, 0xe2, - 0x46, 0x4e, 0xb6, 0x12, 0x35, 0xa7, 0xe8, 0xcc, 0x1f, 0x14, 0x60, 0xed, 0xa3, 0x81, 0xf3, 0x0b, - 0x98, 0xf3, 0x3a, 0xd4, 0x03, 0xcf, 0xd9, 0x49, 0x4f, 0x3b, 0x09, 0xe2, 0x18, 0x3e, 0x39, 0x8c, - 0x31, 0x64, 0xc8, 0x3e, 0x09, 0x9a, 0x58, 0xc1, 0xf9, 0x44, 0xb2, 0x29, 0x4f, 0x92, 0x4d, 0x0f, - 0xd6, 0x64, 0xda, 0xf8, 0x29, 0x8b, 0xc6, 0xfc, 0x75, 0x58, 0xe1, 0xa6, 0x99, 0x0f, 0xf3, 0x11, - 0x25, 0xe1, 0x8c, 0x16, 0xe7, 0x1c, 0xd4, 0xa2, 0x9e, 0xa3, 0xe2, 0xda, 0x11, 0xc0, 0xbc, 0x03, - 0xcb, 0x99, 0xb1, 0x9e, 0x70, 0x46, 0x97, 0x2f, 0x42, 0x35, 0x2a, 0x16, 0x46, 0x15, 0x28, 0xde, - 0xf0, 0xbc, 0xc5, 0x39, 0xd4, 0x80, 0xea, 0xb6, 0xaa, 0x88, 0x5d, 0x34, 0x36, 0xff, 0xf2, 0x12, - 0x34, 0xef, 0x89, 0x8e, 0x76, 0x49, 0xf8, 0xc8, 0xed, 0x12, 0x64, 0xc3, 0x62, 0xf6, 0x45, 0x35, - 0xfa, 0xa2, 0xde, 0x97, 0xd5, 0x3f, 0xbc, 0xee, 0x4c, 0x92, 0x81, 0x39, 0x87, 0x3e, 0x86, 0x56, - 0xfa, 0x5d, 0x32, 0xd2, 0x87, 0xe8, 0xb4, 0x8f, 0x97, 0x8f, 0xeb, 0xdc, 0x86, 0x66, 0xea, 0x99, - 0x31, 0x7a, 0x55, 0xdb, 0xb7, 0xee, 0x29, 0x72, 0x47, 0x6f, 0x3b, 0x93, 0x4f, 0x81, 0x25, 0xf7, - 0xe9, 0xb7, 0x80, 0x39, 0xdc, 0x6b, 0x1f, 0x0c, 0x1e, 0xc7, 0x3d, 0x86, 0x33, 0x63, 0x6f, 0xf6, - 0xd0, 0x6b, 0x39, 0xa7, 0x91, 0xfe, 0x6d, 0xdf, 0x71, 0x43, 0x1c, 0x02, 0x1a, 0x7f, 0x4e, 0x8b, - 0xae, 0xea, 0x57, 0x20, 0xef, 0x31, 0x71, 0xe7, 0xda, 0xd4, 0xf8, 0xb1, 0xe0, 0x7e, 0xd3, 0x80, - 0xb5, 0x9c, 0x87, 0x76, 0xe8, 0x7a, 0x9e, 0x6b, 0x32, 0xe1, 0xb5, 0x60, 0xe7, 0x8d, 0x93, 0x11, - 0xc5, 0x8c, 0xf8, 0xb0, 0x90, 0x79, 0x7b, 0x86, 0xae, 0xe4, 0x16, 0xda, 0x8f, 0x3f, 0xc2, 0xeb, - 0x7c, 0x71, 0x3a, 0xe4, 0x78, 0xbc, 0x4f, 0x60, 0x21, 0xf3, 0x60, 0x2b, 0x67, 0x3c, 0xfd, 0xb3, - 0xae, 0xe3, 0x16, 0xf4, 0x9b, 0xd0, 0x4c, 0xbd, 0xac, 0xca, 0xd1, 0x78, 0xdd, 0xeb, 0xab, 0xe3, - 0xba, 0xfe, 0x04, 0x1a, 0xc9, 0x07, 0x50, 0x68, 0x23, 0x6f, 0x2f, 0x8d, 0x75, 0x7c, 0x92, 0xad, - 0x34, 0x7a, 0xb8, 0x30, 0x61, 0x2b, 0x8d, 0xbd, 0xf5, 0x98, 0x7e, 0x2b, 0x25, 0xfa, 0x9f, 0xb8, - 0x95, 0x4e, 0x3c, 0xc4, 0xb7, 0x0d, 0x71, 0x83, 0xd2, 0x3c, 0x8c, 0x41, 0x9b, 0x79, 0xba, 0x99, - 0xff, 0x04, 0xa8, 0x73, 0xfd, 0x44, 0x34, 0xb1, 0x14, 0x1f, 0x40, 0x2b, 0xfd, 0xfc, 0x23, 0x47, - 0x8a, 0xda, 0x17, 0x33, 0x9d, 0x2b, 0x53, 0xe1, 0xc6, 0x83, 0x7d, 0x04, 0xf5, 0xc4, 0x9f, 0xa4, - 0xa0, 0x57, 0x26, 0xe8, 0x71, 0xf2, 0x1f, 0x43, 0x8e, 0x93, 0xe4, 0x07, 0x50, 0x8b, 0xff, 0xdb, - 0x04, 0x5d, 0xca, 0xd5, 0xdf, 0x93, 0x74, 0xb9, 0x0b, 0x30, 0xfa, 0xe3, 0x12, 0xf4, 0xb2, 0xb6, - 0xcf, 0xb1, 0x7f, 0x36, 0x39, 0xae, 0xd3, 0x78, 0xfa, 0xb2, 0xaa, 0x6e, 0xd2, 0xf4, 0x93, 0x65, - 0xa0, 0xc7, 0x75, 0x7b, 0x00, 0xcd, 0x54, 0xf1, 0x76, 0xde, 0x16, 0xd6, 0xd4, 0xd4, 0x77, 0x2e, - 0x4f, 0x83, 0x1a, 0xaf, 0xdf, 0x01, 0x34, 0x53, 0xa5, 0xb4, 0x39, 0x23, 0xe9, 0x2a, 0x87, 0x73, - 0x46, 0xd2, 0x56, 0xe6, 0x9a, 0x73, 0xe8, 0x5b, 0x89, 0xaa, 0xdd, 0x54, 0x65, 0x34, 0x7a, 0x7d, - 0x62, 0x3f, 0xba, 0xc2, 0xf0, 0xce, 0xe6, 0x49, 0x48, 0x62, 0x16, 0x94, 0x56, 0x49, 0x91, 0xe6, - 0x6b, 0xd5, 0x49, 0x56, 0x6a, 0x17, 0xca, 0xb2, 0x38, 0x16, 0x99, 0x39, 0x65, 0xf0, 0x89, 0xca, - 0xd9, 0xce, 0x4b, 0x5a, 0x9c, 0x74, 0xdd, 0xa8, 0xec, 0x54, 0x7a, 0xb1, 0x39, 0x9d, 0xa6, 0x2a, - 0x23, 0xa7, 0xed, 0xd4, 0x82, 0xb2, 0x2c, 0xde, 0xca, 0xe9, 0x34, 0x55, 0x90, 0xd8, 0x99, 0x8c, - 0x23, 0xb2, 0xfa, 0xe6, 0x1c, 0xda, 0x81, 0x92, 0x08, 0x0c, 0xa2, 0x8b, 0x93, 0xea, 0x9a, 0x26, - 0xf5, 0x98, 0x2a, 0x7d, 0x32, 0xe7, 0xd0, 0xaf, 0x42, 0x49, 0x04, 0x54, 0x72, 0x7a, 0x4c, 0x16, - 0x27, 0x75, 0x26, 0xa2, 0x44, 0x2c, 0x3a, 0xd0, 0x48, 0x56, 0x24, 0xe4, 0x1c, 0x59, 0x9a, 0x9a, - 0x8d, 0xce, 0x34, 0x98, 0xd1, 0x28, 0x72, 0x1b, 0x8d, 0x82, 0xa4, 0xf9, 0xdb, 0x68, 0x2c, 0x00, - 0x9b, 0xbf, 0x8d, 0xc6, 0x63, 0xae, 0xe6, 0x1c, 0xfa, 0x1d, 0x03, 0xda, 0x79, 0x69, 0x72, 0x94, - 0xeb, 0x01, 0x4d, 0xca, 0xf5, 0x77, 0xbe, 0x7c, 0x42, 0xaa, 0x98, 0x97, 0x4f, 0x45, 0xd0, 0x65, - 0x2c, 0x31, 0x7e, 0x2d, 0xaf, 0xbf, 0x9c, 0x64, 0x6f, 0xe7, 0x4b, 0xd3, 0x13, 0xc4, 0x63, 0xef, - 0x41, 0x3d, 0x11, 0xf0, 0xc9, 0xb1, 0xbc, 0xe3, 0x91, 0xaa, 0x9c, 0x55, 0xd5, 0xc4, 0x8e, 0xa4, - 0x7a, 0x8b, 0x6c, 0x6a, 0x8e, 0x32, 0x26, 0x93, 0xb3, 0x39, 0xea, 0x9d, 0x4a, 0xc6, 0x9a, 0x73, - 0x88, 0x40, 0x23, 0x99, 0x5a, 0xcd, 0xd1, 0x46, 0x4d, 0x56, 0xb6, 0xf3, 0xea, 0x14, 0x98, 0xf1, - 0x30, 0x36, 0xc0, 0x28, 0xb5, 0x99, 0x73, 0xd6, 0x8d, 0x65, 0x57, 0x3b, 0xaf, 0x1c, 0x8b, 0x97, - 0x3c, 0xf6, 0x13, 0xc9, 0xca, 0x1c, 0xe9, 0x8f, 0xa7, 0x33, 0xa7, 0xb8, 0x8b, 0x8c, 0x27, 0xc4, - 0x72, 0xee, 0x22, 0xb9, 0xb9, 0xb7, 0xce, 0xb5, 0xa9, 0xf1, 0xe3, 0xf9, 0x3c, 0x84, 0xc5, 0x6c, - 0x02, 0x31, 0xe7, 0x8e, 0x9b, 0x93, 0xc6, 0xec, 0xbc, 0x36, 0x25, 0x76, 0xf2, 0x3c, 0x3c, 0x3b, - 0xce, 0xd3, 0x37, 0x5c, 0x76, 0x20, 0x72, 0x57, 0xd3, 0xcc, 0x3a, 0x99, 0x26, 0x9b, 0x66, 0xd6, - 0xa9, 0xa4, 0x98, 0x3a, 0xbc, 0x44, 0xa8, 0x37, 0xef, 0xf0, 0x4a, 0xa6, 0x63, 0x72, 0xce, 0x99, - 0x74, 0xf2, 0x42, 0xba, 0x9f, 0xe9, 0x10, 0x32, 0xba, 0x3c, 0x55, 0x9c, 0x79, 0x92, 0xfb, 0xa9, - 0x8f, 0x49, 0xcb, 0xab, 0x5b, 0x26, 0x42, 0x9e, 0x73, 0x95, 0xd2, 0x87, 0xd8, 0x73, 0xae, 0x6e, - 0x39, 0x41, 0x77, 0xb1, 0xb1, 0x16, 0xb3, 0xe1, 0xc6, 0xc9, 0xb1, 0x90, 0x6c, 0x18, 0xea, 0xf8, - 0x70, 0xc5, 0x62, 0x36, 0xb6, 0x97, 0x33, 0x40, 0x4e, 0x08, 0x70, 0x8a, 0x01, 0xb2, 0x11, 0xb2, - 0x9c, 0x01, 0x72, 0x02, 0x69, 0x53, 0xf8, 0xae, 0xa9, 0x68, 0x55, 0xce, 0x51, 0xa8, 0x8b, 0x68, - 0xe5, 0x1c, 0x85, 0xda, 0x40, 0x9b, 0x39, 0xb7, 0x39, 0x84, 0xc6, 0x4e, 0x18, 0x3c, 0x3e, 0x8a, - 0x02, 0x55, 0xbf, 0x18, 0xe3, 0x7a, 0xf3, 0x1b, 0xd0, 0x72, 0x63, 0x9c, 0x5e, 0x38, 0xe8, 0xde, - 0xac, 0xcb, 0x80, 0xd9, 0x0e, 0x27, 0xde, 0x31, 0x7e, 0xed, 0x7a, 0xcf, 0x65, 0x07, 0xc3, 0x3d, - 0x2e, 0x99, 0x6b, 0x12, 0xed, 0x35, 0x37, 0x50, 0xbf, 0xae, 0xb9, 0x3e, 0x23, 0xa1, 0x8f, 0xbd, - 0x6b, 0x62, 0x28, 0x05, 0x1d, 0xec, 0xfd, 0x89, 0x61, 0xec, 0x95, 0x05, 0xe8, 0xfa, 0xcf, 0x02, - 0x00, 0x00, 0xff, 0xff, 0x01, 0x9e, 0x48, 0xb2, 0xb9, 0x52, 0x00, 0x00, + // 5173 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3d, 0x5d, 0x6f, 0x24, 0xc7, + 0x71, 0x9c, 0x5d, 0xee, 0x57, 0xed, 0x07, 0x97, 0xcd, 0xaf, 0xd5, 0xde, 0x9d, 0x8e, 0x37, 0xd2, + 0x49, 0xd4, 0x9d, 0xc5, 0x93, 0x78, 0xfa, 0xf2, 0x49, 0x96, 0x74, 0x77, 0x94, 0xee, 0x08, 0xdd, + 0x49, 0xd4, 0x50, 0x72, 0xe0, 0x08, 0xc2, 0x66, 0xb8, 0xd3, 0x5c, 0x8e, 0x6e, 0x76, 0x66, 0x35, + 0xd3, 0x4b, 0x1e, 0xf5, 0x10, 0x08, 0xb1, 0x91, 0x0f, 0x44, 0xb1, 0x61, 0xc4, 0x88, 0xe0, 0x87, + 0x04, 0x71, 0xbe, 0xde, 0x12, 0xc4, 0xf6, 0x43, 0x82, 0x24, 0x40, 0x12, 0xc0, 0x0f, 0x81, 0x10, + 0x20, 0xce, 0x53, 0x10, 0xe8, 0x07, 0x04, 0x79, 0x0c, 0xe0, 0xbc, 0x25, 0x80, 0xd1, 0x1f, 0x33, + 0xdb, 0x33, 0xdb, 0xb3, 0x5c, 0x72, 0x7d, 0x26, 0xef, 0x6d, 0xa7, 0xba, 0xaa, 0xbb, 0xba, 0xba, + 0xaa, 0xba, 0xba, 0xbb, 0xba, 0x17, 0x2a, 0x5d, 0xdb, 0xd9, 0xeb, 0x07, 0xab, 0x3d, 0xdf, 0x23, + 0x1e, 0x9a, 0x93, 0xbf, 0x56, 0xf9, 0x47, 0xb3, 0xd2, 0xf6, 0xba, 0x5d, 0xcf, 0xe5, 0xc0, 0x66, + 0x25, 0x68, 0xef, 0xe2, 0xae, 0x29, 0xbe, 0x96, 0x3b, 0x9e, 0xd7, 0x71, 0xf0, 0x15, 0xf6, 0xb5, + 0xdd, 0xdf, 0xb9, 0x62, 0xe1, 0xa0, 0xed, 0xdb, 0x3d, 0xe2, 0xf9, 0x1c, 0x43, 0xff, 0x23, 0x0d, + 0xd0, 0x4d, 0x1f, 0x9b, 0x04, 0x5f, 0x77, 0x6c, 0x33, 0x30, 0xf0, 0xc7, 0x7d, 0x1c, 0x10, 0xf4, + 0x0c, 0x4c, 0x6f, 0x9b, 0x01, 0x6e, 0x68, 0xcb, 0xda, 0x4a, 0x79, 0xed, 0xec, 0x6a, 0xac, 0x61, + 0xd1, 0xe0, 0xdd, 0xa0, 0x73, 0xc3, 0x0c, 0xb0, 0xc1, 0x30, 0xd1, 0x12, 0x14, 0xac, 0xed, 0x96, + 0x6b, 0x76, 0x71, 0x23, 0xb3, 0xac, 0xad, 0x94, 0x8c, 0xbc, 0xb5, 0xfd, 0xb6, 0xd9, 0xc5, 0xe8, + 0x49, 0x98, 0x69, 0x7b, 0x8e, 0x83, 0xdb, 0xc4, 0xf6, 0x5c, 0x8e, 0x90, 0x65, 0x08, 0xb5, 0x01, + 0x98, 0x21, 0xce, 0x43, 0xce, 0xa4, 0x3c, 0x34, 0xa6, 0x59, 0x31, 0xff, 0xd0, 0x03, 0xa8, 0xaf, + 0xfb, 0x5e, 0xef, 0x41, 0x71, 0x17, 0x35, 0x9a, 0x95, 0x1b, 0xfd, 0x43, 0x0d, 0x66, 0xaf, 0x3b, + 0x04, 0xfb, 0xa7, 0x54, 0x28, 0x3f, 0xc8, 0xc0, 0x12, 0x1f, 0xb5, 0x9b, 0x11, 0xfa, 0x49, 0x72, + 0xb9, 0x08, 0x79, 0xae, 0x77, 0x8c, 0xcd, 0x8a, 0x21, 0xbe, 0xd0, 0x39, 0x80, 0x60, 0xd7, 0xf4, + 0xad, 0xa0, 0xe5, 0xf6, 0xbb, 0x8d, 0xdc, 0xb2, 0xb6, 0x92, 0x33, 0x4a, 0x1c, 0xf2, 0x76, 0xbf, + 0x8b, 0x0c, 0x98, 0x6d, 0x7b, 0x6e, 0x60, 0x07, 0x04, 0xbb, 0xed, 0x83, 0x96, 0x83, 0xf7, 0xb0, + 0xd3, 0xc8, 0x2f, 0x6b, 0x2b, 0xb5, 0xb5, 0x8b, 0x4a, 0xbe, 0x6f, 0x0e, 0xb0, 0xef, 0x50, 0x64, + 0xa3, 0xde, 0x4e, 0x40, 0xae, 0x15, 0xbe, 0x78, 0x75, 0xba, 0xae, 0x35, 0xb2, 0xfa, 0xf7, 0x34, + 0x58, 0xa0, 0x9a, 0x73, 0x2a, 0x24, 0xc4, 0xd9, 0xca, 0x34, 0xb2, 0xfa, 0x8f, 0x34, 0x98, 0xbf, + 0x6d, 0x06, 0xa7, 0x63, 0xdc, 0xce, 0x01, 0x10, 0xbb, 0x8b, 0x5b, 0x01, 0x31, 0xbb, 0x3d, 0x36, + 0x76, 0xd3, 0x46, 0x89, 0x42, 0xb6, 0x28, 0x80, 0x33, 0x3d, 0xdd, 0xc8, 0xea, 0xdf, 0x80, 0xca, + 0x0d, 0xcf, 0x73, 0x0c, 0x1c, 0xf4, 0x3c, 0x37, 0xc0, 0xe8, 0x2a, 0xe4, 0x03, 0x62, 0x92, 0x7e, + 0x20, 0xb8, 0x3d, 0xa3, 0xe4, 0x76, 0x8b, 0xa1, 0x18, 0x02, 0x95, 0xaa, 0xf2, 0x9e, 0xe9, 0xf4, + 0x39, 0xb3, 0x45, 0x83, 0x7f, 0xe8, 0x1f, 0x40, 0x6d, 0x8b, 0xf8, 0xb6, 0xdb, 0xf9, 0x05, 0x56, + 0x5e, 0x0a, 0x2b, 0xff, 0x52, 0x83, 0x47, 0xd6, 0x99, 0xcb, 0xdb, 0x3e, 0x25, 0x96, 0xa2, 0x43, + 0x65, 0x00, 0xd9, 0x58, 0x67, 0x32, 0xcf, 0x1a, 0x31, 0x58, 0x62, 0x54, 0x72, 0xa9, 0xa3, 0xf2, + 0x69, 0x0e, 0x9a, 0xaa, 0xde, 0x4d, 0x22, 0xc7, 0xaf, 0x45, 0x96, 0x9c, 0x61, 0x44, 0x09, 0x3b, + 0x14, 0xb3, 0xcb, 0xa0, 0xb5, 0x2d, 0x06, 0x88, 0x0c, 0x3e, 0xd9, 0xbd, 0xac, 0xa2, 0x7b, 0x6b, + 0xb0, 0xb0, 0x67, 0xfb, 0xa4, 0x6f, 0x3a, 0xad, 0xf6, 0xae, 0xe9, 0xba, 0xd8, 0x61, 0x02, 0xa3, + 0x2e, 0x2e, 0xbb, 0x52, 0x32, 0xe6, 0x44, 0xe1, 0x4d, 0x5e, 0x46, 0xa5, 0x16, 0xa0, 0xe7, 0x60, + 0xb1, 0xb7, 0x7b, 0x10, 0xd8, 0xed, 0x21, 0xa2, 0x1c, 0x23, 0x9a, 0x0f, 0x4b, 0x63, 0x54, 0x97, + 0x61, 0xb6, 0xcd, 0xbc, 0xa4, 0xd5, 0xa2, 0xe2, 0xe3, 0xf2, 0xcc, 0x33, 0x79, 0xd6, 0x45, 0xc1, + 0x7b, 0x21, 0x9c, 0xb2, 0x15, 0x22, 0xf7, 0x49, 0x5b, 0x22, 0x28, 0x30, 0x82, 0x39, 0x51, 0xf8, + 0x3e, 0x69, 0x0f, 0x68, 0xe2, 0xfe, 0xad, 0x98, 0xf4, 0x6f, 0x0d, 0x28, 0x30, 0x7f, 0x8d, 0x83, + 0x46, 0x89, 0xb1, 0x19, 0x7e, 0xa2, 0x0d, 0x98, 0x09, 0x88, 0xe9, 0x93, 0x56, 0xcf, 0x0b, 0x6c, + 0x2a, 0x97, 0xa0, 0x01, 0xcb, 0xd9, 0x95, 0xf2, 0xda, 0xb2, 0x72, 0x90, 0xde, 0xc2, 0x07, 0xeb, + 0x26, 0x31, 0x37, 0x4d, 0xdb, 0x37, 0x6a, 0x8c, 0x70, 0x33, 0xa4, 0x53, 0x3b, 0xd1, 0xf2, 0x44, + 0x4e, 0x54, 0xa5, 0xce, 0x15, 0x95, 0x3a, 0xeb, 0x7f, 0xaf, 0xc1, 0xc2, 0x1d, 0xcf, 0xb4, 0x4e, + 0x87, 0x71, 0x5d, 0x84, 0x9a, 0x8f, 0x7b, 0x8e, 0xdd, 0x36, 0xe9, 0x78, 0x6c, 0x63, 0x9f, 0x99, + 0x57, 0xce, 0xa8, 0x0a, 0xe8, 0xdb, 0x0c, 0xc8, 0x0d, 0x28, 0xd7, 0xc8, 0xea, 0x9f, 0x6b, 0xd0, + 0x30, 0xb0, 0x83, 0xcd, 0x00, 0x9f, 0xa2, 0x59, 0x22, 0xdf, 0xc8, 0xd2, 0x00, 0xe4, 0xd1, 0x5b, + 0x98, 0x48, 0x76, 0x46, 0x4c, 0x62, 0x07, 0xc4, 0x6e, 0x07, 0x27, 0xce, 0x1f, 0x75, 0x3d, 0xdf, + 0xd1, 0xe0, 0x7c, 0x2a, 0x7f, 0x93, 0xf8, 0x9f, 0x17, 0x21, 0x47, 0x7f, 0x05, 0x8d, 0x0c, 0x33, + 0x87, 0x0b, 0x69, 0xe6, 0xf0, 0x75, 0xea, 0xdf, 0x99, 0x3d, 0x70, 0x7c, 0xfd, 0xbf, 0x34, 0x58, + 0xdc, 0xda, 0xf5, 0xf6, 0x07, 0x2c, 0x3d, 0x08, 0x49, 0xc5, 0x5d, 0x73, 0x36, 0xe1, 0x9a, 0xd1, + 0xb3, 0x30, 0x4d, 0x0e, 0x7a, 0x98, 0xa9, 0x5d, 0x6d, 0xed, 0xdc, 0xaa, 0x22, 0x5e, 0x5f, 0xa5, + 0x4c, 0xbe, 0x77, 0xd0, 0xc3, 0x06, 0x43, 0x45, 0x4f, 0x41, 0x3d, 0x21, 0xfb, 0xd0, 0xa7, 0xcd, + 0xc4, 0x85, 0x1f, 0x5c, 0xcb, 0x7d, 0xf1, 0x6a, 0xa6, 0x3e, 0xad, 0xff, 0x6d, 0x06, 0x96, 0x86, + 0x7a, 0x3a, 0x89, 0xcc, 0x55, 0x2c, 0x64, 0x94, 0x2c, 0x50, 0x0b, 0x93, 0x50, 0x6d, 0x8b, 0xc6, + 0xcd, 0xd9, 0x95, 0xac, 0x51, 0x95, 0x3c, 0xbc, 0x15, 0xa0, 0xa7, 0x01, 0x0d, 0x39, 0x5e, 0xee, + 0xdf, 0xa7, 0x8d, 0xd9, 0xa4, 0xe7, 0x65, 0xde, 0x5d, 0xe9, 0x7a, 0xb9, 0x24, 0xa6, 0x8d, 0x79, + 0x85, 0xef, 0x0d, 0xd0, 0xb3, 0x30, 0x6f, 0xbb, 0x77, 0x71, 0xd7, 0xf3, 0x0f, 0x5a, 0x3d, 0xec, + 0xb7, 0xb1, 0x4b, 0xcc, 0x0e, 0x0e, 0x1a, 0x79, 0xc6, 0xd1, 0x5c, 0x58, 0xb6, 0x39, 0x28, 0xd2, + 0x7f, 0xac, 0xc1, 0x22, 0x8f, 0x9b, 0x37, 0x4d, 0x9f, 0xd8, 0xa7, 0xc0, 0x5f, 0xf5, 0x42, 0x3e, + 0x38, 0x1e, 0x8f, 0xf2, 0xab, 0x11, 0x94, 0x39, 0xd9, 0x1f, 0x6a, 0x30, 0x4f, 0x23, 0xd9, 0x87, + 0x89, 0xe7, 0xbf, 0xd6, 0x60, 0xee, 0xb6, 0x19, 0x3c, 0x4c, 0x2c, 0x7f, 0x29, 0xe6, 0xb2, 0x88, + 0xe7, 0x13, 0x5d, 0xf8, 0x3d, 0x09, 0x33, 0x71, 0xa6, 0xc3, 0xf8, 0xa8, 0x16, 0xe3, 0x3a, 0x50, + 0x4c, 0x7a, 0x39, 0xc5, 0xa4, 0xa7, 0xff, 0xcd, 0x60, 0xae, 0x7b, 0xb8, 0x3a, 0xa8, 0xff, 0x9d, + 0x06, 0xe7, 0x6e, 0x61, 0x12, 0x71, 0x7d, 0x2a, 0xa6, 0xc2, 0x71, 0x95, 0xea, 0xdb, 0x7c, 0x22, + 0x57, 0x32, 0x7f, 0x22, 0xf3, 0xe4, 0xef, 0x66, 0x60, 0x81, 0xce, 0x1e, 0xa7, 0x43, 0x09, 0xc6, + 0x59, 0x0e, 0x29, 0x14, 0x25, 0xa7, 0xb4, 0x84, 0x70, 0xf6, 0xcd, 0x8f, 0x3d, 0xfb, 0xea, 0x3f, + 0xca, 0xf0, 0xa8, 0x41, 0x96, 0xc6, 0x24, 0xc3, 0xa2, 0xe0, 0x35, 0xa3, 0xe4, 0x55, 0x87, 0x4a, + 0x04, 0xd9, 0x58, 0x0f, 0xa7, 0xd1, 0x18, 0xec, 0xd4, 0xce, 0xa2, 0x9f, 0x69, 0xb0, 0x18, 0xae, + 0x3b, 0xb7, 0x70, 0xa7, 0x8b, 0x5d, 0x72, 0x7c, 0x1d, 0x4a, 0x6a, 0x40, 0x46, 0xa1, 0x01, 0x67, + 0xa1, 0x14, 0xf0, 0x76, 0xa2, 0x25, 0xe5, 0x00, 0xa0, 0xff, 0xa3, 0x06, 0x4b, 0x43, 0xec, 0x4c, + 0x32, 0x88, 0x0d, 0x28, 0xd8, 0xae, 0x85, 0xef, 0x47, 0xdc, 0x84, 0x9f, 0xb4, 0x64, 0xbb, 0x6f, + 0x3b, 0x56, 0xc4, 0x46, 0xf8, 0x89, 0x2e, 0x40, 0x05, 0xbb, 0xe6, 0xb6, 0x83, 0x5b, 0x0c, 0x97, + 0x29, 0x72, 0xd1, 0x28, 0x73, 0xd8, 0x06, 0x05, 0x51, 0xe2, 0x1d, 0x1b, 0x33, 0xe2, 0x1c, 0x27, + 0x16, 0x9f, 0xfa, 0xef, 0x69, 0x30, 0x47, 0xb5, 0x50, 0x70, 0x1f, 0x3c, 0x58, 0x69, 0x2e, 0x43, + 0x59, 0x52, 0x33, 0xd1, 0x11, 0x19, 0xa4, 0xdf, 0x83, 0xf9, 0x38, 0x3b, 0x93, 0x48, 0xf3, 0x51, + 0x80, 0x68, 0xac, 0xb8, 0x35, 0x64, 0x0d, 0x09, 0xa2, 0x7f, 0x96, 0x09, 0x77, 0xa0, 0x99, 0x98, + 0x4e, 0x78, 0x3b, 0x8c, 0x0d, 0x89, 0xec, 0xcf, 0x4b, 0x0c, 0xc2, 0x8a, 0xd7, 0xa1, 0x82, 0xef, + 0x13, 0xdf, 0x6c, 0xf5, 0x4c, 0xdf, 0xec, 0x72, 0xb3, 0x1a, 0xcb, 0xf5, 0x96, 0x19, 0xd9, 0x26, + 0xa3, 0xa2, 0x8d, 0x30, 0x15, 0xe1, 0x8d, 0xe4, 0x79, 0x23, 0x0c, 0xc2, 0x26, 0x8c, 0x7f, 0xa1, + 0xc1, 0x9e, 0xd0, 0xe6, 0xd3, 0x2e, 0x90, 0x78, 0x57, 0x72, 0xc9, 0xae, 0xfc, 0xb9, 0x06, 0x75, + 0xd6, 0x85, 0x75, 0x71, 0xea, 0x60, 0x7b, 0x6e, 0x82, 0x46, 0x4b, 0xd0, 0x8c, 0xb0, 0xbd, 0xaf, + 0x42, 0x5e, 0xc8, 0x3d, 0x3b, 0xae, 0xdc, 0x05, 0xc1, 0x21, 0xdd, 0xd0, 0xff, 0x44, 0x83, 0x85, + 0x84, 0xc8, 0x27, 0x51, 0xf8, 0xf7, 0x00, 0xf1, 0x1e, 0x5a, 0x83, 0x6e, 0x87, 0xf3, 0xf4, 0x45, + 0xe5, 0xa4, 0x94, 0x14, 0x92, 0x31, 0x6b, 0x27, 0x20, 0x81, 0xfe, 0x53, 0x0d, 0xce, 0xde, 0xc2, + 0x84, 0xa1, 0xde, 0xa0, 0x4e, 0x67, 0xd3, 0xf7, 0x3a, 0x3e, 0x0e, 0x82, 0x87, 0x57, 0x3f, 0xfe, + 0x80, 0x07, 0x76, 0xaa, 0x2e, 0x4d, 0x22, 0xff, 0x0b, 0x50, 0x61, 0x6d, 0x60, 0xab, 0xe5, 0x7b, + 0xfb, 0x81, 0xd0, 0xa3, 0xb2, 0x80, 0x19, 0xde, 0x3e, 0x53, 0x08, 0xe2, 0x11, 0xd3, 0xe1, 0x08, + 0x62, 0x46, 0x61, 0x10, 0x5a, 0xcc, 0x6c, 0x30, 0x64, 0x8c, 0x56, 0x8e, 0x1f, 0x5e, 0x19, 0xff, + 0x99, 0x06, 0x0b, 0x89, 0xae, 0x4c, 0x22, 0xdb, 0xe7, 0x79, 0xd8, 0xc9, 0x3b, 0x53, 0x5b, 0x3b, + 0xaf, 0xa4, 0x91, 0x1a, 0xe3, 0xd8, 0xe8, 0x3c, 0x94, 0x77, 0x4c, 0xdb, 0x69, 0xf9, 0xd8, 0x0c, + 0x3c, 0x57, 0x74, 0x14, 0x28, 0xc8, 0x60, 0x10, 0xfd, 0x27, 0x1a, 0x3f, 0xe6, 0x7b, 0xc8, 0x3d, + 0xde, 0x9f, 0x66, 0xa0, 0xba, 0xe1, 0x06, 0xd8, 0x27, 0xa7, 0x7f, 0x69, 0x82, 0x5e, 0x83, 0x32, + 0xeb, 0x58, 0xd0, 0xb2, 0x4c, 0x62, 0x8a, 0xd9, 0xec, 0x51, 0xe5, 0x7e, 0xff, 0x9b, 0x14, 0x6f, + 0xdd, 0x24, 0xa6, 0xc1, 0xa5, 0x13, 0xd0, 0xdf, 0xe8, 0x0c, 0x94, 0x76, 0xcd, 0x60, 0xb7, 0x75, + 0x0f, 0x1f, 0xf0, 0x78, 0xb1, 0x6a, 0x14, 0x29, 0xe0, 0x2d, 0x7c, 0x10, 0xa0, 0x47, 0xa0, 0xe8, + 0xf6, 0xbb, 0xdc, 0xc0, 0x0a, 0xcb, 0xda, 0x4a, 0xd5, 0x28, 0xb8, 0xfd, 0x2e, 0x33, 0xaf, 0x7f, + 0xcd, 0x40, 0xed, 0x6e, 0x9f, 0x2e, 0x84, 0xd8, 0x69, 0x45, 0xdf, 0x21, 0xc7, 0x53, 0xc6, 0x4b, + 0x90, 0xe5, 0x21, 0x05, 0xa5, 0x68, 0x28, 0x19, 0xdf, 0x58, 0x0f, 0x0c, 0x8a, 0xc4, 0x76, 0xea, + 0xfb, 0xed, 0xb6, 0x88, 0xce, 0xb2, 0x8c, 0xd9, 0x12, 0x85, 0xf0, 0xd8, 0xec, 0x0c, 0x94, 0xb0, + 0xef, 0x47, 0xb1, 0x1b, 0xeb, 0x0a, 0xf6, 0x7d, 0x5e, 0xa8, 0x43, 0xc5, 0x6c, 0xdf, 0x73, 0xbd, + 0x7d, 0x07, 0x5b, 0x1d, 0x6c, 0xb1, 0x61, 0x2f, 0x1a, 0x31, 0x18, 0x57, 0x0c, 0x3a, 0xf0, 0xad, + 0xb6, 0x4b, 0xd8, 0xac, 0x9e, 0xa5, 0x8a, 0x41, 0x21, 0x37, 0x5d, 0x42, 0x8b, 0x2d, 0xec, 0x60, + 0x82, 0x59, 0x71, 0x81, 0x17, 0x73, 0x88, 0x28, 0xee, 0xf7, 0x22, 0xea, 0x22, 0x2f, 0xe6, 0x10, + 0x5a, 0x7c, 0x16, 0x4a, 0x83, 0xe3, 0x88, 0xd2, 0x60, 0xd3, 0x91, 0x01, 0xf4, 0x2f, 0x35, 0xa8, + 0xae, 0xb3, 0xaa, 0x1e, 0x02, 0xa5, 0x43, 0x30, 0x8d, 0xef, 0xf7, 0x7c, 0x61, 0x3a, 0xec, 0xf7, + 0x48, 0x3d, 0xd2, 0xff, 0x3f, 0x0b, 0xd5, 0x2d, 0x6c, 0xfa, 0xed, 0xdd, 0x87, 0x62, 0x37, 0xa6, + 0x0e, 0x59, 0x2b, 0x70, 0x44, 0xf7, 0xe8, 0x4f, 0x74, 0x19, 0x66, 0x7b, 0x8e, 0xd9, 0xc6, 0xbb, + 0x9e, 0x63, 0x61, 0xbf, 0xd5, 0xf1, 0xbd, 0x3e, 0x3f, 0x84, 0xaa, 0x18, 0x75, 0xa9, 0xe0, 0x16, + 0x85, 0xa3, 0x17, 0xa1, 0x68, 0x05, 0x4e, 0x8b, 0x2d, 0x63, 0x0b, 0xcc, 0xc5, 0xaa, 0xfb, 0xb7, + 0x1e, 0x38, 0x6c, 0x15, 0x5b, 0xb0, 0xf8, 0x0f, 0xf4, 0x18, 0x54, 0xbd, 0x3e, 0xe9, 0xf5, 0x49, + 0x8b, 0x1b, 0x68, 0xa3, 0xc8, 0xd8, 0xab, 0x70, 0x20, 0xb3, 0xdf, 0x00, 0xbd, 0x09, 0xd5, 0x80, + 0x89, 0x32, 0x8c, 0x60, 0x4b, 0xe3, 0x46, 0x52, 0x15, 0x4e, 0x27, 0x42, 0xd8, 0xa7, 0xa0, 0x4e, + 0x7c, 0x73, 0x0f, 0x3b, 0xd2, 0x29, 0x19, 0x30, 0xb5, 0x9c, 0xe1, 0xf0, 0xc1, 0x09, 0xd9, 0x15, + 0x98, 0xeb, 0xf4, 0x4d, 0xdf, 0x74, 0x09, 0xc6, 0x12, 0x76, 0x99, 0x61, 0xa3, 0xa8, 0x68, 0x40, + 0x50, 0x83, 0x8c, 0xfb, 0x31, 0x3b, 0x6d, 0xca, 0x1a, 0x19, 0xf7, 0x63, 0xfd, 0x2d, 0x98, 0xbe, + 0x6d, 0x13, 0x26, 0x58, 0x6a, 0xec, 0x1a, 0x5b, 0x3f, 0x30, 0x93, 0x7e, 0x04, 0x8a, 0xbe, 0xb7, + 0xcf, 0x9d, 0x17, 0x8d, 0xae, 0x2a, 0x46, 0xc1, 0xf7, 0xf6, 0x99, 0x67, 0x62, 0xf9, 0x08, 0x9e, + 0x8f, 0x79, 0xac, 0x98, 0x31, 0xc4, 0x97, 0xfe, 0x57, 0xda, 0x40, 0x99, 0xa8, 0xdf, 0x09, 0x8e, + 0xe7, 0x78, 0x5e, 0x83, 0x82, 0xcf, 0xe9, 0x47, 0x9e, 0x92, 0xca, 0x2d, 0x31, 0xe7, 0x19, 0x52, + 0x8d, 0xad, 0x77, 0xfa, 0xb7, 0x34, 0xa8, 0xbc, 0xe9, 0xf4, 0x83, 0x07, 0xa1, 0xfc, 0xaa, 0x6d, + 0xff, 0xac, 0x72, 0xdb, 0x5f, 0xff, 0x6e, 0x06, 0xaa, 0x82, 0x8d, 0x49, 0xa2, 0x87, 0x54, 0x56, + 0xb6, 0xa0, 0x4c, 0x9b, 0x6c, 0x05, 0xb8, 0x13, 0x6e, 0x86, 0x94, 0xd7, 0xd6, 0x94, 0xb1, 0x72, + 0x8c, 0x0d, 0x76, 0x10, 0xbd, 0xc5, 0x88, 0xde, 0x70, 0x89, 0x7f, 0x60, 0x40, 0x3b, 0x02, 0x34, + 0x3f, 0x84, 0x99, 0x44, 0x31, 0x55, 0xa2, 0x7b, 0xf8, 0x40, 0xac, 0x3a, 0xe8, 0x4f, 0xf4, 0x9c, + 0x9c, 0x37, 0x90, 0x36, 0xfd, 0xdd, 0xf1, 0xdc, 0xce, 0x75, 0xdf, 0x37, 0x0f, 0x44, 0x5e, 0xc1, + 0xb5, 0xcc, 0x4b, 0x9a, 0xfe, 0x4f, 0x19, 0xa8, 0xbc, 0xdb, 0xc7, 0xfe, 0xc1, 0x49, 0xfa, 0xa5, + 0xd0, 0x9d, 0x4e, 0x4b, 0xee, 0x74, 0xc8, 0x15, 0xe4, 0x14, 0xae, 0x40, 0xe1, 0xd0, 0xf2, 0x4a, + 0x87, 0xa6, 0xb2, 0xf5, 0xc2, 0x91, 0x6c, 0xbd, 0x98, 0x66, 0xeb, 0xfa, 0x5f, 0x6a, 0x91, 0x08, + 0x27, 0xb2, 0xc6, 0x58, 0x1c, 0x93, 0x39, 0x72, 0x1c, 0x33, 0xb6, 0x35, 0xfe, 0x50, 0x83, 0xd2, + 0xd7, 0x71, 0x9b, 0x78, 0x3e, 0xf5, 0x3f, 0x0a, 0x32, 0x6d, 0x8c, 0x98, 0x32, 0x93, 0x8c, 0x29, + 0xaf, 0x42, 0xd1, 0xb6, 0x5a, 0x26, 0xd5, 0x2f, 0xd6, 0xee, 0xa8, 0x58, 0xa6, 0x60, 0x5b, 0x4c, + 0x11, 0xc7, 0xdf, 0x3d, 0xff, 0x5c, 0x83, 0x0a, 0xe7, 0x39, 0xe0, 0x94, 0x2f, 0x4b, 0xcd, 0x69, + 0x2a, 0xa5, 0x17, 0x1f, 0x51, 0x47, 0x6f, 0x4f, 0x0d, 0x9a, 0xbd, 0x0e, 0x40, 0x85, 0x2c, 0xc8, + 0xb9, 0xcd, 0x2c, 0x2b, 0xb9, 0xe5, 0xe4, 0x4c, 0xe0, 0xb7, 0xa7, 0x8c, 0x12, 0xa5, 0x62, 0x55, + 0xdc, 0x28, 0x40, 0x8e, 0x51, 0xeb, 0xff, 0xa7, 0xc1, 0xdc, 0x4d, 0xd3, 0x69, 0xaf, 0xdb, 0x01, + 0x31, 0xdd, 0xf6, 0x04, 0xd1, 0xcb, 0x35, 0x28, 0x78, 0xbd, 0x96, 0x83, 0x77, 0x88, 0x60, 0xe9, + 0xc2, 0x88, 0x1e, 0x71, 0x31, 0x18, 0x79, 0xaf, 0x77, 0x07, 0xef, 0x10, 0xf4, 0x0a, 0x14, 0xbd, + 0x5e, 0xcb, 0xb7, 0x3b, 0xbb, 0x44, 0x48, 0x7f, 0x0c, 0xe2, 0x82, 0xd7, 0x33, 0x28, 0x85, 0xb4, + 0x29, 0x31, 0x7d, 0xc4, 0x4d, 0x09, 0xfd, 0xdf, 0x87, 0xba, 0x3f, 0x81, 0x0d, 0x5c, 0x83, 0xa2, + 0xed, 0x92, 0x96, 0x65, 0x07, 0xa1, 0x08, 0xce, 0xa9, 0x75, 0xc8, 0x25, 0xac, 0x07, 0x6c, 0x4c, + 0x5d, 0x42, 0xdb, 0x46, 0xaf, 0x03, 0xec, 0x38, 0x9e, 0x29, 0xa8, 0xb9, 0x0c, 0xce, 0xab, 0xcd, + 0x87, 0xa2, 0x85, 0xf4, 0x25, 0x46, 0x44, 0x6b, 0x18, 0x0c, 0xe9, 0xbf, 0x69, 0xb0, 0xb0, 0x89, + 0x7d, 0x9e, 0x4c, 0x42, 0xc4, 0xfe, 0xe1, 0x86, 0xbb, 0xe3, 0xc5, 0xb7, 0x70, 0xb5, 0xc4, 0x16, + 0xee, 0x2f, 0x66, 0xdb, 0x32, 0xb6, 0xe4, 0xe0, 0x07, 0x09, 0xe1, 0x92, 0x23, 0x3c, 0x2e, 0xe1, + 0x4b, 0xb6, 0x5a, 0xca, 0x30, 0x09, 0x7e, 0xe5, 0x95, 0xab, 0xfe, 0xfb, 0x3c, 0xd1, 0x41, 0xd9, + 0xa9, 0xe3, 0x2b, 0xec, 0x22, 0x08, 0x4f, 0x9f, 0xf0, 0xfb, 0x4f, 0x40, 0xc2, 0x77, 0xa4, 0x38, + 0xa2, 0xef, 0x6b, 0xb0, 0x9c, 0xce, 0xd5, 0x24, 0x53, 0xf4, 0xeb, 0x90, 0xb3, 0xdd, 0x1d, 0x2f, + 0xdc, 0xaf, 0xba, 0xa4, 0xb4, 0x05, 0x75, 0xbb, 0x9c, 0x50, 0xff, 0x69, 0x06, 0xea, 0xcc, 0xa9, + 0x9f, 0xc0, 0xf0, 0x77, 0x71, 0xb7, 0x15, 0xd8, 0x9f, 0xe0, 0x70, 0xf8, 0xbb, 0xb8, 0xbb, 0x65, + 0x7f, 0x82, 0x63, 0x9a, 0x91, 0x8b, 0x6b, 0xc6, 0xe8, 0xed, 0x58, 0x79, 0x3f, 0xb2, 0x10, 0xdf, + 0x8f, 0x5c, 0x84, 0xbc, 0xeb, 0x59, 0x78, 0x63, 0x5d, 0xac, 0xd7, 0xc4, 0xd7, 0x40, 0xd5, 0x4a, + 0x47, 0x53, 0x35, 0xda, 0x14, 0xab, 0xc2, 0xe2, 0xb9, 0x60, 0x94, 0x47, 0xfe, 0xa9, 0x7f, 0x5b, + 0x83, 0xe6, 0x2d, 0x4c, 0x92, 0x52, 0x3d, 0x39, 0xfd, 0xfb, 0x8e, 0x06, 0x67, 0x94, 0x0c, 0x4d, + 0xa2, 0x7a, 0x2f, 0xc7, 0x55, 0x4f, 0xbd, 0x55, 0x3a, 0xd4, 0xa4, 0xd0, 0xba, 0x67, 0xa1, 0xb2, + 0xde, 0xef, 0x76, 0xa3, 0x60, 0xec, 0x02, 0x54, 0x7c, 0xfe, 0x93, 0x2f, 0xa6, 0xf8, 0xcc, 0x5c, + 0x16, 0x30, 0xba, 0x64, 0xd2, 0x2f, 0x43, 0x55, 0x90, 0x08, 0xae, 0x9b, 0x50, 0xf4, 0xc5, 0x6f, + 0x81, 0x1f, 0x7d, 0xeb, 0x0b, 0x30, 0x67, 0xe0, 0x0e, 0x55, 0x7a, 0xff, 0x8e, 0xed, 0xde, 0x13, + 0xcd, 0xe8, 0xdf, 0xd4, 0x60, 0x3e, 0x0e, 0x17, 0x75, 0xbd, 0x00, 0x05, 0xd3, 0xb2, 0x7c, 0x1c, + 0x04, 0x23, 0x87, 0xe5, 0x3a, 0xc7, 0x31, 0x42, 0x64, 0x49, 0x72, 0x99, 0xb1, 0x25, 0xa7, 0xb7, + 0x60, 0xf6, 0x16, 0x26, 0x77, 0x31, 0xf1, 0x27, 0x3a, 0x14, 0x6f, 0xd0, 0x65, 0x0d, 0x23, 0x16, + 0x6a, 0x11, 0x7e, 0xea, 0x9f, 0x69, 0x80, 0xe4, 0x16, 0x26, 0x19, 0x66, 0x59, 0xca, 0x99, 0xb8, + 0x94, 0x79, 0x7a, 0x51, 0xb7, 0xe7, 0xb9, 0xd8, 0x25, 0x72, 0x20, 0x56, 0x8d, 0xa0, 0x61, 0xa6, + 0x06, 0xba, 0xe3, 0x99, 0xd6, 0x0d, 0xd3, 0x99, 0x2c, 0x70, 0x38, 0x07, 0x10, 0xf8, 0xed, 0x96, + 0xb0, 0xe3, 0x8c, 0xf0, 0x4b, 0x7e, 0xfb, 0x6d, 0x6e, 0xca, 0xe7, 0xa1, 0x6c, 0x05, 0x44, 0x14, + 0x87, 0x67, 0xb4, 0x60, 0x05, 0x84, 0x97, 0xb3, 0x04, 0xd3, 0x00, 0x9b, 0x0e, 0xb6, 0x5a, 0xd2, + 0x11, 0xd7, 0x34, 0x43, 0xab, 0xf3, 0x82, 0xad, 0x08, 0xae, 0x30, 0xae, 0x9c, 0xd2, 0xb8, 0x3e, + 0x84, 0xa5, 0xbb, 0xa6, 0xdb, 0x37, 0x9d, 0x9b, 0x5e, 0xb7, 0x67, 0xc6, 0x72, 0x12, 0x93, 0x8e, + 0x52, 0x53, 0x38, 0xca, 0x47, 0x79, 0x8a, 0x1a, 0x0f, 0xce, 0x59, 0x9f, 0xa6, 0x0d, 0x09, 0xa2, + 0x07, 0xd0, 0x18, 0xae, 0x7e, 0x92, 0x01, 0x65, 0x4c, 0x85, 0x55, 0xc9, 0xde, 0x7b, 0x00, 0xd3, + 0x5f, 0x83, 0x47, 0x58, 0xba, 0x60, 0x08, 0x8a, 0xed, 0xaa, 0x27, 0x2b, 0xd0, 0x14, 0x15, 0xfc, + 0x56, 0x86, 0xb9, 0xc0, 0xa1, 0x1a, 0x26, 0x61, 0xfc, 0x5a, 0x7c, 0x33, 0xfb, 0xf1, 0x94, 0x6c, + 0xd9, 0x78, 0x8b, 0xc2, 0x59, 0xaf, 0xc0, 0x0c, 0xbe, 0x8f, 0xdb, 0x7d, 0x62, 0xbb, 0x9d, 0x4d, + 0xc7, 0x74, 0xdf, 0xf6, 0xc4, 0x94, 0x94, 0x04, 0xa3, 0xc7, 0xa1, 0x4a, 0xa5, 0xef, 0xf5, 0x89, + 0xc0, 0xe3, 0x73, 0x53, 0x1c, 0x48, 0xeb, 0xa3, 0xfd, 0x75, 0x30, 0xc1, 0x96, 0xc0, 0xe3, 0x13, + 0x55, 0x12, 0x3c, 0x24, 0x4a, 0x0a, 0x0e, 0x8e, 0x22, 0xca, 0xff, 0xd0, 0x12, 0xa2, 0x14, 0x35, + 0x9c, 0x94, 0x28, 0x6f, 0x03, 0x74, 0xb1, 0xdf, 0xc1, 0x1b, 0xcc, 0xf9, 0xf3, 0xb5, 0xff, 0x8a, + 0xd2, 0xf9, 0x0f, 0x2a, 0xb8, 0x1b, 0x12, 0x18, 0x12, 0xad, 0x7e, 0x0b, 0xe6, 0x14, 0x28, 0xd4, + 0xaf, 0x05, 0x5e, 0xdf, 0x6f, 0xe3, 0x70, 0xfb, 0x28, 0xfc, 0xa4, 0xf3, 0x20, 0x31, 0xfd, 0x0e, + 0x26, 0x42, 0x69, 0xc5, 0x97, 0xfe, 0x02, 0x3b, 0xff, 0x61, 0x5b, 0x0d, 0x31, 0x4d, 0x8d, 0x9f, + 0x65, 0x6b, 0x43, 0x67, 0xd9, 0x3b, 0xec, 0xb0, 0x45, 0xa6, 0x9b, 0x30, 0x0f, 0x61, 0x87, 0x56, + 0x85, 0x2d, 0x71, 0x65, 0x22, 0xfc, 0xd4, 0x7f, 0xa6, 0x41, 0x75, 0xa3, 0xdb, 0xf3, 0x06, 0xe7, + 0x0c, 0x63, 0x2f, 0x46, 0x87, 0xf7, 0x69, 0x33, 0xaa, 0x7d, 0xda, 0xc7, 0xa0, 0x1a, 0xcf, 0xb3, + 0xe7, 0x3b, 0x43, 0x95, 0xb6, 0x9c, 0x5f, 0x7f, 0x06, 0x4a, 0xbe, 0xb7, 0xdf, 0xa2, 0xae, 0xd4, + 0x12, 0x19, 0x0f, 0x45, 0xdf, 0xdb, 0xa7, 0x0e, 0xd6, 0x42, 0xf3, 0x90, 0xdb, 0xb1, 0x9d, 0x28, + 0x59, 0x87, 0x7f, 0xa0, 0x97, 0xe9, 0x52, 0x8d, 0x9f, 0x88, 0xe6, 0xc7, 0x5d, 0x31, 0x85, 0x14, + 0xfa, 0x07, 0x50, 0x0b, 0x7b, 0x3d, 0xe1, 0x5d, 0x11, 0x62, 0x06, 0xf7, 0xc2, 0x64, 0x04, 0xfe, + 0xa1, 0x5f, 0xe6, 0x07, 0x65, 0xac, 0xfe, 0xd8, 0xa0, 0x23, 0x98, 0xa6, 0x18, 0xc2, 0x96, 0xd8, + 0x6f, 0xfd, 0x67, 0x19, 0x58, 0x4c, 0x62, 0x4f, 0xc2, 0xd2, 0x0b, 0x71, 0xfb, 0x51, 0xdf, 0x02, + 0x90, 0x5b, 0x13, 0xb6, 0x23, 0x46, 0xa0, 0xed, 0xf5, 0x5d, 0x22, 0x1c, 0x10, 0x1d, 0x81, 0x9b, + 0xf4, 0x1b, 0x2d, 0x41, 0xc1, 0xb6, 0x5a, 0x0e, 0x5d, 0xd5, 0xf1, 0x39, 0x29, 0x6f, 0x5b, 0x77, + 0xe8, 0x8a, 0xef, 0xc5, 0x30, 0xd2, 0x1a, 0x3b, 0x83, 0x81, 0xe3, 0xa3, 0x1a, 0x64, 0x6c, 0x4b, + 0x9c, 0x6e, 0x64, 0x6c, 0x0b, 0xbd, 0x04, 0x8d, 0x5d, 0xdc, 0xf7, 0x59, 0x42, 0x1b, 0xdb, 0x7d, + 0x69, 0x7d, 0x4c, 0xe3, 0x33, 0x73, 0xdb, 0xe1, 0xdb, 0xd7, 0x45, 0x63, 0x31, 0x2a, 0x5f, 0x37, + 0x89, 0xf9, 0x6e, 0x58, 0x8a, 0x9e, 0x83, 0xc5, 0x04, 0xa5, 0x38, 0x9f, 0x65, 0xd1, 0x74, 0xd1, + 0x98, 0x8f, 0xd1, 0x6d, 0xf0, 0x32, 0xbd, 0x01, 0x8b, 0xb4, 0x03, 0x5c, 0x10, 0xef, 0xd1, 0x61, + 0x0b, 0x03, 0xb1, 0xef, 0x6a, 0xb0, 0x34, 0x54, 0x34, 0xc9, 0x88, 0x5c, 0x97, 0x95, 0xa4, 0xbc, + 0x76, 0x59, 0xe9, 0x90, 0xd4, 0x2a, 0x10, 0x6a, 0xd4, 0xf7, 0x78, 0xd4, 0x64, 0xf0, 0x3c, 0xcc, + 0x07, 0x9c, 0xd5, 0xb3, 0x02, 0xf5, 0x7d, 0x9b, 0xec, 0xb6, 0xd8, 0xed, 0x13, 0x16, 0xb2, 0xf0, + 0x83, 0xed, 0xa2, 0x51, 0xa3, 0xf0, 0x2d, 0x0a, 0xa6, 0x61, 0x4b, 0xa0, 0xff, 0xb6, 0x06, 0x73, + 0x31, 0xb6, 0x26, 0x11, 0xd3, 0x2b, 0x34, 0x9a, 0xe3, 0x15, 0x09, 0x49, 0x2d, 0x2b, 0x25, 0x25, + 0x5a, 0x63, 0x2e, 0x3b, 0xa2, 0xd0, 0xff, 0x53, 0x83, 0xb2, 0x54, 0x42, 0x97, 0x89, 0xa2, 0x6c, + 0xb0, 0x4c, 0x8c, 0x00, 0x63, 0x89, 0xe1, 0x31, 0x18, 0x38, 0x32, 0x29, 0x3f, 0x5d, 0x4a, 0xac, + 0xb3, 0x02, 0x74, 0x1b, 0x6a, 0x5c, 0x4c, 0x11, 0xeb, 0xca, 0xdd, 0x9b, 0x28, 0x65, 0xd0, 0xf4, + 0x2d, 0xc1, 0xa5, 0x51, 0x0d, 0xa4, 0x2f, 0x7e, 0xca, 0xe9, 0x59, 0x98, 0xb5, 0x94, 0x1b, 0x5a, + 0xb4, 0x55, 0x64, 0x52, 0x1a, 0xf8, 0x3a, 0xd8, 0xb4, 0xb0, 0x1f, 0xf5, 0x2d, 0xfa, 0xa6, 0x91, + 0x26, 0xff, 0xdd, 0xa2, 0x0b, 0x01, 0xe1, 0x92, 0x81, 0x83, 0xe8, 0x1a, 0x01, 0x3d, 0x01, 0x33, + 0x56, 0x37, 0x76, 0xf5, 0x29, 0x0c, 0x8d, 0xad, 0xae, 0x74, 0xe7, 0x29, 0xc6, 0xd0, 0x74, 0x9c, + 0xa1, 0xff, 0xd1, 0xa2, 0x4b, 0xa3, 0x3e, 0xb6, 0xb0, 0x4b, 0x6c, 0xd3, 0x39, 0xbe, 0x4e, 0x36, + 0xa1, 0xd8, 0x0f, 0xb0, 0x2f, 0xcd, 0x20, 0xd1, 0x37, 0x2d, 0xeb, 0x99, 0x41, 0xb0, 0xef, 0xf9, + 0x96, 0xe0, 0x32, 0xfa, 0x1e, 0x91, 0xa5, 0xc8, 0xaf, 0x1f, 0xaa, 0xb3, 0x14, 0x5f, 0x80, 0xa5, + 0xae, 0x67, 0xd9, 0x3b, 0xb6, 0x2a, 0xb9, 0x91, 0x92, 0x2d, 0x84, 0xc5, 0x31, 0x3a, 0xfd, 0xfb, + 0x19, 0x58, 0x7a, 0xbf, 0x67, 0xfd, 0x12, 0xfa, 0xbc, 0x0c, 0x65, 0xcf, 0xb1, 0x36, 0xe3, 0xdd, + 0x96, 0x41, 0x14, 0xc3, 0xc5, 0xfb, 0x11, 0x06, 0xdf, 0xb2, 0x97, 0x41, 0x23, 0x33, 0x38, 0x8f, + 0x25, 0x9b, 0xfc, 0x28, 0xd9, 0x74, 0x60, 0x89, 0x1f, 0x1b, 0x3f, 0x60, 0xd1, 0xe8, 0x1f, 0xc1, + 0x02, 0x75, 0xcd, 0xb4, 0x99, 0xf7, 0x03, 0xec, 0x4f, 0xe8, 0x71, 0xce, 0x42, 0x29, 0xac, 0x39, + 0x4c, 0xae, 0x1d, 0x00, 0xf4, 0xdb, 0x30, 0x9f, 0x68, 0xeb, 0x98, 0x3d, 0xd2, 0x97, 0x01, 0x0c, + 0xcf, 0xc1, 0x6f, 0xb8, 0xc4, 0x26, 0x07, 0x34, 0x08, 0x90, 0x82, 0x2a, 0xf6, 0x9b, 0x62, 0xd0, + 0x36, 0x46, 0x60, 0xfc, 0x3a, 0xcc, 0x72, 0x8b, 0xa3, 0x35, 0x1d, 0x5f, 0xb8, 0x2f, 0x42, 0x1e, + 0xb3, 0x46, 0xc4, 0xa6, 0xc0, 0x79, 0xb5, 0x8b, 0x8d, 0xb8, 0x35, 0x04, 0xba, 0xfe, 0x6b, 0x30, + 0xb3, 0xee, 0x7b, 0xbd, 0xc9, 0x5a, 0x67, 0x31, 0x86, 0x83, 0xe5, 0x60, 0xb1, 0x48, 0x01, 0x6c, + 0xb1, 0xfa, 0xcf, 0x1a, 0x2c, 0xbe, 0xd3, 0xc3, 0xbe, 0x49, 0x30, 0x95, 0xc5, 0x64, 0x2d, 0x8d, + 0xb2, 0xaf, 0x18, 0x17, 0xd9, 0x38, 0x17, 0xe8, 0x95, 0xd8, 0xbd, 0x2b, 0xf5, 0xe2, 0x21, 0xc1, + 0xa5, 0x94, 0x04, 0xfe, 0x17, 0x1a, 0xcc, 0x6e, 0x61, 0x3a, 0x87, 0x4c, 0xc6, 0xfe, 0x55, 0x98, + 0xa6, 0x1c, 0x8d, 0x3b, 0x48, 0x0c, 0x19, 0x5d, 0x82, 0x59, 0xdb, 0x6d, 0x3b, 0x7d, 0x0b, 0xb7, + 0x68, 0x5f, 0x5b, 0x34, 0xd0, 0x12, 0x13, 0xf7, 0x8c, 0x28, 0xa0, 0x2c, 0xd3, 0xe9, 0x51, 0xbf, + 0xcf, 0x55, 0x32, 0xca, 0x99, 0xe1, 0xcd, 0x69, 0x47, 0x69, 0xee, 0x79, 0xc8, 0xd1, 0x66, 0xc2, + 0xc9, 0x5a, 0x4d, 0x35, 0xd0, 0x6a, 0x83, 0x63, 0xeb, 0xdf, 0xd2, 0x00, 0xc9, 0x22, 0x9a, 0xc4, + 0x80, 0xbf, 0x2a, 0x9f, 0x9e, 0x67, 0x47, 0xb2, 0xce, 0x7b, 0x1a, 0x9d, 0x9b, 0x4b, 0x23, 0xc5, + 0x86, 0x71, 0x92, 0x91, 0xa2, 0xfd, 0x1a, 0x39, 0x52, 0x92, 0x10, 0x18, 0xb2, 0x3c, 0x52, 0x4c, + 0x13, 0x15, 0x23, 0x45, 0x79, 0x0e, 0x47, 0x8a, 0x73, 0x18, 0x8e, 0x14, 0x6b, 0x4e, 0x3b, 0x4a, + 0x73, 0xcf, 0x43, 0x8e, 0x36, 0x73, 0xb8, 0x90, 0xc2, 0x91, 0x62, 0xd8, 0xfa, 0x6f, 0x44, 0x23, + 0x25, 0x18, 0x98, 0xe8, 0x92, 0x49, 0x9e, 0x4b, 0xfe, 0x50, 0x6d, 0x11, 0x03, 0x25, 0xd0, 0xf5, + 0xc7, 0xa1, 0x66, 0x60, 0xbe, 0xc8, 0x1e, 0x78, 0x47, 0x69, 0x1f, 0x96, 0xdb, 0xdd, 0x45, 0x98, + 0xd9, 0xf4, 0xed, 0x3d, 0xdb, 0xc1, 0x9d, 0x51, 0x6e, 0xf6, 0x1f, 0x34, 0x58, 0x10, 0xba, 0x27, + 0xea, 0x3c, 0xfe, 0xc0, 0xbf, 0x9c, 0xf0, 0xa4, 0x8f, 0xa5, 0x04, 0xab, 0x32, 0xef, 0xa1, 0x37, + 0xa5, 0xd3, 0x73, 0xa8, 0x00, 0xbd, 0x90, 0x6f, 0x59, 0x0b, 0xe6, 0x45, 0x69, 0xd4, 0x29, 0xa6, + 0x0a, 0x9f, 0x6b, 0x03, 0x61, 0x08, 0x7d, 0x78, 0x8d, 0x6d, 0x81, 0x32, 0x88, 0xe0, 0x7d, 0x2c, + 0x3e, 0x22, 0x22, 0xb4, 0x0e, 0x10, 0x71, 0x10, 0x2a, 0xc8, 0xe3, 0xea, 0xa3, 0x9a, 0xb8, 0x80, + 0x0d, 0x89, 0x8e, 0xdd, 0xe3, 0x48, 0x0a, 0x76, 0xb2, 0xb7, 0x03, 0x12, 0x86, 0x3d, 0xba, 0x57, + 0x49, 0xe3, 0xfe, 0xb1, 0xc6, 0xf4, 0xc1, 0x6d, 0xdb, 0x3d, 0xd3, 0x11, 0xfa, 0x70, 0x11, 0x6a, + 0xbd, 0x10, 0x24, 0x6f, 0xe4, 0x57, 0x23, 0x28, 0xcb, 0x7e, 0x7a, 0xfe, 0x48, 0xf6, 0x7c, 0x7b, + 0x2a, 0x32, 0x31, 0xee, 0x41, 0xb3, 0x63, 0x79, 0x50, 0x4a, 0x46, 0xd1, 0x6f, 0x94, 0xa1, 0x14, + 0x35, 0x4f, 0x57, 0x53, 0xd5, 0x5b, 0xbe, 0xe9, 0x12, 0x2f, 0x0c, 0x04, 0x8e, 0x65, 0xed, 0x37, + 0x58, 0x9d, 0x7c, 0x64, 0x44, 0x37, 0xc6, 0x1b, 0xd0, 0x01, 0x99, 0xfe, 0xbf, 0x1a, 0x94, 0x19, + 0x2b, 0x82, 0x91, 0x1b, 0x12, 0x9f, 0x82, 0x9b, 0xd4, 0x3a, 0x65, 0xa9, 0x1b, 0x03, 0xb2, 0x98, + 0xaa, 0x66, 0x8e, 0xa3, 0xaa, 0x8f, 0x41, 0x35, 0xfc, 0x2d, 0xcf, 0xdd, 0x95, 0x10, 0x28, 0xe6, + 0xef, 0x42, 0x87, 0xcb, 0x90, 0x4d, 0xe1, 0xe5, 0x35, 0x5d, 0xbd, 0xdc, 0x96, 0xe5, 0x6c, 0x84, + 0x24, 0xfa, 0xa7, 0x91, 0xcb, 0x63, 0x08, 0xc7, 0xf7, 0x0e, 0x2f, 0x25, 0xbc, 0xc3, 0x72, 0x3a, + 0x17, 0x89, 0x40, 0x8b, 0xae, 0xa9, 0x63, 0x2c, 0x4c, 0xb8, 0xa6, 0x66, 0xd5, 0xda, 0x78, 0xf4, + 0x9a, 0x5a, 0x66, 0x24, 0xa2, 0xd0, 0x7f, 0xa2, 0xc1, 0x92, 0x88, 0x75, 0x22, 0x5d, 0x39, 0x01, + 0x91, 0xa0, 0xaf, 0x09, 0x8f, 0x9f, 0x65, 0x31, 0xd9, 0x53, 0xa3, 0x62, 0xb2, 0x88, 0x4f, 0x29, + 0x28, 0xbb, 0x08, 0xa5, 0xbb, 0x0c, 0xe9, 0x8d, 0xfb, 0x04, 0x35, 0xa0, 0xb0, 0x87, 0xfd, 0xc0, + 0xf6, 0x5c, 0x61, 0xff, 0xe1, 0xe7, 0xa5, 0x0b, 0x50, 0x0c, 0xaf, 0xf4, 0xa1, 0x02, 0x64, 0xaf, + 0x3b, 0x4e, 0x7d, 0x0a, 0x55, 0xa0, 0xb8, 0x21, 0xee, 0xad, 0xd5, 0xb5, 0x4b, 0xaf, 0xc3, 0x9c, + 0x22, 0xf6, 0x43, 0xb3, 0x50, 0xbd, 0x6e, 0xb1, 0x45, 0xc2, 0x7b, 0x1e, 0x05, 0xd6, 0xa7, 0xd0, + 0x22, 0x20, 0x03, 0x77, 0xbd, 0x3d, 0x86, 0xf8, 0xa6, 0xef, 0x75, 0x19, 0x5c, 0xbb, 0xf4, 0x34, + 0xcc, 0xab, 0x38, 0x45, 0x25, 0xc8, 0xb1, 0x9e, 0xd7, 0xa7, 0x10, 0x40, 0xde, 0xc0, 0x7b, 0xde, + 0x3d, 0x5c, 0xd7, 0xd6, 0x7e, 0x70, 0x19, 0xaa, 0x9c, 0xf7, 0x2d, 0xec, 0xef, 0xd9, 0x6d, 0x8c, + 0x5a, 0x50, 0x4f, 0x3e, 0xd7, 0x84, 0xbe, 0xa2, 0xde, 0xe2, 0x56, 0xbf, 0xea, 0xd4, 0x1c, 0xa5, + 0x38, 0xfa, 0x14, 0xfa, 0x00, 0x6a, 0xf1, 0xb7, 0x8e, 0x90, 0xfa, 0xe4, 0x5e, 0xf9, 0x20, 0xd2, + 0x61, 0x95, 0xb7, 0xa0, 0x1a, 0x7b, 0xb1, 0x08, 0xa9, 0x07, 0x53, 0xf5, 0xaa, 0x51, 0x53, 0xbd, + 0xa5, 0x22, 0x3f, 0x26, 0xc4, 0xb9, 0x8f, 0x3f, 0x22, 0x92, 0xc2, 0xbd, 0xf2, 0xa5, 0x91, 0xc3, + 0xb8, 0x37, 0x61, 0x76, 0xe8, 0x8d, 0x0f, 0xf4, 0x74, 0x8a, 0x13, 0x53, 0xbf, 0x05, 0x72, 0x58, + 0x13, 0xfb, 0x80, 0x86, 0xdf, 0xe1, 0x41, 0xab, 0xea, 0x11, 0x48, 0x7b, 0x8e, 0xa8, 0x79, 0x65, + 0x6c, 0xfc, 0x48, 0x70, 0xbf, 0xa9, 0xc1, 0x52, 0xca, 0x33, 0x1c, 0xe8, 0x6a, 0xda, 0x8e, 0xe5, + 0x88, 0x47, 0x45, 0x9a, 0xcf, 0x1d, 0x8d, 0x28, 0x62, 0xc4, 0x85, 0x99, 0xc4, 0x93, 0x14, 0xe8, + 0x72, 0xea, 0xfd, 0xdb, 0xe1, 0x27, 0x3a, 0x9a, 0x5f, 0x19, 0x0f, 0x39, 0x6a, 0xef, 0x43, 0x98, + 0x49, 0xbc, 0xe3, 0x90, 0xd2, 0x9e, 0xfa, 0xb5, 0x87, 0xc3, 0x06, 0xf4, 0x1b, 0x50, 0x8d, 0x3d, + 0xb8, 0x90, 0xa2, 0xf1, 0xaa, 0x47, 0x19, 0x0e, 0xab, 0xfa, 0x43, 0xa8, 0xc8, 0xef, 0x22, 0xa0, + 0x95, 0x34, 0x5b, 0x1a, 0xaa, 0xf8, 0x28, 0xa6, 0x34, 0xb8, 0xcf, 0x3c, 0xc2, 0x94, 0x86, 0xae, + 0x80, 0x8f, 0x6f, 0x4a, 0x52, 0xfd, 0x23, 0x4d, 0xe9, 0xc8, 0x4d, 0x7c, 0x53, 0x63, 0x07, 0x2b, + 0x8a, 0xfb, 0xf2, 0x68, 0x2d, 0x4d, 0x37, 0xd3, 0x5f, 0x06, 0x68, 0x5e, 0x3d, 0x12, 0x4d, 0x24, + 0xc5, 0x7b, 0x50, 0x8b, 0xdf, 0x0a, 0x4f, 0x91, 0xa2, 0xf2, 0x22, 0x7d, 0xf3, 0xf2, 0x58, 0xb8, + 0x51, 0x63, 0xef, 0x43, 0x59, 0x7a, 0x81, 0x11, 0x3d, 0x39, 0x42, 0x8f, 0xe5, 0xe7, 0x08, 0x0f, + 0x93, 0xe4, 0xbb, 0x50, 0x8a, 0x1e, 0x4e, 0x44, 0x17, 0x53, 0xf5, 0xf7, 0x28, 0x55, 0x6e, 0x01, + 0x0c, 0x5e, 0x45, 0x44, 0x4f, 0x28, 0xeb, 0x1c, 0x7a, 0x36, 0xf1, 0xb0, 0x4a, 0xa3, 0xee, 0xf3, + 0xcb, 0x36, 0xa3, 0xba, 0x2f, 0xdf, 0x0e, 0x3b, 0xac, 0xda, 0x5d, 0xa8, 0xc6, 0xee, 0x74, 0xa6, + 0x99, 0xb0, 0xe2, 0xaa, 0x6d, 0xf3, 0xd2, 0x38, 0xa8, 0xd1, 0xf8, 0xed, 0x42, 0x35, 0x76, 0xc3, + 0x2e, 0xa5, 0x25, 0xd5, 0x85, 0xc2, 0x94, 0x96, 0x94, 0x17, 0xf6, 0xf4, 0x29, 0xf4, 0xa9, 0x74, + 0x99, 0x2f, 0x76, 0x61, 0x12, 0x3d, 0x3b, 0xb2, 0x1e, 0xd5, 0x7d, 0xd1, 0xe6, 0xda, 0x51, 0x48, + 0x22, 0x16, 0x84, 0x56, 0x71, 0x91, 0xa6, 0x6b, 0xd5, 0x51, 0x46, 0x6a, 0x0b, 0xf2, 0xfc, 0xce, + 0x1c, 0xd2, 0x53, 0x6e, 0xc7, 0x4a, 0x17, 0xea, 0x9a, 0xea, 0xe5, 0x47, 0xfc, 0x3a, 0x19, 0xaf, + 0x94, 0x6f, 0x6e, 0xa7, 0x54, 0x1a, 0xbb, 0x30, 0x35, 0x6e, 0xa5, 0x06, 0xe4, 0xf9, 0x9d, 0x8e, + 0x94, 0x4a, 0x63, 0xf7, 0x94, 0x9a, 0xa3, 0x71, 0xf8, 0x9a, 0x77, 0x0a, 0x6d, 0x42, 0x8e, 0xe5, + 0x0b, 0xa0, 0x0b, 0xa3, 0xae, 0x3b, 0x8c, 0xaa, 0x31, 0x76, 0x23, 0x42, 0x9f, 0x42, 0xef, 0x40, + 0x8e, 0x9d, 0xb3, 0xa6, 0xd4, 0x28, 0xdf, 0x59, 0x68, 0x8e, 0x44, 0x09, 0x59, 0xb4, 0xa0, 0x22, + 0x27, 0x2a, 0xa7, 0x4c, 0x59, 0x8a, 0x54, 0xee, 0xe6, 0x38, 0x98, 0x61, 0x2b, 0xdc, 0x8c, 0x06, + 0xb9, 0x13, 0xe9, 0x66, 0x34, 0x94, 0x97, 0x91, 0x6e, 0x46, 0xc3, 0xa9, 0x18, 0xfa, 0x14, 0xfa, + 0x1d, 0x0d, 0x1a, 0x69, 0xd9, 0xb3, 0x28, 0x35, 0x02, 0x1a, 0x95, 0x02, 0xdc, 0x7c, 0xfe, 0x88, + 0x54, 0x11, 0x2f, 0x9f, 0xb0, 0xb3, 0xd8, 0xa1, 0x7c, 0xd9, 0x2b, 0x69, 0xf5, 0xa5, 0xe4, 0x80, + 0x36, 0x9f, 0x19, 0x9f, 0x20, 0x6a, 0x7b, 0x1b, 0xca, 0xd2, 0x39, 0x70, 0x8a, 0xe7, 0x1d, 0x3e, + 0xc0, 0x4e, 0x19, 0x55, 0xc5, 0x91, 0x32, 0x57, 0x6f, 0x96, 0x64, 0x99, 0xa2, 0x8c, 0x72, 0xce, + 0x66, 0x8a, 0x7a, 0xc7, 0x72, 0x34, 0xf5, 0x29, 0x84, 0xa1, 0x22, 0x67, 0x5c, 0xa6, 0x68, 0xa3, + 0x22, 0x59, 0xb3, 0xf9, 0xd4, 0x18, 0x98, 0x51, 0x33, 0x2d, 0x80, 0x41, 0xc6, 0x63, 0xca, 0x5c, + 0x37, 0x94, 0x74, 0xd9, 0x7c, 0xf2, 0x50, 0x3c, 0x79, 0xda, 0x97, 0x72, 0x18, 0x53, 0xa4, 0x3f, + 0x9c, 0xe5, 0x38, 0xc6, 0x5a, 0x64, 0x38, 0x4f, 0x2e, 0x65, 0x2d, 0x92, 0x9a, 0x92, 0xd7, 0xbc, + 0x32, 0x36, 0x7e, 0xd4, 0x9f, 0x8f, 0xa1, 0x9e, 0xcc, 0x2b, 0x4c, 0x59, 0xe3, 0xa6, 0x64, 0x37, + 0x36, 0x9f, 0x1e, 0x13, 0x5b, 0x9e, 0x0f, 0xcf, 0x0c, 0xf3, 0xf4, 0x2b, 0x36, 0xd9, 0x65, 0x29, + 0x6d, 0xe3, 0xf4, 0x5a, 0xce, 0x9e, 0x1b, 0xa7, 0xd7, 0xb1, 0x5c, 0x39, 0x31, 0x79, 0xb1, 0x0c, + 0x90, 0xb4, 0xc9, 0x4b, 0xce, 0xd2, 0x4a, 0x99, 0x67, 0xe2, 0x39, 0x4d, 0x3c, 0xfc, 0x8c, 0x67, + 0x96, 0xa0, 0x4b, 0x63, 0xa5, 0x9f, 0x8c, 0x0a, 0x3f, 0xd5, 0xa9, 0x2a, 0x7c, 0xe9, 0x96, 0x48, + 0x9c, 0x49, 0x59, 0x4a, 0xa9, 0x33, 0x6f, 0x52, 0x96, 0x6e, 0x29, 0xb9, 0x38, 0xcc, 0xb0, 0xea, + 0xc9, 0x2c, 0x84, 0xd1, 0x7b, 0x21, 0xc9, 0xd3, 0xe9, 0xc3, 0xb7, 0x2b, 0xea, 0xc9, 0x23, 0xff, + 0x94, 0x06, 0x52, 0x32, 0x03, 0xc6, 0x68, 0x20, 0x79, 0x70, 0x9e, 0xd2, 0x40, 0xca, 0xf9, 0xfa, + 0x18, 0xb1, 0x6b, 0xec, 0x10, 0x3b, 0x65, 0x2a, 0x54, 0x1d, 0x74, 0xa7, 0x4c, 0x85, 0xca, 0xf3, + 0x77, 0x1e, 0xd1, 0x0f, 0x0e, 0xa8, 0x53, 0xbc, 0xdc, 0xd0, 0x09, 0xf6, 0x61, 0xec, 0xbf, 0x03, + 0xc5, 0xf0, 0xd4, 0x19, 0x3d, 0x9e, 0x1a, 0x22, 0x1e, 0xa1, 0xc2, 0x0f, 0x61, 0x26, 0xb1, 0x83, + 0x97, 0xa2, 0xa2, 0xea, 0x93, 0xe8, 0xc3, 0xc7, 0x13, 0x06, 0x67, 0x9b, 0x29, 0x42, 0x18, 0x3a, + 0x1f, 0x4e, 0x71, 0xf5, 0xc3, 0x87, 0xa4, 0x72, 0x03, 0x94, 0xb1, 0x91, 0x0d, 0x48, 0xc7, 0x9a, + 0x23, 0x1b, 0x90, 0xcf, 0xf6, 0xc4, 0x7a, 0x35, 0x76, 0x90, 0x93, 0xb6, 0x5e, 0x55, 0x1d, 0xa3, + 0xa5, 0xad, 0x57, 0x95, 0x27, 0x43, 0x5c, 0xfd, 0x93, 0xbb, 0xa1, 0x29, 0xea, 0x9f, 0xb2, 0x0d, + 0x7d, 0xd8, 0x78, 0x6c, 0x43, 0x59, 0xda, 0x4b, 0x47, 0xa3, 0xe4, 0x20, 0x6f, 0xf8, 0xa7, 0xc4, + 0x25, 0x8a, 0x6d, 0x79, 0x7d, 0x6a, 0xad, 0x0f, 0x95, 0x4d, 0xdf, 0xbb, 0x7f, 0x10, 0xee, 0xd0, + 0xfe, 0x72, 0xa2, 0x8a, 0x6b, 0x6d, 0xa8, 0x71, 0x84, 0x16, 0xbe, 0x4f, 0x5a, 0xde, 0xf6, 0x47, + 0xe8, 0xec, 0x2a, 0xff, 0x8f, 0x86, 0xd5, 0xf0, 0x3f, 0x1a, 0x56, 0xdf, 0xb4, 0x1d, 0xfc, 0x8e, + 0xc8, 0x91, 0xfd, 0xef, 0xc2, 0x88, 0x1b, 0x9a, 0xd1, 0xfe, 0xb8, 0x21, 0xfe, 0x26, 0xe2, 0x8d, + 0xfb, 0xe4, 0x9d, 0xed, 0x8f, 0x6e, 0x98, 0x5f, 0xbc, 0x5a, 0x80, 0xdc, 0xda, 0xea, 0xb3, 0xab, + 0xcf, 0x40, 0xcd, 0x8e, 0xd0, 0x3b, 0x7e, 0xaf, 0x7d, 0xa3, 0xcc, 0x89, 0x36, 0x69, 0x3d, 0x9b, + 0xda, 0xaf, 0x5e, 0xed, 0xd8, 0x64, 0xb7, 0xbf, 0x4d, 0x87, 0xe0, 0x0a, 0x47, 0x7b, 0xda, 0xf6, + 0xc4, 0xaf, 0x2b, 0xb6, 0x4b, 0xb0, 0xef, 0x9a, 0x0e, 0xff, 0xfb, 0x08, 0x01, 0xed, 0x6d, 0xff, + 0xb1, 0xa6, 0x6d, 0xe7, 0x19, 0xe8, 0xea, 0xcf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x5f, 0xbe, 0x9e, + 0x67, 0xa0, 0x62, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -6180,6 +7506,15 @@ type MilvusServiceClient interface { UpdateCredential(ctx context.Context, in *UpdateCredentialRequest, opts ...grpc.CallOption) (*commonpb.Status, error) DeleteCredential(ctx context.Context, in *DeleteCredentialRequest, opts ...grpc.CallOption) (*commonpb.Status, error) ListCredUsers(ctx context.Context, in *ListCredUsersRequest, opts ...grpc.CallOption) (*ListCredUsersResponse, error) + // https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control + CreateRole(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + DropRole(ctx context.Context, in *DropRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + OperateUserRole(ctx context.Context, in *OperateUserRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + SelectRole(ctx context.Context, in *SelectRoleRequest, opts ...grpc.CallOption) (*SelectRoleResponse, error) + SelectUser(ctx context.Context, in *SelectUserRequest, opts ...grpc.CallOption) (*SelectUserResponse, error) + SelectResource(ctx context.Context, in *SelectResourceRequest, opts ...grpc.CallOption) (*SelectResourceResponse, error) + OperatePrivilege(ctx context.Context, in *OperatePrivilegeRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + SelectGrant(ctx context.Context, in *SelectGrantRequest, opts ...grpc.CallOption) (*SelectGrantResponse, error) } type milvusServiceClient struct { @@ -6613,6 +7948,78 @@ func (c *milvusServiceClient) ListCredUsers(ctx context.Context, in *ListCredUse return out, nil } +func (c *milvusServiceClient) CreateRole(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/CreateRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *milvusServiceClient) DropRole(ctx context.Context, in *DropRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/DropRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *milvusServiceClient) OperateUserRole(ctx context.Context, in *OperateUserRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/OperateUserRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *milvusServiceClient) SelectRole(ctx context.Context, in *SelectRoleRequest, opts ...grpc.CallOption) (*SelectRoleResponse, error) { + out := new(SelectRoleResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/SelectRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *milvusServiceClient) SelectUser(ctx context.Context, in *SelectUserRequest, opts ...grpc.CallOption) (*SelectUserResponse, error) { + out := new(SelectUserResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/SelectUser", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *milvusServiceClient) SelectResource(ctx context.Context, in *SelectResourceRequest, opts ...grpc.CallOption) (*SelectResourceResponse, error) { + out := new(SelectResourceResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/SelectResource", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *milvusServiceClient) OperatePrivilege(ctx context.Context, in *OperatePrivilegeRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/OperatePrivilege", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *milvusServiceClient) SelectGrant(ctx context.Context, in *SelectGrantRequest, opts ...grpc.CallOption) (*SelectGrantResponse, error) { + out := new(SelectGrantResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/SelectGrant", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MilvusServiceServer is the server API for MilvusService service. type MilvusServiceServer interface { CreateCollection(context.Context, *CreateCollectionRequest) (*commonpb.Status, error) @@ -6666,6 +8073,15 @@ type MilvusServiceServer interface { UpdateCredential(context.Context, *UpdateCredentialRequest) (*commonpb.Status, error) DeleteCredential(context.Context, *DeleteCredentialRequest) (*commonpb.Status, error) ListCredUsers(context.Context, *ListCredUsersRequest) (*ListCredUsersResponse, error) + // https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control + CreateRole(context.Context, *CreateRoleRequest) (*commonpb.Status, error) + DropRole(context.Context, *DropRoleRequest) (*commonpb.Status, error) + OperateUserRole(context.Context, *OperateUserRoleRequest) (*commonpb.Status, error) + SelectRole(context.Context, *SelectRoleRequest) (*SelectRoleResponse, error) + SelectUser(context.Context, *SelectUserRequest) (*SelectUserResponse, error) + SelectResource(context.Context, *SelectResourceRequest) (*SelectResourceResponse, error) + OperatePrivilege(context.Context, *OperatePrivilegeRequest) (*commonpb.Status, error) + SelectGrant(context.Context, *SelectGrantRequest) (*SelectGrantResponse, error) } // UnimplementedMilvusServiceServer can be embedded to have forward compatible implementations. @@ -6813,6 +8229,30 @@ func (*UnimplementedMilvusServiceServer) DeleteCredential(ctx context.Context, r func (*UnimplementedMilvusServiceServer) ListCredUsers(ctx context.Context, req *ListCredUsersRequest) (*ListCredUsersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListCredUsers not implemented") } +func (*UnimplementedMilvusServiceServer) CreateRole(ctx context.Context, req *CreateRoleRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateRole not implemented") +} +func (*UnimplementedMilvusServiceServer) DropRole(ctx context.Context, req *DropRoleRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method DropRole not implemented") +} +func (*UnimplementedMilvusServiceServer) OperateUserRole(ctx context.Context, req *OperateUserRoleRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method OperateUserRole not implemented") +} +func (*UnimplementedMilvusServiceServer) SelectRole(ctx context.Context, req *SelectRoleRequest) (*SelectRoleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectRole not implemented") +} +func (*UnimplementedMilvusServiceServer) SelectUser(ctx context.Context, req *SelectUserRequest) (*SelectUserResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectUser not implemented") +} +func (*UnimplementedMilvusServiceServer) SelectResource(ctx context.Context, req *SelectResourceRequest) (*SelectResourceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectResource not implemented") +} +func (*UnimplementedMilvusServiceServer) OperatePrivilege(ctx context.Context, req *OperatePrivilegeRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method OperatePrivilege not implemented") +} +func (*UnimplementedMilvusServiceServer) SelectGrant(ctx context.Context, req *SelectGrantRequest) (*SelectGrantResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectGrant not implemented") +} func RegisterMilvusServiceServer(s *grpc.Server, srv MilvusServiceServer) { s.RegisterService(&_MilvusService_serviceDesc, srv) @@ -7664,6 +9104,150 @@ func _MilvusService_ListCredUsers_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _MilvusService_CreateRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).CreateRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/CreateRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).CreateRole(ctx, req.(*CreateRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MilvusService_DropRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DropRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).DropRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/DropRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).DropRole(ctx, req.(*DropRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MilvusService_OperateUserRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OperateUserRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).OperateUserRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/OperateUserRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).OperateUserRole(ctx, req.(*OperateUserRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MilvusService_SelectRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SelectRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).SelectRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/SelectRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).SelectRole(ctx, req.(*SelectRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MilvusService_SelectUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SelectUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).SelectUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/SelectUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).SelectUser(ctx, req.(*SelectUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MilvusService_SelectResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SelectResourceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).SelectResource(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/SelectResource", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).SelectResource(ctx, req.(*SelectResourceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MilvusService_OperatePrivilege_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OperatePrivilegeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).OperatePrivilege(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/OperatePrivilege", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).OperatePrivilege(ctx, req.(*OperatePrivilegeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MilvusService_SelectGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SelectGrantRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MilvusServiceServer).SelectGrant(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.milvus.MilvusService/SelectGrant", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MilvusServiceServer).SelectGrant(ctx, req.(*SelectGrantRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _MilvusService_serviceDesc = grpc.ServiceDesc{ ServiceName: "milvus.proto.milvus.MilvusService", HandlerType: (*MilvusServiceServer)(nil), @@ -7856,6 +9440,38 @@ var _MilvusService_serviceDesc = grpc.ServiceDesc{ MethodName: "ListCredUsers", Handler: _MilvusService_ListCredUsers_Handler, }, + { + MethodName: "CreateRole", + Handler: _MilvusService_CreateRole_Handler, + }, + { + MethodName: "DropRole", + Handler: _MilvusService_DropRole_Handler, + }, + { + MethodName: "OperateUserRole", + Handler: _MilvusService_OperateUserRole_Handler, + }, + { + MethodName: "SelectRole", + Handler: _MilvusService_SelectRole_Handler, + }, + { + MethodName: "SelectUser", + Handler: _MilvusService_SelectUser_Handler, + }, + { + MethodName: "SelectResource", + Handler: _MilvusService_SelectResource_Handler, + }, + { + MethodName: "OperatePrivilege", + Handler: _MilvusService_OperatePrivilege_Handler, + }, + { + MethodName: "SelectGrant", + Handler: _MilvusService_SelectGrant_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "milvus.proto", diff --git a/internal/proto/proxy.proto b/internal/proto/proxy.proto index ce9cdfa1a4..94b18ad402 100644 --- a/internal/proto/proxy.proto +++ b/internal/proto/proxy.proto @@ -22,6 +22,8 @@ service Proxy { rpc InvalidateCredentialCache(InvalidateCredCacheRequest) returns (common.Status) {} rpc UpdateCredentialCache(UpdateCredCacheRequest) returns (common.Status) {} rpc ClearCredUsersCache(internal.ClearCredUsersCacheRequest) returns (common.Status) {} + + rpc RefreshPolicyInfoCache(RefreshPolicyInfoCacheRequest) returns (common.Status) {} } message InvalidateCollMetaCacheRequest { @@ -47,3 +49,9 @@ message UpdateCredCacheRequest { string username = 2; string password = 3; } + +message RefreshPolicyInfoCacheRequest { + common.MsgBase base = 1; + int32 opType = 2; + string opKey = 3; +} \ No newline at end of file diff --git a/internal/proto/proxypb/proxy.pb.go b/internal/proto/proxypb/proxy.pb.go index 8b822bd51e..abb56c8ac4 100644 --- a/internal/proto/proxypb/proxy.pb.go +++ b/internal/proto/proxypb/proxy.pb.go @@ -247,53 +247,113 @@ func (m *UpdateCredCacheRequest) GetPassword() string { return "" } +type RefreshPolicyInfoCacheRequest struct { + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + OpType int32 `protobuf:"varint,2,opt,name=opType,proto3" json:"opType,omitempty"` + OpKey string `protobuf:"bytes,3,opt,name=opKey,proto3" json:"opKey,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RefreshPolicyInfoCacheRequest) Reset() { *m = RefreshPolicyInfoCacheRequest{} } +func (m *RefreshPolicyInfoCacheRequest) String() string { return proto.CompactTextString(m) } +func (*RefreshPolicyInfoCacheRequest) ProtoMessage() {} +func (*RefreshPolicyInfoCacheRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_700b50b08ed8dbaf, []int{4} +} + +func (m *RefreshPolicyInfoCacheRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RefreshPolicyInfoCacheRequest.Unmarshal(m, b) +} +func (m *RefreshPolicyInfoCacheRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RefreshPolicyInfoCacheRequest.Marshal(b, m, deterministic) +} +func (m *RefreshPolicyInfoCacheRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RefreshPolicyInfoCacheRequest.Merge(m, src) +} +func (m *RefreshPolicyInfoCacheRequest) XXX_Size() int { + return xxx_messageInfo_RefreshPolicyInfoCacheRequest.Size(m) +} +func (m *RefreshPolicyInfoCacheRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RefreshPolicyInfoCacheRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RefreshPolicyInfoCacheRequest proto.InternalMessageInfo + +func (m *RefreshPolicyInfoCacheRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *RefreshPolicyInfoCacheRequest) GetOpType() int32 { + if m != nil { + return m.OpType + } + return 0 +} + +func (m *RefreshPolicyInfoCacheRequest) GetOpKey() string { + if m != nil { + return m.OpKey + } + return "" +} + func init() { proto.RegisterType((*InvalidateCollMetaCacheRequest)(nil), "milvus.proto.proxy.InvalidateCollMetaCacheRequest") proto.RegisterType((*ReleaseDQLMessageStreamRequest)(nil), "milvus.proto.proxy.ReleaseDQLMessageStreamRequest") proto.RegisterType((*InvalidateCredCacheRequest)(nil), "milvus.proto.proxy.InvalidateCredCacheRequest") proto.RegisterType((*UpdateCredCacheRequest)(nil), "milvus.proto.proxy.UpdateCredCacheRequest") + proto.RegisterType((*RefreshPolicyInfoCacheRequest)(nil), "milvus.proto.proxy.RefreshPolicyInfoCacheRequest") } func init() { proto.RegisterFile("proxy.proto", fileDescriptor_700b50b08ed8dbaf) } var fileDescriptor_700b50b08ed8dbaf = []byte{ - // 566 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xdb, 0x6e, 0xd3, 0x40, - 0x10, 0xad, 0x49, 0x28, 0x65, 0x1a, 0x15, 0xb4, 0x5c, 0x1a, 0x0c, 0x54, 0x91, 0x41, 0x10, 0x55, - 0x22, 0x29, 0x81, 0x2f, 0x68, 0x22, 0x45, 0x91, 0x08, 0x02, 0x47, 0x15, 0x12, 0x3c, 0xa0, 0xb5, - 0x3d, 0x4a, 0x5c, 0xad, 0x77, 0xdd, 0xdd, 0x75, 0x80, 0x57, 0x1e, 0xf9, 0x0a, 0x3e, 0x83, 0xcf, - 0x43, 0xbe, 0xc4, 0x89, 0x93, 0xb8, 0xe6, 0xa2, 0xbe, 0x79, 0x66, 0xcf, 0xcc, 0x99, 0xb3, 0xb3, - 0xc7, 0xb0, 0x1f, 0x4a, 0xf1, 0xf5, 0x5b, 0x27, 0x94, 0x42, 0x0b, 0x42, 0x02, 0x9f, 0xcd, 0x23, - 0x95, 0x46, 0x9d, 0xe4, 0xc4, 0x6c, 0xb8, 0x22, 0x08, 0x04, 0x4f, 0x73, 0xe6, 0x81, 0xcf, 0x35, - 0x4a, 0x4e, 0x59, 0x16, 0x37, 0x56, 0x2b, 0xac, 0x5f, 0x06, 0x1c, 0x8d, 0xf8, 0x9c, 0x32, 0xdf, - 0xa3, 0x1a, 0xfb, 0x82, 0xb1, 0x31, 0x6a, 0xda, 0xa7, 0xee, 0x0c, 0x6d, 0xbc, 0x88, 0x50, 0x69, - 0x72, 0x02, 0x75, 0x87, 0x2a, 0x6c, 0x1a, 0x2d, 0xa3, 0xbd, 0xdf, 0x7b, 0xd4, 0x29, 0x30, 0x66, - 0x54, 0x63, 0x35, 0x3d, 0xa5, 0x0a, 0xed, 0x04, 0x49, 0x0e, 0xe1, 0x86, 0xe7, 0x7c, 0xe6, 0x34, - 0xc0, 0xe6, 0xb5, 0x96, 0xd1, 0xbe, 0x69, 0xef, 0x7a, 0xce, 0x5b, 0x1a, 0x20, 0x79, 0x0e, 0xb7, - 0x5c, 0xc1, 0x18, 0xba, 0xda, 0x17, 0x3c, 0x05, 0xd4, 0x12, 0xc0, 0xc1, 0x32, 0x9d, 0x00, 0x2d, - 0x68, 0x2c, 0x33, 0xa3, 0x41, 0xb3, 0xde, 0x32, 0xda, 0x35, 0xbb, 0x90, 0xb3, 0x7e, 0x18, 0x70, - 0x64, 0x23, 0x43, 0xaa, 0x70, 0xf0, 0xfe, 0xcd, 0x18, 0x95, 0xa2, 0x53, 0x9c, 0x68, 0x89, 0x34, - 0xf8, 0xf7, 0xd1, 0x09, 0xd4, 0x3d, 0x67, 0x34, 0x48, 0xe6, 0xae, 0xd9, 0xc9, 0xf7, 0xc6, 0x30, - 0xb5, 0x2d, 0xc3, 0x9c, 0x83, 0xb9, 0x72, 0x8d, 0x12, 0xbd, 0xff, 0xbc, 0x42, 0x13, 0xf6, 0x22, - 0x15, 0xaf, 0x2d, 0xbf, 0xc3, 0x3c, 0xb6, 0xbe, 0x1b, 0x70, 0xff, 0x2c, 0xbc, 0x7a, 0xa2, 0xf8, - 0x2c, 0xa4, 0x4a, 0x7d, 0x11, 0xd2, 0xcb, 0xf6, 0x94, 0xc7, 0xbd, 0x9f, 0x7b, 0x70, 0xfd, 0x5d, - 0xfc, 0xdc, 0x48, 0x08, 0x64, 0x88, 0xba, 0x2f, 0x82, 0x50, 0x70, 0xe4, 0x7a, 0xa2, 0xa9, 0x46, - 0x45, 0x4e, 0x8a, 0xdc, 0xf9, 0x23, 0xdc, 0x84, 0x66, 0xb3, 0x9b, 0xcf, 0x4a, 0x2a, 0xd6, 0xe0, - 0xd6, 0x0e, 0xb9, 0x80, 0xbb, 0x43, 0x4c, 0x42, 0x5f, 0x69, 0xdf, 0x55, 0xfd, 0x19, 0xe5, 0x1c, - 0x19, 0xe9, 0x95, 0x73, 0x6e, 0x80, 0x17, 0xac, 0x4f, 0x8a, 0x35, 0x59, 0x30, 0xd1, 0xd2, 0xe7, - 0x53, 0x1b, 0x55, 0x28, 0xb8, 0x42, 0x6b, 0x87, 0x48, 0x78, 0x5c, 0xb4, 0x49, 0xba, 0xf9, 0xdc, - 0x2c, 0xeb, 0xdc, 0xa9, 0x47, 0x2f, 0x77, 0x96, 0xf9, 0x70, 0xeb, 0x7e, 0xe2, 0x51, 0xa3, 0x58, - 0x26, 0x85, 0xc6, 0x10, 0xf5, 0xc0, 0x5b, 0xc8, 0x3b, 0x2e, 0x97, 0x97, 0x83, 0xfe, 0x52, 0x16, - 0x83, 0xc3, 0x12, 0x0b, 0x6d, 0x17, 0x74, 0xb9, 0xdf, 0xaa, 0x04, 0x7d, 0x80, 0xdb, 0x13, 0xe4, - 0xde, 0x04, 0xa9, 0x74, 0x67, 0x36, 0xaa, 0x88, 0x69, 0xf2, 0xb4, 0x44, 0xd4, 0x2a, 0x48, 0x55, - 0x35, 0xfe, 0x04, 0x24, 0x6e, 0x6c, 0xa3, 0x96, 0x3e, 0xce, 0x31, 0x6b, 0x5d, 0xf6, 0xa0, 0x8a, - 0xb0, 0xca, 0xe6, 0xe7, 0xf0, 0xa0, 0x68, 0x6d, 0xe4, 0xda, 0xa7, 0x2c, 0x5d, 0x7b, 0xa7, 0x62, - 0xed, 0x6b, 0x06, 0xad, 0xe2, 0x72, 0xe0, 0xde, 0xd2, 0xd9, 0xab, 0x3c, 0xc7, 0xdb, 0x78, 0xb6, - 0xff, 0x04, 0xaa, 0x38, 0xa6, 0x70, 0xa7, 0xcf, 0x90, 0xca, 0xb8, 0xee, 0x4c, 0xa1, 0x54, 0x29, - 0xc3, 0xcb, 0x32, 0xfb, 0x6d, 0x62, 0xff, 0x8c, 0xe8, 0xf4, 0xf5, 0xc7, 0xde, 0xd4, 0xd7, 0xb3, - 0xc8, 0x89, 0x4f, 0xba, 0x29, 0xf4, 0x85, 0x2f, 0xb2, 0xaf, 0xee, 0x82, 0xa1, 0x9b, 0x54, 0x77, - 0x13, 0x49, 0xa1, 0xe3, 0xec, 0x26, 0xe1, 0xab, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xee, - 0x9c, 0xaf, 0xe7, 0x06, 0x00, 0x00, + // 626 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0x5f, 0x4f, 0x13, 0x4f, + 0x14, 0x65, 0x7f, 0x05, 0x7e, 0x72, 0x69, 0xd0, 0x8c, 0x08, 0x58, 0x85, 0x90, 0xd5, 0x28, 0x21, + 0xb1, 0xc5, 0xea, 0x27, 0xa0, 0x4d, 0x48, 0xa3, 0x18, 0xdc, 0x4a, 0x4c, 0xf4, 0xc1, 0xcc, 0xee, + 0x5e, 0xda, 0x21, 0xb3, 0x33, 0xcb, 0xcc, 0x14, 0xed, 0x93, 0x89, 0x8f, 0xc6, 0x0f, 0xe4, 0xc7, + 0x33, 0xfb, 0xa7, 0x4b, 0xb7, 0xdd, 0x65, 0x55, 0xe2, 0xdb, 0x9c, 0x99, 0x73, 0xe7, 0x9c, 0x3b, + 0x77, 0xee, 0x85, 0xd5, 0x50, 0xc9, 0x2f, 0xe3, 0x66, 0xa8, 0xa4, 0x91, 0x84, 0x04, 0x8c, 0x5f, + 0x8e, 0x74, 0x82, 0x9a, 0xf1, 0x49, 0xa3, 0xee, 0xc9, 0x20, 0x90, 0x22, 0xd9, 0x6b, 0xac, 0x31, + 0x61, 0x50, 0x09, 0xca, 0x53, 0x5c, 0x9f, 0x8e, 0xb0, 0x7f, 0x5a, 0xb0, 0xd3, 0x13, 0x97, 0x94, + 0x33, 0x9f, 0x1a, 0xec, 0x48, 0xce, 0x8f, 0xd1, 0xd0, 0x0e, 0xf5, 0x86, 0xe8, 0xe0, 0xc5, 0x08, + 0xb5, 0x21, 0x07, 0xb0, 0xe8, 0x52, 0x8d, 0x5b, 0xd6, 0xae, 0xb5, 0xb7, 0xda, 0x7e, 0xd8, 0xcc, + 0x29, 0xa6, 0x52, 0xc7, 0x7a, 0x70, 0x48, 0x35, 0x3a, 0x31, 0x93, 0x6c, 0xc2, 0xff, 0xbe, 0xfb, + 0x49, 0xd0, 0x00, 0xb7, 0xfe, 0xdb, 0xb5, 0xf6, 0x56, 0x9c, 0x65, 0xdf, 0x7d, 0x43, 0x03, 0x24, + 0x4f, 0xe1, 0xb6, 0x27, 0x39, 0x47, 0xcf, 0x30, 0x29, 0x12, 0x42, 0x2d, 0x26, 0xac, 0x5d, 0x6d, + 0xc7, 0x44, 0x1b, 0xea, 0x57, 0x3b, 0xbd, 0xee, 0xd6, 0xe2, 0xae, 0xb5, 0x57, 0x73, 0x72, 0x7b, + 0xf6, 0x77, 0x0b, 0x76, 0x1c, 0xe4, 0x48, 0x35, 0x76, 0xdf, 0xbe, 0x3e, 0x46, 0xad, 0xe9, 0x00, + 0xfb, 0x46, 0x21, 0x0d, 0xfe, 0xde, 0x3a, 0x81, 0x45, 0xdf, 0xed, 0x75, 0x63, 0xdf, 0x35, 0x27, + 0x5e, 0xcf, 0x99, 0xa9, 0x15, 0x98, 0x39, 0x87, 0xc6, 0xd4, 0x33, 0x2a, 0xf4, 0x6f, 0xf8, 0x84, + 0x0d, 0xb8, 0x35, 0xd2, 0x51, 0xd9, 0xb2, 0x37, 0xcc, 0xb0, 0xfd, 0xcd, 0x82, 0x8d, 0xd3, 0xf0, + 0xdf, 0x0b, 0x45, 0x67, 0x21, 0xd5, 0xfa, 0xb3, 0x54, 0x7e, 0x5a, 0xa7, 0x0c, 0xdb, 0x5f, 0x61, + 0xdb, 0xc1, 0x33, 0x85, 0x7a, 0x78, 0x22, 0x39, 0xf3, 0xc6, 0x3d, 0x71, 0x26, 0x6f, 0x68, 0x65, + 0x03, 0x96, 0x65, 0xf8, 0x6e, 0x1c, 0x26, 0x46, 0x96, 0x9c, 0x14, 0x91, 0x75, 0x58, 0x92, 0xe1, + 0x2b, 0x1c, 0xa7, 0x1e, 0x12, 0xd0, 0xfe, 0xb1, 0x02, 0x4b, 0x27, 0xd1, 0x7f, 0x27, 0x21, 0x90, + 0x23, 0x34, 0x1d, 0x19, 0x84, 0x52, 0xa0, 0x30, 0x7d, 0x43, 0x0d, 0x6a, 0x72, 0x90, 0x57, 0xcc, + 0xba, 0x60, 0x9e, 0x9a, 0x3a, 0x6e, 0x3c, 0x29, 0x89, 0x98, 0xa1, 0xdb, 0x0b, 0xe4, 0x02, 0xd6, + 0x8f, 0x30, 0x86, 0x4c, 0x1b, 0xe6, 0xe9, 0xce, 0x90, 0x0a, 0x81, 0x9c, 0xb4, 0xcb, 0x35, 0xe7, + 0xc8, 0x13, 0xd5, 0x47, 0xf9, 0x98, 0x14, 0xf4, 0x8d, 0x62, 0x62, 0xe0, 0xa0, 0x0e, 0xa5, 0xd0, + 0x68, 0x2f, 0x10, 0x05, 0xdb, 0xf9, 0x3e, 0x4d, 0xbe, 0x5e, 0xd6, 0xad, 0xb3, 0xda, 0xc9, 0x90, + 0xb8, 0xbe, 0xb5, 0x1b, 0x0f, 0x0a, 0xab, 0x12, 0x59, 0x1d, 0x45, 0x69, 0x52, 0xa8, 0x1f, 0xa1, + 0xe9, 0xfa, 0x93, 0xf4, 0xf6, 0xcb, 0xd3, 0xcb, 0x48, 0x7f, 0x98, 0x16, 0x87, 0xcd, 0x92, 0x1e, + 0x2e, 0x4e, 0xe8, 0xfa, 0x86, 0xaf, 0x4a, 0xe8, 0x3d, 0xdc, 0xe9, 0xa3, 0xf0, 0xfb, 0x48, 0x95, + 0x37, 0x74, 0x50, 0x8f, 0xb8, 0x21, 0x8f, 0x4b, 0x92, 0x9a, 0x26, 0xe9, 0xaa, 0x8b, 0x3f, 0x02, + 0x89, 0x2e, 0x76, 0xd0, 0x28, 0x86, 0x97, 0x98, 0x5e, 0x5d, 0xf6, 0xa1, 0xf2, 0xb4, 0xca, 0xcb, + 0xcf, 0xe1, 0x7e, 0x7e, 0xb6, 0xa0, 0x30, 0x8c, 0xf2, 0xa4, 0xec, 0xcd, 0x8a, 0xb2, 0xcf, 0x4c, + 0x88, 0x2a, 0x2d, 0x17, 0xee, 0x5d, 0x8d, 0x96, 0x69, 0x9d, 0xfd, 0x22, 0x9d, 0xe2, 0x29, 0x54, + 0xa5, 0x31, 0x80, 0xbb, 0x1d, 0x8e, 0x54, 0x45, 0x71, 0xa7, 0x1a, 0x95, 0x4e, 0x14, 0x9e, 0x97, + 0xb5, 0xdf, 0x3c, 0xf7, 0x37, 0x85, 0xce, 0x61, 0xa3, 0x78, 0x46, 0xcd, 0x6a, 0x4d, 0xfe, 0xd6, + 0x35, 0xf3, 0xac, 0x42, 0xeb, 0xf0, 0xe5, 0x87, 0xf6, 0x80, 0x99, 0xe1, 0xc8, 0x8d, 0x4e, 0x5a, + 0x09, 0xf5, 0x19, 0x93, 0xe9, 0xaa, 0x35, 0xc9, 0xa6, 0x15, 0x47, 0xb7, 0x62, 0xc1, 0xd0, 0x75, + 0x97, 0x63, 0xf8, 0xe2, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x72, 0xd6, 0xdb, 0x10, 0xd4, 0x07, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -318,6 +378,7 @@ type ProxyClient interface { InvalidateCredentialCache(ctx context.Context, in *InvalidateCredCacheRequest, opts ...grpc.CallOption) (*commonpb.Status, error) UpdateCredentialCache(ctx context.Context, in *UpdateCredCacheRequest, opts ...grpc.CallOption) (*commonpb.Status, error) ClearCredUsersCache(ctx context.Context, in *internalpb.ClearCredUsersCacheRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + RefreshPolicyInfoCache(ctx context.Context, in *RefreshPolicyInfoCacheRequest, opts ...grpc.CallOption) (*commonpb.Status, error) } type proxyClient struct { @@ -418,6 +479,15 @@ func (c *proxyClient) ClearCredUsersCache(ctx context.Context, in *internalpb.Cl return out, nil } +func (c *proxyClient) RefreshPolicyInfoCache(ctx context.Context, in *RefreshPolicyInfoCacheRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.proxy.Proxy/RefreshPolicyInfoCache", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ProxyServer is the server API for Proxy service. type ProxyServer interface { GetComponentStates(context.Context, *internalpb.GetComponentStatesRequest) (*internalpb.ComponentStates, error) @@ -430,6 +500,7 @@ type ProxyServer interface { InvalidateCredentialCache(context.Context, *InvalidateCredCacheRequest) (*commonpb.Status, error) UpdateCredentialCache(context.Context, *UpdateCredCacheRequest) (*commonpb.Status, error) ClearCredUsersCache(context.Context, *internalpb.ClearCredUsersCacheRequest) (*commonpb.Status, error) + RefreshPolicyInfoCache(context.Context, *RefreshPolicyInfoCacheRequest) (*commonpb.Status, error) } // UnimplementedProxyServer can be embedded to have forward compatible implementations. @@ -466,6 +537,9 @@ func (*UnimplementedProxyServer) UpdateCredentialCache(ctx context.Context, req func (*UnimplementedProxyServer) ClearCredUsersCache(ctx context.Context, req *internalpb.ClearCredUsersCacheRequest) (*commonpb.Status, error) { return nil, status.Errorf(codes.Unimplemented, "method ClearCredUsersCache not implemented") } +func (*UnimplementedProxyServer) RefreshPolicyInfoCache(ctx context.Context, req *RefreshPolicyInfoCacheRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method RefreshPolicyInfoCache not implemented") +} func RegisterProxyServer(s *grpc.Server, srv ProxyServer) { s.RegisterService(&_Proxy_serviceDesc, srv) @@ -651,6 +725,24 @@ func _Proxy_ClearCredUsersCache_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Proxy_RefreshPolicyInfoCache_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RefreshPolicyInfoCacheRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProxyServer).RefreshPolicyInfoCache(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.proxy.Proxy/RefreshPolicyInfoCache", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProxyServer).RefreshPolicyInfoCache(ctx, req.(*RefreshPolicyInfoCacheRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Proxy_serviceDesc = grpc.ServiceDesc{ ServiceName: "milvus.proto.proxy.Proxy", HandlerType: (*ProxyServer)(nil), @@ -695,6 +787,10 @@ var _Proxy_serviceDesc = grpc.ServiceDesc{ MethodName: "ClearCredUsersCache", Handler: _Proxy_ClearCredUsersCache_Handler, }, + { + MethodName: "RefreshPolicyInfoCache", + Handler: _Proxy_RefreshPolicyInfoCache_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "proxy.proto", diff --git a/internal/proto/root_coord.proto b/internal/proto/root_coord.proto index 17f5b2b7c1..a6afd2c90b 100644 --- a/internal/proto/root_coord.proto +++ b/internal/proto/root_coord.proto @@ -122,6 +122,17 @@ service RootCoord { rpc ListCredUsers(milvus.ListCredUsersRequest) returns (milvus.ListCredUsersResponse) {} // userd by proxy, not exposed to sdk rpc GetCredential(GetCredentialRequest) returns (GetCredentialResponse) {} + + // https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control + rpc CreateRole(milvus.CreateRoleRequest) returns (common.Status) {} + rpc DropRole(milvus.DropRoleRequest) returns (common.Status) {} + rpc OperateUserRole(milvus.OperateUserRoleRequest) returns (common.Status) {} + rpc SelectRole(milvus.SelectRoleRequest) returns (milvus.SelectRoleResponse) {} + rpc SelectUser(milvus.SelectUserRequest) returns (milvus.SelectUserResponse) {} + rpc SelectResource(milvus.SelectResourceRequest) returns (milvus.SelectResourceResponse) {} + rpc OperatePrivilege(milvus.OperatePrivilegeRequest) returns (common.Status) {} + rpc SelectGrant(milvus.SelectGrantRequest) returns (milvus.SelectGrantResponse) {} + rpc ListPolicy(internal.ListPolicyRequest) returns (internal.ListPolicyResponse) {} } message AllocTimestampRequest { @@ -197,4 +208,4 @@ message GetCredentialResponse { string username = 2; // password string password = 3; -} +} \ No newline at end of file diff --git a/internal/proto/rootcoordpb/root_coord.pb.go b/internal/proto/rootcoordpb/root_coord.pb.go index 6748cc4342..3535629ca8 100644 --- a/internal/proto/rootcoordpb/root_coord.pb.go +++ b/internal/proto/rootcoordpb/root_coord.pb.go @@ -675,99 +675,108 @@ func init() { func init() { proto.RegisterFile("root_coord.proto", fileDescriptor_4513485a144f6b06) } var fileDescriptor_4513485a144f6b06 = []byte{ - // 1466 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdd, 0x72, 0xd3, 0x46, - 0x14, 0xc6, 0x36, 0xf9, 0xf1, 0xb1, 0x13, 0x87, 0x1d, 0x02, 0xae, 0x81, 0xd6, 0xb8, 0x2d, 0x38, - 0xfc, 0x38, 0x4c, 0x98, 0xa1, 0x94, 0x3b, 0x62, 0x53, 0xf0, 0x94, 0xcc, 0x80, 0x0c, 0x1d, 0xfa, - 0xc3, 0xb8, 0x1b, 0xe9, 0xe0, 0x68, 0x22, 0x6b, 0x8d, 0x76, 0x4d, 0x92, 0xcb, 0xce, 0xf4, 0xbe, - 0xef, 0xd0, 0x47, 0x69, 0x1f, 0xa5, 0x2f, 0xd2, 0x59, 0xad, 0xb4, 0x96, 0x64, 0xc9, 0x51, 0x80, - 0x3b, 0xed, 0xea, 0xd3, 0xf7, 0x9d, 0xfd, 0xce, 0xee, 0x9e, 0x5d, 0xc1, 0x86, 0xc7, 0x98, 0x18, - 0x9a, 0x8c, 0x79, 0x56, 0x67, 0xe2, 0x31, 0xc1, 0xc8, 0xa5, 0xb1, 0xed, 0x7c, 0x98, 0x72, 0xd5, - 0xea, 0xc8, 0xd7, 0xfe, 0xdb, 0x46, 0xd5, 0x64, 0xe3, 0x31, 0x73, 0x55, 0x7f, 0xa3, 0x1a, 0x45, - 0x35, 0xd6, 0x6d, 0x57, 0xa0, 0xe7, 0x52, 0x27, 0x68, 0x57, 0x26, 0x1e, 0x3b, 0x3e, 0x09, 0x1a, - 0x1b, 0x16, 0x15, 0x34, 0x2a, 0xd1, 0xa8, 0xa1, 0x30, 0xad, 0xe1, 0x18, 0x05, 0x55, 0x1d, 0xad, - 0x21, 0x6c, 0x3e, 0x76, 0x1c, 0x66, 0xbe, 0xb2, 0xc7, 0xc8, 0x05, 0x1d, 0x4f, 0x0c, 0x7c, 0x3f, - 0x45, 0x2e, 0xc8, 0x3d, 0x38, 0xbf, 0x4f, 0x39, 0xd6, 0x0b, 0xcd, 0x42, 0xbb, 0xb2, 0x73, 0xb5, - 0x13, 0x8b, 0x2d, 0x08, 0x68, 0x8f, 0x8f, 0x76, 0x29, 0x47, 0xc3, 0x47, 0x92, 0x8b, 0xb0, 0x64, - 0xb2, 0xa9, 0x2b, 0xea, 0xa5, 0x66, 0xa1, 0xbd, 0x66, 0xa8, 0x46, 0xeb, 0x8f, 0x02, 0x5c, 0x4a, - 0x2a, 0xf0, 0x09, 0x73, 0x39, 0x92, 0xfb, 0xb0, 0xcc, 0x05, 0x15, 0x53, 0x1e, 0x88, 0x5c, 0x49, - 0x15, 0x19, 0xf8, 0x10, 0x23, 0x80, 0x92, 0xab, 0x50, 0x16, 0x21, 0x53, 0xbd, 0xd8, 0x2c, 0xb4, - 0xcf, 0x1b, 0xb3, 0x8e, 0x8c, 0x18, 0xde, 0xc0, 0xba, 0x1f, 0x42, 0xbf, 0xf7, 0x19, 0x46, 0x57, - 0x8c, 0x32, 0x3b, 0x50, 0xd3, 0xcc, 0x9f, 0x32, 0xaa, 0x75, 0x28, 0xf6, 0x7b, 0x3e, 0x75, 0xc9, - 0x28, 0xf6, 0x7b, 0x19, 0xe3, 0xf8, 0xa7, 0x08, 0xd5, 0xfe, 0x78, 0xc2, 0x3c, 0x61, 0x20, 0x9f, - 0x3a, 0xe2, 0xe3, 0xb4, 0x2e, 0xc3, 0x8a, 0xa0, 0xfc, 0x70, 0x68, 0x5b, 0x81, 0xe0, 0xb2, 0x6c, - 0xf6, 0x2d, 0xf2, 0x15, 0x54, 0xe4, 0x84, 0x71, 0x99, 0x85, 0xf2, 0x65, 0xc9, 0x7f, 0x09, 0x61, - 0x57, 0xdf, 0x22, 0x0f, 0x60, 0x49, 0x72, 0x60, 0xfd, 0x7c, 0xb3, 0xd0, 0x5e, 0xdf, 0x69, 0xa6, - 0xaa, 0xa9, 0x00, 0xa5, 0x26, 0x1a, 0x0a, 0x4e, 0x1a, 0xb0, 0xca, 0x71, 0x34, 0x46, 0x57, 0xf0, - 0xfa, 0x52, 0xb3, 0xd4, 0x2e, 0x19, 0xba, 0x4d, 0xbe, 0x80, 0x55, 0x3a, 0x15, 0x6c, 0x68, 0x5b, - 0xbc, 0xbe, 0xec, 0xbf, 0x5b, 0x91, 0xed, 0xbe, 0xc5, 0xc9, 0x15, 0x28, 0x7b, 0xec, 0x68, 0xa8, - 0x8c, 0x58, 0xf1, 0xa3, 0x59, 0xf5, 0xd8, 0x51, 0x57, 0xb6, 0xc9, 0x77, 0xb0, 0x64, 0xbb, 0xef, - 0x18, 0xaf, 0xaf, 0x36, 0x4b, 0xed, 0xca, 0xce, 0xf5, 0xd4, 0x58, 0x7e, 0xc4, 0x93, 0x9f, 0xa8, - 0x33, 0xc5, 0x17, 0xd4, 0xf6, 0x0c, 0x85, 0x6f, 0xfd, 0x55, 0x80, 0xcb, 0x3d, 0xe4, 0xa6, 0x67, - 0xef, 0xe3, 0x20, 0x88, 0xe2, 0xe3, 0xa7, 0x45, 0x0b, 0xaa, 0x26, 0x73, 0x1c, 0x34, 0x85, 0xcd, - 0x5c, 0x9d, 0xc2, 0x58, 0x1f, 0xf9, 0x12, 0x20, 0x18, 0x6e, 0xbf, 0xc7, 0xeb, 0x25, 0x7f, 0x90, - 0x91, 0x9e, 0xd6, 0x14, 0x6a, 0x41, 0x20, 0x92, 0xb8, 0xef, 0xbe, 0x63, 0x73, 0xb4, 0x85, 0x14, - 0xda, 0x26, 0x54, 0x26, 0xd4, 0x13, 0x76, 0x4c, 0x39, 0xda, 0x25, 0xd7, 0x8a, 0x96, 0x09, 0xd2, - 0x39, 0xeb, 0x68, 0xfd, 0x57, 0x84, 0x6a, 0xa0, 0x2b, 0x35, 0x39, 0xe9, 0x41, 0x59, 0x8e, 0x69, - 0x28, 0x7d, 0x0a, 0x2c, 0xb8, 0xd9, 0x49, 0xdf, 0x93, 0x3a, 0x89, 0x80, 0x8d, 0xd5, 0xfd, 0x30, - 0xf4, 0x1e, 0x54, 0x6c, 0xd7, 0xc2, 0xe3, 0xa1, 0x4a, 0x4f, 0xd1, 0x4f, 0xcf, 0xd7, 0x71, 0x1e, - 0xb9, 0x0b, 0x75, 0xb4, 0xb6, 0x85, 0xc7, 0x3e, 0x07, 0xd8, 0xe1, 0x23, 0x27, 0x08, 0x17, 0xf0, - 0x58, 0x78, 0x74, 0x18, 0xe5, 0x2a, 0xf9, 0x5c, 0xdf, 0x9f, 0x12, 0x93, 0x4f, 0xd0, 0x79, 0x22, - 0xbf, 0xd6, 0xdc, 0xfc, 0x89, 0x2b, 0xbc, 0x13, 0xa3, 0x86, 0xf1, 0xde, 0xc6, 0xef, 0x70, 0x31, - 0x0d, 0x48, 0x36, 0xa0, 0x74, 0x88, 0x27, 0x81, 0xed, 0xf2, 0x91, 0xec, 0xc0, 0xd2, 0x07, 0x39, - 0x95, 0x7c, 0x9f, 0xe7, 0xe6, 0x86, 0x3f, 0xa0, 0xd9, 0x48, 0x14, 0xf4, 0x51, 0xf1, 0x61, 0xa1, - 0xf5, 0x6f, 0x11, 0xea, 0xf3, 0xd3, 0xed, 0x53, 0xf6, 0x8a, 0x3c, 0x53, 0x6e, 0x04, 0x6b, 0x41, - 0xa2, 0x63, 0xd6, 0xed, 0x66, 0x59, 0x97, 0x15, 0x61, 0xcc, 0x53, 0xe5, 0x61, 0x95, 0x47, 0xba, - 0x1a, 0x08, 0x17, 0xe6, 0x20, 0x29, 0xee, 0x3d, 0x8a, 0xbb, 0xf7, 0x4d, 0x9e, 0x14, 0x46, 0x5d, - 0xb4, 0xe0, 0xe2, 0x53, 0x14, 0x5d, 0x0f, 0x2d, 0x74, 0x85, 0x4d, 0x9d, 0x8f, 0x5f, 0xb0, 0x0d, - 0x58, 0x9d, 0x72, 0x59, 0x31, 0xc7, 0x2a, 0x98, 0xb2, 0xa1, 0xdb, 0xad, 0x3f, 0x0b, 0xb0, 0x99, - 0x90, 0xf9, 0x94, 0x44, 0x2d, 0x90, 0x92, 0xef, 0x26, 0x94, 0xf3, 0x23, 0xe6, 0xa9, 0x8d, 0xb6, - 0x6c, 0xe8, 0xf6, 0xce, 0xdf, 0xd7, 0xa0, 0x6c, 0x30, 0x26, 0xba, 0xd2, 0x12, 0x32, 0x01, 0x22, - 0x63, 0x62, 0xe3, 0x09, 0x73, 0xd1, 0x55, 0x1b, 0x2b, 0x27, 0xf7, 0xe2, 0x01, 0xe8, 0x53, 0xc0, - 0x3c, 0x34, 0xb0, 0xaa, 0x71, 0x23, 0xe3, 0x8b, 0x04, 0xbc, 0x75, 0x8e, 0x8c, 0x7d, 0x45, 0x59, - 0xaf, 0x5f, 0xd9, 0xe6, 0x61, 0xf7, 0x80, 0xba, 0x2e, 0x3a, 0x8b, 0x14, 0x13, 0xd0, 0x50, 0x31, - 0xb1, 0xe8, 0x83, 0xc6, 0x40, 0x78, 0xb6, 0x3b, 0x0a, 0x9d, 0x6d, 0x9d, 0x23, 0xef, 0xfd, 0xdc, - 0x4a, 0x75, 0x9b, 0x0b, 0xdb, 0xe4, 0xa1, 0xe0, 0x4e, 0xb6, 0xe0, 0x1c, 0xf8, 0x8c, 0x92, 0x43, - 0xd8, 0xe8, 0x7a, 0x48, 0x05, 0x76, 0xf5, 0xa2, 0x21, 0x77, 0x52, 0x3f, 0x4d, 0xc2, 0x42, 0xa1, - 0x45, 0x13, 0xa0, 0x75, 0x8e, 0xfc, 0x0a, 0xeb, 0x3d, 0x8f, 0x4d, 0x22, 0xf4, 0xb7, 0x52, 0xe9, - 0xe3, 0xa0, 0x9c, 0xe4, 0x43, 0x58, 0x7b, 0x46, 0x79, 0x84, 0x7b, 0x2b, 0x95, 0x3b, 0x86, 0x09, - 0xa9, 0xaf, 0xa7, 0x42, 0x77, 0x19, 0x73, 0x22, 0xf6, 0x1c, 0x01, 0x09, 0x37, 0x84, 0x88, 0x4a, - 0x27, 0x7d, 0x04, 0x73, 0xc0, 0x50, 0x6a, 0x3b, 0x37, 0x5e, 0x0b, 0xbf, 0x86, 0x8a, 0x32, 0xfc, - 0xb1, 0x63, 0x53, 0x4e, 0x6e, 0x2e, 0x48, 0x89, 0x8f, 0xc8, 0x69, 0xd8, 0x4b, 0x28, 0x4b, 0xa3, - 0x15, 0xe9, 0xb7, 0x99, 0x89, 0x38, 0x0b, 0xe5, 0x00, 0xe0, 0xb1, 0x23, 0xd0, 0x53, 0x9c, 0x37, - 0x52, 0x39, 0x67, 0x80, 0x9c, 0xa4, 0x2e, 0xd4, 0x06, 0x07, 0xf2, 0x80, 0x13, 0x5a, 0xc3, 0xc9, - 0xed, 0xf4, 0x09, 0x1d, 0x47, 0x85, 0xf4, 0x77, 0xf2, 0x81, 0xb5, 0xdd, 0x6f, 0xa1, 0xa6, 0xcc, - 0x7c, 0x11, 0x1e, 0x1a, 0x32, 0xf4, 0x12, 0xa8, 0x9c, 0xc3, 0xf9, 0x19, 0xd6, 0xa4, 0xad, 0x33, - 0xf2, 0xad, 0x4c, 0xeb, 0xcf, 0x4a, 0xfd, 0x16, 0xaa, 0xcf, 0x28, 0x9f, 0x31, 0xb7, 0xb3, 0x56, - 0xc0, 0x1c, 0x71, 0xae, 0x05, 0x70, 0x08, 0xeb, 0xd2, 0x35, 0xfd, 0x31, 0xcf, 0x58, 0xbe, 0x71, - 0x50, 0x28, 0x71, 0x3b, 0x17, 0x56, 0x8b, 0xb9, 0x50, 0x4b, 0x94, 0xdf, 0x8c, 0x2c, 0x24, 0x50, - 0x8b, 0xb3, 0x3e, 0x07, 0xd6, 0x7a, 0x08, 0x55, 0x19, 0x4b, 0x58, 0xea, 0x33, 0xbc, 0x8b, 0x42, - 0x42, 0xa5, 0xad, 0x1c, 0xc8, 0xc8, 0x26, 0xb2, 0x91, 0x3c, 0x55, 0x90, 0xed, 0xfc, 0xe7, 0x0f, - 0xa5, 0x78, 0xef, 0xac, 0x07, 0x96, 0xe8, 0x26, 0xe2, 0x9f, 0xc7, 0x16, 0x6e, 0x22, 0x3e, 0x22, - 0xe7, 0x94, 0x3b, 0x80, 0xb5, 0x50, 0x54, 0x11, 0x6f, 0x2d, 0xf4, 0x3d, 0x46, 0x7d, 0x2b, 0x0f, - 0x54, 0x0f, 0x20, 0xd8, 0xae, 0x94, 0x4a, 0xf6, 0x76, 0x75, 0x96, 0xe0, 0xdf, 0x07, 0x37, 0x60, - 0x7d, 0x09, 0x27, 0x77, 0xb3, 0x9c, 0x4d, 0xfd, 0x1d, 0xd0, 0xe8, 0xe4, 0x85, 0xeb, 0x51, 0xfc, - 0x06, 0x2b, 0xc1, 0xd5, 0x38, 0xb9, 0x3d, 0x26, 0x3e, 0xd6, 0xb7, 0xf2, 0xc6, 0xcd, 0x53, 0x71, - 0x9a, 0x9d, 0xc2, 0xe6, 0xeb, 0x89, 0x25, 0x4b, 0xb3, 0x3a, 0x00, 0x84, 0x47, 0x90, 0x64, 0x56, - 0x66, 0xc7, 0x9c, 0x38, 0x6e, 0x8f, 0x8f, 0x4e, 0xf3, 0xcc, 0x81, 0xcb, 0x06, 0x3a, 0x48, 0x39, - 0xf6, 0x5e, 0x3e, 0xdf, 0x43, 0xce, 0xe9, 0x08, 0x07, 0xc2, 0x43, 0x3a, 0x4e, 0x1e, 0x4d, 0xd4, - 0x3f, 0x97, 0x0c, 0x70, 0xce, 0x0c, 0x79, 0x70, 0xad, 0xef, 0x7e, 0xa0, 0x8e, 0x6d, 0xc5, 0xce, - 0x1b, 0x7b, 0x28, 0x68, 0x97, 0x9a, 0x07, 0x98, 0xae, 0x19, 0xff, 0x44, 0x83, 0x73, 0x6a, 0x9a, - 0xb0, 0x19, 0xac, 0x9f, 0x1f, 0x9c, 0x29, 0x3f, 0x90, 0x27, 0x41, 0x07, 0x05, 0x5a, 0xc9, 0xfd, - 0xc7, 0xa2, 0x82, 0x76, 0x52, 0x91, 0x39, 0x6c, 0x1c, 0x02, 0x3c, 0x45, 0xb1, 0x87, 0xc2, 0xb3, - 0xcd, 0xac, 0x4a, 0x39, 0x03, 0x64, 0x4c, 0x85, 0x14, 0x9c, 0x9e, 0x0a, 0x03, 0x58, 0x56, 0xff, - 0x1c, 0x48, 0x2b, 0xf5, 0xa3, 0xf0, 0x8f, 0xc9, 0xa2, 0x13, 0xa2, 0xfe, 0xab, 0x12, 0xa9, 0x00, - 0x4f, 0x51, 0x44, 0xfe, 0x65, 0x64, 0x54, 0x80, 0x38, 0x68, 0x71, 0x05, 0x48, 0x62, 0xa3, 0x15, - 0xe0, 0xb9, 0xcd, 0x83, 0x97, 0xaf, 0x28, 0x3f, 0xcc, 0xaa, 0xfb, 0x09, 0xd4, 0xe2, 0x0a, 0x30, - 0x07, 0x8e, 0x38, 0x56, 0x35, 0x50, 0xbe, 0x08, 0x7c, 0xcb, 0xbc, 0x8e, 0x45, 0x7f, 0x36, 0x9d, - 0x96, 0xe7, 0x37, 0xfa, 0x4c, 0xad, 0xaf, 0x4f, 0xc9, 0xcd, 0x6b, 0xb6, 0x18, 0x35, 0x44, 0xde, - 0xf4, 0x72, 0x30, 0x07, 0x6b, 0xfd, 0x73, 0x33, 0x0f, 0x65, 0x8d, 0x92, 0x13, 0x39, 0xc2, 0x9c, - 0x55, 0x4e, 0xe3, 0xb0, 0xfc, 0x45, 0x43, 0xa6, 0x41, 0x7e, 0xf7, 0x9a, 0xa3, 0xc7, 0x33, 0x8a, - 0x46, 0x0c, 0xb3, 0xb8, 0x68, 0x24, 0xa0, 0x91, 0x39, 0xb4, 0x16, 0xbb, 0xba, 0x26, 0xc7, 0x31, - 0x4b, 0x6a, 0xda, 0x45, 0xba, 0x71, 0x37, 0x27, 0x3a, 0xd4, 0xdb, 0x7d, 0xf8, 0xcb, 0x83, 0x91, - 0x2d, 0x0e, 0xa6, 0xfb, 0x72, 0xcc, 0xdb, 0xea, 0xe3, 0xbb, 0x36, 0x0b, 0x9e, 0xb6, 0xc3, 0x84, - 0x6c, 0xfb, 0x7c, 0xdb, 0x9a, 0x6f, 0xb2, 0xbf, 0xbf, 0xec, 0x77, 0xdd, 0xff, 0x3f, 0x00, 0x00, - 0xff, 0xff, 0x33, 0x57, 0x82, 0x35, 0x01, 0x17, 0x00, 0x00, + // 1614 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0xd3, 0x46, + 0x14, 0xc6, 0x36, 0xb9, 0x1d, 0x3b, 0x71, 0xd8, 0x21, 0xe0, 0x1a, 0xda, 0x1a, 0x97, 0x82, 0xc3, + 0xc5, 0x61, 0xc2, 0x0c, 0xa5, 0xbc, 0x91, 0x98, 0x06, 0x4f, 0xc9, 0x10, 0x64, 0xe8, 0xd0, 0x0b, + 0xe3, 0x6e, 0xa4, 0x83, 0xa3, 0x89, 0xac, 0x35, 0xda, 0x75, 0x2e, 0x6f, 0xed, 0x4c, 0xdf, 0xfb, + 0x9f, 0xda, 0x9f, 0xd2, 0x3f, 0xd2, 0x59, 0xad, 0xb4, 0x96, 0x64, 0xc9, 0x51, 0x80, 0x37, 0xef, + 0xea, 0xdb, 0xef, 0x3b, 0xfb, 0xed, 0xe5, 0x9c, 0x35, 0xac, 0x7a, 0x8c, 0x89, 0xbe, 0xc9, 0x98, + 0x67, 0xb5, 0x47, 0x1e, 0x13, 0x8c, 0x5c, 0x19, 0xda, 0xce, 0xd1, 0x98, 0xab, 0x56, 0x5b, 0x7e, + 0xf6, 0xbf, 0xd6, 0x2b, 0x26, 0x1b, 0x0e, 0x99, 0xab, 0xfa, 0xeb, 0x95, 0x28, 0xaa, 0xbe, 0x62, + 0xbb, 0x02, 0x3d, 0x97, 0x3a, 0x41, 0xbb, 0x3c, 0xf2, 0xd8, 0xc9, 0x69, 0xd0, 0x58, 0xb5, 0xa8, + 0xa0, 0x51, 0x89, 0x7a, 0x15, 0x85, 0x69, 0xf5, 0x87, 0x28, 0xa8, 0xea, 0x68, 0xf6, 0x61, 0xed, + 0xa9, 0xe3, 0x30, 0xf3, 0xb5, 0x3d, 0x44, 0x2e, 0xe8, 0x70, 0x64, 0xe0, 0x87, 0x31, 0x72, 0x41, + 0x1e, 0xc0, 0xc5, 0x7d, 0xca, 0xb1, 0x56, 0x68, 0x14, 0x5a, 0xe5, 0xcd, 0xeb, 0xed, 0x58, 0x6c, + 0x41, 0x40, 0xbb, 0x7c, 0xb0, 0x45, 0x39, 0x1a, 0x3e, 0x92, 0x5c, 0x86, 0x39, 0x93, 0x8d, 0x5d, + 0x51, 0x2b, 0x35, 0x0a, 0xad, 0x65, 0x43, 0x35, 0x9a, 0x7f, 0x16, 0xe0, 0x4a, 0x52, 0x81, 0x8f, + 0x98, 0xcb, 0x91, 0x3c, 0x84, 0x79, 0x2e, 0xa8, 0x18, 0xf3, 0x40, 0xe4, 0x5a, 0xaa, 0x48, 0xcf, + 0x87, 0x18, 0x01, 0x94, 0x5c, 0x87, 0x25, 0x11, 0x32, 0xd5, 0x8a, 0x8d, 0x42, 0xeb, 0xa2, 0x31, + 0xe9, 0xc8, 0x88, 0xe1, 0x2d, 0xac, 0xf8, 0x21, 0x74, 0x3b, 0x9f, 0x61, 0x76, 0xc5, 0x28, 0xb3, + 0x03, 0x55, 0xcd, 0xfc, 0x29, 0xb3, 0x5a, 0x81, 0x62, 0xb7, 0xe3, 0x53, 0x97, 0x8c, 0x62, 0xb7, + 0x93, 0x31, 0x8f, 0x7f, 0x8a, 0x50, 0xe9, 0x0e, 0x47, 0xcc, 0x13, 0x06, 0xf2, 0xb1, 0x23, 0x3e, + 0x4e, 0xeb, 0x2a, 0x2c, 0x08, 0xca, 0x0f, 0xfb, 0xb6, 0x15, 0x08, 0xce, 0xcb, 0x66, 0xd7, 0x22, + 0x5f, 0x43, 0x59, 0x6e, 0x18, 0x97, 0x59, 0x28, 0x3f, 0x96, 0xfc, 0x8f, 0x10, 0x76, 0x75, 0x2d, + 0xf2, 0x08, 0xe6, 0x24, 0x07, 0xd6, 0x2e, 0x36, 0x0a, 0xad, 0x95, 0xcd, 0x46, 0xaa, 0x9a, 0x0a, + 0x50, 0x6a, 0xa2, 0xa1, 0xe0, 0xa4, 0x0e, 0x8b, 0x1c, 0x07, 0x43, 0x74, 0x05, 0xaf, 0xcd, 0x35, + 0x4a, 0xad, 0x92, 0xa1, 0xdb, 0xe4, 0x0b, 0x58, 0xa4, 0x63, 0xc1, 0xfa, 0xb6, 0xc5, 0x6b, 0xf3, + 0xfe, 0xb7, 0x05, 0xd9, 0xee, 0x5a, 0x9c, 0x5c, 0x83, 0x25, 0x8f, 0x1d, 0xf7, 0x95, 0x11, 0x0b, + 0x7e, 0x34, 0x8b, 0x1e, 0x3b, 0xde, 0x96, 0x6d, 0xf2, 0x1d, 0xcc, 0xd9, 0xee, 0x7b, 0xc6, 0x6b, + 0x8b, 0x8d, 0x52, 0xab, 0xbc, 0x79, 0x23, 0x35, 0x96, 0x1f, 0xf1, 0xf4, 0x27, 0xea, 0x8c, 0x71, + 0x8f, 0xda, 0x9e, 0xa1, 0xf0, 0xcd, 0xbf, 0x0b, 0x70, 0xb5, 0x83, 0xdc, 0xf4, 0xec, 0x7d, 0xec, + 0x05, 0x51, 0x7c, 0xfc, 0xb6, 0x68, 0x42, 0xc5, 0x64, 0x8e, 0x83, 0xa6, 0xb0, 0x99, 0xab, 0x97, + 0x30, 0xd6, 0x47, 0xbe, 0x02, 0x08, 0xa6, 0xdb, 0xed, 0xf0, 0x5a, 0xc9, 0x9f, 0x64, 0xa4, 0xa7, + 0x39, 0x86, 0x6a, 0x10, 0x88, 0x24, 0xee, 0xba, 0xef, 0xd9, 0x14, 0x6d, 0x21, 0x85, 0xb6, 0x01, + 0xe5, 0x11, 0xf5, 0x84, 0x1d, 0x53, 0x8e, 0x76, 0xc9, 0xb3, 0xa2, 0x65, 0x82, 0xe5, 0x9c, 0x74, + 0x34, 0xff, 0x2b, 0x42, 0x25, 0xd0, 0x95, 0x9a, 0x9c, 0x74, 0x60, 0x49, 0xce, 0xa9, 0x2f, 0x7d, + 0x0a, 0x2c, 0xb8, 0xdd, 0x4e, 0xbf, 0x93, 0xda, 0x89, 0x80, 0x8d, 0xc5, 0xfd, 0x30, 0xf4, 0x0e, + 0x94, 0x6d, 0xd7, 0xc2, 0x93, 0xbe, 0x5a, 0x9e, 0xa2, 0xbf, 0x3c, 0xdf, 0xc4, 0x79, 0xe4, 0x2d, + 0xd4, 0xd6, 0xda, 0x16, 0x9e, 0xf8, 0x1c, 0x60, 0x87, 0x3f, 0x39, 0x41, 0xb8, 0x84, 0x27, 0xc2, + 0xa3, 0xfd, 0x28, 0x57, 0xc9, 0xe7, 0xfa, 0xfe, 0x8c, 0x98, 0x7c, 0x82, 0xf6, 0x33, 0x39, 0x5a, + 0x73, 0xf3, 0x67, 0xae, 0xf0, 0x4e, 0x8d, 0x2a, 0xc6, 0x7b, 0xeb, 0xbf, 0xc3, 0xe5, 0x34, 0x20, + 0x59, 0x85, 0xd2, 0x21, 0x9e, 0x06, 0xb6, 0xcb, 0x9f, 0x64, 0x13, 0xe6, 0x8e, 0xe4, 0x56, 0xf2, + 0x7d, 0x9e, 0xda, 0x1b, 0xfe, 0x84, 0x26, 0x33, 0x51, 0xd0, 0x27, 0xc5, 0xc7, 0x85, 0xe6, 0xbf, + 0x45, 0xa8, 0x4d, 0x6f, 0xb7, 0x4f, 0xb9, 0x2b, 0xf2, 0x6c, 0xb9, 0x01, 0x2c, 0x07, 0x0b, 0x1d, + 0xb3, 0x6e, 0x2b, 0xcb, 0xba, 0xac, 0x08, 0x63, 0x9e, 0x2a, 0x0f, 0x2b, 0x3c, 0xd2, 0x55, 0x47, + 0xb8, 0x34, 0x05, 0x49, 0x71, 0xef, 0x49, 0xdc, 0xbd, 0x9b, 0x79, 0x96, 0x30, 0xea, 0xa2, 0x05, + 0x97, 0x77, 0x50, 0x6c, 0x7b, 0x68, 0xa1, 0x2b, 0x6c, 0xea, 0x7c, 0xfc, 0x81, 0xad, 0xc3, 0xe2, + 0x98, 0xcb, 0x8c, 0x39, 0x54, 0xc1, 0x2c, 0x19, 0xba, 0xdd, 0xfc, 0xab, 0x00, 0x6b, 0x09, 0x99, + 0x4f, 0x59, 0xa8, 0x19, 0x52, 0xf2, 0xdb, 0x88, 0x72, 0x7e, 0xcc, 0x3c, 0x75, 0xd1, 0x2e, 0x19, + 0xba, 0xbd, 0xf9, 0xc7, 0x4d, 0x58, 0x32, 0x18, 0x13, 0xdb, 0xd2, 0x12, 0x32, 0x02, 0x22, 0x63, + 0x62, 0xc3, 0x11, 0x73, 0xd1, 0x55, 0x17, 0x2b, 0x27, 0x0f, 0xe2, 0x01, 0xe8, 0x2a, 0x60, 0x1a, + 0x1a, 0x58, 0x55, 0xbf, 0x95, 0x31, 0x22, 0x01, 0x6f, 0x5e, 0x20, 0x43, 0x5f, 0x51, 0xe6, 0xeb, + 0xd7, 0xb6, 0x79, 0xb8, 0x7d, 0x40, 0x5d, 0x17, 0x9d, 0x59, 0x8a, 0x09, 0x68, 0xa8, 0x98, 0x38, + 0xf4, 0x41, 0xa3, 0x27, 0x3c, 0xdb, 0x1d, 0x84, 0xce, 0x36, 0x2f, 0x90, 0x0f, 0xfe, 0xda, 0x4a, + 0x75, 0x9b, 0x0b, 0xdb, 0xe4, 0xa1, 0xe0, 0x66, 0xb6, 0xe0, 0x14, 0xf8, 0x9c, 0x92, 0x7d, 0x58, + 0xdd, 0xf6, 0x90, 0x0a, 0xdc, 0xd6, 0x87, 0x86, 0xdc, 0x4b, 0x1d, 0x9a, 0x84, 0x85, 0x42, 0xb3, + 0x36, 0x40, 0xf3, 0x02, 0xf9, 0x15, 0x56, 0x3a, 0x1e, 0x1b, 0x45, 0xe8, 0xef, 0xa4, 0xd2, 0xc7, + 0x41, 0x39, 0xc9, 0xfb, 0xb0, 0xfc, 0x9c, 0xf2, 0x08, 0xf7, 0x7a, 0x2a, 0x77, 0x0c, 0x13, 0x52, + 0xdf, 0x48, 0x85, 0x6e, 0x31, 0xe6, 0x44, 0xec, 0x39, 0x06, 0x12, 0x5e, 0x08, 0x11, 0x95, 0x76, + 0xfa, 0x0c, 0xa6, 0x80, 0xa1, 0xd4, 0x46, 0x6e, 0xbc, 0x16, 0x7e, 0x03, 0x65, 0x65, 0xf8, 0x53, + 0xc7, 0xa6, 0x9c, 0xdc, 0x9e, 0xb1, 0x24, 0x3e, 0x22, 0xa7, 0x61, 0xaf, 0x60, 0x49, 0x1a, 0xad, + 0x48, 0xbf, 0xcd, 0x5c, 0x88, 0xf3, 0x50, 0xf6, 0x00, 0x9e, 0x3a, 0x02, 0x3d, 0xc5, 0x79, 0x2b, + 0x95, 0x73, 0x02, 0xc8, 0x49, 0xea, 0x42, 0xb5, 0x77, 0x20, 0x0b, 0x9c, 0xd0, 0x1a, 0x4e, 0xee, + 0xa6, 0x6f, 0xe8, 0x38, 0x2a, 0xa4, 0xbf, 0x97, 0x0f, 0xac, 0xed, 0x7e, 0x07, 0x55, 0x65, 0xe6, + 0x5e, 0x58, 0x34, 0x64, 0xe8, 0x25, 0x50, 0x39, 0xa7, 0xf3, 0x33, 0x2c, 0x4b, 0x5b, 0x27, 0xe4, + 0xeb, 0x99, 0xd6, 0x9f, 0x97, 0xfa, 0x1d, 0x54, 0x9e, 0x53, 0x3e, 0x61, 0x6e, 0x65, 0x9d, 0x80, + 0x29, 0xe2, 0x5c, 0x07, 0xe0, 0x10, 0x56, 0xa4, 0x6b, 0x7a, 0x30, 0xcf, 0x38, 0xbe, 0x71, 0x50, + 0x28, 0x71, 0x37, 0x17, 0x56, 0x8b, 0xb9, 0x50, 0x4d, 0xa4, 0xdf, 0x8c, 0x55, 0x48, 0xa0, 0x66, + 0xaf, 0xfa, 0x14, 0x58, 0xeb, 0x21, 0x54, 0x64, 0x2c, 0x61, 0xaa, 0xcf, 0xf0, 0x2e, 0x0a, 0x09, + 0x95, 0xd6, 0x73, 0x20, 0x23, 0x97, 0xc8, 0x6a, 0xb2, 0xaa, 0x20, 0x1b, 0xf9, 0xeb, 0x0f, 0xa5, + 0xf8, 0xe0, 0xbc, 0x05, 0x4b, 0xf4, 0x12, 0xf1, 0xeb, 0xb1, 0x99, 0x97, 0x88, 0x8f, 0xc8, 0xb9, + 0xe5, 0x0e, 0x60, 0x39, 0x14, 0x55, 0xc4, 0xeb, 0x33, 0x7d, 0x8f, 0x51, 0xdf, 0xc9, 0x03, 0xd5, + 0x13, 0x08, 0xae, 0x2b, 0xa5, 0x92, 0x7d, 0x5d, 0x9d, 0x27, 0xf8, 0x0f, 0xc1, 0x0b, 0x58, 0x3f, + 0xc2, 0xc9, 0xfd, 0x2c, 0x67, 0x53, 0xff, 0x0e, 0xa8, 0xb7, 0xf3, 0xc2, 0xf5, 0x2c, 0x7e, 0x83, + 0x85, 0xe0, 0x69, 0x9c, 0xbc, 0x1e, 0x13, 0x83, 0xf5, 0xab, 0xbc, 0x7e, 0xfb, 0x4c, 0x9c, 0x66, + 0xa7, 0xb0, 0xf6, 0x66, 0x64, 0xc9, 0xd4, 0xac, 0x0a, 0x80, 0xb0, 0x04, 0x49, 0xae, 0xca, 0xa4, + 0xcc, 0x89, 0xe3, 0x76, 0xf9, 0xe0, 0x2c, 0xcf, 0x1c, 0xb8, 0x6a, 0xa0, 0x83, 0x94, 0x63, 0xe7, + 0xd5, 0x8b, 0x5d, 0xe4, 0x9c, 0x0e, 0xb0, 0x27, 0x3c, 0xa4, 0xc3, 0x64, 0x69, 0xa2, 0xfe, 0x73, + 0xc9, 0x00, 0xe7, 0x5c, 0x21, 0x0f, 0xbe, 0xec, 0xba, 0x47, 0xd4, 0xb1, 0xad, 0x58, 0xbd, 0xb1, + 0x8b, 0x82, 0x6e, 0x53, 0xf3, 0x00, 0xd3, 0x35, 0xe3, 0x43, 0x34, 0x38, 0xa7, 0xa6, 0x09, 0x6b, + 0xc1, 0xf9, 0xf9, 0xc1, 0x19, 0xf3, 0x03, 0x59, 0x09, 0x3a, 0x28, 0xd0, 0x4a, 0xde, 0x3f, 0x16, + 0x15, 0xb4, 0x9d, 0x8a, 0xcc, 0x61, 0x63, 0x1f, 0x60, 0x07, 0xc5, 0x2e, 0x0a, 0xcf, 0x36, 0xb3, + 0x32, 0xe5, 0x04, 0x90, 0xb1, 0x15, 0x52, 0x70, 0x7a, 0x2b, 0xf4, 0x60, 0x5e, 0xfd, 0xe7, 0x40, + 0x9a, 0xa9, 0x83, 0xc2, 0x7f, 0x4c, 0x66, 0x55, 0x88, 0xfa, 0x5f, 0x95, 0x48, 0x06, 0xd8, 0x41, + 0x11, 0xf9, 0x2f, 0x23, 0x23, 0x03, 0xc4, 0x41, 0xb3, 0x33, 0x40, 0x12, 0x1b, 0xcd, 0x00, 0x2f, + 0x6c, 0x1e, 0x7c, 0x7c, 0x4d, 0xf9, 0x61, 0x56, 0xde, 0x4f, 0xa0, 0x66, 0x67, 0x80, 0x29, 0x70, + 0xc4, 0xb1, 0x8a, 0x81, 0xf2, 0x43, 0xe0, 0x5b, 0xe6, 0x73, 0x2c, 0xfa, 0x67, 0xd3, 0x59, 0xeb, + 0xfc, 0x56, 0xd7, 0xd4, 0xfa, 0xf9, 0x94, 0xbc, 0xbc, 0x26, 0x87, 0x51, 0x43, 0xe4, 0x4b, 0x2f, + 0x07, 0x73, 0x70, 0xd6, 0x3f, 0x37, 0x73, 0x5f, 0xe6, 0x28, 0xb9, 0x91, 0x23, 0xcc, 0x59, 0xe9, + 0x34, 0x0e, 0xcb, 0x9f, 0x34, 0xe4, 0x32, 0xc8, 0x71, 0x6f, 0x38, 0x7a, 0x3c, 0x23, 0x69, 0xc4, + 0x30, 0xb3, 0x93, 0x46, 0x02, 0x1a, 0xd9, 0x43, 0xcb, 0xb1, 0xa7, 0x6b, 0x72, 0x1e, 0x93, 0x45, + 0x4d, 0x7b, 0x48, 0xd7, 0xef, 0xe7, 0x44, 0x47, 0xf6, 0x10, 0xa8, 0xe5, 0x36, 0x98, 0x83, 0x19, + 0xc7, 0x7a, 0x02, 0xc8, 0x69, 0xd7, 0x4b, 0x58, 0x94, 0x99, 0xcd, 0xa7, 0xbc, 0x99, 0x99, 0xf8, + 0xce, 0x41, 0xf8, 0x0e, 0xaa, 0x2f, 0x47, 0xe8, 0x51, 0x81, 0xd2, 0x2f, 0x9f, 0x37, 0xfd, 0x64, + 0x25, 0x50, 0xb9, 0x5f, 0x62, 0xd0, 0x43, 0x79, 0x53, 0xcf, 0x30, 0x61, 0x02, 0x98, 0x7d, 0xb7, + 0x45, 0x71, 0x91, 0x87, 0x6a, 0x20, 0x20, 0x03, 0x9b, 0x29, 0xe0, 0x47, 0x9e, 0x43, 0x40, 0xe1, + 0x62, 0x95, 0xae, 0x12, 0x46, 0xce, 0xc6, 0x9e, 0x99, 0x75, 0xcf, 0xc5, 0x41, 0x67, 0x54, 0xba, + 0x09, 0x6c, 0xf4, 0xd9, 0x1d, 0xf8, 0xbc, 0xe7, 0xd9, 0x47, 0xb6, 0x83, 0x03, 0xcc, 0x38, 0x6e, + 0x49, 0x58, 0xce, 0xf5, 0xd8, 0x87, 0xb2, 0x12, 0xdf, 0xf1, 0xa8, 0x2b, 0xc8, 0x2c, 0x1f, 0x7c, + 0x44, 0x48, 0xdb, 0x3a, 0x1b, 0xa8, 0x27, 0x61, 0x02, 0xc8, 0x33, 0xb8, 0xc7, 0x1c, 0xdb, 0x3c, + 0x4d, 0x16, 0xcf, 0xfa, 0x1e, 0x9a, 0x40, 0x32, 0x8a, 0xe7, 0x54, 0x64, 0x28, 0xb2, 0xf5, 0xf8, + 0x97, 0x47, 0x03, 0x5b, 0x1c, 0x8c, 0xf7, 0xe5, 0x14, 0x37, 0xd4, 0xc0, 0xfb, 0x36, 0x0b, 0x7e, + 0x6d, 0x84, 0x83, 0x37, 0x7c, 0xae, 0x0d, 0x7d, 0x5a, 0x47, 0xfb, 0xfb, 0xf3, 0x7e, 0xd7, 0xc3, + 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x34, 0x40, 0xda, 0x7b, 0x5f, 0x1a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -869,6 +878,16 @@ type RootCoordClient interface { ListCredUsers(ctx context.Context, in *milvuspb.ListCredUsersRequest, opts ...grpc.CallOption) (*milvuspb.ListCredUsersResponse, error) // userd by proxy, not exposed to sdk GetCredential(ctx context.Context, in *GetCredentialRequest, opts ...grpc.CallOption) (*GetCredentialResponse, error) + // https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control + CreateRole(ctx context.Context, in *milvuspb.CreateRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + DropRole(ctx context.Context, in *milvuspb.DropRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + OperateUserRole(ctx context.Context, in *milvuspb.OperateUserRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + SelectRole(ctx context.Context, in *milvuspb.SelectRoleRequest, opts ...grpc.CallOption) (*milvuspb.SelectRoleResponse, error) + SelectUser(ctx context.Context, in *milvuspb.SelectUserRequest, opts ...grpc.CallOption) (*milvuspb.SelectUserResponse, error) + SelectResource(ctx context.Context, in *milvuspb.SelectResourceRequest, opts ...grpc.CallOption) (*milvuspb.SelectResourceResponse, error) + OperatePrivilege(ctx context.Context, in *milvuspb.OperatePrivilegeRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + SelectGrant(ctx context.Context, in *milvuspb.SelectGrantRequest, opts ...grpc.CallOption) (*milvuspb.SelectGrantResponse, error) + ListPolicy(ctx context.Context, in *internalpb.ListPolicyRequest, opts ...grpc.CallOption) (*internalpb.ListPolicyResponse, error) } type rootCoordClient struct { @@ -1212,6 +1231,87 @@ func (c *rootCoordClient) GetCredential(ctx context.Context, in *GetCredentialRe return out, nil } +func (c *rootCoordClient) CreateRole(ctx context.Context, in *milvuspb.CreateRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/CreateRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) DropRole(ctx context.Context, in *milvuspb.DropRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/DropRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) OperateUserRole(ctx context.Context, in *milvuspb.OperateUserRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/OperateUserRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) SelectRole(ctx context.Context, in *milvuspb.SelectRoleRequest, opts ...grpc.CallOption) (*milvuspb.SelectRoleResponse, error) { + out := new(milvuspb.SelectRoleResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/SelectRole", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) SelectUser(ctx context.Context, in *milvuspb.SelectUserRequest, opts ...grpc.CallOption) (*milvuspb.SelectUserResponse, error) { + out := new(milvuspb.SelectUserResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/SelectUser", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) SelectResource(ctx context.Context, in *milvuspb.SelectResourceRequest, opts ...grpc.CallOption) (*milvuspb.SelectResourceResponse, error) { + out := new(milvuspb.SelectResourceResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/SelectResource", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) OperatePrivilege(ctx context.Context, in *milvuspb.OperatePrivilegeRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/OperatePrivilege", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) SelectGrant(ctx context.Context, in *milvuspb.SelectGrantRequest, opts ...grpc.CallOption) (*milvuspb.SelectGrantResponse, error) { + out := new(milvuspb.SelectGrantResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/SelectGrant", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *rootCoordClient) ListPolicy(ctx context.Context, in *internalpb.ListPolicyRequest, opts ...grpc.CallOption) (*internalpb.ListPolicyResponse, error) { + out := new(internalpb.ListPolicyResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/ListPolicy", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // RootCoordServer is the server API for RootCoord service. type RootCoordServer interface { GetComponentStates(context.Context, *internalpb.GetComponentStatesRequest) (*internalpb.ComponentStates, error) @@ -1301,6 +1401,16 @@ type RootCoordServer interface { ListCredUsers(context.Context, *milvuspb.ListCredUsersRequest) (*milvuspb.ListCredUsersResponse, error) // userd by proxy, not exposed to sdk GetCredential(context.Context, *GetCredentialRequest) (*GetCredentialResponse, error) + // https://wiki.lfaidata.foundation/display/MIL/MEP+29+--+Support+Role-Based+Access+Control + CreateRole(context.Context, *milvuspb.CreateRoleRequest) (*commonpb.Status, error) + DropRole(context.Context, *milvuspb.DropRoleRequest) (*commonpb.Status, error) + OperateUserRole(context.Context, *milvuspb.OperateUserRoleRequest) (*commonpb.Status, error) + SelectRole(context.Context, *milvuspb.SelectRoleRequest) (*milvuspb.SelectRoleResponse, error) + SelectUser(context.Context, *milvuspb.SelectUserRequest) (*milvuspb.SelectUserResponse, error) + SelectResource(context.Context, *milvuspb.SelectResourceRequest) (*milvuspb.SelectResourceResponse, error) + OperatePrivilege(context.Context, *milvuspb.OperatePrivilegeRequest) (*commonpb.Status, error) + SelectGrant(context.Context, *milvuspb.SelectGrantRequest) (*milvuspb.SelectGrantResponse, error) + ListPolicy(context.Context, *internalpb.ListPolicyRequest) (*internalpb.ListPolicyResponse, error) } // UnimplementedRootCoordServer can be embedded to have forward compatible implementations. @@ -1418,6 +1528,33 @@ func (*UnimplementedRootCoordServer) ListCredUsers(ctx context.Context, req *mil func (*UnimplementedRootCoordServer) GetCredential(ctx context.Context, req *GetCredentialRequest) (*GetCredentialResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCredential not implemented") } +func (*UnimplementedRootCoordServer) CreateRole(ctx context.Context, req *milvuspb.CreateRoleRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateRole not implemented") +} +func (*UnimplementedRootCoordServer) DropRole(ctx context.Context, req *milvuspb.DropRoleRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method DropRole not implemented") +} +func (*UnimplementedRootCoordServer) OperateUserRole(ctx context.Context, req *milvuspb.OperateUserRoleRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method OperateUserRole not implemented") +} +func (*UnimplementedRootCoordServer) SelectRole(ctx context.Context, req *milvuspb.SelectRoleRequest) (*milvuspb.SelectRoleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectRole not implemented") +} +func (*UnimplementedRootCoordServer) SelectUser(ctx context.Context, req *milvuspb.SelectUserRequest) (*milvuspb.SelectUserResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectUser not implemented") +} +func (*UnimplementedRootCoordServer) SelectResource(ctx context.Context, req *milvuspb.SelectResourceRequest) (*milvuspb.SelectResourceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectResource not implemented") +} +func (*UnimplementedRootCoordServer) OperatePrivilege(ctx context.Context, req *milvuspb.OperatePrivilegeRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method OperatePrivilege not implemented") +} +func (*UnimplementedRootCoordServer) SelectGrant(ctx context.Context, req *milvuspb.SelectGrantRequest) (*milvuspb.SelectGrantResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SelectGrant not implemented") +} +func (*UnimplementedRootCoordServer) ListPolicy(ctx context.Context, req *internalpb.ListPolicyRequest) (*internalpb.ListPolicyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPolicy not implemented") +} func RegisterRootCoordServer(s *grpc.Server, srv RootCoordServer) { s.RegisterService(&_RootCoord_serviceDesc, srv) @@ -2089,6 +2226,168 @@ func _RootCoord_GetCredential_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _RootCoord_CreateRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.CreateRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).CreateRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/CreateRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).CreateRole(ctx, req.(*milvuspb.CreateRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_DropRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.DropRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).DropRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/DropRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).DropRole(ctx, req.(*milvuspb.DropRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_OperateUserRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.OperateUserRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).OperateUserRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/OperateUserRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).OperateUserRole(ctx, req.(*milvuspb.OperateUserRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_SelectRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.SelectRoleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).SelectRole(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/SelectRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).SelectRole(ctx, req.(*milvuspb.SelectRoleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_SelectUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.SelectUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).SelectUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/SelectUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).SelectUser(ctx, req.(*milvuspb.SelectUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_SelectResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.SelectResourceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).SelectResource(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/SelectResource", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).SelectResource(ctx, req.(*milvuspb.SelectResourceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_OperatePrivilege_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.OperatePrivilegeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).OperatePrivilege(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/OperatePrivilege", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).OperatePrivilege(ctx, req.(*milvuspb.OperatePrivilegeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_SelectGrant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(milvuspb.SelectGrantRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).SelectGrant(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/SelectGrant", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).SelectGrant(ctx, req.(*milvuspb.SelectGrantRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RootCoord_ListPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(internalpb.ListPolicyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RootCoordServer).ListPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.rootcoord.RootCoord/ListPolicy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RootCoordServer).ListPolicy(ctx, req.(*internalpb.ListPolicyRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _RootCoord_serviceDesc = grpc.ServiceDesc{ ServiceName: "milvus.proto.rootcoord.RootCoord", HandlerType: (*RootCoordServer)(nil), @@ -2241,6 +2540,42 @@ var _RootCoord_serviceDesc = grpc.ServiceDesc{ MethodName: "GetCredential", Handler: _RootCoord_GetCredential_Handler, }, + { + MethodName: "CreateRole", + Handler: _RootCoord_CreateRole_Handler, + }, + { + MethodName: "DropRole", + Handler: _RootCoord_DropRole_Handler, + }, + { + MethodName: "OperateUserRole", + Handler: _RootCoord_OperateUserRole_Handler, + }, + { + MethodName: "SelectRole", + Handler: _RootCoord_SelectRole_Handler, + }, + { + MethodName: "SelectUser", + Handler: _RootCoord_SelectUser_Handler, + }, + { + MethodName: "SelectResource", + Handler: _RootCoord_SelectResource_Handler, + }, + { + MethodName: "OperatePrivilege", + Handler: _RootCoord_OperatePrivilege_Handler, + }, + { + MethodName: "SelectGrant", + Handler: _RootCoord_SelectGrant_Handler, + }, + { + MethodName: "ListPolicy", + Handler: _RootCoord_ListPolicy_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "root_coord.proto", diff --git a/internal/proxy/impl.go b/internal/proxy/impl.go index 62724cf34e..0dbbee625e 100644 --- a/internal/proxy/impl.go +++ b/internal/proxy/impl.go @@ -3909,3 +3909,48 @@ func (node *Proxy) SendRetrieveResult(ctx context.Context, req *internalpb.Retri Reason: "Not implemented", }, nil } + +func (node *Proxy) CreateRole(ctx context.Context, request *milvuspb.CreateRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) DropRole(ctx context.Context, request *milvuspb.DropRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) OperateUserRole(ctx context.Context, request *milvuspb.OperateUserRoleRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) SelectRole(ctx context.Context, request *milvuspb.SelectRoleRequest) (*milvuspb.SelectRoleResponse, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) SelectUser(ctx context.Context, request *milvuspb.SelectUserRequest) (*milvuspb.SelectUserResponse, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) SelectResource(ctx context.Context, request *milvuspb.SelectResourceRequest) (*milvuspb.SelectResourceResponse, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) OperatePrivilege(ctx context.Context, request *milvuspb.OperatePrivilegeRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) SelectGrant(ctx context.Context, request *milvuspb.SelectGrantRequest) (*milvuspb.SelectGrantResponse, error) { + //TODO implement me + panic("implement me") +} + +func (node *Proxy) RefreshPolicyInfoCache(ctx context.Context, request *proxypb.RefreshPolicyInfoCacheRequest) (*commonpb.Status, error) { + //TODO implement me + panic("implement me") +} diff --git a/internal/util/mock/proxy_client.go b/internal/util/mock/proxy_client.go index adce652c86..066cd2a57f 100644 --- a/internal/util/mock/proxy_client.go +++ b/internal/util/mock/proxy_client.go @@ -70,3 +70,7 @@ func (m *ProxyClient) UpdateCredentialCache(ctx context.Context, in *proxypb.Upd func (m *ProxyClient) ClearCredUsersCache(ctx context.Context, in *internalpb.ClearCredUsersCacheRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { return &commonpb.Status{}, m.Err } + +func (m *ProxyClient) RefreshPolicyInfoCache(ctx context.Context, in *proxypb.RefreshPolicyInfoCacheRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + return &commonpb.Status{}, m.Err +} diff --git a/internal/util/mock/rootcoord_client.go b/internal/util/mock/rootcoord_client.go index 3425084042..3a5d7d2a8c 100644 --- a/internal/util/mock/rootcoord_client.go +++ b/internal/util/mock/rootcoord_client.go @@ -17,10 +17,10 @@ package mock import ( - "context" - "google.golang.org/grpc" + "context" + "github.com/milvus-io/milvus/internal/proto/commonpb" "github.com/milvus-io/milvus/internal/proto/datapb" "github.com/milvus-io/milvus/internal/proto/internalpb" @@ -178,3 +178,39 @@ func (m *RootCoordClient) ListCredUsers(ctx context.Context, in *milvuspb.ListCr func (m *RootCoordClient) GetCredential(ctx context.Context, in *rootcoordpb.GetCredentialRequest, opts ...grpc.CallOption) (*rootcoordpb.GetCredentialResponse, error) { return &rootcoordpb.GetCredentialResponse{}, m.Err } + +func (m *RootCoordClient) CreateRole(ctx context.Context, req *milvuspb.CreateRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + return &commonpb.Status{}, m.Err +} + +func (m *RootCoordClient) DropRole(ctx context.Context, req *milvuspb.DropRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + return &commonpb.Status{}, m.Err +} + +func (m *RootCoordClient) OperateUserRole(ctx context.Context, req *milvuspb.OperateUserRoleRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + return &commonpb.Status{}, m.Err +} + +func (m *RootCoordClient) SelectRole(ctx context.Context, req *milvuspb.SelectRoleRequest, opts ...grpc.CallOption) (*milvuspb.SelectRoleResponse, error) { + return &milvuspb.SelectRoleResponse{}, m.Err +} + +func (m *RootCoordClient) SelectUser(ctx context.Context, req *milvuspb.SelectUserRequest, opts ...grpc.CallOption) (*milvuspb.SelectUserResponse, error) { + return &milvuspb.SelectUserResponse{}, m.Err +} + +func (m *RootCoordClient) SelectResource(ctx context.Context, req *milvuspb.SelectResourceRequest, opts ...grpc.CallOption) (*milvuspb.SelectResourceResponse, error) { + return &milvuspb.SelectResourceResponse{}, m.Err +} + +func (m *RootCoordClient) OperatePrivilege(ctx context.Context, req *milvuspb.OperatePrivilegeRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + return &commonpb.Status{}, m.Err +} + +func (m *RootCoordClient) SelectGrant(ctx context.Context, req *milvuspb.SelectGrantRequest, opts ...grpc.CallOption) (*milvuspb.SelectGrantResponse, error) { + return &milvuspb.SelectGrantResponse{}, m.Err +} + +func (m *RootCoordClient) ListPolicy(ctx context.Context, req *internalpb.ListPolicyRequest, opts ...grpc.CallOption) (*internalpb.ListPolicyResponse, error) { + return &internalpb.ListPolicyResponse{}, m.Err +} diff --git a/scripts/proto_gen_go.sh b/scripts/proto_gen_go.sh index 7dde5e9235..6d6cca44ea 100755 --- a/scripts/proto_gen_go.sh +++ b/scripts/proto_gen_go.sh @@ -19,6 +19,7 @@ SCRIPTS_DIR=$(dirname "$0") PROTO_DIR=$SCRIPTS_DIR/../internal/proto/ +GOOGLE_PROTO_DIR=$SCRIPTS_DIR/../cmake_build/thirdparty/protobuf/protobuf-src/src/ PROGRAM=$(basename "$0") GOPATH=$(go env GOPATH) @@ -51,20 +52,20 @@ mkdir -p datapb mkdir -p querypb mkdir -p planpb -${protoc} --go_out=plugins=grpc,paths=source_relative:./commonpb common.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./schemapb schema.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./etcdpb etcd_meta.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./indexcgopb index_cgo_msg.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./commonpb common.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./schemapb schema.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./etcdpb etcd_meta.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./indexcgopb index_cgo_msg.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./rootcoordpb root_coord.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./rootcoordpb root_coord.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./internalpb internal.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./milvuspb milvus.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./proxypb proxy.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./indexpb index_coord.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./datapb data_coord.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./querypb query_coord.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./planpb plan.proto -${protoc} --go_out=plugins=grpc,paths=source_relative:./segcorepb segcore.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./internalpb internal.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./milvuspb milvus.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./proxypb proxy.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./indexpb index_coord.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./datapb data_coord.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./querypb query_coord.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./planpb plan.proto +${protoc} --proto_path="${GOOGLE_PROTO_DIR}" --proto_path=. --go_out=plugins=grpc,paths=source_relative:./segcorepb segcore.proto popd