diff --git a/docs/grpc/index.html b/docs/grpc/index.html
index a6514cb0e9..7cf587e835 100644
--- a/docs/grpc/index.html
+++ b/docs/grpc/index.html
@@ -1239,6 +1239,18 @@
Table of Contents
MGetRegisteredResourceValueResponse
+
+ MGetRegisteredResourceValuesByFQNsRequest
+
+
+
+ MGetRegisteredResourceValuesByFQNsResponse
+
+
+
+ MGetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry
+
+
MListRegisteredResourceValuesRequest
@@ -10518,14 +10530,14 @@ GetRegisteredRe
- | resource_id |
+ id |
string |
|
|
- | fqn |
+ name |
string |
|
|
@@ -10573,7 +10585,7 @@ GetRegiste
- | value_id |
+ id |
string |
|
|
@@ -10617,6 +10629,85 @@ GetRegist
+ GetRegisteredResourceValuesByFQNsRequest
+
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | fqns |
+ string |
+ repeated |
+ Required |
+
+
+
+
+
+
+
+
+
+ GetRegisteredResourceValuesByFQNsResponse
+
+
+
+
+
+
+
+
+
+ GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry
+
+
+
+
+
+
+
+
+
ListRegisteredResourceValuesRequest
@@ -10937,6 +11028,13 @@ RegisteredResourc
|
+
+ | GetRegisteredResourceValuesByFQNs |
+ GetRegisteredResourceValuesByFQNsRequest |
+ GetRegisteredResourceValuesByFQNsResponse |
+ |
+
+
| ListRegisteredResourceValues |
ListRegisteredResourceValuesRequest |
diff --git a/docs/openapi/policy/registeredresources/registered_resources.swagger.json b/docs/openapi/policy/registeredresources/registered_resources.swagger.json
index 6dfae600c1..fdb8d90bd9 100644
--- a/docs/openapi/policy/registeredresources/registered_resources.swagger.json
+++ b/docs/openapi/policy/registeredresources/registered_resources.swagger.json
@@ -196,6 +196,17 @@
}
}
},
+ "registeredresourcesGetRegisteredResourceValuesByFQNsResponse": {
+ "type": "object",
+ "properties": {
+ "fqnValueMap": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#/definitions/policyRegisteredResourceValue"
+ }
+ }
+ }
+ },
"registeredresourcesListRegisteredResourceValuesResponse": {
"type": "object",
"properties": {
diff --git a/protocol/go/policy/registeredresources/registered_resources.pb.go b/protocol/go/policy/registeredresources/registered_resources.pb.go
index f6d6b9e609..199d3bd418 100644
--- a/protocol/go/policy/registeredresources/registered_resources.pb.go
+++ b/protocol/go/policy/registeredresources/registered_resources.pb.go
@@ -146,8 +146,8 @@ type GetRegisteredResourceRequest struct {
// Types that are assignable to Identifier:
//
- // *GetRegisteredResourceRequest_ResourceId
- // *GetRegisteredResourceRequest_Fqn
+ // *GetRegisteredResourceRequest_Id
+ // *GetRegisteredResourceRequest_Name
Identifier isGetRegisteredResourceRequest_Identifier `protobuf_oneof:"identifier"`
}
@@ -190,16 +190,16 @@ func (m *GetRegisteredResourceRequest) GetIdentifier() isGetRegisteredResourceRe
return nil
}
-func (x *GetRegisteredResourceRequest) GetResourceId() string {
- if x, ok := x.GetIdentifier().(*GetRegisteredResourceRequest_ResourceId); ok {
- return x.ResourceId
+func (x *GetRegisteredResourceRequest) GetId() string {
+ if x, ok := x.GetIdentifier().(*GetRegisteredResourceRequest_Id); ok {
+ return x.Id
}
return ""
}
-func (x *GetRegisteredResourceRequest) GetFqn() string {
- if x, ok := x.GetIdentifier().(*GetRegisteredResourceRequest_Fqn); ok {
- return x.Fqn
+func (x *GetRegisteredResourceRequest) GetName() string {
+ if x, ok := x.GetIdentifier().(*GetRegisteredResourceRequest_Name); ok {
+ return x.Name
}
return ""
}
@@ -208,17 +208,17 @@ type isGetRegisteredResourceRequest_Identifier interface {
isGetRegisteredResourceRequest_Identifier()
}
-type GetRegisteredResourceRequest_ResourceId struct {
- ResourceId string `protobuf:"bytes,1,opt,name=resource_id,json=resourceId,proto3,oneof"`
+type GetRegisteredResourceRequest_Id struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"`
}
-type GetRegisteredResourceRequest_Fqn struct {
- Fqn string `protobuf:"bytes,2,opt,name=fqn,proto3,oneof"`
+type GetRegisteredResourceRequest_Name struct {
+ Name string `protobuf:"bytes,2,opt,name=name,proto3,oneof"`
}
-func (*GetRegisteredResourceRequest_ResourceId) isGetRegisteredResourceRequest_Identifier() {}
+func (*GetRegisteredResourceRequest_Id) isGetRegisteredResourceRequest_Identifier() {}
-func (*GetRegisteredResourceRequest_Fqn) isGetRegisteredResourceRequest_Identifier() {}
+func (*GetRegisteredResourceRequest_Name) isGetRegisteredResourceRequest_Identifier() {}
type GetRegisteredResourceResponse struct {
state protoimpl.MessageState
@@ -708,7 +708,7 @@ type GetRegisteredResourceValueRequest struct {
// Types that are assignable to Identifier:
//
- // *GetRegisteredResourceValueRequest_ValueId
+ // *GetRegisteredResourceValueRequest_Id
// *GetRegisteredResourceValueRequest_Fqn
Identifier isGetRegisteredResourceValueRequest_Identifier `protobuf_oneof:"identifier"`
}
@@ -752,9 +752,9 @@ func (m *GetRegisteredResourceValueRequest) GetIdentifier() isGetRegisteredResou
return nil
}
-func (x *GetRegisteredResourceValueRequest) GetValueId() string {
- if x, ok := x.GetIdentifier().(*GetRegisteredResourceValueRequest_ValueId); ok {
- return x.ValueId
+func (x *GetRegisteredResourceValueRequest) GetId() string {
+ if x, ok := x.GetIdentifier().(*GetRegisteredResourceValueRequest_Id); ok {
+ return x.Id
}
return ""
}
@@ -770,15 +770,15 @@ type isGetRegisteredResourceValueRequest_Identifier interface {
isGetRegisteredResourceValueRequest_Identifier()
}
-type GetRegisteredResourceValueRequest_ValueId struct {
- ValueId string `protobuf:"bytes,1,opt,name=value_id,json=valueId,proto3,oneof"`
+type GetRegisteredResourceValueRequest_Id struct {
+ Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"`
}
type GetRegisteredResourceValueRequest_Fqn struct {
Fqn string `protobuf:"bytes,2,opt,name=fqn,proto3,oneof"`
}
-func (*GetRegisteredResourceValueRequest_ValueId) isGetRegisteredResourceValueRequest_Identifier() {}
+func (*GetRegisteredResourceValueRequest_Id) isGetRegisteredResourceValueRequest_Identifier() {}
func (*GetRegisteredResourceValueRequest_Fqn) isGetRegisteredResourceValueRequest_Identifier() {}
@@ -829,6 +829,101 @@ func (x *GetRegisteredResourceValueResponse) GetValue() *policy.RegisteredResour
return nil
}
+type GetRegisteredResourceValuesByFQNsRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ Fqns []string `protobuf:"bytes,1,rep,name=fqns,proto3" json:"fqns,omitempty"`
+}
+
+func (x *GetRegisteredResourceValuesByFQNsRequest) Reset() {
+ *x = GetRegisteredResourceValuesByFQNsRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetRegisteredResourceValuesByFQNsRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRegisteredResourceValuesByFQNsRequest) ProtoMessage() {}
+
+func (x *GetRegisteredResourceValuesByFQNsRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[14]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRegisteredResourceValuesByFQNsRequest.ProtoReflect.Descriptor instead.
+func (*GetRegisteredResourceValuesByFQNsRequest) Descriptor() ([]byte, []int) {
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *GetRegisteredResourceValuesByFQNsRequest) GetFqns() []string {
+ if x != nil {
+ return x.Fqns
+ }
+ return nil
+}
+
+type GetRegisteredResourceValuesByFQNsResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ FqnValueMap map[string]*policy.RegisteredResourceValue `protobuf:"bytes,1,rep,name=fqn_value_map,json=fqnValueMap,proto3" json:"fqn_value_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *GetRegisteredResourceValuesByFQNsResponse) Reset() {
+ *x = GetRegisteredResourceValuesByFQNsResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetRegisteredResourceValuesByFQNsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRegisteredResourceValuesByFQNsResponse) ProtoMessage() {}
+
+func (x *GetRegisteredResourceValuesByFQNsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[15]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRegisteredResourceValuesByFQNsResponse.ProtoReflect.Descriptor instead.
+func (*GetRegisteredResourceValuesByFQNsResponse) Descriptor() ([]byte, []int) {
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *GetRegisteredResourceValuesByFQNsResponse) GetFqnValueMap() map[string]*policy.RegisteredResourceValue {
+ if x != nil {
+ return x.FqnValueMap
+ }
+ return nil
+}
+
type ListRegisteredResourceValuesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -843,7 +938,7 @@ type ListRegisteredResourceValuesRequest struct {
func (x *ListRegisteredResourceValuesRequest) Reset() {
*x = ListRegisteredResourceValuesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[14]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -856,7 +951,7 @@ func (x *ListRegisteredResourceValuesRequest) String() string {
func (*ListRegisteredResourceValuesRequest) ProtoMessage() {}
func (x *ListRegisteredResourceValuesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[14]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -869,7 +964,7 @@ func (x *ListRegisteredResourceValuesRequest) ProtoReflect() protoreflect.Messag
// Deprecated: Use ListRegisteredResourceValuesRequest.ProtoReflect.Descriptor instead.
func (*ListRegisteredResourceValuesRequest) Descriptor() ([]byte, []int) {
- return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{14}
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{16}
}
func (x *ListRegisteredResourceValuesRequest) GetResourceId() string {
@@ -898,7 +993,7 @@ type ListRegisteredResourceValuesResponse struct {
func (x *ListRegisteredResourceValuesResponse) Reset() {
*x = ListRegisteredResourceValuesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[15]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -911,7 +1006,7 @@ func (x *ListRegisteredResourceValuesResponse) String() string {
func (*ListRegisteredResourceValuesResponse) ProtoMessage() {}
func (x *ListRegisteredResourceValuesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[15]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -924,7 +1019,7 @@ func (x *ListRegisteredResourceValuesResponse) ProtoReflect() protoreflect.Messa
// Deprecated: Use ListRegisteredResourceValuesResponse.ProtoReflect.Descriptor instead.
func (*ListRegisteredResourceValuesResponse) Descriptor() ([]byte, []int) {
- return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{15}
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{17}
}
func (x *ListRegisteredResourceValuesResponse) GetValues() []*policy.RegisteredResourceValue {
@@ -959,7 +1054,7 @@ type UpdateRegisteredResourceValueRequest struct {
func (x *UpdateRegisteredResourceValueRequest) Reset() {
*x = UpdateRegisteredResourceValueRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[16]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -972,7 +1067,7 @@ func (x *UpdateRegisteredResourceValueRequest) String() string {
func (*UpdateRegisteredResourceValueRequest) ProtoMessage() {}
func (x *UpdateRegisteredResourceValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[16]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -985,7 +1080,7 @@ func (x *UpdateRegisteredResourceValueRequest) ProtoReflect() protoreflect.Messa
// Deprecated: Use UpdateRegisteredResourceValueRequest.ProtoReflect.Descriptor instead.
func (*UpdateRegisteredResourceValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{16}
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{18}
}
func (x *UpdateRegisteredResourceValueRequest) GetId() string {
@@ -1027,7 +1122,7 @@ type UpdateRegisteredResourceValueResponse struct {
func (x *UpdateRegisteredResourceValueResponse) Reset() {
*x = UpdateRegisteredResourceValueResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[17]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1040,7 +1135,7 @@ func (x *UpdateRegisteredResourceValueResponse) String() string {
func (*UpdateRegisteredResourceValueResponse) ProtoMessage() {}
func (x *UpdateRegisteredResourceValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[17]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1053,7 +1148,7 @@ func (x *UpdateRegisteredResourceValueResponse) ProtoReflect() protoreflect.Mess
// Deprecated: Use UpdateRegisteredResourceValueResponse.ProtoReflect.Descriptor instead.
func (*UpdateRegisteredResourceValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{17}
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{19}
}
func (x *UpdateRegisteredResourceValueResponse) GetValue() *policy.RegisteredResourceValue {
@@ -1075,7 +1170,7 @@ type DeleteRegisteredResourceValueRequest struct {
func (x *DeleteRegisteredResourceValueRequest) Reset() {
*x = DeleteRegisteredResourceValueRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[18]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1088,7 +1183,7 @@ func (x *DeleteRegisteredResourceValueRequest) String() string {
func (*DeleteRegisteredResourceValueRequest) ProtoMessage() {}
func (x *DeleteRegisteredResourceValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[18]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1101,7 +1196,7 @@ func (x *DeleteRegisteredResourceValueRequest) ProtoReflect() protoreflect.Messa
// Deprecated: Use DeleteRegisteredResourceValueRequest.ProtoReflect.Descriptor instead.
func (*DeleteRegisteredResourceValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{18}
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{20}
}
func (x *DeleteRegisteredResourceValueRequest) GetId() string {
@@ -1122,7 +1217,7 @@ type DeleteRegisteredResourceValueResponse struct {
func (x *DeleteRegisteredResourceValueResponse) Reset() {
*x = DeleteRegisteredResourceValueResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[19]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1135,7 +1230,7 @@ func (x *DeleteRegisteredResourceValueResponse) String() string {
func (*DeleteRegisteredResourceValueResponse) ProtoMessage() {}
func (x *DeleteRegisteredResourceValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[19]
+ mi := &file_policy_registeredresources_registered_resources_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1148,7 +1243,7 @@ func (x *DeleteRegisteredResourceValueResponse) ProtoReflect() protoreflect.Mess
// Deprecated: Use DeleteRegisteredResourceValueResponse.ProtoReflect.Descriptor instead.
func (*DeleteRegisteredResourceValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{19}
+ return file_policy_registeredresources_registered_resources_proto_rawDescGZIP(), []int{21}
}
func (x *DeleteRegisteredResourceValueResponse) GetValue() *policy.RegisteredResourceValue {
@@ -1207,328 +1302,378 @@ var file_policy_registeredresources_registered_resources_proto_rawDesc = []byte{
0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52,
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x1c,
+ 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x94, 0x03, 0x0a, 0x1c,
0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0b,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x71, 0x6e,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88,
- 0x01, 0x01, 0x48, 0x00, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, 0x65,
- 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x57,
- 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x52,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x67,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91,
- 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
- 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0,
+ 0x01, 0x01, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0xc2, 0x02, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xab, 0x02, 0xba, 0x48, 0xa7, 0x02, 0xba, 0x01,
+ 0x9b, 0x02, 0x0a, 0x0e, 0x72, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d,
+ 0x61, 0x74, 0x12, 0xb3, 0x01, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75,
+ 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75,
+ 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c,
+ 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61,
+ 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62,
+ 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69,
+ 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65,
+ 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e,
+ 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77,
+ 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74,
+ 0x68, 0x69, 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e,
+ 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d,
+ 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30,
+ 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39,
+ 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00,
+ 0x72, 0x03, 0x18, 0xfd, 0x01, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x13, 0x0a,
+ 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02,
+ 0x08, 0x01, 0x22, 0x57, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
+ 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52,
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x0a,
- 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x22, 0x89, 0x04, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0xc0, 0x02, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0xab, 0x02, 0xba, 0x48, 0xa7, 0x02, 0xba, 0x01, 0x9b, 0x02, 0x0a, 0x0e, 0x72, 0x72, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xb3, 0x01, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e,
- 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74,
- 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68,
- 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72,
- 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61,
- 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c,
- 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54,
- 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77,
- 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65,
- 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e,
- 0x1a, 0x53, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30,
- 0x20, 0x3f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28,
- 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a,
- 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61,
- 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a,
- 0x20, 0x74, 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
- 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08,
- 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61,
- 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x5a,
- 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
- 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x3b, 0x0a, 0x1f, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
- 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x1e, 0x4c,
+ 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a,
+ 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61,
+ 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x04, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
- 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x22, 0xb6, 0x03, 0x0a, 0x24, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0b,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0xad, 0x02, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x96, 0x02, 0xba, 0x48, 0x92, 0x02, 0xba, 0x01,
- 0x86, 0x02, 0x0a, 0x0f, 0x72, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x6f, 0x72,
- 0x6d, 0x61, 0x74, 0x12, 0xb5, 0x01, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
- 0x20, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x20,
- 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20,
- 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73,
- 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73,
- 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20,
- 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68,
- 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f,
- 0x72, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62,
- 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
- 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x3b, 0x74, 0x68, 0x69,
- 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a,
- 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d,
- 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30,
- 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0xfd, 0x01,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0xc0, 0x02, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0xab, 0x02, 0xba, 0x48, 0xa7, 0x02, 0xba, 0x01, 0x9b, 0x02, 0x0a, 0x0e,
+ 0x72, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xb3,
+ 0x01, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62,
+ 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69,
+ 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69,
+ 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75,
+ 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e,
+ 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20,
+ 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65,
+ 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x61,
+ 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63,
+ 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29,
+ 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39,
+ 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d,
+ 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24,
+ 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00, 0x72, 0x03, 0x18, 0xfd,
+ 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62,
- 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5e, 0x0a, 0x25,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65,
- 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x7f, 0x0a, 0x21,
- 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x25, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x48, 0x00, 0x52,
- 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01,
- 0x01, 0x48, 0x00, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e,
- 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x5b, 0x0a,
- 0x22, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb2, 0x02, 0x0a, 0x23, 0x4c,
- 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0xd5, 0x01, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0xba, 0x48, 0xaf, 0x01, 0xba,
- 0x01, 0xab, 0x01, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x75,
- 0x69, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x23, 0x4f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62,
- 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x55, 0x49, 0x44, 0x1a, 0x6e,
- 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20,
- 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28,
- 0x27, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x38, 0x7d, 0x2d,
- 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b,
- 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30,
- 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d,
- 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x27, 0x29, 0x52, 0x0a,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61,
- 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
- 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
- 0x95, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
- 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
+ 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69,
+ 0x6f, 0x72, 0x22, 0x5a, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50,
- 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x04, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61,
+ 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x3b,
+ 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
+ 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x20, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x36, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xb6, 0x03, 0x0a, 0x24, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
- 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0xc5, 0x02, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xae, 0x02, 0xba, 0x48, 0xaa,
- 0x02, 0xba, 0x01, 0x9e, 0x02, 0x0a, 0x0f, 0x72, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
- 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xb5, 0x01, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
- 0x72, 0x65, 0x64, 0x20, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e,
- 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68,
- 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f,
- 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74,
- 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74,
- 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20,
- 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6c,
- 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20,
- 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53,
- 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f,
- 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e,
+ 0x12, 0x29, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52,
+ 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0xad, 0x02, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x96, 0x02, 0xba, 0x48,
+ 0x92, 0x02, 0xba, 0x01, 0x86, 0x02, 0x0a, 0x0f, 0x72, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xb5, 0x01, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x20, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70,
+ 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63,
+ 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73,
+ 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65,
+ 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69,
+ 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
+ 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a,
+ 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e,
0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61,
0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a,
- 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74,
- 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76,
- 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x5e, 0x0a,
- 0x25, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
- 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x40, 0x0a,
- 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+ 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x72,
+ 0x03, 0x18, 0xfd, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d,
+ 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x22, 0x5e, 0x0a, 0x25, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x22, 0x74, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22,
- 0x5e, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
- 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x02, 0x69,
+ 0x64, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a,
+ 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x48, 0x00, 0x52, 0x03, 0x66, 0x71,
+ 0x6e, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12,
+ 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x5b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x22, 0x53, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x27, 0x0a, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x13, 0xba,
+ 0x48, 0x10, 0x92, 0x01, 0x0d, 0x08, 0x01, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88,
+ 0x01, 0x01, 0x52, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x22, 0x88, 0x02, 0x0a, 0x29, 0x47, 0x65, 0x74,
+ 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x0d, 0x66, 0x71, 0x6e, 0x5f, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+ 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x66, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d,
+ 0x61, 0x70, 0x1a, 0x5f, 0x0a, 0x10, 0x46, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61,
+ 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32,
- 0xd3, 0x0c, 0x0a, 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x97,
- 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
- 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3b, 0x2e, 0x70, 0x6f,
+ 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x22, 0xb2, 0x02, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xd5, 0x01, 0x0a, 0x0b,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0xb3, 0x01, 0xba, 0x48, 0xaf, 0x01, 0xba, 0x01, 0xab, 0x01, 0x0a, 0x14, 0x6f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x6d,
+ 0x61, 0x74, 0x12, 0x23, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x65,
+ 0x6c, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c,
+ 0x69, 0x64, 0x20, 0x55, 0x55, 0x49, 0x44, 0x1a, 0x6e, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68,
+ 0x69, 0x73, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d,
+ 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x38, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66,
+ 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41,
+ 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d,
+ 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46,
+ 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x27, 0x29, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73,
+ 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
+ 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x22, 0x93, 0x04, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0xc5, 0x02, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0xae, 0x02, 0xba, 0x48, 0xaa, 0x02, 0xba, 0x01, 0x9e, 0x02, 0x0a, 0x0f,
+ 0x72, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12,
+ 0xb5, 0x01, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74,
+ 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65,
+ 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64,
+ 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74,
+ 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73,
+ 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
+ 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f,
+ 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65,
+ 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68,
+ 0x69, 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d,
+ 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a,
+ 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d,
+ 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d,
+ 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00, 0x72,
+ 0x03, 0x18, 0xfd, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d,
+ 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65,
+ 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x5e, 0x0a, 0x25, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
+ 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x40, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72,
+ 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5e, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65,
+ 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x88, 0x0e, 0x0a, 0x1a, 0x52, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x12, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
+ 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x70, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69,
0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74,
- 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x12, 0x38, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e,
- 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, 0x17, 0x4c, 0x69,
- 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72,
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
- 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c,
- 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x12, 0x97, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3b, 0x2e,
+ 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x00, 0x12, 0x94, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x3a,
+ 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+ 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x18, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+ 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x12, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e,
0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
- 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65,
+ 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa6, 0x01,
+ 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
+ 0x40, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
+ 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x41, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9d, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x97, 0x01, 0x0a, 0x18, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
+ 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
- 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x00, 0x12, 0xa6, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
- 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
- 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9d, 0x01,
- 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x2e, 0x70,
+ 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xb2, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12, 0x44, 0x2e, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67,
0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa3, 0x01,
- 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
- 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f,
- 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
- 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x40, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
- 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x00, 0x12, 0xa6, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65,
+ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e,
+ 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa3, 0x01, 0x0a, 0x1c,
+ 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+ 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52,
+ 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0xa6, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69,
+ 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x12, 0x40, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+ 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72,
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73,
- 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa6, 0x01, 0x0a,
- 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
- 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa6, 0x01, 0x0a, 0x1d, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41,
0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x41, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x87, 0x02, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x18, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
- 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
- 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x52, 0x58, 0xaa, 0x02,
- 0x1a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
- 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0xca, 0x02, 0x1a, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0xe2, 0x02, 0x26, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x5c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0xea, 0x02, 0x1b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x62,
- 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x75, 0x72, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x00, 0x42, 0x87, 0x02, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x18, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x50, 0x01, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f,
+ 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x52, 0x58, 0xaa, 0x02, 0x1a, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0xca, 0x02, 0x1a, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x5c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0xe2, 0x02, 0x26, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c,
+ 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea,
+ 0x02, 0x1b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1543,81 +1688,88 @@ func file_policy_registeredresources_registered_resources_proto_rawDescGZIP() []
return file_policy_registeredresources_registered_resources_proto_rawDescData
}
-var file_policy_registeredresources_registered_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_policy_registeredresources_registered_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_policy_registeredresources_registered_resources_proto_goTypes = []interface{}{
- (*CreateRegisteredResourceRequest)(nil), // 0: policy.registeredresources.CreateRegisteredResourceRequest
- (*CreateRegisteredResourceResponse)(nil), // 1: policy.registeredresources.CreateRegisteredResourceResponse
- (*GetRegisteredResourceRequest)(nil), // 2: policy.registeredresources.GetRegisteredResourceRequest
- (*GetRegisteredResourceResponse)(nil), // 3: policy.registeredresources.GetRegisteredResourceResponse
- (*ListRegisteredResourcesRequest)(nil), // 4: policy.registeredresources.ListRegisteredResourcesRequest
- (*ListRegisteredResourcesResponse)(nil), // 5: policy.registeredresources.ListRegisteredResourcesResponse
- (*UpdateRegisteredResourceRequest)(nil), // 6: policy.registeredresources.UpdateRegisteredResourceRequest
- (*UpdateRegisteredResourceResponse)(nil), // 7: policy.registeredresources.UpdateRegisteredResourceResponse
- (*DeleteRegisteredResourceRequest)(nil), // 8: policy.registeredresources.DeleteRegisteredResourceRequest
- (*DeleteRegisteredResourceResponse)(nil), // 9: policy.registeredresources.DeleteRegisteredResourceResponse
- (*CreateRegisteredResourceValueRequest)(nil), // 10: policy.registeredresources.CreateRegisteredResourceValueRequest
- (*CreateRegisteredResourceValueResponse)(nil), // 11: policy.registeredresources.CreateRegisteredResourceValueResponse
- (*GetRegisteredResourceValueRequest)(nil), // 12: policy.registeredresources.GetRegisteredResourceValueRequest
- (*GetRegisteredResourceValueResponse)(nil), // 13: policy.registeredresources.GetRegisteredResourceValueResponse
- (*ListRegisteredResourceValuesRequest)(nil), // 14: policy.registeredresources.ListRegisteredResourceValuesRequest
- (*ListRegisteredResourceValuesResponse)(nil), // 15: policy.registeredresources.ListRegisteredResourceValuesResponse
- (*UpdateRegisteredResourceValueRequest)(nil), // 16: policy.registeredresources.UpdateRegisteredResourceValueRequest
- (*UpdateRegisteredResourceValueResponse)(nil), // 17: policy.registeredresources.UpdateRegisteredResourceValueResponse
- (*DeleteRegisteredResourceValueRequest)(nil), // 18: policy.registeredresources.DeleteRegisteredResourceValueRequest
- (*DeleteRegisteredResourceValueResponse)(nil), // 19: policy.registeredresources.DeleteRegisteredResourceValueResponse
- (*common.MetadataMutable)(nil), // 20: common.MetadataMutable
- (*policy.RegisteredResource)(nil), // 21: policy.RegisteredResource
- (*policy.PageRequest)(nil), // 22: policy.PageRequest
- (*policy.PageResponse)(nil), // 23: policy.PageResponse
- (common.MetadataUpdateEnum)(0), // 24: common.MetadataUpdateEnum
- (*policy.RegisteredResourceValue)(nil), // 25: policy.RegisteredResourceValue
+ (*CreateRegisteredResourceRequest)(nil), // 0: policy.registeredresources.CreateRegisteredResourceRequest
+ (*CreateRegisteredResourceResponse)(nil), // 1: policy.registeredresources.CreateRegisteredResourceResponse
+ (*GetRegisteredResourceRequest)(nil), // 2: policy.registeredresources.GetRegisteredResourceRequest
+ (*GetRegisteredResourceResponse)(nil), // 3: policy.registeredresources.GetRegisteredResourceResponse
+ (*ListRegisteredResourcesRequest)(nil), // 4: policy.registeredresources.ListRegisteredResourcesRequest
+ (*ListRegisteredResourcesResponse)(nil), // 5: policy.registeredresources.ListRegisteredResourcesResponse
+ (*UpdateRegisteredResourceRequest)(nil), // 6: policy.registeredresources.UpdateRegisteredResourceRequest
+ (*UpdateRegisteredResourceResponse)(nil), // 7: policy.registeredresources.UpdateRegisteredResourceResponse
+ (*DeleteRegisteredResourceRequest)(nil), // 8: policy.registeredresources.DeleteRegisteredResourceRequest
+ (*DeleteRegisteredResourceResponse)(nil), // 9: policy.registeredresources.DeleteRegisteredResourceResponse
+ (*CreateRegisteredResourceValueRequest)(nil), // 10: policy.registeredresources.CreateRegisteredResourceValueRequest
+ (*CreateRegisteredResourceValueResponse)(nil), // 11: policy.registeredresources.CreateRegisteredResourceValueResponse
+ (*GetRegisteredResourceValueRequest)(nil), // 12: policy.registeredresources.GetRegisteredResourceValueRequest
+ (*GetRegisteredResourceValueResponse)(nil), // 13: policy.registeredresources.GetRegisteredResourceValueResponse
+ (*GetRegisteredResourceValuesByFQNsRequest)(nil), // 14: policy.registeredresources.GetRegisteredResourceValuesByFQNsRequest
+ (*GetRegisteredResourceValuesByFQNsResponse)(nil), // 15: policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse
+ (*ListRegisteredResourceValuesRequest)(nil), // 16: policy.registeredresources.ListRegisteredResourceValuesRequest
+ (*ListRegisteredResourceValuesResponse)(nil), // 17: policy.registeredresources.ListRegisteredResourceValuesResponse
+ (*UpdateRegisteredResourceValueRequest)(nil), // 18: policy.registeredresources.UpdateRegisteredResourceValueRequest
+ (*UpdateRegisteredResourceValueResponse)(nil), // 19: policy.registeredresources.UpdateRegisteredResourceValueResponse
+ (*DeleteRegisteredResourceValueRequest)(nil), // 20: policy.registeredresources.DeleteRegisteredResourceValueRequest
+ (*DeleteRegisteredResourceValueResponse)(nil), // 21: policy.registeredresources.DeleteRegisteredResourceValueResponse
+ nil, // 22: policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry
+ (*common.MetadataMutable)(nil), // 23: common.MetadataMutable
+ (*policy.RegisteredResource)(nil), // 24: policy.RegisteredResource
+ (*policy.PageRequest)(nil), // 25: policy.PageRequest
+ (*policy.PageResponse)(nil), // 26: policy.PageResponse
+ (common.MetadataUpdateEnum)(0), // 27: common.MetadataUpdateEnum
+ (*policy.RegisteredResourceValue)(nil), // 28: policy.RegisteredResourceValue
}
var file_policy_registeredresources_registered_resources_proto_depIdxs = []int32{
- 20, // 0: policy.registeredresources.CreateRegisteredResourceRequest.metadata:type_name -> common.MetadataMutable
- 21, // 1: policy.registeredresources.CreateRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
- 21, // 2: policy.registeredresources.GetRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
- 22, // 3: policy.registeredresources.ListRegisteredResourcesRequest.pagination:type_name -> policy.PageRequest
- 21, // 4: policy.registeredresources.ListRegisteredResourcesResponse.resources:type_name -> policy.RegisteredResource
- 23, // 5: policy.registeredresources.ListRegisteredResourcesResponse.pagination:type_name -> policy.PageResponse
- 20, // 6: policy.registeredresources.UpdateRegisteredResourceRequest.metadata:type_name -> common.MetadataMutable
- 24, // 7: policy.registeredresources.UpdateRegisteredResourceRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
- 21, // 8: policy.registeredresources.UpdateRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
- 21, // 9: policy.registeredresources.DeleteRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
- 20, // 10: policy.registeredresources.CreateRegisteredResourceValueRequest.metadata:type_name -> common.MetadataMutable
- 25, // 11: policy.registeredresources.CreateRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
- 25, // 12: policy.registeredresources.GetRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
- 22, // 13: policy.registeredresources.ListRegisteredResourceValuesRequest.pagination:type_name -> policy.PageRequest
- 25, // 14: policy.registeredresources.ListRegisteredResourceValuesResponse.values:type_name -> policy.RegisteredResourceValue
- 23, // 15: policy.registeredresources.ListRegisteredResourceValuesResponse.pagination:type_name -> policy.PageResponse
- 20, // 16: policy.registeredresources.UpdateRegisteredResourceValueRequest.metadata:type_name -> common.MetadataMutable
- 24, // 17: policy.registeredresources.UpdateRegisteredResourceValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
- 25, // 18: policy.registeredresources.UpdateRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
- 25, // 19: policy.registeredresources.DeleteRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
- 0, // 20: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResource:input_type -> policy.registeredresources.CreateRegisteredResourceRequest
- 2, // 21: policy.registeredresources.RegisteredResourcesService.GetRegisteredResource:input_type -> policy.registeredresources.GetRegisteredResourceRequest
- 4, // 22: policy.registeredresources.RegisteredResourcesService.ListRegisteredResources:input_type -> policy.registeredresources.ListRegisteredResourcesRequest
- 6, // 23: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResource:input_type -> policy.registeredresources.UpdateRegisteredResourceRequest
- 8, // 24: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResource:input_type -> policy.registeredresources.DeleteRegisteredResourceRequest
- 10, // 25: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResourceValue:input_type -> policy.registeredresources.CreateRegisteredResourceValueRequest
- 12, // 26: policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValue:input_type -> policy.registeredresources.GetRegisteredResourceValueRequest
- 14, // 27: policy.registeredresources.RegisteredResourcesService.ListRegisteredResourceValues:input_type -> policy.registeredresources.ListRegisteredResourceValuesRequest
- 16, // 28: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResourceValue:input_type -> policy.registeredresources.UpdateRegisteredResourceValueRequest
- 18, // 29: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResourceValue:input_type -> policy.registeredresources.DeleteRegisteredResourceValueRequest
- 1, // 30: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResource:output_type -> policy.registeredresources.CreateRegisteredResourceResponse
- 3, // 31: policy.registeredresources.RegisteredResourcesService.GetRegisteredResource:output_type -> policy.registeredresources.GetRegisteredResourceResponse
- 5, // 32: policy.registeredresources.RegisteredResourcesService.ListRegisteredResources:output_type -> policy.registeredresources.ListRegisteredResourcesResponse
- 7, // 33: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResource:output_type -> policy.registeredresources.UpdateRegisteredResourceResponse
- 9, // 34: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResource:output_type -> policy.registeredresources.DeleteRegisteredResourceResponse
- 11, // 35: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResourceValue:output_type -> policy.registeredresources.CreateRegisteredResourceValueResponse
- 13, // 36: policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValue:output_type -> policy.registeredresources.GetRegisteredResourceValueResponse
- 15, // 37: policy.registeredresources.RegisteredResourcesService.ListRegisteredResourceValues:output_type -> policy.registeredresources.ListRegisteredResourceValuesResponse
- 17, // 38: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResourceValue:output_type -> policy.registeredresources.UpdateRegisteredResourceValueResponse
- 19, // 39: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResourceValue:output_type -> policy.registeredresources.DeleteRegisteredResourceValueResponse
- 30, // [30:40] is the sub-list for method output_type
- 20, // [20:30] is the sub-list for method input_type
- 20, // [20:20] is the sub-list for extension type_name
- 20, // [20:20] is the sub-list for extension extendee
- 0, // [0:20] is the sub-list for field type_name
+ 23, // 0: policy.registeredresources.CreateRegisteredResourceRequest.metadata:type_name -> common.MetadataMutable
+ 24, // 1: policy.registeredresources.CreateRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
+ 24, // 2: policy.registeredresources.GetRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
+ 25, // 3: policy.registeredresources.ListRegisteredResourcesRequest.pagination:type_name -> policy.PageRequest
+ 24, // 4: policy.registeredresources.ListRegisteredResourcesResponse.resources:type_name -> policy.RegisteredResource
+ 26, // 5: policy.registeredresources.ListRegisteredResourcesResponse.pagination:type_name -> policy.PageResponse
+ 23, // 6: policy.registeredresources.UpdateRegisteredResourceRequest.metadata:type_name -> common.MetadataMutable
+ 27, // 7: policy.registeredresources.UpdateRegisteredResourceRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 24, // 8: policy.registeredresources.UpdateRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
+ 24, // 9: policy.registeredresources.DeleteRegisteredResourceResponse.resource:type_name -> policy.RegisteredResource
+ 23, // 10: policy.registeredresources.CreateRegisteredResourceValueRequest.metadata:type_name -> common.MetadataMutable
+ 28, // 11: policy.registeredresources.CreateRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
+ 28, // 12: policy.registeredresources.GetRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
+ 22, // 13: policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse.fqn_value_map:type_name -> policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry
+ 25, // 14: policy.registeredresources.ListRegisteredResourceValuesRequest.pagination:type_name -> policy.PageRequest
+ 28, // 15: policy.registeredresources.ListRegisteredResourceValuesResponse.values:type_name -> policy.RegisteredResourceValue
+ 26, // 16: policy.registeredresources.ListRegisteredResourceValuesResponse.pagination:type_name -> policy.PageResponse
+ 23, // 17: policy.registeredresources.UpdateRegisteredResourceValueRequest.metadata:type_name -> common.MetadataMutable
+ 27, // 18: policy.registeredresources.UpdateRegisteredResourceValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 28, // 19: policy.registeredresources.UpdateRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
+ 28, // 20: policy.registeredresources.DeleteRegisteredResourceValueResponse.value:type_name -> policy.RegisteredResourceValue
+ 28, // 21: policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntry.value:type_name -> policy.RegisteredResourceValue
+ 0, // 22: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResource:input_type -> policy.registeredresources.CreateRegisteredResourceRequest
+ 2, // 23: policy.registeredresources.RegisteredResourcesService.GetRegisteredResource:input_type -> policy.registeredresources.GetRegisteredResourceRequest
+ 4, // 24: policy.registeredresources.RegisteredResourcesService.ListRegisteredResources:input_type -> policy.registeredresources.ListRegisteredResourcesRequest
+ 6, // 25: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResource:input_type -> policy.registeredresources.UpdateRegisteredResourceRequest
+ 8, // 26: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResource:input_type -> policy.registeredresources.DeleteRegisteredResourceRequest
+ 10, // 27: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResourceValue:input_type -> policy.registeredresources.CreateRegisteredResourceValueRequest
+ 12, // 28: policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValue:input_type -> policy.registeredresources.GetRegisteredResourceValueRequest
+ 14, // 29: policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValuesByFQNs:input_type -> policy.registeredresources.GetRegisteredResourceValuesByFQNsRequest
+ 16, // 30: policy.registeredresources.RegisteredResourcesService.ListRegisteredResourceValues:input_type -> policy.registeredresources.ListRegisteredResourceValuesRequest
+ 18, // 31: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResourceValue:input_type -> policy.registeredresources.UpdateRegisteredResourceValueRequest
+ 20, // 32: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResourceValue:input_type -> policy.registeredresources.DeleteRegisteredResourceValueRequest
+ 1, // 33: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResource:output_type -> policy.registeredresources.CreateRegisteredResourceResponse
+ 3, // 34: policy.registeredresources.RegisteredResourcesService.GetRegisteredResource:output_type -> policy.registeredresources.GetRegisteredResourceResponse
+ 5, // 35: policy.registeredresources.RegisteredResourcesService.ListRegisteredResources:output_type -> policy.registeredresources.ListRegisteredResourcesResponse
+ 7, // 36: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResource:output_type -> policy.registeredresources.UpdateRegisteredResourceResponse
+ 9, // 37: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResource:output_type -> policy.registeredresources.DeleteRegisteredResourceResponse
+ 11, // 38: policy.registeredresources.RegisteredResourcesService.CreateRegisteredResourceValue:output_type -> policy.registeredresources.CreateRegisteredResourceValueResponse
+ 13, // 39: policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValue:output_type -> policy.registeredresources.GetRegisteredResourceValueResponse
+ 15, // 40: policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValuesByFQNs:output_type -> policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse
+ 17, // 41: policy.registeredresources.RegisteredResourcesService.ListRegisteredResourceValues:output_type -> policy.registeredresources.ListRegisteredResourceValuesResponse
+ 19, // 42: policy.registeredresources.RegisteredResourcesService.UpdateRegisteredResourceValue:output_type -> policy.registeredresources.UpdateRegisteredResourceValueResponse
+ 21, // 43: policy.registeredresources.RegisteredResourcesService.DeleteRegisteredResourceValue:output_type -> policy.registeredresources.DeleteRegisteredResourceValueResponse
+ 33, // [33:44] is the sub-list for method output_type
+ 22, // [22:33] is the sub-list for method input_type
+ 22, // [22:22] is the sub-list for extension type_name
+ 22, // [22:22] is the sub-list for extension extendee
+ 0, // [0:22] is the sub-list for field type_name
}
func init() { file_policy_registeredresources_registered_resources_proto_init() }
@@ -1795,7 +1947,7 @@ func file_policy_registeredresources_registered_resources_proto_init() {
}
}
file_policy_registeredresources_registered_resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListRegisteredResourceValuesRequest); i {
+ switch v := v.(*GetRegisteredResourceValuesByFQNsRequest); i {
case 0:
return &v.state
case 1:
@@ -1807,7 +1959,7 @@ func file_policy_registeredresources_registered_resources_proto_init() {
}
}
file_policy_registeredresources_registered_resources_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListRegisteredResourceValuesResponse); i {
+ switch v := v.(*GetRegisteredResourceValuesByFQNsResponse); i {
case 0:
return &v.state
case 1:
@@ -1819,7 +1971,7 @@ func file_policy_registeredresources_registered_resources_proto_init() {
}
}
file_policy_registeredresources_registered_resources_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateRegisteredResourceValueRequest); i {
+ switch v := v.(*ListRegisteredResourceValuesRequest); i {
case 0:
return &v.state
case 1:
@@ -1831,7 +1983,7 @@ func file_policy_registeredresources_registered_resources_proto_init() {
}
}
file_policy_registeredresources_registered_resources_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateRegisteredResourceValueResponse); i {
+ switch v := v.(*ListRegisteredResourceValuesResponse); i {
case 0:
return &v.state
case 1:
@@ -1843,7 +1995,7 @@ func file_policy_registeredresources_registered_resources_proto_init() {
}
}
file_policy_registeredresources_registered_resources_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteRegisteredResourceValueRequest); i {
+ switch v := v.(*UpdateRegisteredResourceValueRequest); i {
case 0:
return &v.state
case 1:
@@ -1855,6 +2007,30 @@ func file_policy_registeredresources_registered_resources_proto_init() {
}
}
file_policy_registeredresources_registered_resources_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateRegisteredResourceValueResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_registeredresources_registered_resources_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DeleteRegisteredResourceValueRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_registeredresources_registered_resources_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteRegisteredResourceValueResponse); i {
case 0:
return &v.state
@@ -1868,11 +2044,11 @@ func file_policy_registeredresources_registered_resources_proto_init() {
}
}
file_policy_registeredresources_registered_resources_proto_msgTypes[2].OneofWrappers = []interface{}{
- (*GetRegisteredResourceRequest_ResourceId)(nil),
- (*GetRegisteredResourceRequest_Fqn)(nil),
+ (*GetRegisteredResourceRequest_Id)(nil),
+ (*GetRegisteredResourceRequest_Name)(nil),
}
file_policy_registeredresources_registered_resources_proto_msgTypes[12].OneofWrappers = []interface{}{
- (*GetRegisteredResourceValueRequest_ValueId)(nil),
+ (*GetRegisteredResourceValueRequest_Id)(nil),
(*GetRegisteredResourceValueRequest_Fqn)(nil),
}
type x struct{}
@@ -1881,7 +2057,7 @@ func file_policy_registeredresources_registered_resources_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_policy_registeredresources_registered_resources_proto_rawDesc,
NumEnums: 0,
- NumMessages: 20,
+ NumMessages: 23,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/protocol/go/policy/registeredresources/registered_resources_grpc.pb.go b/protocol/go/policy/registeredresources/registered_resources_grpc.pb.go
index 2b0197fdc6..19a14f625a 100644
--- a/protocol/go/policy/registeredresources/registered_resources_grpc.pb.go
+++ b/protocol/go/policy/registeredresources/registered_resources_grpc.pb.go
@@ -19,16 +19,17 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
- RegisteredResourcesService_CreateRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/CreateRegisteredResource"
- RegisteredResourcesService_GetRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/GetRegisteredResource"
- RegisteredResourcesService_ListRegisteredResources_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/ListRegisteredResources"
- RegisteredResourcesService_UpdateRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/UpdateRegisteredResource"
- RegisteredResourcesService_DeleteRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/DeleteRegisteredResource"
- RegisteredResourcesService_CreateRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/CreateRegisteredResourceValue"
- RegisteredResourcesService_GetRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/GetRegisteredResourceValue"
- RegisteredResourcesService_ListRegisteredResourceValues_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/ListRegisteredResourceValues"
- RegisteredResourcesService_UpdateRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/UpdateRegisteredResourceValue"
- RegisteredResourcesService_DeleteRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/DeleteRegisteredResourceValue"
+ RegisteredResourcesService_CreateRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/CreateRegisteredResource"
+ RegisteredResourcesService_GetRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/GetRegisteredResource"
+ RegisteredResourcesService_ListRegisteredResources_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/ListRegisteredResources"
+ RegisteredResourcesService_UpdateRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/UpdateRegisteredResource"
+ RegisteredResourcesService_DeleteRegisteredResource_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/DeleteRegisteredResource"
+ RegisteredResourcesService_CreateRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/CreateRegisteredResourceValue"
+ RegisteredResourcesService_GetRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/GetRegisteredResourceValue"
+ RegisteredResourcesService_GetRegisteredResourceValuesByFQNs_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/GetRegisteredResourceValuesByFQNs"
+ RegisteredResourcesService_ListRegisteredResourceValues_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/ListRegisteredResourceValues"
+ RegisteredResourcesService_UpdateRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/UpdateRegisteredResourceValue"
+ RegisteredResourcesService_DeleteRegisteredResourceValue_FullMethodName = "/policy.registeredresources.RegisteredResourcesService/DeleteRegisteredResourceValue"
)
// RegisteredResourcesServiceClient is the client API for RegisteredResourcesService service.
@@ -42,6 +43,7 @@ type RegisteredResourcesServiceClient interface {
DeleteRegisteredResource(ctx context.Context, in *DeleteRegisteredResourceRequest, opts ...grpc.CallOption) (*DeleteRegisteredResourceResponse, error)
CreateRegisteredResourceValue(ctx context.Context, in *CreateRegisteredResourceValueRequest, opts ...grpc.CallOption) (*CreateRegisteredResourceValueResponse, error)
GetRegisteredResourceValue(ctx context.Context, in *GetRegisteredResourceValueRequest, opts ...grpc.CallOption) (*GetRegisteredResourceValueResponse, error)
+ GetRegisteredResourceValuesByFQNs(ctx context.Context, in *GetRegisteredResourceValuesByFQNsRequest, opts ...grpc.CallOption) (*GetRegisteredResourceValuesByFQNsResponse, error)
ListRegisteredResourceValues(ctx context.Context, in *ListRegisteredResourceValuesRequest, opts ...grpc.CallOption) (*ListRegisteredResourceValuesResponse, error)
UpdateRegisteredResourceValue(ctx context.Context, in *UpdateRegisteredResourceValueRequest, opts ...grpc.CallOption) (*UpdateRegisteredResourceValueResponse, error)
DeleteRegisteredResourceValue(ctx context.Context, in *DeleteRegisteredResourceValueRequest, opts ...grpc.CallOption) (*DeleteRegisteredResourceValueResponse, error)
@@ -118,6 +120,15 @@ func (c *registeredResourcesServiceClient) GetRegisteredResourceValue(ctx contex
return out, nil
}
+func (c *registeredResourcesServiceClient) GetRegisteredResourceValuesByFQNs(ctx context.Context, in *GetRegisteredResourceValuesByFQNsRequest, opts ...grpc.CallOption) (*GetRegisteredResourceValuesByFQNsResponse, error) {
+ out := new(GetRegisteredResourceValuesByFQNsResponse)
+ err := c.cc.Invoke(ctx, RegisteredResourcesService_GetRegisteredResourceValuesByFQNs_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *registeredResourcesServiceClient) ListRegisteredResourceValues(ctx context.Context, in *ListRegisteredResourceValuesRequest, opts ...grpc.CallOption) (*ListRegisteredResourceValuesResponse, error) {
out := new(ListRegisteredResourceValuesResponse)
err := c.cc.Invoke(ctx, RegisteredResourcesService_ListRegisteredResourceValues_FullMethodName, in, out, opts...)
@@ -156,6 +167,7 @@ type RegisteredResourcesServiceServer interface {
DeleteRegisteredResource(context.Context, *DeleteRegisteredResourceRequest) (*DeleteRegisteredResourceResponse, error)
CreateRegisteredResourceValue(context.Context, *CreateRegisteredResourceValueRequest) (*CreateRegisteredResourceValueResponse, error)
GetRegisteredResourceValue(context.Context, *GetRegisteredResourceValueRequest) (*GetRegisteredResourceValueResponse, error)
+ GetRegisteredResourceValuesByFQNs(context.Context, *GetRegisteredResourceValuesByFQNsRequest) (*GetRegisteredResourceValuesByFQNsResponse, error)
ListRegisteredResourceValues(context.Context, *ListRegisteredResourceValuesRequest) (*ListRegisteredResourceValuesResponse, error)
UpdateRegisteredResourceValue(context.Context, *UpdateRegisteredResourceValueRequest) (*UpdateRegisteredResourceValueResponse, error)
DeleteRegisteredResourceValue(context.Context, *DeleteRegisteredResourceValueRequest) (*DeleteRegisteredResourceValueResponse, error)
@@ -187,6 +199,9 @@ func (UnimplementedRegisteredResourcesServiceServer) CreateRegisteredResourceVal
func (UnimplementedRegisteredResourcesServiceServer) GetRegisteredResourceValue(context.Context, *GetRegisteredResourceValueRequest) (*GetRegisteredResourceValueResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetRegisteredResourceValue not implemented")
}
+func (UnimplementedRegisteredResourcesServiceServer) GetRegisteredResourceValuesByFQNs(context.Context, *GetRegisteredResourceValuesByFQNsRequest) (*GetRegisteredResourceValuesByFQNsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetRegisteredResourceValuesByFQNs not implemented")
+}
func (UnimplementedRegisteredResourcesServiceServer) ListRegisteredResourceValues(context.Context, *ListRegisteredResourceValuesRequest) (*ListRegisteredResourceValuesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListRegisteredResourceValues not implemented")
}
@@ -336,6 +351,24 @@ func _RegisteredResourcesService_GetRegisteredResourceValue_Handler(srv interfac
return interceptor(ctx, in, info, handler)
}
+func _RegisteredResourcesService_GetRegisteredResourceValuesByFQNs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetRegisteredResourceValuesByFQNsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RegisteredResourcesServiceServer).GetRegisteredResourceValuesByFQNs(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: RegisteredResourcesService_GetRegisteredResourceValuesByFQNs_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RegisteredResourcesServiceServer).GetRegisteredResourceValuesByFQNs(ctx, req.(*GetRegisteredResourceValuesByFQNsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _RegisteredResourcesService_ListRegisteredResourceValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListRegisteredResourceValuesRequest)
if err := dec(in); err != nil {
@@ -425,6 +458,10 @@ var RegisteredResourcesService_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetRegisteredResourceValue",
Handler: _RegisteredResourcesService_GetRegisteredResourceValue_Handler,
},
+ {
+ MethodName: "GetRegisteredResourceValuesByFQNs",
+ Handler: _RegisteredResourcesService_GetRegisteredResourceValuesByFQNs_Handler,
+ },
{
MethodName: "ListRegisteredResourceValues",
Handler: _RegisteredResourcesService_ListRegisteredResourceValues_Handler,
diff --git a/protocol/go/policy/registeredresources/registeredresourcesconnect/registered_resources.connect.go b/protocol/go/policy/registeredresources/registeredresourcesconnect/registered_resources.connect.go
index a6fdf4ce33..d35ac7a546 100644
--- a/protocol/go/policy/registeredresources/registeredresourcesconnect/registered_resources.connect.go
+++ b/protocol/go/policy/registeredresources/registeredresourcesconnect/registered_resources.connect.go
@@ -55,6 +55,9 @@ const (
// RegisteredResourcesServiceGetRegisteredResourceValueProcedure is the fully-qualified name of the
// RegisteredResourcesService's GetRegisteredResourceValue RPC.
RegisteredResourcesServiceGetRegisteredResourceValueProcedure = "/policy.registeredresources.RegisteredResourcesService/GetRegisteredResourceValue"
+ // RegisteredResourcesServiceGetRegisteredResourceValuesByFQNsProcedure is the fully-qualified name
+ // of the RegisteredResourcesService's GetRegisteredResourceValuesByFQNs RPC.
+ RegisteredResourcesServiceGetRegisteredResourceValuesByFQNsProcedure = "/policy.registeredresources.RegisteredResourcesService/GetRegisteredResourceValuesByFQNs"
// RegisteredResourcesServiceListRegisteredResourceValuesProcedure is the fully-qualified name of
// the RegisteredResourcesService's ListRegisteredResourceValues RPC.
RegisteredResourcesServiceListRegisteredResourceValuesProcedure = "/policy.registeredresources.RegisteredResourcesService/ListRegisteredResourceValues"
@@ -68,17 +71,18 @@ const (
// These variables are the protoreflect.Descriptor objects for the RPCs defined in this package.
var (
- registeredResourcesServiceServiceDescriptor = registeredresources.File_policy_registeredresources_registered_resources_proto.Services().ByName("RegisteredResourcesService")
- registeredResourcesServiceCreateRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("CreateRegisteredResource")
- registeredResourcesServiceGetRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("GetRegisteredResource")
- registeredResourcesServiceListRegisteredResourcesMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("ListRegisteredResources")
- registeredResourcesServiceUpdateRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("UpdateRegisteredResource")
- registeredResourcesServiceDeleteRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("DeleteRegisteredResource")
- registeredResourcesServiceCreateRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("CreateRegisteredResourceValue")
- registeredResourcesServiceGetRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("GetRegisteredResourceValue")
- registeredResourcesServiceListRegisteredResourceValuesMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("ListRegisteredResourceValues")
- registeredResourcesServiceUpdateRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("UpdateRegisteredResourceValue")
- registeredResourcesServiceDeleteRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("DeleteRegisteredResourceValue")
+ registeredResourcesServiceServiceDescriptor = registeredresources.File_policy_registeredresources_registered_resources_proto.Services().ByName("RegisteredResourcesService")
+ registeredResourcesServiceCreateRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("CreateRegisteredResource")
+ registeredResourcesServiceGetRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("GetRegisteredResource")
+ registeredResourcesServiceListRegisteredResourcesMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("ListRegisteredResources")
+ registeredResourcesServiceUpdateRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("UpdateRegisteredResource")
+ registeredResourcesServiceDeleteRegisteredResourceMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("DeleteRegisteredResource")
+ registeredResourcesServiceCreateRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("CreateRegisteredResourceValue")
+ registeredResourcesServiceGetRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("GetRegisteredResourceValue")
+ registeredResourcesServiceGetRegisteredResourceValuesByFQNsMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("GetRegisteredResourceValuesByFQNs")
+ registeredResourcesServiceListRegisteredResourceValuesMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("ListRegisteredResourceValues")
+ registeredResourcesServiceUpdateRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("UpdateRegisteredResourceValue")
+ registeredResourcesServiceDeleteRegisteredResourceValueMethodDescriptor = registeredResourcesServiceServiceDescriptor.Methods().ByName("DeleteRegisteredResourceValue")
)
// RegisteredResourcesServiceClient is a client for the
@@ -91,6 +95,7 @@ type RegisteredResourcesServiceClient interface {
DeleteRegisteredResource(context.Context, *connect.Request[registeredresources.DeleteRegisteredResourceRequest]) (*connect.Response[registeredresources.DeleteRegisteredResourceResponse], error)
CreateRegisteredResourceValue(context.Context, *connect.Request[registeredresources.CreateRegisteredResourceValueRequest]) (*connect.Response[registeredresources.CreateRegisteredResourceValueResponse], error)
GetRegisteredResourceValue(context.Context, *connect.Request[registeredresources.GetRegisteredResourceValueRequest]) (*connect.Response[registeredresources.GetRegisteredResourceValueResponse], error)
+ GetRegisteredResourceValuesByFQNs(context.Context, *connect.Request[registeredresources.GetRegisteredResourceValuesByFQNsRequest]) (*connect.Response[registeredresources.GetRegisteredResourceValuesByFQNsResponse], error)
ListRegisteredResourceValues(context.Context, *connect.Request[registeredresources.ListRegisteredResourceValuesRequest]) (*connect.Response[registeredresources.ListRegisteredResourceValuesResponse], error)
UpdateRegisteredResourceValue(context.Context, *connect.Request[registeredresources.UpdateRegisteredResourceValueRequest]) (*connect.Response[registeredresources.UpdateRegisteredResourceValueResponse], error)
DeleteRegisteredResourceValue(context.Context, *connect.Request[registeredresources.DeleteRegisteredResourceValueRequest]) (*connect.Response[registeredresources.DeleteRegisteredResourceValueResponse], error)
@@ -149,6 +154,12 @@ func NewRegisteredResourcesServiceClient(httpClient connect.HTTPClient, baseURL
connect.WithSchema(registeredResourcesServiceGetRegisteredResourceValueMethodDescriptor),
connect.WithClientOptions(opts...),
),
+ getRegisteredResourceValuesByFQNs: connect.NewClient[registeredresources.GetRegisteredResourceValuesByFQNsRequest, registeredresources.GetRegisteredResourceValuesByFQNsResponse](
+ httpClient,
+ baseURL+RegisteredResourcesServiceGetRegisteredResourceValuesByFQNsProcedure,
+ connect.WithSchema(registeredResourcesServiceGetRegisteredResourceValuesByFQNsMethodDescriptor),
+ connect.WithClientOptions(opts...),
+ ),
listRegisteredResourceValues: connect.NewClient[registeredresources.ListRegisteredResourceValuesRequest, registeredresources.ListRegisteredResourceValuesResponse](
httpClient,
baseURL+RegisteredResourcesServiceListRegisteredResourceValuesProcedure,
@@ -172,16 +183,17 @@ func NewRegisteredResourcesServiceClient(httpClient connect.HTTPClient, baseURL
// registeredResourcesServiceClient implements RegisteredResourcesServiceClient.
type registeredResourcesServiceClient struct {
- createRegisteredResource *connect.Client[registeredresources.CreateRegisteredResourceRequest, registeredresources.CreateRegisteredResourceResponse]
- getRegisteredResource *connect.Client[registeredresources.GetRegisteredResourceRequest, registeredresources.GetRegisteredResourceResponse]
- listRegisteredResources *connect.Client[registeredresources.ListRegisteredResourcesRequest, registeredresources.ListRegisteredResourcesResponse]
- updateRegisteredResource *connect.Client[registeredresources.UpdateRegisteredResourceRequest, registeredresources.UpdateRegisteredResourceResponse]
- deleteRegisteredResource *connect.Client[registeredresources.DeleteRegisteredResourceRequest, registeredresources.DeleteRegisteredResourceResponse]
- createRegisteredResourceValue *connect.Client[registeredresources.CreateRegisteredResourceValueRequest, registeredresources.CreateRegisteredResourceValueResponse]
- getRegisteredResourceValue *connect.Client[registeredresources.GetRegisteredResourceValueRequest, registeredresources.GetRegisteredResourceValueResponse]
- listRegisteredResourceValues *connect.Client[registeredresources.ListRegisteredResourceValuesRequest, registeredresources.ListRegisteredResourceValuesResponse]
- updateRegisteredResourceValue *connect.Client[registeredresources.UpdateRegisteredResourceValueRequest, registeredresources.UpdateRegisteredResourceValueResponse]
- deleteRegisteredResourceValue *connect.Client[registeredresources.DeleteRegisteredResourceValueRequest, registeredresources.DeleteRegisteredResourceValueResponse]
+ createRegisteredResource *connect.Client[registeredresources.CreateRegisteredResourceRequest, registeredresources.CreateRegisteredResourceResponse]
+ getRegisteredResource *connect.Client[registeredresources.GetRegisteredResourceRequest, registeredresources.GetRegisteredResourceResponse]
+ listRegisteredResources *connect.Client[registeredresources.ListRegisteredResourcesRequest, registeredresources.ListRegisteredResourcesResponse]
+ updateRegisteredResource *connect.Client[registeredresources.UpdateRegisteredResourceRequest, registeredresources.UpdateRegisteredResourceResponse]
+ deleteRegisteredResource *connect.Client[registeredresources.DeleteRegisteredResourceRequest, registeredresources.DeleteRegisteredResourceResponse]
+ createRegisteredResourceValue *connect.Client[registeredresources.CreateRegisteredResourceValueRequest, registeredresources.CreateRegisteredResourceValueResponse]
+ getRegisteredResourceValue *connect.Client[registeredresources.GetRegisteredResourceValueRequest, registeredresources.GetRegisteredResourceValueResponse]
+ getRegisteredResourceValuesByFQNs *connect.Client[registeredresources.GetRegisteredResourceValuesByFQNsRequest, registeredresources.GetRegisteredResourceValuesByFQNsResponse]
+ listRegisteredResourceValues *connect.Client[registeredresources.ListRegisteredResourceValuesRequest, registeredresources.ListRegisteredResourceValuesResponse]
+ updateRegisteredResourceValue *connect.Client[registeredresources.UpdateRegisteredResourceValueRequest, registeredresources.UpdateRegisteredResourceValueResponse]
+ deleteRegisteredResourceValue *connect.Client[registeredresources.DeleteRegisteredResourceValueRequest, registeredresources.DeleteRegisteredResourceValueResponse]
}
// CreateRegisteredResource calls
@@ -226,6 +238,12 @@ func (c *registeredResourcesServiceClient) GetRegisteredResourceValue(ctx contex
return c.getRegisteredResourceValue.CallUnary(ctx, req)
}
+// GetRegisteredResourceValuesByFQNs calls
+// policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValuesByFQNs.
+func (c *registeredResourcesServiceClient) GetRegisteredResourceValuesByFQNs(ctx context.Context, req *connect.Request[registeredresources.GetRegisteredResourceValuesByFQNsRequest]) (*connect.Response[registeredresources.GetRegisteredResourceValuesByFQNsResponse], error) {
+ return c.getRegisteredResourceValuesByFQNs.CallUnary(ctx, req)
+}
+
// ListRegisteredResourceValues calls
// policy.registeredresources.RegisteredResourcesService.ListRegisteredResourceValues.
func (c *registeredResourcesServiceClient) ListRegisteredResourceValues(ctx context.Context, req *connect.Request[registeredresources.ListRegisteredResourceValuesRequest]) (*connect.Response[registeredresources.ListRegisteredResourceValuesResponse], error) {
@@ -254,6 +272,7 @@ type RegisteredResourcesServiceHandler interface {
DeleteRegisteredResource(context.Context, *connect.Request[registeredresources.DeleteRegisteredResourceRequest]) (*connect.Response[registeredresources.DeleteRegisteredResourceResponse], error)
CreateRegisteredResourceValue(context.Context, *connect.Request[registeredresources.CreateRegisteredResourceValueRequest]) (*connect.Response[registeredresources.CreateRegisteredResourceValueResponse], error)
GetRegisteredResourceValue(context.Context, *connect.Request[registeredresources.GetRegisteredResourceValueRequest]) (*connect.Response[registeredresources.GetRegisteredResourceValueResponse], error)
+ GetRegisteredResourceValuesByFQNs(context.Context, *connect.Request[registeredresources.GetRegisteredResourceValuesByFQNsRequest]) (*connect.Response[registeredresources.GetRegisteredResourceValuesByFQNsResponse], error)
ListRegisteredResourceValues(context.Context, *connect.Request[registeredresources.ListRegisteredResourceValuesRequest]) (*connect.Response[registeredresources.ListRegisteredResourceValuesResponse], error)
UpdateRegisteredResourceValue(context.Context, *connect.Request[registeredresources.UpdateRegisteredResourceValueRequest]) (*connect.Response[registeredresources.UpdateRegisteredResourceValueResponse], error)
DeleteRegisteredResourceValue(context.Context, *connect.Request[registeredresources.DeleteRegisteredResourceValueRequest]) (*connect.Response[registeredresources.DeleteRegisteredResourceValueResponse], error)
@@ -307,6 +326,12 @@ func NewRegisteredResourcesServiceHandler(svc RegisteredResourcesServiceHandler,
connect.WithSchema(registeredResourcesServiceGetRegisteredResourceValueMethodDescriptor),
connect.WithHandlerOptions(opts...),
)
+ registeredResourcesServiceGetRegisteredResourceValuesByFQNsHandler := connect.NewUnaryHandler(
+ RegisteredResourcesServiceGetRegisteredResourceValuesByFQNsProcedure,
+ svc.GetRegisteredResourceValuesByFQNs,
+ connect.WithSchema(registeredResourcesServiceGetRegisteredResourceValuesByFQNsMethodDescriptor),
+ connect.WithHandlerOptions(opts...),
+ )
registeredResourcesServiceListRegisteredResourceValuesHandler := connect.NewUnaryHandler(
RegisteredResourcesServiceListRegisteredResourceValuesProcedure,
svc.ListRegisteredResourceValues,
@@ -341,6 +366,8 @@ func NewRegisteredResourcesServiceHandler(svc RegisteredResourcesServiceHandler,
registeredResourcesServiceCreateRegisteredResourceValueHandler.ServeHTTP(w, r)
case RegisteredResourcesServiceGetRegisteredResourceValueProcedure:
registeredResourcesServiceGetRegisteredResourceValueHandler.ServeHTTP(w, r)
+ case RegisteredResourcesServiceGetRegisteredResourceValuesByFQNsProcedure:
+ registeredResourcesServiceGetRegisteredResourceValuesByFQNsHandler.ServeHTTP(w, r)
case RegisteredResourcesServiceListRegisteredResourceValuesProcedure:
registeredResourcesServiceListRegisteredResourceValuesHandler.ServeHTTP(w, r)
case RegisteredResourcesServiceUpdateRegisteredResourceValueProcedure:
@@ -384,6 +411,10 @@ func (UnimplementedRegisteredResourcesServiceHandler) GetRegisteredResourceValue
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValue is not implemented"))
}
+func (UnimplementedRegisteredResourcesServiceHandler) GetRegisteredResourceValuesByFQNs(context.Context, *connect.Request[registeredresources.GetRegisteredResourceValuesByFQNsRequest]) (*connect.Response[registeredresources.GetRegisteredResourceValuesByFQNsResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.registeredresources.RegisteredResourcesService.GetRegisteredResourceValuesByFQNs is not implemented"))
+}
+
func (UnimplementedRegisteredResourcesServiceHandler) ListRegisteredResourceValues(context.Context, *connect.Request[registeredresources.ListRegisteredResourceValuesRequest]) (*connect.Response[registeredresources.ListRegisteredResourceValuesResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.registeredresources.RegisteredResourcesService.ListRegisteredResourceValues is not implemented"))
}
diff --git a/service/integration/registered_resources_test.go b/service/integration/registered_resources_test.go
index 5b7a0ffc4b..61aa83c931 100644
--- a/service/integration/registered_resources_test.go
+++ b/service/integration/registered_resources_test.go
@@ -2,6 +2,7 @@ package integration
import (
"context"
+ "fmt"
"log/slog"
"strings"
"testing"
@@ -123,12 +124,12 @@ func (s *RegisteredResourcesSuite) Test_CreateRegisteredResource_WithNonUniqueNa
// Get
-func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_Succeeds() {
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_ByID_Succeeds() {
existingRes := s.f.GetRegisteredResourceKey("res_only")
got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: existingRes.ID,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: existingRes.ID,
},
})
s.Require().NoError(err)
@@ -140,13 +141,30 @@ func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_Succeeds() {
s.Empty(got.GetValues())
}
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_ByName_Succeeds() {
+ existingRes := s.f.GetRegisteredResourceKey("res_only")
+
+ got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Name{
+ Name: existingRes.Name,
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(got)
+ s.Equal(existingRes.ID, got.GetId())
+ metadata := got.GetMetadata()
+ s.False(metadata.GetCreatedAt().AsTime().IsZero())
+ s.False(metadata.GetUpdatedAt().AsTime().IsZero())
+ s.Empty(got.GetValues())
+}
+
func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_WithValues_Succeeds() {
existingRes := s.f.GetRegisteredResourceKey("res_with_values")
existingResValue1 := s.f.GetRegisteredResourceValueKey("res_with_values__value1")
got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: existingRes.ID,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: existingRes.ID,
},
})
s.Require().NoError(err)
@@ -165,10 +183,21 @@ func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_WithValues_Succeed
s.True(found)
}
-func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_InvalidID_Fails() {
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_ByInvalidID_Fails() {
got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: invalidID,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: invalidID,
+ },
+ })
+ s.Require().Error(err)
+ s.Require().ErrorIs(err, db.ErrNotFound)
+ s.Nil(got)
+}
+
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResource_ByInvalidName_Fails() {
+ got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Name{
+ Name: "invalid_name",
},
})
s.Require().Error(err)
@@ -321,8 +350,8 @@ func (s *RegisteredResourcesSuite) Test_UpdateRegisteredResource_Succeeds() {
// verify resource not updated
got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().NoError(err)
@@ -344,8 +373,8 @@ func (s *RegisteredResourcesSuite) Test_UpdateRegisteredResource_Succeeds() {
// verify resource updated
got, err = s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().NoError(err)
@@ -376,8 +405,8 @@ func (s *RegisteredResourcesSuite) Test_UpdateRegisteredResource_NormalizedName_
// verify resource updated
got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().NoError(err)
@@ -429,8 +458,8 @@ func (s *RegisteredResourcesSuite) Test_DeleteRegisteredResource_Succeeds() {
// verify resource deleted
got, err := s.db.PolicyClient.GetRegisteredResource(s.ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().Error(err)
@@ -441,8 +470,8 @@ func (s *RegisteredResourcesSuite) Test_DeleteRegisteredResource_Succeeds() {
gotValues := created.GetValues()
gotValue1, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: gotValues[0].GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: gotValues[0].GetId(),
},
})
s.Require().Error(err)
@@ -450,8 +479,8 @@ func (s *RegisteredResourcesSuite) Test_DeleteRegisteredResource_Succeeds() {
s.Nil(gotValue1)
gotValue2, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: gotValues[1].GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: gotValues[1].GetId(),
},
})
s.Require().Error(err)
@@ -560,28 +589,59 @@ func (s *RegisteredResourcesSuite) Test_CreateRegisteredResourceValue_WithNonUni
// Get
-func (s *RegisteredResourcesSuite) Test_GetRegisteredResourceValue_Succeeds() {
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResourceValue_ByID_Succeeds() {
existingRes := s.f.GetRegisteredResourceKey("res_with_values")
existingResValue1 := s.f.GetRegisteredResourceValueKey("res_with_values__value1")
got, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: existingResValue1.ID,
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: existingResValue1.ID,
},
})
s.Require().NoError(err)
s.NotNil(got)
+ s.Equal(existingResValue1.Value, got.GetValue())
s.Equal(existingRes.ID, got.GetResource().GetId())
+ metadata := got.GetMetadata()
+ s.False(metadata.GetCreatedAt().AsTime().IsZero())
+ s.False(metadata.GetUpdatedAt().AsTime().IsZero())
+}
+
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResourceValue_ByFQN_Succeeds() {
+ existingRes := s.f.GetRegisteredResourceKey("res_with_values")
+ existingResValue1 := s.f.GetRegisteredResourceValueKey("res_with_values__value1")
+ fqn := fmt.Sprintf("https://reg_res/%s/value/%s", existingRes.Name, existingResValue1.Value)
+
+ got, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Fqn{
+ Fqn: fqn,
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(got)
+ s.Equal(existingResValue1.ID, got.GetId())
s.Equal(existingResValue1.Value, got.GetValue())
+ s.Equal(existingRes.ID, got.GetResource().GetId())
metadata := got.GetMetadata()
s.False(metadata.GetCreatedAt().AsTime().IsZero())
s.False(metadata.GetUpdatedAt().AsTime().IsZero())
}
-func (s *RegisteredResourcesSuite) Test_GetRegisteredResourceValue_InvalidID_Fails() {
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResourceValue_ByInvalidID_Fails() {
+ got, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: invalidID,
+ },
+ })
+ s.Require().Error(err)
+ s.Require().ErrorIs(err, db.ErrNotFound)
+ s.Nil(got)
+}
+
+func (s *RegisteredResourcesSuite) Test_GetRegisteredResourceValue_ByInvalidFQN_Fails() {
got, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: invalidID,
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Fqn{
+ Fqn: "https://reg_res/does_not_exist/value/does_not_exist",
},
})
s.Require().Error(err)
@@ -589,6 +649,66 @@ func (s *RegisteredResourcesSuite) Test_GetRegisteredResourceValue_InvalidID_Fai
s.Nil(got)
}
+// Get By FQNs
+
+func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValuesByFQNs_Valid_Succeeds() {
+ existingRes := s.f.GetRegisteredResourceKey("res_with_values")
+ existingResValue1 := s.f.GetRegisteredResourceValueKey("res_with_values__value1")
+ existingResValue2 := s.f.GetRegisteredResourceValueKey("res_with_values__value2")
+ fqns := []string{
+ fmt.Sprintf("https://reg_res/%s/value/%s", existingRes.Name, existingResValue1.Value),
+ fmt.Sprintf("https://reg_res/%s/value/%s", existingRes.Name, existingResValue2.Value),
+ }
+
+ got, err := s.db.PolicyClient.GetRegisteredResourceValuesByFQNs(s.ctx, ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{
+ Fqns: fqns,
+ })
+ s.Require().NoError(err)
+ s.NotNil(got)
+
+ foundFQN1 := got[fqns[0]]
+ s.NotNil(foundFQN1)
+ s.Equal(existingResValue1.ID, foundFQN1.GetId())
+ s.Equal(existingResValue1.Value, foundFQN1.GetValue())
+ s.Equal(existingRes.ID, foundFQN1.GetResource().GetId())
+
+ foundFQN2 := got[fqns[1]]
+ s.NotNil(foundFQN2)
+ s.Equal(existingResValue2.ID, foundFQN2.GetId())
+ s.Equal(existingResValue2.Value, foundFQN2.GetValue())
+ s.Equal(existingRes.ID, foundFQN2.GetResource().GetId())
+}
+
+func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValuesByFQNs_SomeInvalid_Fails() {
+ existingRes := s.f.GetRegisteredResourceKey("res_with_values")
+ existingResValue1 := s.f.GetRegisteredResourceValueKey("res_with_values__value1")
+ fqns := []string{
+ fmt.Sprintf("https://reg_res/%s/value/%s", existingRes.Name, existingResValue1.Value),
+ "https://reg_res/does_not_exist/value/does_not_exist",
+ }
+
+ got, err := s.db.PolicyClient.GetRegisteredResourceValuesByFQNs(s.ctx, ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{
+ Fqns: fqns,
+ })
+ s.Require().Error(err)
+ s.Require().ErrorIs(err, db.ErrNotFound)
+ s.Nil(got)
+}
+
+func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValuesByFQNs_AllInvalid_Fails() {
+ fqns := []string{
+ "https://reg_res/does_not_exist/value/does_not_exist",
+ "https://reg_res/does_not_exist/value/does_not_exist2",
+ }
+
+ got, err := s.db.PolicyClient.GetRegisteredResourceValuesByFQNs(s.ctx, ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{
+ Fqns: fqns,
+ })
+ s.Require().Error(err)
+ s.Require().ErrorIs(err, db.ErrNotFound)
+ s.Nil(got)
+}
+
// List
func (s *RegisteredResourcesSuite) Test_ListRegisteredResourceValues_NoPagination_Succeeds() {
@@ -767,8 +887,8 @@ func (s *RegisteredResourcesSuite) Test_UpdateRegisteredResourceValue_Succeeds()
// verify resource value not updated
got, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().NoError(err)
@@ -790,8 +910,8 @@ func (s *RegisteredResourcesSuite) Test_UpdateRegisteredResourceValue_Succeeds()
// verify resource updated
got, err = s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().NoError(err)
@@ -829,8 +949,8 @@ func (s *RegisteredResourcesSuite) Test_UpdateRegisteredResourceValue_Normalized
// verify resource value updated
got, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().NoError(err)
@@ -900,8 +1020,8 @@ func (s *RegisteredResourcesSuite) Test_DeleteRegisteredResourceValue_Succeeds()
// verify resource value deleted
got, err := s.db.PolicyClient.GetRegisteredResourceValue(s.ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: created.GetId(),
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: created.GetId(),
},
})
s.Require().Error(err)
diff --git a/service/pkg/util/fqn.go b/service/pkg/util/fqn.go
index 098d0b8f1c..cc82691475 100644
--- a/service/pkg/util/fqn.go
+++ b/service/pkg/util/fqn.go
@@ -11,6 +11,12 @@ type FullyQualifiedResourceMappingGroup struct {
GroupName string
}
+type FullyQualifiedRegisteredResourceValue struct {
+ Fqn string
+ Name string
+ Value string
+}
+
// protovalidate already validates the FQN format in the service request
// for parsing purposes, we can just look for any non-whitespace characters
// e.g. should be in format of "https:///resm/"
@@ -18,8 +24,12 @@ var resourceMappingGroupFqnRegex = regexp.MustCompile(
`^https:\/\/(?\S+)\/resm\/(?\S+)$`,
)
-// todo: logic could be made more generic in the future to support multiple FQN formats
-// e.g. parse FQN for '/attr', '/value', '/resm' or some other method
+var registeredResourceValueFqnRegex = regexp.MustCompile(
+ `^https:\/\/reg_res\/(?\S+)\/value\/(?\S+)$`,
+)
+
+// todo: is it possible to make this more generic and support all fqn formats?
+
func ParseResourceMappingGroupFqn(fqn string) (*FullyQualifiedResourceMappingGroup, error) {
matches := resourceMappingGroupFqnRegex.FindStringSubmatch(fqn)
numMatches := len(matches)
@@ -37,3 +47,21 @@ func ParseResourceMappingGroupFqn(fqn string) (*FullyQualifiedResourceMappingGro
GroupName: matches[groupNameIdx],
}, nil
}
+
+func ParseRegisteredResourceValueFqn(fqn string) (*FullyQualifiedRegisteredResourceValue, error) {
+ matches := registeredResourceValueFqnRegex.FindStringSubmatch(fqn)
+ numMatches := len(matches)
+
+ nameIdx := registeredResourceValueFqnRegex.SubexpIndex("name")
+ valueIdx := registeredResourceValueFqnRegex.SubexpIndex("value")
+
+ if numMatches < nameIdx || numMatches < valueIdx {
+ return nil, errors.New("error: valid FQN format of https://reg_res//value/ must be provided")
+ }
+
+ return &FullyQualifiedRegisteredResourceValue{
+ Fqn: fqn,
+ Name: matches[nameIdx],
+ Value: matches[valueIdx],
+ }, nil
+}
diff --git a/service/pkg/util/fqn_test.go b/service/pkg/util/fqn_test.go
new file mode 100644
index 0000000000..d5a44f8751
--- /dev/null
+++ b/service/pkg/util/fqn_test.go
@@ -0,0 +1,64 @@
+package util
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestParseResourceMappingGroupFqn_Valid_Succeeds(t *testing.T) {
+ fqn := "https://namespace.com/resm/group_name"
+
+ parsed, err := ParseResourceMappingGroupFqn(fqn)
+ require.NoError(t, err)
+ require.Equal(t, fqn, parsed.Fqn)
+ require.Equal(t, "namespace.com", parsed.Namespace)
+ require.Equal(t, "group_name", parsed.GroupName)
+}
+
+func TestParseResourceMappingGroupFqn_Invalid_Fails(t *testing.T) {
+ invalidFQNs := []string{
+ "",
+ "invalid",
+ "https://namespace.com",
+ "http://namespace.com/resm/group_name",
+ "somethinghttps://namespace.com/resm/group_name",
+ "https://namespace.com/resm",
+ "https://namespace.com/resm/",
+ }
+
+ for _, fqn := range invalidFQNs {
+ parsed, err := ParseResourceMappingGroupFqn(fqn)
+ require.EqualError(t, err, "error: valid FQN format of https:///resm/ must be provided")
+ require.Nil(t, parsed)
+ }
+}
+
+func TestParseRegisteredResourceValueFqn_Valid_Succeeds(t *testing.T) {
+ fqn := "https://reg_res/valid/value/test"
+
+ parsed, err := ParseRegisteredResourceValueFqn(fqn)
+ require.NoError(t, err)
+ require.Equal(t, fqn, parsed.Fqn)
+ require.Equal(t, "valid", parsed.Name)
+ require.Equal(t, "test", parsed.Value)
+}
+
+func TestParseRegisteredResourceValueFqn_Invalid_Fails(t *testing.T) {
+ invalidFQNs := []string{
+ "",
+ "invalid",
+ "https://reg_res",
+ "https://reg_res/invalid",
+ "http://reg_res/test/value/something",
+ "somethinghttps://reg_res/test/value/something",
+ "https://reg_res/invalid/value",
+ "https://reg_res/invalid/value/",
+ }
+
+ for _, fqn := range invalidFQNs {
+ parsed, err := ParseRegisteredResourceValueFqn(fqn)
+ require.EqualError(t, err, "error: valid FQN format of https://reg_res//value/ must be provided")
+ require.Nil(t, parsed)
+ }
+}
diff --git a/service/policy/db/query.sql b/service/policy/db/query.sql
index 1ff98ef5e0..819570cb19 100644
--- a/service/policy/db/query.sql
+++ b/service/policy/db/query.sql
@@ -1418,7 +1418,6 @@ VALUES ($1, $2)
RETURNING id;
-- name: getRegisteredResource :one
--- TODO add FQN support
SELECT
r.id,
r.name,
@@ -1431,7 +1430,9 @@ SELECT
) FILTER (WHERE v.id IS NOT NULL) as values
FROM registered_resources r
LEFT JOIN registered_resource_values v ON v.registered_resource_id = r.id
-WHERE r.id = $1
+WHERE
+ (NULLIF(@id, '') IS NULL OR r.id = @id::UUID) AND
+ (NULLIF(@name, '') IS NULL OR r.name = @name::VARCHAR)
GROUP BY r.id;
-- name: listRegisteredResources :many
@@ -1479,12 +1480,16 @@ RETURNING id;
-- name: getRegisteredResourceValue :one
SELECT
- id,
- registered_resource_id,
- value,
- JSON_STRIP_NULLS(JSON_BUILD_OBJECT('labels', metadata -> 'labels', 'created_at', created_at, 'updated_at', updated_at)) as metadata
-FROM registered_resource_values
-WHERE id = $1;
+ v.id,
+ v.registered_resource_id,
+ v.value,
+ JSON_STRIP_NULLS(JSON_BUILD_OBJECT('labels', v.metadata -> 'labels', 'created_at', v.created_at, 'updated_at', v.updated_at)) as metadata
+FROM registered_resource_values v
+JOIN registered_resources r ON v.registered_resource_id = r.id
+WHERE
+ (NULLIF(@id, '') IS NULL OR v.id = @id::UUID) AND
+ (NULLIF(@name, '') IS NULL OR r.name = @name::VARCHAR) AND
+ (NULLIF(@value, '') IS NULL OR v.value = @value::VARCHAR);
-- name: listRegisteredResourceValues :many
WITH counted AS (
diff --git a/service/policy/db/query.sql.go b/service/policy/db/query.sql.go
index 3d32b00c8f..4b44911f35 100644
--- a/service/policy/db/query.sql.go
+++ b/service/policy/db/query.sql.go
@@ -3570,10 +3570,17 @@ SELECT
) FILTER (WHERE v.id IS NOT NULL) as values
FROM registered_resources r
LEFT JOIN registered_resource_values v ON v.registered_resource_id = r.id
-WHERE r.id = $1
+WHERE
+ (NULLIF($1, '') IS NULL OR r.id = $1::UUID) AND
+ (NULLIF($2, '') IS NULL OR r.name = $2::VARCHAR)
GROUP BY r.id
`
+type getRegisteredResourceParams struct {
+ ID interface{} `json:"id"`
+ Name interface{} `json:"name"`
+}
+
type getRegisteredResourceRow struct {
ID string `json:"id"`
Name string `json:"name"`
@@ -3581,7 +3588,7 @@ type getRegisteredResourceRow struct {
Values []byte `json:"values"`
}
-// TODO add FQN support
+// getRegisteredResource
//
// SELECT
// r.id,
@@ -3595,10 +3602,12 @@ type getRegisteredResourceRow struct {
// ) FILTER (WHERE v.id IS NOT NULL) as values
// FROM registered_resources r
// LEFT JOIN registered_resource_values v ON v.registered_resource_id = r.id
-// WHERE r.id = $1
+// WHERE
+// (NULLIF($1, '') IS NULL OR r.id = $1::UUID) AND
+// (NULLIF($2, '') IS NULL OR r.name = $2::VARCHAR)
// GROUP BY r.id
-func (q *Queries) getRegisteredResource(ctx context.Context, id string) (getRegisteredResourceRow, error) {
- row := q.db.QueryRow(ctx, getRegisteredResource, id)
+func (q *Queries) getRegisteredResource(ctx context.Context, arg getRegisteredResourceParams) (getRegisteredResourceRow, error) {
+ row := q.db.QueryRow(ctx, getRegisteredResource, arg.ID, arg.Name)
var i getRegisteredResourceRow
err := row.Scan(
&i.ID,
@@ -3611,14 +3620,24 @@ func (q *Queries) getRegisteredResource(ctx context.Context, id string) (getRegi
const getRegisteredResourceValue = `-- name: getRegisteredResourceValue :one
SELECT
- id,
- registered_resource_id,
- value,
- JSON_STRIP_NULLS(JSON_BUILD_OBJECT('labels', metadata -> 'labels', 'created_at', created_at, 'updated_at', updated_at)) as metadata
-FROM registered_resource_values
-WHERE id = $1
+ v.id,
+ v.registered_resource_id,
+ v.value,
+ JSON_STRIP_NULLS(JSON_BUILD_OBJECT('labels', v.metadata -> 'labels', 'created_at', v.created_at, 'updated_at', v.updated_at)) as metadata
+FROM registered_resource_values v
+JOIN registered_resources r ON v.registered_resource_id = r.id
+WHERE
+ (NULLIF($1, '') IS NULL OR v.id = $1::UUID) AND
+ (NULLIF($2, '') IS NULL OR r.name = $2::VARCHAR) AND
+ (NULLIF($3, '') IS NULL OR v.value = $3::VARCHAR)
`
+type getRegisteredResourceValueParams struct {
+ ID interface{} `json:"id"`
+ Name interface{} `json:"name"`
+ Value interface{} `json:"value"`
+}
+
type getRegisteredResourceValueRow struct {
ID string `json:"id"`
RegisteredResourceID string `json:"registered_resource_id"`
@@ -3629,14 +3648,18 @@ type getRegisteredResourceValueRow struct {
// getRegisteredResourceValue
//
// SELECT
-// id,
-// registered_resource_id,
-// value,
-// JSON_STRIP_NULLS(JSON_BUILD_OBJECT('labels', metadata -> 'labels', 'created_at', created_at, 'updated_at', updated_at)) as metadata
-// FROM registered_resource_values
-// WHERE id = $1
-func (q *Queries) getRegisteredResourceValue(ctx context.Context, id string) (getRegisteredResourceValueRow, error) {
- row := q.db.QueryRow(ctx, getRegisteredResourceValue, id)
+// v.id,
+// v.registered_resource_id,
+// v.value,
+// JSON_STRIP_NULLS(JSON_BUILD_OBJECT('labels', v.metadata -> 'labels', 'created_at', v.created_at, 'updated_at', v.updated_at)) as metadata
+// FROM registered_resource_values v
+// JOIN registered_resources r ON v.registered_resource_id = r.id
+// WHERE
+// (NULLIF($1, '') IS NULL OR v.id = $1::UUID) AND
+// (NULLIF($2, '') IS NULL OR r.name = $2::VARCHAR) AND
+// (NULLIF($3, '') IS NULL OR v.value = $3::VARCHAR)
+func (q *Queries) getRegisteredResourceValue(ctx context.Context, arg getRegisteredResourceValueParams) (getRegisteredResourceValueRow, error) {
+ row := q.db.QueryRow(ctx, getRegisteredResourceValue, arg.ID, arg.Name, arg.Value)
var i getRegisteredResourceValueRow
err := row.Scan(
&i.ID,
diff --git a/service/policy/db/registered_resources.go b/service/policy/db/registered_resources.go
index e86dc26b7a..b18e61c092 100644
--- a/service/policy/db/registered_resources.go
+++ b/service/policy/db/registered_resources.go
@@ -3,14 +3,15 @@ package db
import (
"context"
"encoding/json"
- "errors"
"fmt"
+ "log/slog"
"strings"
"github.com/opentdf/platform/protocol/go/common"
"github.com/opentdf/platform/protocol/go/policy"
"github.com/opentdf/platform/protocol/go/policy/registeredresources"
"github.com/opentdf/platform/service/pkg/db"
+ "github.com/opentdf/platform/service/pkg/util"
"google.golang.org/protobuf/encoding/protojson"
)
@@ -66,27 +67,25 @@ func (c PolicyDBClient) CreateRegisteredResource(ctx context.Context, r *registe
}
return c.GetRegisteredResource(ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: createdID,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: createdID,
},
})
}
func (c PolicyDBClient) GetRegisteredResource(ctx context.Context, r *registeredresources.GetRegisteredResourceRequest) (*policy.RegisteredResource, error) {
- var id string
+ params := getRegisteredResourceParams{}
switch {
- case r.GetResourceId() != "":
- // TODO: refactor to pgtype.UUID once the query supports both id and fqn
- id = r.GetResourceId()
- case r.GetFqn() != "":
- // TODO: implement
- return nil, errors.New("FQN support not yet implemented")
+ case r.GetId() != "":
+ params.ID = r.GetId()
+ case r.GetName() != "":
+ params.Name = strings.ToLower(r.GetName())
default:
return nil, db.ErrSelectIdentifierInvalid
}
- rr, err := c.Queries.getRegisteredResource(ctx, id)
+ rr, err := c.Queries.getRegisteredResource(ctx, params)
if err != nil {
return nil, db.WrapIfKnownInvalidQueryErr(err)
}
@@ -168,8 +167,8 @@ func (c PolicyDBClient) UpdateRegisteredResource(ctx context.Context, r *registe
name := strings.ToLower(r.GetName())
metadataJSON, metadata, err := db.MarshalUpdateMetadata(r.GetMetadata(), r.GetMetadataUpdateBehavior(), func() (*common.Metadata, error) {
v, err := c.GetRegisteredResource(ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: id,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: id,
},
})
if err != nil {
@@ -236,28 +235,32 @@ func (c PolicyDBClient) CreateRegisteredResourceValue(ctx context.Context, r *re
}
return c.GetRegisteredResourceValue(ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: createdID,
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: createdID,
},
})
}
func (c PolicyDBClient) GetRegisteredResourceValue(ctx context.Context, r *registeredresources.GetRegisteredResourceValueRequest) (*policy.RegisteredResourceValue, error) {
- var id string
+ params := getRegisteredResourceValueParams{}
switch {
- case r.GetValueId() != "":
- // TODO: refactor to pgtype.UUID once the query supports both id and fqn
- id = r.GetValueId()
+ case r.GetId() != "":
+ params.ID = r.GetId()
case r.GetFqn() != "":
- // TODO: implement
- return nil, errors.New("FQN support not yet implemented")
+ fqn := strings.ToLower(r.GetFqn())
+ parsed, err := util.ParseRegisteredResourceValueFqn(fqn)
+ if err != nil {
+ return nil, err
+ }
+ params.Name = parsed.Name
+ params.Value = parsed.Value
default:
// unexpected type
return nil, db.ErrSelectIdentifierInvalid
}
- rv, err := c.Queries.getRegisteredResourceValue(ctx, id)
+ rv, err := c.Queries.getRegisteredResourceValue(ctx, params)
if err != nil {
return nil, db.WrapIfKnownInvalidQueryErr(err)
}
@@ -277,6 +280,51 @@ func (c PolicyDBClient) GetRegisteredResourceValue(ctx context.Context, r *regis
}, nil
}
+func (c PolicyDBClient) GetRegisteredResourceValuesByFQNs(ctx context.Context, r *registeredresources.GetRegisteredResourceValuesByFQNsRequest) (map[string]*policy.RegisteredResourceValue, error) {
+ resp := make(map[string]*policy.RegisteredResourceValue)
+ count := 0
+
+ for _, fqn := range r.GetFqns() {
+ normalizedFQN := strings.ToLower(fqn)
+
+ parsed, err := util.ParseRegisteredResourceValueFqn(fqn)
+ if err != nil {
+ return nil, err
+ }
+
+ rv, err := c.Queries.getRegisteredResourceValue(ctx, getRegisteredResourceValueParams{
+ Name: parsed.Name,
+ Value: parsed.Value,
+ })
+ if err != nil {
+ c.logger.Error("registered resource value for FQN not found", slog.String("fqn", fqn), slog.Any("err", err))
+ return nil, db.WrapIfKnownInvalidQueryErr(err)
+ }
+
+ count++
+
+ metadata := &common.Metadata{}
+ if err = unmarshalMetadata(rv.Metadata, metadata); err != nil {
+ return nil, err
+ }
+
+ resp[normalizedFQN] = &policy.RegisteredResourceValue{
+ Id: rv.ID,
+ Value: rv.Value,
+ Metadata: metadata,
+ Resource: &policy.RegisteredResource{
+ Id: rv.RegisteredResourceID,
+ },
+ }
+ }
+
+ if count == 0 {
+ return nil, db.ErrNotFound
+ }
+
+ return resp, nil
+}
+
func (c PolicyDBClient) ListRegisteredResourceValues(ctx context.Context, r *registeredresources.ListRegisteredResourceValuesRequest) (*registeredresources.ListRegisteredResourceValuesResponse, error) {
resourceID := r.GetResourceId()
limit, offset := c.getRequestedLimitOffset(r.GetPagination())
@@ -335,8 +383,8 @@ func (c PolicyDBClient) UpdateRegisteredResourceValue(ctx context.Context, r *re
value := strings.ToLower(r.GetValue())
metadataJSON, metadata, err := db.MarshalUpdateMetadata(r.GetMetadata(), r.GetMetadataUpdateBehavior(), func() (*common.Metadata, error) {
v, err := c.GetRegisteredResourceValue(ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: id,
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: id,
},
})
if err != nil {
diff --git a/service/policy/registeredresources/registered_resources.go b/service/policy/registeredresources/registered_resources.go
index 142b7bb236..54f37cd2a9 100644
--- a/service/policy/registeredresources/registered_resources.go
+++ b/service/policy/registeredresources/registered_resources.go
@@ -150,8 +150,8 @@ func (s *RegisteredResourcesService) UpdateRegisteredResource(ctx context.Contex
err := s.dbClient.RunInTx(ctx, func(txClient *policydb.PolicyDBClient) error {
original, err := txClient.GetRegisteredResource(ctx, ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: resourceID,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: resourceID,
},
})
if err != nil {
@@ -251,6 +251,20 @@ func (s *RegisteredResourcesService) GetRegisteredResourceValue(ctx context.Cont
return connect.NewResponse(rsp), nil
}
+func (s *RegisteredResourcesService) GetRegisteredResourceValuesByFQNs(ctx context.Context, req *connect.Request[registeredresources.GetRegisteredResourceValuesByFQNsRequest]) (*connect.Response[registeredresources.GetRegisteredResourceValuesByFQNsResponse], error) {
+ rsp := ®isteredresources.GetRegisteredResourceValuesByFQNsResponse{}
+
+ s.logger.DebugContext(ctx, "getting registered resource values by FQNs", slog.Any("fqns", req.Msg.GetFqns()))
+
+ fqnValueMap, err := s.dbClient.GetRegisteredResourceValuesByFQNs(ctx, req.Msg)
+ if err != nil {
+ return nil, db.StatusifyError(err, db.ErrTextGetRetrievalFailed, slog.Any("fqns", req.Msg.GetFqns()))
+ }
+ rsp.FqnValueMap = fqnValueMap
+
+ return connect.NewResponse(rsp), nil
+}
+
func (s *RegisteredResourcesService) ListRegisteredResourceValues(ctx context.Context, req *connect.Request[registeredresources.ListRegisteredResourceValuesRequest]) (*connect.Response[registeredresources.ListRegisteredResourceValuesResponse], error) {
s.logger.DebugContext(ctx, "listing registered resource values")
@@ -279,8 +293,8 @@ func (s *RegisteredResourcesService) UpdateRegisteredResourceValue(ctx context.C
err := s.dbClient.RunInTx(ctx, func(txClient *policydb.PolicyDBClient) error {
original, err := txClient.GetRegisteredResourceValue(ctx, ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: valueID,
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: valueID,
},
})
if err != nil {
diff --git a/service/policy/registeredresources/registered_resources.proto b/service/policy/registeredresources/registered_resources.proto
index 80c71e65db..aa86da9ab2 100644
--- a/service/policy/registeredresources/registered_resources.proto
+++ b/service/policy/registeredresources/registered_resources.proto
@@ -53,14 +53,17 @@ message GetRegisteredResourceRequest {
oneof identifier {
option (buf.validate.oneof).required = true;
- string resource_id = 1 [
+ string id = 1 [
(buf.validate.field).string.uuid = true
];
- string fqn = 2 [
- (buf.validate.field).string = {
- min_len : 1
- uri : true
+ string name = 2 [
+ (buf.validate.field).required = false,
+ (buf.validate.field).string.max_len = 253,
+ (buf.validate.field).cel = {
+ id: "rr_name_format",
+ message: "Registered Resource Name must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored name will be normalized to lower case.",
+ expression: "size(this) > 0 ? this.matches('^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$') : true"
}
];
}
@@ -148,7 +151,7 @@ message GetRegisteredResourceValueRequest {
oneof identifier {
option (buf.validate.oneof).required = true;
- string value_id = 1 [
+ string id = 1 [
(buf.validate.field).string.uuid = true
];
@@ -164,6 +167,26 @@ message GetRegisteredResourceValueResponse {
policy.RegisteredResourceValue value = 1;
}
+message GetRegisteredResourceValuesByFQNsRequest {
+ // Required
+ repeated string fqns = 1 [
+ (buf.validate.field).repeated = {
+ min_items: 1,
+ unique: true,
+ items: {
+ string:
+ {
+ min_len: 1,
+ uri: true
+ }
+ },
+ }
+ ];
+}
+message GetRegisteredResourceValuesByFQNsResponse {
+ map fqn_value_map = 1;
+}
+
message ListRegisteredResourceValuesRequest {
// Optional
string resource_id = 1 [(buf.validate.field).cel = {
@@ -248,6 +271,9 @@ service RegisteredResourcesService {
rpc GetRegisteredResourceValue(GetRegisteredResourceValueRequest) returns (GetRegisteredResourceValueResponse) {
}
+ rpc GetRegisteredResourceValuesByFQNs(GetRegisteredResourceValuesByFQNsRequest) returns (GetRegisteredResourceValuesByFQNsResponse) {
+ }
+
rpc ListRegisteredResourceValues(ListRegisteredResourceValuesRequest) returns (ListRegisteredResourceValuesResponse) {
}
diff --git a/service/policy/registeredresources/registered_resources_test.go b/service/policy/registeredresources/registered_resources_test.go
index f7ae25a0fb..78eb3fd765 100644
--- a/service/policy/registeredresources/registered_resources_test.go
+++ b/service/policy/registeredresources/registered_resources_test.go
@@ -32,18 +32,22 @@ const (
validUUID = "00000000-0000-0000-0000-000000000000"
validURI = "https://ndr-uri"
+ invalidName = "invalid name"
invalidUUID = "not-uuid"
invalidURI = "not-uri"
- errMsgRequired = "required"
- errMsgOneOfRequired = "oneof [required]"
- errMsgUUID = "string.uuid"
- errMsgOptionalUUID = "optional_uuid_format"
- errMsgURI = "string.uri"
- errMsgNameFormat = "rr_name_format"
- errMsgValueFormat = "rr_value_format"
- errMsgStringPattern = "string.pattern"
- errMsgStringMaxLen = "string.max_len"
+ errMsgRequired = "required"
+ errMsgOneOfRequired = "oneof [required]"
+ errMsgUUID = "string.uuid"
+ errMsgOptionalUUID = "optional_uuid_format"
+ errMsgURI = "string.uri"
+ errMsgNameFormat = "rr_name_format"
+ errMsgValueFormat = "rr_value_format"
+ errMsgStringPattern = "string.pattern"
+ errMsgStringMinLen = "string.min_len"
+ errMsgStringMaxLen = "string.max_len"
+ errMsgRepeatedMinItems = "repeated.min_items"
+ errMsgRepeatedUnique = "repeated.unique"
)
///
@@ -182,16 +186,16 @@ func (s *RegisteredResourcesSuite) TestGetRegisteredResource_Valid_Succeeds() {
{
name: "Identifier (UUID)",
req: ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: validUUID,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: validUUID,
},
},
},
{
- name: "Identifier (FQN)",
+ name: "Identifier (Name)",
req: ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_Fqn{
- Fqn: validURI,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Name{
+ Name: validName,
},
},
},
@@ -220,20 +224,20 @@ func (s *RegisteredResourcesSuite) TestGetRegisteredResource_Invalid_Fails() {
{
name: "Invalid UUID",
req: ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_ResourceId{
- ResourceId: invalidUUID,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Id{
+ Id: invalidUUID,
},
},
errMsg: errMsgUUID,
},
{
- name: "Invalid FQN",
+ name: "Invalid Name",
req: ®isteredresources.GetRegisteredResourceRequest{
- Identifier: ®isteredresources.GetRegisteredResourceRequest_Fqn{
- Fqn: invalidURI,
+ Identifier: ®isteredresources.GetRegisteredResourceRequest_Name{
+ Name: invalidName,
},
},
- errMsg: errMsgURI,
+ errMsg: errMsgNameFormat,
},
}
@@ -488,8 +492,8 @@ func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValue_Valid_Succeeds
{
name: "Identifier (UUID)",
req: ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: validUUID,
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: validUUID,
},
},
},
@@ -526,8 +530,8 @@ func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValue_Invalid_Fails(
{
name: "Invalid UUID",
req: ®isteredresources.GetRegisteredResourceValueRequest{
- Identifier: ®isteredresources.GetRegisteredResourceValueRequest_ValueId{
- ValueId: invalidUUID,
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Id{
+ Id: invalidUUID,
},
},
errMsg: errMsgUUID,
@@ -553,6 +557,70 @@ func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValue_Invalid_Fails(
}
}
+// Get by FQNs
+
+func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValuesByFQNs_Valid_Succeeds() {
+ req := ®isteredresources.GetRegisteredResourceValueRequest{
+ Identifier: ®isteredresources.GetRegisteredResourceValueRequest_Fqn{
+ Fqn: validURI,
+ },
+ }
+
+ err := s.v.Validate(req)
+ s.Require().NoError(err)
+}
+
+func (s *RegisteredResourcesSuite) TestGetRegisteredResourceValuesByFQNs_Invalid_Fails() {
+ testCases := []struct {
+ name string
+ req *registeredresources.GetRegisteredResourceValuesByFQNsRequest
+ errMsg string
+ }{
+ {
+ name: "Nil FQN list",
+ req: ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{},
+ errMsg: errMsgRepeatedMinItems,
+ },
+ {
+ name: "Empty FQN list",
+ req: ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{
+ Fqns: []string{},
+ },
+ errMsg: errMsgRepeatedMinItems,
+ },
+ {
+ name: "Empty String in FQN list",
+ req: ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{
+ Fqns: []string{""},
+ },
+ errMsg: errMsgStringMinLen,
+ },
+ {
+ name: "Duplicates in FQN list",
+ req: ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{
+ Fqns: []string{validURI, validURI},
+ },
+ errMsg: errMsgRepeatedUnique,
+ },
+ {
+ name: "Invalid FQN in FQN list",
+ req: ®isteredresources.GetRegisteredResourceValuesByFQNsRequest{
+ Fqns: []string{invalidURI},
+ },
+ errMsg: errMsgURI,
+ },
+ }
+
+ for _, tc := range testCases {
+ s.Run(tc.name, func() {
+ err := s.v.Validate(tc.req)
+
+ s.Require().Error(err)
+ s.Require().Contains(err.Error(), tc.errMsg)
+ })
+ }
+}
+
// List
func (s *RegisteredResourcesSuite) TestListRegisteredResourceValues_Valid_Succeeds() {