Add GetBuilderMetadata endpoint to the PackageService.

Ran ./generate.sh in chromiumos/chromite/infra/proto.

BUG=chromium:1071620
TEST=manual, run_tests

Change-Id: I9618b6b8fd67710a5e0a86bf30348b3549cac857
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2169328
Reviewed-by: Alex Klein <saklein@chromium.org>
Tested-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Michael Mortensen <mmortensen@google.com>
diff --git a/go/chromite/api/packages.pb.go b/go/chromite/api/packages.pb.go
index 50895eb..37055b5 100644
--- a/go/chromite/api/packages.pb.go
+++ b/go/chromite/api/packages.pb.go
@@ -464,6 +464,301 @@
 	return ""
 }
 
+// The associated method can be run after InstallPackages.
+type GetBuilderMetadataRequest struct {
+	// The chroot path.
+	// Required if not in the default location.
+	Chroot *chromiumos.Chroot `protobuf:"bytes,1,opt,name=chroot,proto3" json:"chroot,omitempty"`
+	// The build target to examine.
+	// Required.
+	BuildTarget          *chromiumos.BuildTarget `protobuf:"bytes,2,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
+}
+
+func (m *GetBuilderMetadataRequest) Reset()         { *m = GetBuilderMetadataRequest{} }
+func (m *GetBuilderMetadataRequest) String() string { return proto.CompactTextString(m) }
+func (*GetBuilderMetadataRequest) ProtoMessage()    {}
+func (*GetBuilderMetadataRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_40286986e1d9a416, []int{8}
+}
+
+func (m *GetBuilderMetadataRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetBuilderMetadataRequest.Unmarshal(m, b)
+}
+func (m *GetBuilderMetadataRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetBuilderMetadataRequest.Marshal(b, m, deterministic)
+}
+func (m *GetBuilderMetadataRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetBuilderMetadataRequest.Merge(m, src)
+}
+func (m *GetBuilderMetadataRequest) XXX_Size() int {
+	return xxx_messageInfo_GetBuilderMetadataRequest.Size(m)
+}
+func (m *GetBuilderMetadataRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetBuilderMetadataRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBuilderMetadataRequest proto.InternalMessageInfo
+
+func (m *GetBuilderMetadataRequest) GetChroot() *chromiumos.Chroot {
+	if m != nil {
+		return m.Chroot
+	}
+	return nil
+}
+
+func (m *GetBuilderMetadataRequest) GetBuildTarget() *chromiumos.BuildTarget {
+	if m != nil {
+		return m.BuildTarget
+	}
+	return nil
+}
+
+type GetBuilderMetadataResponse struct {
+	// Metadata for build targets.
+	BuildTargetMetadata []*GetBuilderMetadataResponse_BuildTargetMetadata `protobuf:"bytes,1,rep,name=build_target_metadata,json=buildTargetMetadata,proto3" json:"build_target_metadata,omitempty"`
+	// Metadata for models.
+	ModelMetadata        []*GetBuilderMetadataResponse_ModelMetadata `protobuf:"bytes,2,rep,name=model_metadata,json=modelMetadata,proto3" json:"model_metadata,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                    `json:"-"`
+	XXX_unrecognized     []byte                                      `json:"-"`
+	XXX_sizecache        int32                                       `json:"-"`
+}
+
+func (m *GetBuilderMetadataResponse) Reset()         { *m = GetBuilderMetadataResponse{} }
+func (m *GetBuilderMetadataResponse) String() string { return proto.CompactTextString(m) }
+func (*GetBuilderMetadataResponse) ProtoMessage()    {}
+func (*GetBuilderMetadataResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_40286986e1d9a416, []int{9}
+}
+
+func (m *GetBuilderMetadataResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetBuilderMetadataResponse.Unmarshal(m, b)
+}
+func (m *GetBuilderMetadataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetBuilderMetadataResponse.Marshal(b, m, deterministic)
+}
+func (m *GetBuilderMetadataResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetBuilderMetadataResponse.Merge(m, src)
+}
+func (m *GetBuilderMetadataResponse) XXX_Size() int {
+	return xxx_messageInfo_GetBuilderMetadataResponse.Size(m)
+}
+func (m *GetBuilderMetadataResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetBuilderMetadataResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBuilderMetadataResponse proto.InternalMessageInfo
+
+func (m *GetBuilderMetadataResponse) GetBuildTargetMetadata() []*GetBuilderMetadataResponse_BuildTargetMetadata {
+	if m != nil {
+		return m.BuildTargetMetadata
+	}
+	return nil
+}
+
+func (m *GetBuilderMetadataResponse) GetModelMetadata() []*GetBuilderMetadataResponse_ModelMetadata {
+	if m != nil {
+		return m.ModelMetadata
+	}
+	return nil
+}
+
+type GetBuilderMetadataResponse_ModelMetadata struct {
+	// Name of model, such as "astronaut", "babymega", etc.
+	ModelName string `protobuf:"bytes,1,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"`
+	// EC firmware version, such as "coral_v1.1.7292-04956f5df".
+	EcFirmwareVersion string `protobuf:"bytes,2,opt,name=ec_firmware_version,json=ecFirmwareVersion,proto3" json:"ec_firmware_version,omitempty"`
+	// Firmware key id, such as "CORALG"
+	FirmwareKeyId string `protobuf:"bytes,3,opt,name=firmware_key_id,json=firmwareKeyId,proto3" json:"firmware_key_id,omitempty"`
+	// Main readonly firmware version, such as "Google_Coral.10068.82.0".
+	MainReadonlyFirmwareVersion string `protobuf:"bytes,4,opt,name=main_readonly_firmware_version,json=mainReadonlyFirmwareVersion,proto3" json:"main_readonly_firmware_version,omitempty"`
+	// Main readwrite firmware version, such as "Google_Coral.10068.82.0".
+	MainReadwriteFirmwareVersion string   `protobuf:"bytes,5,opt,name=main_readwrite_firmware_version,json=mainReadwriteFirmwareVersion,proto3" json:"main_readwrite_firmware_version,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	XXX_unrecognized             []byte   `json:"-"`
+	XXX_sizecache                int32    `json:"-"`
+}
+
+func (m *GetBuilderMetadataResponse_ModelMetadata) Reset() {
+	*m = GetBuilderMetadataResponse_ModelMetadata{}
+}
+func (m *GetBuilderMetadataResponse_ModelMetadata) String() string { return proto.CompactTextString(m) }
+func (*GetBuilderMetadataResponse_ModelMetadata) ProtoMessage()    {}
+func (*GetBuilderMetadataResponse_ModelMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_40286986e1d9a416, []int{9, 0}
+}
+
+func (m *GetBuilderMetadataResponse_ModelMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetBuilderMetadataResponse_ModelMetadata.Unmarshal(m, b)
+}
+func (m *GetBuilderMetadataResponse_ModelMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetBuilderMetadataResponse_ModelMetadata.Marshal(b, m, deterministic)
+}
+func (m *GetBuilderMetadataResponse_ModelMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetBuilderMetadataResponse_ModelMetadata.Merge(m, src)
+}
+func (m *GetBuilderMetadataResponse_ModelMetadata) XXX_Size() int {
+	return xxx_messageInfo_GetBuilderMetadataResponse_ModelMetadata.Size(m)
+}
+func (m *GetBuilderMetadataResponse_ModelMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetBuilderMetadataResponse_ModelMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBuilderMetadataResponse_ModelMetadata proto.InternalMessageInfo
+
+func (m *GetBuilderMetadataResponse_ModelMetadata) GetModelName() string {
+	if m != nil {
+		return m.ModelName
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_ModelMetadata) GetEcFirmwareVersion() string {
+	if m != nil {
+		return m.EcFirmwareVersion
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_ModelMetadata) GetFirmwareKeyId() string {
+	if m != nil {
+		return m.FirmwareKeyId
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_ModelMetadata) GetMainReadonlyFirmwareVersion() string {
+	if m != nil {
+		return m.MainReadonlyFirmwareVersion
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_ModelMetadata) GetMainReadwriteFirmwareVersion() string {
+	if m != nil {
+		return m.MainReadwriteFirmwareVersion
+	}
+	return ""
+}
+
+type GetBuilderMetadataResponse_BuildTargetMetadata struct {
+	// Name of build_target, such as auron_paine, coral, etc.
+	BuildTarget string `protobuf:"bytes,1,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
+	// Name of android container branch, such as "git_pi-arc".
+	AndroidContainerBranch string `protobuf:"bytes,2,opt,name=android_container_branch,json=androidContainerBranch,proto3" json:"android_container_branch,omitempty"`
+	// Name of android container target, such as "cheets".
+	AndroidContainerTarget string `protobuf:"bytes,3,opt,name=android_container_target,json=androidContainerTarget,proto3" json:"android_container_target,omitempty"`
+	// Name of android container version, such as "6387315".
+	AndroidContainerVersion string `protobuf:"bytes,4,opt,name=android_container_version,json=androidContainerVersion,proto3" json:"android_container_version,omitempty"`
+	// Whether or not arc-use is enabled.
+	ArcUseSet bool `protobuf:"varint,5,opt,name=arc_use_set,json=arcUseSet,proto3" json:"arc_use_set,omitempty"`
+	// EC firmware version.
+	EcFirmwareVersion string `protobuf:"bytes,6,opt,name=ec_firmware_version,json=ecFirmwareVersion,proto3" json:"ec_firmware_version,omitempty"`
+	// Fingerprints.
+	Fingerprints []string `protobuf:"bytes,7,rep,name=fingerprints,proto3" json:"fingerprints,omitempty"`
+	// Kernel version, such as  "4.14.176-r1088".
+	KernelVersion string `protobuf:"bytes,8,opt,name=kernel_version,json=kernelVersion,proto3" json:"kernel_version,omitempty"`
+	// Main firmware version, such as "Google_Auron_paine.6301.58.98.
+	MainFirmwareVersion  string   `protobuf:"bytes,9,opt,name=main_firmware_version,json=mainFirmwareVersion,proto3" json:"main_firmware_version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) Reset() {
+	*m = GetBuilderMetadataResponse_BuildTargetMetadata{}
+}
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) String() string {
+	return proto.CompactTextString(m)
+}
+func (*GetBuilderMetadataResponse_BuildTargetMetadata) ProtoMessage() {}
+func (*GetBuilderMetadataResponse_BuildTargetMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_40286986e1d9a416, []int{9, 1}
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetBuilderMetadataResponse_BuildTargetMetadata.Unmarshal(m, b)
+}
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetBuilderMetadataResponse_BuildTargetMetadata.Marshal(b, m, deterministic)
+}
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetBuilderMetadataResponse_BuildTargetMetadata.Merge(m, src)
+}
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) XXX_Size() int {
+	return xxx_messageInfo_GetBuilderMetadataResponse_BuildTargetMetadata.Size(m)
+}
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetBuilderMetadataResponse_BuildTargetMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBuilderMetadataResponse_BuildTargetMetadata proto.InternalMessageInfo
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetBuildTarget() string {
+	if m != nil {
+		return m.BuildTarget
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetAndroidContainerBranch() string {
+	if m != nil {
+		return m.AndroidContainerBranch
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetAndroidContainerTarget() string {
+	if m != nil {
+		return m.AndroidContainerTarget
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetAndroidContainerVersion() string {
+	if m != nil {
+		return m.AndroidContainerVersion
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetArcUseSet() bool {
+	if m != nil {
+		return m.ArcUseSet
+	}
+	return false
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetEcFirmwareVersion() string {
+	if m != nil {
+		return m.EcFirmwareVersion
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetFingerprints() []string {
+	if m != nil {
+		return m.Fingerprints
+	}
+	return nil
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetKernelVersion() string {
+	if m != nil {
+		return m.KernelVersion
+	}
+	return ""
+}
+
+func (m *GetBuilderMetadataResponse_BuildTargetMetadata) GetMainFirmwareVersion() string {
+	if m != nil {
+		return m.MainFirmwareVersion
+	}
+	return ""
+}
+
 // This can easily be generalized to a HasPrebuilt method if necessary, but
 // currently we have no use case for anything but Chrome, and making this
 // specifically for Chrome simplifies the calling code significantly.
@@ -486,7 +781,7 @@
 func (m *HasChromePrebuiltRequest) String() string { return proto.CompactTextString(m) }
 func (*HasChromePrebuiltRequest) ProtoMessage()    {}
 func (*HasChromePrebuiltRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{8}
+	return fileDescriptor_40286986e1d9a416, []int{10}
 }
 
 func (m *HasChromePrebuiltRequest) XXX_Unmarshal(b []byte) error {
@@ -540,7 +835,7 @@
 func (m *HasChromePrebuiltResponse) String() string { return proto.CompactTextString(m) }
 func (*HasChromePrebuiltResponse) ProtoMessage()    {}
 func (*HasChromePrebuiltResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{9}
+	return fileDescriptor_40286986e1d9a416, []int{11}
 }
 
 func (m *HasChromePrebuiltResponse) XXX_Unmarshal(b []byte) error {
@@ -592,7 +887,7 @@
 func (m *HasPrebuiltRequest) String() string { return proto.CompactTextString(m) }
 func (*HasPrebuiltRequest) ProtoMessage()    {}
 func (*HasPrebuiltRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{10}
+	return fileDescriptor_40286986e1d9a416, []int{12}
 }
 
 func (m *HasPrebuiltRequest) XXX_Unmarshal(b []byte) error {
@@ -653,7 +948,7 @@
 func (m *HasPrebuiltResponse) String() string { return proto.CompactTextString(m) }
 func (*HasPrebuiltResponse) ProtoMessage()    {}
 func (*HasPrebuiltResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{11}
+	return fileDescriptor_40286986e1d9a416, []int{13}
 }
 
 func (m *HasPrebuiltResponse) XXX_Unmarshal(b []byte) error {
@@ -703,7 +998,7 @@
 func (m *UprevPackagesRequest) String() string { return proto.CompactTextString(m) }
 func (*UprevPackagesRequest) ProtoMessage()    {}
 func (*UprevPackagesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{12}
+	return fileDescriptor_40286986e1d9a416, []int{14}
 }
 
 func (m *UprevPackagesRequest) XXX_Unmarshal(b []byte) error {
@@ -771,7 +1066,7 @@
 func (m *UprevVersionedPackageRequest) String() string { return proto.CompactTextString(m) }
 func (*UprevVersionedPackageRequest) ProtoMessage()    {}
 func (*UprevVersionedPackageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{13}
+	return fileDescriptor_40286986e1d9a416, []int{15}
 }
 
 func (m *UprevVersionedPackageRequest) XXX_Unmarshal(b []byte) error {
@@ -836,7 +1131,7 @@
 func (m *UprevVersionedPackageRequest_GitRef) String() string { return proto.CompactTextString(m) }
 func (*UprevVersionedPackageRequest_GitRef) ProtoMessage()    {}
 func (*UprevVersionedPackageRequest_GitRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{13, 0}
+	return fileDescriptor_40286986e1d9a416, []int{15, 0}
 }
 
 func (m *UprevVersionedPackageRequest_GitRef) XXX_Unmarshal(b []byte) error {
@@ -892,7 +1187,7 @@
 func (m *UprevPackagesResponse) String() string { return proto.CompactTextString(m) }
 func (*UprevPackagesResponse) ProtoMessage()    {}
 func (*UprevPackagesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{14}
+	return fileDescriptor_40286986e1d9a416, []int{16}
 }
 
 func (m *UprevPackagesResponse) XXX_Unmarshal(b []byte) error {
@@ -938,7 +1233,7 @@
 func (m *UprevPackagesResponse_Ebuild) String() string { return proto.CompactTextString(m) }
 func (*UprevPackagesResponse_Ebuild) ProtoMessage()    {}
 func (*UprevPackagesResponse_Ebuild) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{14, 0}
+	return fileDescriptor_40286986e1d9a416, []int{16, 0}
 }
 
 func (m *UprevPackagesResponse_Ebuild) XXX_Unmarshal(b []byte) error {
@@ -978,7 +1273,7 @@
 func (m *UprevVersionedPackageResponse) String() string { return proto.CompactTextString(m) }
 func (*UprevVersionedPackageResponse) ProtoMessage()    {}
 func (*UprevVersionedPackageResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_40286986e1d9a416, []int{15}
+	return fileDescriptor_40286986e1d9a416, []int{17}
 }
 
 func (m *UprevVersionedPackageResponse) XXX_Unmarshal(b []byte) error {
@@ -1015,6 +1310,10 @@
 	proto.RegisterType((*GetChromeVersionResponse)(nil), "chromite.api.GetChromeVersionResponse")
 	proto.RegisterType((*GetTargetVersionsRequest)(nil), "chromite.api.GetTargetVersionsRequest")
 	proto.RegisterType((*GetTargetVersionsResponse)(nil), "chromite.api.GetTargetVersionsResponse")
+	proto.RegisterType((*GetBuilderMetadataRequest)(nil), "chromite.api.GetBuilderMetadataRequest")
+	proto.RegisterType((*GetBuilderMetadataResponse)(nil), "chromite.api.GetBuilderMetadataResponse")
+	proto.RegisterType((*GetBuilderMetadataResponse_ModelMetadata)(nil), "chromite.api.GetBuilderMetadataResponse.ModelMetadata")
+	proto.RegisterType((*GetBuilderMetadataResponse_BuildTargetMetadata)(nil), "chromite.api.GetBuilderMetadataResponse.BuildTargetMetadata")
 	proto.RegisterType((*HasChromePrebuiltRequest)(nil), "chromite.api.HasChromePrebuiltRequest")
 	proto.RegisterType((*HasChromePrebuiltResponse)(nil), "chromite.api.HasChromePrebuiltResponse")
 	proto.RegisterType((*HasPrebuiltRequest)(nil), "chromite.api.HasPrebuiltRequest")
@@ -1030,70 +1329,91 @@
 func init() { proto.RegisterFile("chromite/api/packages.proto", fileDescriptor_40286986e1d9a416) }
 
 var fileDescriptor_40286986e1d9a416 = []byte{
-	// 995 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xdd, 0x6e, 0x1b, 0x45,
-	0x14, 0xd6, 0x6e, 0x52, 0xd7, 0x39, 0x76, 0x1d, 0x77, 0x9a, 0x26, 0xce, 0x92, 0xa2, 0x64, 0x4b,
-	0x29, 0xa4, 0x92, 0x2d, 0xd2, 0x0a, 0x55, 0xa5, 0x42, 0x22, 0x05, 0xa5, 0x5c, 0x20, 0xaa, 0x25,
-	0x8d, 0x10, 0x5c, 0x58, 0x6b, 0x7b, 0x6c, 0x8f, 0xb0, 0x77, 0x96, 0x99, 0xb1, 0x45, 0x2e, 0xe1,
-	0x15, 0xb8, 0xe3, 0x01, 0xb8, 0xe3, 0x86, 0x47, 0xe8, 0x13, 0x20, 0xee, 0x79, 0x02, 0xd4, 0x77,
-	0x40, 0x3b, 0x73, 0xf6, 0xdf, 0x71, 0x9d, 0x5e, 0x44, 0xdc, 0xed, 0xcc, 0xf9, 0xce, 0x99, 0xef,
-	0x7c, 0x33, 0x73, 0xce, 0x2c, 0xbc, 0xd3, 0x1f, 0x0b, 0x3e, 0x65, 0x8a, 0x76, 0xfc, 0x90, 0x75,
-	0x42, 0xbf, 0xff, 0x83, 0x3f, 0xa2, 0xb2, 0x1d, 0x0a, 0xae, 0x38, 0xa9, 0xc7, 0xc6, 0xb6, 0x1f,
-	0x32, 0xc7, 0xc9, 0x41, 0x7b, 0x2c, 0x18, 0x73, 0xa9, 0x0c, 0xd2, 0xd9, 0xcb, 0xdb, 0x66, 0x6c,
-	0x32, 0xe8, 0xfa, 0x21, 0x43, 0xeb, 0x8e, 0xb1, 0xce, 0xa6, 0x5c, 0x76, 0xfa, 0x7c, 0x3a, 0xe5,
-	0x81, 0x31, 0xb8, 0x7f, 0x5a, 0x70, 0xeb, 0x38, 0x02, 0xcb, 0x67, 0x11, 0x82, 0x7a, 0xf4, 0xc7,
-	0x19, 0x95, 0x8a, 0x1c, 0x42, 0x25, 0x72, 0xe1, 0xaa, 0x65, 0xed, 0x5b, 0x1f, 0xd4, 0x8e, 0x48,
-	0x3b, 0x8d, 0xd0, 0x7e, 0xa6, 0x2d, 0x1e, 0x22, 0xc8, 0x13, 0xa8, 0x9b, 0xf5, 0x94, 0x2f, 0x46,
-	0x54, 0xb5, 0x6c, 0xed, 0xb1, 0x93, 0xf5, 0xd0, 0x4b, 0x9c, 0x6a, 0xb3, 0x57, 0xeb, 0xa5, 0x03,
-	0xf2, 0x10, 0xaa, 0x71, 0xca, 0xad, 0xb5, 0xfd, 0xb5, 0xa2, 0xdf, 0x0b, 0x63, 0xfb, 0x32, 0x18,
-	0x72, 0x2f, 0x01, 0xba, 0x9f, 0xc0, 0x56, 0x9e, 0xb3, 0x0c, 0x79, 0x20, 0x29, 0xb9, 0x0b, 0x37,
-	0x74, 0x6c, 0xd9, 0xd5, 0x21, 0xa8, 0xe6, 0x5e, 0xf5, 0x0c, 0x3b, 0x04, 0xbb, 0xbf, 0x5a, 0x70,
-	0xfb, 0x84, 0xaa, 0x63, 0x2a, 0xd5, 0x19, 0x93, 0xac, 0x37, 0x49, 0x72, 0x26, 0xb0, 0xee, 0x2b,
-	0x3e, 0xd5, 0x5e, 0x1b, 0x9e, 0xfe, 0xce, 0xe8, 0x60, 0x5f, 0x5a, 0x87, 0xb5, 0xd5, 0x75, 0x70,
-	0x4f, 0x61, 0xbb, 0x48, 0x0a, 0x93, 0x7a, 0x02, 0x75, 0x4c, 0xbc, 0xcb, 0x82, 0x21, 0xc7, 0xfd,
-	0xb8, 0x50, 0xa5, 0x5a, 0x98, 0x0e, 0xdc, 0x9f, 0x2d, 0xd8, 0x39, 0xa1, 0xca, 0x64, 0x7e, 0x46,
-	0x85, 0x64, 0x3c, 0xb8, 0xe2, 0x1d, 0x76, 0x1f, 0x41, 0xab, 0x4c, 0x01, 0x73, 0x6b, 0xc1, 0xf5,
-	0xb9, 0x99, 0x42, 0xd1, 0xe3, 0xa1, 0xfb, 0x8b, 0xa5, 0xdd, 0x4c, 0x0c, 0x74, 0x93, 0x57, 0x4d,
-	0xfd, 0x6f, 0x1b, 0x76, 0x17, 0x90, 0x40, 0xf2, 0xf7, 0x61, 0xd3, 0x0f, 0x06, 0x82, 0xb3, 0x41,
-	0x37, 0x9f, 0x44, 0x03, 0xa7, 0xd1, 0x83, 0x3c, 0x82, 0xed, 0x18, 0xd8, 0x13, 0x7e, 0xd0, 0x1f,
-	0x27, 0x78, 0x5b, 0xe3, 0xb7, 0xd0, 0x7a, 0xac, 0x8d, 0x0b, 0xbc, 0x0c, 0xf5, 0xc4, 0x6b, 0x2d,
-	0xe7, 0x95, 0x63, 0x47, 0xee, 0x41, 0xc3, 0x9c, 0xfd, 0x04, 0xbd, 0xae, 0xd1, 0x37, 0xfa, 0xd9,
-	0x0d, 0x20, 0x07, 0x50, 0x1f, 0xce, 0x26, 0x93, 0x04, 0x74, 0x4d, 0x83, 0x6a, 0xd1, 0x5c, 0x0c,
-	0x79, 0x00, 0x37, 0xa7, 0x6c, 0x42, 0xa5, 0xe2, 0x41, 0x1a, 0xac, 0xa2, 0x71, 0xcd, 0xc4, 0x10,
-	0x83, 0x3f, 0x84, 0x66, 0x38, 0xf1, 0xd5, 0x90, 0x8b, 0x69, 0x82, 0xbd, 0xae, 0xb1, 0x9b, 0xf1,
-	0x3c, 0x42, 0xdd, 0xdf, 0x2c, 0x68, 0x3d, 0xf7, 0xf1, 0x36, 0xbe, 0x10, 0x34, 0x12, 0x5c, 0x5d,
-	0x75, 0xd9, 0xd9, 0x36, 0xeb, 0x4c, 0xa9, 0x16, 0xb3, 0xea, 0xe1, 0xc8, 0xfd, 0x14, 0x76, 0x17,
-	0x70, 0xc3, 0x0d, 0x3f, 0x80, 0xfa, 0xd8, 0x97, 0xdd, 0x10, 0xe7, 0xb1, 0xba, 0xd4, 0xc6, 0xbe,
-	0x8c, 0xa1, 0xee, 0x5f, 0x16, 0x90, 0xe7, 0xe9, 0xf8, 0x7f, 0x92, 0x56, 0xa9, 0x86, 0xac, 0x5f,
-	0xa2, 0x86, 0x3c, 0x86, 0x5b, 0xb9, 0x8c, 0x56, 0x17, 0xe3, 0x1f, 0x0b, 0xb6, 0x5e, 0x86, 0x82,
-	0xce, 0x31, 0xf6, 0x5b, 0xdd, 0xdf, 0xa7, 0x58, 0xd3, 0x51, 0x0e, 0xd9, 0xb2, 0xcb, 0x5d, 0x22,
-	0xab, 0x47, 0x3d, 0xa3, 0x87, 0x24, 0x4f, 0xa1, 0xce, 0xe7, 0x54, 0x4c, 0xfc, 0xf3, 0xae, 0x3a,
-	0x0f, 0x8d, 0x2c, 0x8d, 0xa3, 0xdd, 0x76, 0xb6, 0xad, 0xb6, 0xbf, 0x36, 0x88, 0xd3, 0xf3, 0x90,
-	0x7a, 0x35, 0x9e, 0x0e, 0xc8, 0x1d, 0x00, 0x3e, 0x53, 0xe1, 0x4c, 0x75, 0x07, 0x4c, 0xe0, 0x45,
-	0xda, 0x30, 0x33, 0x9f, 0x33, 0xe1, 0xfe, 0x6b, 0xc3, 0x9e, 0xce, 0x0f, 0x8f, 0x36, 0x1d, 0x60,
-	0xa2, 0x6f, 0xb9, 0xed, 0xb9, 0x2d, 0xb2, 0x57, 0xdf, 0x22, 0xf2, 0x15, 0x54, 0xf1, 0xd2, 0xc5,
-	0x4d, 0xf4, 0xa3, 0x7c, 0x86, 0xcb, 0x58, 0xb6, 0x4f, 0x98, 0xf2, 0xe8, 0xd0, 0x4b, 0x42, 0x94,
-	0x25, 0x5f, 0xbf, 0x84, 0xe4, 0xce, 0x19, 0x54, 0x4c, 0x44, 0xf2, 0x2e, 0x80, 0xa0, 0x21, 0x97,
-	0x4c, 0x71, 0x71, 0x8e, 0xb5, 0x31, 0x33, 0x43, 0x9a, 0xb0, 0x26, 0xe8, 0x10, 0x8b, 0x60, 0xf4,
-	0x49, 0x1c, 0xa8, 0x0a, 0x3a, 0x67, 0x99, 0x2a, 0x97, 0x8c, 0xdd, 0xdf, 0x2d, 0xb8, 0x5d, 0x38,
-	0x4d, 0x78, 0x14, 0x5f, 0x42, 0x73, 0xca, 0x07, 0x6c, 0xc8, 0xe8, 0xa0, 0x4b, 0x4d, 0xaf, 0x6f,
-	0x59, 0x9a, 0xf2, 0xe1, 0x02, 0x19, 0x8a, 0xee, 0xed, 0x2f, 0xb4, 0x8b, 0xb7, 0x19, 0xc7, 0x30,
-	0x63, 0x99, 0x6d, 0x4e, 0x76, 0xae, 0x39, 0x39, 0x7b, 0x50, 0x31, 0xa0, 0xe8, 0xc9, 0x10, 0xfa,
-	0x6a, 0x1c, 0x3f, 0x19, 0xa2, 0x6f, 0xb7, 0x07, 0x77, 0x2e, 0xd0, 0x1b, 0xf9, 0x7e, 0x06, 0x1b,
-	0x02, 0xbf, 0x63, 0xa2, 0x77, 0x57, 0x20, 0xea, 0xa5, 0x5e, 0x47, 0x7f, 0x54, 0xa0, 0x81, 0xf6,
-	0x6f, 0xa8, 0x98, 0xb3, 0x7e, 0xa4, 0x42, 0x3d, 0xfb, 0x28, 0x22, 0x07, 0xf9, 0x90, 0x0b, 0x1e,
-	0x79, 0x8e, 0xbb, 0x0c, 0x82, 0x64, 0xbf, 0x87, 0x46, 0xfe, 0x61, 0x42, 0x0a, 0x5c, 0x17, 0xbe,
-	0xa5, 0x9c, 0xf7, 0x96, 0x83, 0x30, 0xb8, 0x0f, 0xcd, 0xe2, 0xdb, 0x80, 0xdc, 0x2b, 0x79, 0x2e,
-	0x7a, 0xbe, 0x38, 0xef, 0xbf, 0x09, 0x86, 0x4b, 0x0c, 0xe0, 0x66, 0xa9, 0x85, 0x93, 0xb2, 0xf3,
-	0xc2, 0x87, 0x86, 0x73, 0xff, 0x8d, 0xb8, 0x74, 0x95, 0x52, 0xdf, 0x28, 0xae, 0x72, 0x51, 0xd3,
-	0x2b, 0xae, 0x72, 0x71, 0x03, 0xf2, 0xa0, 0x96, 0x29, 0xc5, 0x64, 0xbf, 0xe4, 0x57, 0x8c, 0x7c,
-	0xb0, 0x04, 0x81, 0x31, 0xbf, 0x85, 0x6b, 0xfa, 0xb4, 0x11, 0x77, 0xe9, 0x11, 0x34, 0xf1, 0x56,
-	0x39, 0xa6, 0x6e, 0xe5, 0xd5, 0x6b, 0xc7, 0x6e, 0xda, 0xe4, 0x27, 0xbc, 0xaf, 0xc5, 0x7b, 0x40,
-	0x0e, 0x57, 0x2f, 0x4e, 0xce, 0x83, 0x95, 0xb0, 0xf9, 0x95, 0x9d, 0xe6, 0xab, 0xd7, 0x4e, 0x3d,
-	0xfd, 0xb1, 0x68, 0x5a, 0xc7, 0x8f, 0xbf, 0xfb, 0x78, 0xc4, 0x93, 0xfa, 0xd5, 0xe6, 0x62, 0xd4,
-	0xc9, 0xfc, 0x11, 0xb1, 0x60, 0x28, 0xfc, 0x8e, 0xfe, 0x21, 0xea, 0x8c, 0x78, 0x27, 0xfb, 0x27,
-	0xd5, 0xab, 0xe8, 0xe9, 0x87, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xb5, 0x99, 0x4d, 0xa7,
-	0x0d, 0x00, 0x00,
+	// 1333 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xdd, 0x6e, 0x1b, 0xc5,
+	0x17, 0xd7, 0xda, 0xa9, 0x63, 0x1f, 0x3b, 0x8e, 0x3b, 0x69, 0x1a, 0x67, 0x9b, 0xf6, 0x9f, 0x6c,
+	0xff, 0xfd, 0xa0, 0x95, 0x6c, 0x91, 0x56, 0x55, 0x55, 0x2a, 0x24, 0x12, 0x4a, 0x5b, 0xa1, 0x42,
+	0xb5, 0xfd, 0x10, 0x02, 0xa1, 0xd5, 0xd8, 0x3b, 0xb6, 0x47, 0xf5, 0xee, 0x2c, 0xb3, 0xe3, 0x14,
+	0x5f, 0x02, 0x6f, 0x00, 0x12, 0x17, 0x3c, 0x00, 0x0f, 0xc0, 0x0d, 0x37, 0x5c, 0xf5, 0x09, 0x10,
+	0xf7, 0x3c, 0x01, 0xea, 0x3b, 0xa0, 0x9d, 0x99, 0x5d, 0xef, 0x87, 0x9d, 0xba, 0xbd, 0x88, 0xb8,
+	0xdb, 0x39, 0xe7, 0x77, 0xbe, 0x67, 0xce, 0x9c, 0x59, 0x38, 0xd7, 0x1f, 0x71, 0xe6, 0x51, 0x41,
+	0xba, 0x38, 0xa0, 0xdd, 0x00, 0xf7, 0x5f, 0xe0, 0x21, 0x09, 0x3b, 0x01, 0x67, 0x82, 0xa1, 0x46,
+	0xcc, 0xec, 0xe0, 0x80, 0x9a, 0x66, 0x06, 0xda, 0xa3, 0xfe, 0x88, 0x85, 0x42, 0x21, 0xcd, 0x9d,
+	0x2c, 0x6f, 0x42, 0xc7, 0xae, 0x83, 0x03, 0xaa, 0xb9, 0x5b, 0x8a, 0x3b, 0xf1, 0x58, 0xd8, 0xed,
+	0x33, 0xcf, 0x63, 0xbe, 0x62, 0x58, 0xbf, 0x19, 0xb0, 0x71, 0x10, 0x81, 0xc3, 0xc3, 0x08, 0x41,
+	0x6c, 0xf2, 0xcd, 0x84, 0x84, 0x02, 0x5d, 0x83, 0x4a, 0x24, 0xc2, 0x44, 0xdb, 0xd8, 0x35, 0xae,
+	0xd6, 0xf7, 0x51, 0x67, 0xa6, 0xa1, 0x73, 0x28, 0x39, 0xb6, 0x46, 0xa0, 0x3b, 0xd0, 0x50, 0xf6,
+	0x04, 0xe6, 0x43, 0x22, 0xda, 0x25, 0x29, 0xb1, 0x95, 0x96, 0x90, 0x26, 0x9e, 0x4a, 0xb6, 0x5d,
+	0xef, 0xcd, 0x16, 0xe8, 0x06, 0x54, 0xe3, 0x90, 0xdb, 0xe5, 0xdd, 0x72, 0x5e, 0xee, 0xb1, 0xe2,
+	0x3d, 0xf4, 0x07, 0xcc, 0x4e, 0x80, 0xd6, 0x07, 0x70, 0x26, 0xeb, 0x73, 0x18, 0x30, 0x3f, 0x24,
+	0xe8, 0x22, 0xac, 0x49, 0xdd, 0xa1, 0x23, 0x55, 0x10, 0xe9, 0x7b, 0xd5, 0x56, 0xde, 0x69, 0xb0,
+	0xf5, 0x93, 0x01, 0x9b, 0xf7, 0x89, 0x38, 0x20, 0xa1, 0x78, 0x4e, 0x43, 0xda, 0x1b, 0x27, 0x31,
+	0x23, 0x58, 0xc1, 0x82, 0x79, 0x52, 0xaa, 0x66, 0xcb, 0xef, 0x54, 0x1e, 0x4a, 0x6f, 0x9d, 0x87,
+	0xf2, 0xf2, 0x79, 0xb0, 0x9e, 0xc2, 0xd9, 0xbc, 0x53, 0x3a, 0xa8, 0x3b, 0xd0, 0xd0, 0x81, 0x3b,
+	0xd4, 0x1f, 0x30, 0x5d, 0x8f, 0x85, 0x59, 0xaa, 0x07, 0xb3, 0x85, 0xf5, 0x9d, 0x01, 0x5b, 0xf7,
+	0x89, 0x50, 0x91, 0x3f, 0x27, 0x3c, 0xa4, 0xcc, 0x3f, 0xe1, 0x0a, 0x5b, 0x37, 0xa1, 0x5d, 0x74,
+	0x41, 0xc7, 0xd6, 0x86, 0xd5, 0x23, 0x45, 0xd2, 0x49, 0x8f, 0x97, 0xd6, 0xf7, 0x86, 0x14, 0x53,
+	0x3a, 0xb4, 0x58, 0x78, 0xd2, 0xae, 0xff, 0x55, 0x82, 0xed, 0x39, 0x4e, 0x68, 0xe7, 0xaf, 0xc0,
+	0x3a, 0xf6, 0x5d, 0xce, 0xa8, 0xeb, 0x64, 0x83, 0x68, 0x6a, 0xb2, 0x96, 0x40, 0x37, 0xe1, 0x6c,
+	0x0c, 0xec, 0x71, 0xec, 0xf7, 0x47, 0x09, 0xbe, 0x24, 0xf1, 0x67, 0x34, 0xf7, 0x40, 0x32, 0xe7,
+	0x48, 0x29, 0xd7, 0x13, 0xa9, 0x72, 0x46, 0x2a, 0xe3, 0x1d, 0xba, 0x04, 0x4d, 0xb5, 0xf7, 0x13,
+	0xf4, 0x8a, 0x44, 0xaf, 0xf5, 0xd3, 0x05, 0x40, 0x7b, 0xd0, 0x18, 0x4c, 0xc6, 0xe3, 0x04, 0x74,
+	0x4a, 0x82, 0xea, 0x11, 0x2d, 0x86, 0x5c, 0x87, 0xd3, 0x1e, 0x1d, 0x93, 0x50, 0x30, 0x7f, 0xa6,
+	0xac, 0x22, 0x71, 0xad, 0x84, 0x11, 0x83, 0xdf, 0x83, 0x56, 0x30, 0xc6, 0x62, 0xc0, 0xb8, 0x97,
+	0x60, 0x57, 0x25, 0x76, 0x3d, 0xa6, 0x6b, 0xa8, 0xf5, 0x83, 0x21, 0x93, 0x2a, 0x93, 0x4e, 0xf8,
+	0x23, 0x22, 0xb0, 0x8b, 0x05, 0x3e, 0xe9, 0xd2, 0xfe, 0xb1, 0x0a, 0xe6, 0x3c, 0x2f, 0x74, 0x6d,
+	0x03, 0xd8, 0x4c, 0xab, 0x76, 0x3c, 0x0d, 0x68, 0x1b, 0xb2, 0x47, 0xdd, 0xed, 0xa4, 0xfb, 0x72,
+	0x67, 0xb1, 0xa2, 0xb4, 0x03, 0x09, 0x6f, 0xa3, 0x57, 0x24, 0xa2, 0xaf, 0xa1, 0xe9, 0x31, 0x97,
+	0x8c, 0x67, 0xa6, 0x4a, 0xd2, 0xd4, 0xad, 0xa5, 0x4d, 0x3d, 0x8a, 0xc4, 0x13, 0xea, 0x9a, 0x97,
+	0x5e, 0x9a, 0x3f, 0x96, 0x60, 0x2d, 0x03, 0x40, 0xe7, 0x01, 0x94, 0x41, 0x1f, 0xeb, 0x4e, 0x59,
+	0xb3, 0x6b, 0x92, 0xf2, 0x19, 0xf6, 0x08, 0xea, 0xc0, 0x06, 0xe9, 0x3b, 0x03, 0xca, 0xbd, 0x97,
+	0x98, 0x93, 0xdc, 0x8e, 0x3d, 0x4d, 0xfa, 0x9f, 0x68, 0x4e, 0xbc, 0x03, 0x2e, 0xc3, 0x7a, 0x02,
+	0x7e, 0x41, 0xa6, 0x0e, 0x75, 0xf5, 0x3e, 0x5d, 0x8b, 0xc9, 0x9f, 0x92, 0xe9, 0x43, 0x17, 0x1d,
+	0xc2, 0x05, 0x0f, 0x53, 0xdf, 0xe1, 0x04, 0xbb, 0xcc, 0x1f, 0x4f, 0x8b, 0x26, 0xd4, 0x86, 0x3d,
+	0x17, 0xa1, 0x6c, 0x0d, 0xca, 0x1b, 0xbb, 0x07, 0xff, 0x4b, 0x94, 0xbc, 0xe4, 0x54, 0x90, 0xa2,
+	0x16, 0xb5, 0xa3, 0x77, 0x62, 0x2d, 0x12, 0x95, 0x53, 0x63, 0xfe, 0x5e, 0xd6, 0x97, 0x5f, 0xae,
+	0x16, 0x7b, 0xb9, 0x8d, 0xa5, 0x92, 0x93, 0xb9, 0xb7, 0x6e, 0x43, 0x3b, 0x3e, 0x9d, 0x7d, 0xe6,
+	0x0b, 0x4c, 0x7d, 0xc2, 0xf5, 0xe9, 0xd6, 0x39, 0x8a, 0x4f, 0xef, 0x61, 0xcc, 0x56, 0xc7, 0x7b,
+	0xbe, 0x64, 0xea, 0xc6, 0x98, 0x23, 0xa9, 0x6d, 0xde, 0x81, 0xed, 0xa2, 0x64, 0x36, 0x6b, 0x5b,
+	0x79, 0xd1, 0x38, 0x63, 0x17, 0xa0, 0x8e, 0x79, 0xdf, 0x99, 0x84, 0xc4, 0x09, 0x89, 0x90, 0xd9,
+	0xa9, 0xda, 0x35, 0xcc, 0xfb, 0xcf, 0x42, 0xf2, 0x84, 0x88, 0x45, 0xe5, 0xae, 0x2c, 0x2a, 0xb7,
+	0x05, 0x8d, 0x01, 0xf5, 0x87, 0x84, 0x07, 0x9c, 0xfa, 0x22, 0x6c, 0xaf, 0xee, 0x96, 0xaf, 0xd6,
+	0xec, 0x0c, 0x2d, 0xea, 0x45, 0x2f, 0x08, 0xf7, 0xc9, 0xac, 0xcd, 0x54, 0xd5, 0x8e, 0x50, 0xd4,
+	0x58, 0xd5, 0x3e, 0x6c, 0xca, 0x62, 0x16, 0x8c, 0xd7, 0x24, 0x7a, 0x23, 0x62, 0xe6, 0xcc, 0x5b,
+	0xbf, 0x18, 0xd0, 0x7e, 0x80, 0xf5, 0x95, 0xfe, 0x98, 0x93, 0xa8, 0x34, 0xe2, 0xa4, 0x67, 0x97,
+	0xb3, 0xca, 0x8e, 0x47, 0x64, 0xdd, 0xaa, 0xb6, 0x5e, 0x59, 0x1f, 0xc2, 0xf6, 0x1c, 0xdf, 0x74,
+	0x67, 0xd9, 0x83, 0xc6, 0x08, 0x87, 0x4e, 0xa0, 0xe9, 0x7a, 0x44, 0xa9, 0x8f, 0x70, 0x18, 0x43,
+	0xad, 0x3f, 0x0d, 0x40, 0x0f, 0x66, 0xeb, 0xff, 0x48, 0x58, 0x85, 0x41, 0x64, 0xe5, 0x2d, 0x06,
+	0x91, 0xdb, 0xb0, 0x91, 0x89, 0x68, 0xf9, 0x64, 0xfc, 0x6d, 0xc0, 0x99, 0x67, 0x01, 0x27, 0x47,
+	0x5a, 0xf7, 0x3b, 0x0d, 0x01, 0x77, 0xf5, 0x60, 0xa8, 0xd3, 0x11, 0xea, 0xde, 0xba, 0x30, 0x1f,
+	0x8d, 0x54, 0x3e, 0x42, 0x74, 0x17, 0x1a, 0xec, 0x88, 0xf0, 0x31, 0x9e, 0x3a, 0x62, 0x1a, 0xa8,
+	0xb4, 0x34, 0xf7, 0xb7, 0xb3, 0x8d, 0xf9, 0x73, 0x85, 0x78, 0x3a, 0x0d, 0x88, 0x5d, 0x67, 0xb3,
+	0x45, 0xd4, 0x67, 0xd9, 0x44, 0x04, 0x13, 0xe1, 0xb8, 0x94, 0xeb, 0x63, 0x5a, 0x53, 0x94, 0x8f,
+	0x29, 0xb7, 0xfe, 0x29, 0xc1, 0x8e, 0x8c, 0x4f, 0x6f, 0x6d, 0xe2, 0xea, 0x40, 0xdf, 0xb1, 0xec,
+	0x99, 0x12, 0x95, 0x96, 0x2f, 0x11, 0x7a, 0x04, 0x55, 0x7d, 0xf0, 0xe2, 0x49, 0xfc, 0xfd, 0x6c,
+	0x84, 0xc7, 0x79, 0xd9, 0xb9, 0x4f, 0x85, 0x4d, 0x06, 0x76, 0xa2, 0xa2, 0x98, 0xf2, 0x95, 0xb7,
+	0x48, 0xb9, 0xf9, 0x1c, 0x2a, 0x4a, 0x23, 0xba, 0x00, 0xc0, 0x49, 0xc0, 0x42, 0x2a, 0x18, 0x9f,
+	0xea, 0x4e, 0x9c, 0xa2, 0xa0, 0x16, 0x94, 0x39, 0x19, 0xe8, 0x9e, 0x1b, 0x7d, 0x22, 0x13, 0xaa,
+	0x9c, 0x1c, 0xd1, 0xd4, 0xa8, 0x94, 0xac, 0xad, 0x5f, 0x0d, 0xd8, 0xcc, 0xed, 0x26, 0xbd, 0x15,
+	0x9f, 0x41, 0xcb, 0x63, 0x2e, 0x1d, 0x50, 0xe2, 0x3a, 0x44, 0x3d, 0x18, 0xf4, 0x65, 0x7f, 0x6d,
+	0x4e, 0x1a, 0xf2, 0xe2, 0x9d, 0x7b, 0x52, 0xc4, 0x5e, 0x8f, 0x75, 0xa8, 0x75, 0x98, 0x9e, 0x70,
+	0x4b, 0x99, 0x09, 0xd7, 0xdc, 0x81, 0x8a, 0x02, 0x45, 0xef, 0x8e, 0x00, 0x8b, 0x51, 0xfc, 0xee,
+	0x88, 0xbe, 0xad, 0x1e, 0x9c, 0x5f, 0x90, 0x6f, 0xed, 0xef, 0x47, 0x50, 0xe3, 0xfa, 0x3b, 0x76,
+	0xf4, 0xe2, 0x12, 0x8e, 0xda, 0x33, 0xa9, 0xfd, 0x9f, 0x57, 0xa1, 0xa9, 0xf9, 0x4f, 0x08, 0x3f,
+	0xa2, 0xfd, 0x28, 0x0b, 0x8d, 0xf4, 0xcb, 0x0a, 0xed, 0x65, 0x55, 0xce, 0x79, 0x29, 0x9a, 0xd6,
+	0x71, 0x10, 0xed, 0xec, 0x57, 0xd0, 0xcc, 0xbe, 0x6e, 0xd0, 0xc5, 0xe2, 0x58, 0x53, 0x78, 0x90,
+	0x99, 0xff, 0x3f, 0x1e, 0xa4, 0x95, 0x63, 0x68, 0xe5, 0x1f, 0x18, 0xe8, 0x52, 0x41, 0x72, 0xde,
+	0x1b, 0xc8, 0xbc, 0xfc, 0x26, 0x98, 0x36, 0xe1, 0xc2, 0xe9, 0xc2, 0x3b, 0x00, 0x15, 0x85, 0xe7,
+	0xbe, 0x56, 0xcc, 0x2b, 0x6f, 0xc4, 0x69, 0x2b, 0x43, 0x40, 0xc5, 0xf1, 0x0e, 0x5d, 0x79, 0xf3,
+	0x00, 0xa8, 0xec, 0x5c, 0x5d, 0x76, 0x52, 0x8c, 0xc2, 0x29, 0x5c, 0x50, 0xf9, 0x70, 0x16, 0xdd,
+	0xae, 0xf9, 0x70, 0x16, 0xdf, 0x74, 0x36, 0xd4, 0x53, 0x3d, 0x1f, 0xed, 0x16, 0xe4, 0xf2, 0x9a,
+	0xf7, 0x8e, 0x41, 0x68, 0x9d, 0x5f, 0xc0, 0x29, 0xb9, 0xad, 0x91, 0x75, 0xec, 0x5e, 0x57, 0xfa,
+	0x96, 0x39, 0x0f, 0x56, 0xe5, 0xd5, 0x6b, 0xb3, 0xd4, 0x2a, 0xa1, 0x6f, 0x75, 0x63, 0xc8, 0x1f,
+	0x38, 0x74, 0x6d, 0xf9, 0x2e, 0x68, 0x5e, 0x5f, 0x0a, 0x9b, 0xb5, 0x6c, 0xb6, 0x5e, 0xbd, 0x36,
+	0x1b, 0xb3, 0xdf, 0x20, 0x2d, 0xe3, 0xe0, 0xf6, 0x97, 0xb7, 0x86, 0x2c, 0x69, 0x94, 0x1d, 0xc6,
+	0x87, 0xdd, 0xd4, 0xff, 0x1b, 0xea, 0x0f, 0x38, 0xee, 0xca, 0xdf, 0x37, 0xdd, 0x21, 0xeb, 0xa6,
+	0xff, 0xfb, 0xf4, 0x2a, 0x92, 0x7c, 0xe3, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x96, 0xbf, 0x8f,
+	0x84, 0x55, 0x12, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1122,6 +1442,9 @@
 	// Return the various build version fields that can be stored (e.g. in
 	// metadata.json).
 	GetTargetVersions(ctx context.Context, in *GetTargetVersionsRequest, opts ...grpc.CallOption) (*GetTargetVersionsResponse, error)
+	// Return the various metabuilder fields for a release builder.
+	// This can be run after InstallPackages.
+	GetBuilderMetadata(ctx context.Context, in *GetBuilderMetadataRequest, opts ...grpc.CallOption) (*GetBuilderMetadataResponse, error)
 	// Check if there is an available chrome prebuilt for the most recent
 	// version of chrome.
 	HasChromePrebuilt(ctx context.Context, in *HasChromePrebuiltRequest, opts ...grpc.CallOption) (*HasChromePrebuiltResponse, error)
@@ -1184,6 +1507,15 @@
 	return out, nil
 }
 
+func (c *packageServiceClient) GetBuilderMetadata(ctx context.Context, in *GetBuilderMetadataRequest, opts ...grpc.CallOption) (*GetBuilderMetadataResponse, error) {
+	out := new(GetBuilderMetadataResponse)
+	err := c.cc.Invoke(ctx, "/chromite.api.PackageService/GetBuilderMetadata", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *packageServiceClient) HasChromePrebuilt(ctx context.Context, in *HasChromePrebuiltRequest, opts ...grpc.CallOption) (*HasChromePrebuiltResponse, error) {
 	out := new(HasChromePrebuiltResponse)
 	err := c.cc.Invoke(ctx, "/chromite.api.PackageService/HasChromePrebuilt", in, out, opts...)
@@ -1236,6 +1568,9 @@
 	// Return the various build version fields that can be stored (e.g. in
 	// metadata.json).
 	GetTargetVersions(context.Context, *GetTargetVersionsRequest) (*GetTargetVersionsResponse, error)
+	// Return the various metabuilder fields for a release builder.
+	// This can be run after InstallPackages.
+	GetBuilderMetadata(context.Context, *GetBuilderMetadataRequest) (*GetBuilderMetadataResponse, error)
 	// Check if there is an available chrome prebuilt for the most recent
 	// version of chrome.
 	HasChromePrebuilt(context.Context, *HasChromePrebuiltRequest) (*HasChromePrebuiltResponse, error)
@@ -1270,6 +1605,9 @@
 func (*UnimplementedPackageServiceServer) GetTargetVersions(ctx context.Context, req *GetTargetVersionsRequest) (*GetTargetVersionsResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetTargetVersions not implemented")
 }
+func (*UnimplementedPackageServiceServer) GetBuilderMetadata(ctx context.Context, req *GetBuilderMetadataRequest) (*GetBuilderMetadataResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetBuilderMetadata not implemented")
+}
 func (*UnimplementedPackageServiceServer) HasChromePrebuilt(ctx context.Context, req *HasChromePrebuiltRequest) (*HasChromePrebuiltResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method HasChromePrebuilt not implemented")
 }
@@ -1359,6 +1697,24 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _PackageService_GetBuilderMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetBuilderMetadataRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(PackageServiceServer).GetBuilderMetadata(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/chromite.api.PackageService/GetBuilderMetadata",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(PackageServiceServer).GetBuilderMetadata(ctx, req.(*GetBuilderMetadataRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _PackageService_HasChromePrebuilt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(HasChromePrebuiltRequest)
 	if err := dec(in); err != nil {
@@ -1452,6 +1808,10 @@
 			Handler:    _PackageService_GetTargetVersions_Handler,
 		},
 		{
+			MethodName: "GetBuilderMetadata",
+			Handler:    _PackageService_GetBuilderMetadata_Handler,
+		},
+		{
 			MethodName: "HasChromePrebuilt",
 			Handler:    _PackageService_HasChromePrebuilt_Handler,
 		},
diff --git a/src/chromite/api/packages.proto b/src/chromite/api/packages.proto
index f458603..85971b0 100644
--- a/src/chromite/api/packages.proto
+++ b/src/chromite/api/packages.proto
@@ -87,6 +87,60 @@
   string platform_version = 7;
 }
 
+// The associated method can be run after InstallPackages.
+message GetBuilderMetadataRequest {
+  // The chroot path.
+  // Required if not in the default location.
+  chromiumos.Chroot chroot = 1;
+
+  // The build target to examine.
+  // Required.
+  chromiumos.BuildTarget build_target = 2;
+}
+
+
+message GetBuilderMetadataResponse {
+
+  message ModelMetadata {
+    // Name of model, such as "astronaut", "babymega", etc.
+    string model_name = 1;
+    // EC firmware version, such as "coral_v1.1.7292-04956f5df".
+    string ec_firmware_version = 2;
+    // Firmware key id, such as "CORALG"
+    string firmware_key_id = 3;
+    // Main readonly firmware version, such as "Google_Coral.10068.82.0".
+    string main_readonly_firmware_version = 4;
+    // Main readwrite firmware version, such as "Google_Coral.10068.82.0".
+    string main_readwrite_firmware_version = 5;
+  }
+
+  message BuildTargetMetadata {
+    // Name of build_target, such as auron_paine, coral, etc.
+    string build_target = 1;
+    // Name of android container branch, such as "git_pi-arc".
+    string android_container_branch = 2;
+    // Name of android container target, such as "cheets".
+    string android_container_target = 3;
+    // Name of android container version, such as "6387315".
+    string android_container_version = 4;
+    // Whether or not arc-use is enabled.
+    bool arc_use_set = 5;
+    // EC firmware version.
+    string ec_firmware_version = 6;
+    // Fingerprints.
+    repeated string fingerprints = 7;
+    // Kernel version, such as  "4.14.176-r1088".
+    string kernel_version = 8;
+    // Main firmware version, such as "Google_Auron_paine.6301.58.98.
+    string main_firmware_version = 9;
+  }
+
+  // Metadata for build targets.
+  repeated BuildTargetMetadata build_target_metadata = 1;
+  // Metadata for models.
+  repeated ModelMetadata model_metadata = 2;
+}
+
 // This can easily be generalized to a HasPrebuilt method if necessary, but
 // currently we have no use case for anything but Chrome, and making this
 // specifically for Chrome simplifies the calling code significantly.
@@ -222,6 +276,11 @@
   rpc GetTargetVersions(GetTargetVersionsRequest)
     returns (GetTargetVersionsResponse);
 
+  // Return the various metabuilder fields for a release builder.
+  // This can be run after InstallPackages.
+  rpc GetBuilderMetadata(GetBuilderMetadataRequest)
+    returns (GetBuilderMetadataResponse);
+
   // Check if there is an available chrome prebuilt for the most recent
   // version of chrome.
   rpc HasChromePrebuilt(HasChromePrebuiltRequest)