// Copyright 2017 The TensorFlow Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// =============================================================================

// Definitions for aggregated feature statistics for datasets.
// TODO(b/80075690): make a Javascript build rule for this.
// TODO(b/80075691): migrate Facets to use this.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.25.0
// 	protoc        v3.12.4
// source: tensorflow_metadata/proto/v0/statistics.proto

package v0

import (
	proto "github.com/golang/protobuf/proto"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

// The types supported by the feature statistics. When aggregating
// tf.Examples, if the bytelist contains a string, it is recommended to encode
// it here as STRING instead of BYTES in order to calculate string-specific
// statistical measures.
type FeatureNameStatistics_Type int32

const (
	FeatureNameStatistics_INT    FeatureNameStatistics_Type = 0
	FeatureNameStatistics_FLOAT  FeatureNameStatistics_Type = 1
	FeatureNameStatistics_STRING FeatureNameStatistics_Type = 2
	FeatureNameStatistics_BYTES  FeatureNameStatistics_Type = 3
	FeatureNameStatistics_STRUCT FeatureNameStatistics_Type = 4
)

// Enum value maps for FeatureNameStatistics_Type.
var (
	FeatureNameStatistics_Type_name = map[int32]string{
		0: "INT",
		1: "FLOAT",
		2: "STRING",
		3: "BYTES",
		4: "STRUCT",
	}
	FeatureNameStatistics_Type_value = map[string]int32{
		"INT":    0,
		"FLOAT":  1,
		"STRING": 2,
		"BYTES":  3,
		"STRUCT": 4,
	}
)

func (x FeatureNameStatistics_Type) Enum() *FeatureNameStatistics_Type {
	p := new(FeatureNameStatistics_Type)
	*p = x
	return p
}

func (x FeatureNameStatistics_Type) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (FeatureNameStatistics_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_tensorflow_metadata_proto_v0_statistics_proto_enumTypes[0].Descriptor()
}

func (FeatureNameStatistics_Type) Type() protoreflect.EnumType {
	return &file_tensorflow_metadata_proto_v0_statistics_proto_enumTypes[0]
}

func (x FeatureNameStatistics_Type) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use FeatureNameStatistics_Type.Descriptor instead.
func (FeatureNameStatistics_Type) EnumDescriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{7, 0}
}

// The type of the histogram. A standard histogram has equal-width buckets.
// The quantiles type is used for when the histogram message is used to store
// quantile information (by using equal-count buckets with variable widths).
type Histogram_HistogramType int32

const (
	Histogram_STANDARD  Histogram_HistogramType = 0
	Histogram_QUANTILES Histogram_HistogramType = 1
)

// Enum value maps for Histogram_HistogramType.
var (
	Histogram_HistogramType_name = map[int32]string{
		0: "STANDARD",
		1: "QUANTILES",
	}
	Histogram_HistogramType_value = map[string]int32{
		"STANDARD":  0,
		"QUANTILES": 1,
	}
)

func (x Histogram_HistogramType) Enum() *Histogram_HistogramType {
	p := new(Histogram_HistogramType)
	*p = x
	return p
}

func (x Histogram_HistogramType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Histogram_HistogramType) Descriptor() protoreflect.EnumDescriptor {
	return file_tensorflow_metadata_proto_v0_statistics_proto_enumTypes[1].Descriptor()
}

func (Histogram_HistogramType) Type() protoreflect.EnumType {
	return &file_tensorflow_metadata_proto_v0_statistics_proto_enumTypes[1]
}

func (x Histogram_HistogramType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Histogram_HistogramType.Descriptor instead.
func (Histogram_HistogramType) EnumDescriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{17, 0}
}

// A list of features statistics for different datasets. If you wish to compare
// different datasets using this list, then the DatasetFeatureStatistics
// entries should all contain the same list of features.
type DatasetFeatureStatisticsList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Datasets []*DatasetFeatureStatistics `protobuf:"bytes,1,rep,name=datasets,proto3" json:"datasets,omitempty"`
}

func (x *DatasetFeatureStatisticsList) Reset() {
	*x = DatasetFeatureStatisticsList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DatasetFeatureStatisticsList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DatasetFeatureStatisticsList) ProtoMessage() {}

func (x *DatasetFeatureStatisticsList) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[0]
	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 DatasetFeatureStatisticsList.ProtoReflect.Descriptor instead.
func (*DatasetFeatureStatisticsList) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{0}
}

func (x *DatasetFeatureStatisticsList) GetDatasets() []*DatasetFeatureStatistics {
	if x != nil {
		return x.Datasets
	}
	return nil
}

// The feature statistics for a single dataset.
type DatasetFeatureStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name of the dataset.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The number of examples in the dataset.
	NumExamples uint64 `protobuf:"varint,2,opt,name=num_examples,json=numExamples,proto3" json:"num_examples,omitempty"`
	// Only valid if the weight feature was specified.
	// Treats a missing weighted feature as zero.
	WeightedNumExamples float64 `protobuf:"fixed64,4,opt,name=weighted_num_examples,json=weightedNumExamples,proto3" json:"weighted_num_examples,omitempty"`
	// The feature statistics for the dataset.
	Features []*FeatureNameStatistics `protobuf:"bytes,3,rep,name=features,proto3" json:"features,omitempty"`
	// Cross feature statistics for the dataset.
	CrossFeatures []*CrossFeatureStatistics `protobuf:"bytes,5,rep,name=cross_features,json=crossFeatures,proto3" json:"cross_features,omitempty"`
}

func (x *DatasetFeatureStatistics) Reset() {
	*x = DatasetFeatureStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DatasetFeatureStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DatasetFeatureStatistics) ProtoMessage() {}

func (x *DatasetFeatureStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[1]
	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 DatasetFeatureStatistics.ProtoReflect.Descriptor instead.
func (*DatasetFeatureStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{1}
}

func (x *DatasetFeatureStatistics) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DatasetFeatureStatistics) GetNumExamples() uint64 {
	if x != nil {
		return x.NumExamples
	}
	return 0
}

func (x *DatasetFeatureStatistics) GetWeightedNumExamples() float64 {
	if x != nil {
		return x.WeightedNumExamples
	}
	return 0
}

func (x *DatasetFeatureStatistics) GetFeatures() []*FeatureNameStatistics {
	if x != nil {
		return x.Features
	}
	return nil
}

func (x *DatasetFeatureStatistics) GetCrossFeatures() []*CrossFeatureStatistics {
	if x != nil {
		return x.CrossFeatures
	}
	return nil
}

type CrossFeatureStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The path of feature x.
	PathX *Path `protobuf:"bytes,1,opt,name=path_x,json=pathX,proto3" json:"path_x,omitempty"`
	// The path of feature y.
	PathY *Path `protobuf:"bytes,2,opt,name=path_y,json=pathY,proto3" json:"path_y,omitempty"`
	// Number of occurrences of this feature cross in the data. If any of
	// the features in the cross is missing, the example is ignored.
	Count uint64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
	// Types that are assignable to CrossStats:
	//	*CrossFeatureStatistics_NumCrossStats
	//	*CrossFeatureStatistics_CategoricalCrossStats
	CrossStats isCrossFeatureStatistics_CrossStats `protobuf_oneof:"cross_stats"`
}

func (x *CrossFeatureStatistics) Reset() {
	*x = CrossFeatureStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CrossFeatureStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CrossFeatureStatistics) ProtoMessage() {}

func (x *CrossFeatureStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[2]
	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 CrossFeatureStatistics.ProtoReflect.Descriptor instead.
func (*CrossFeatureStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{2}
}

func (x *CrossFeatureStatistics) GetPathX() *Path {
	if x != nil {
		return x.PathX
	}
	return nil
}

func (x *CrossFeatureStatistics) GetPathY() *Path {
	if x != nil {
		return x.PathY
	}
	return nil
}

func (x *CrossFeatureStatistics) GetCount() uint64 {
	if x != nil {
		return x.Count
	}
	return 0
}

func (m *CrossFeatureStatistics) GetCrossStats() isCrossFeatureStatistics_CrossStats {
	if m != nil {
		return m.CrossStats
	}
	return nil
}

func (x *CrossFeatureStatistics) GetNumCrossStats() *NumericCrossStatistics {
	if x, ok := x.GetCrossStats().(*CrossFeatureStatistics_NumCrossStats); ok {
		return x.NumCrossStats
	}
	return nil
}

func (x *CrossFeatureStatistics) GetCategoricalCrossStats() *CategoricalCrossStatistics {
	if x, ok := x.GetCrossStats().(*CrossFeatureStatistics_CategoricalCrossStats); ok {
		return x.CategoricalCrossStats
	}
	return nil
}

type isCrossFeatureStatistics_CrossStats interface {
	isCrossFeatureStatistics_CrossStats()
}

type CrossFeatureStatistics_NumCrossStats struct {
	NumCrossStats *NumericCrossStatistics `protobuf:"bytes,4,opt,name=num_cross_stats,json=numCrossStats,proto3,oneof"`
}

type CrossFeatureStatistics_CategoricalCrossStats struct {
	CategoricalCrossStats *CategoricalCrossStatistics `protobuf:"bytes,5,opt,name=categorical_cross_stats,json=categoricalCrossStats,proto3,oneof"`
}

func (*CrossFeatureStatistics_NumCrossStats) isCrossFeatureStatistics_CrossStats() {}

func (*CrossFeatureStatistics_CategoricalCrossStats) isCrossFeatureStatistics_CrossStats() {}

type NumericCrossStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Pearson product-moment correlation coefficient.
	Correlation float32 `protobuf:"fixed32,1,opt,name=correlation,proto3" json:"correlation,omitempty"`
	// Standard covariance. E[(X-E[X])*(Y-E[Y])]
	Covariance float32 `protobuf:"fixed32,2,opt,name=covariance,proto3" json:"covariance,omitempty"`
}

func (x *NumericCrossStatistics) Reset() {
	*x = NumericCrossStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NumericCrossStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NumericCrossStatistics) ProtoMessage() {}

func (x *NumericCrossStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[3]
	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 NumericCrossStatistics.ProtoReflect.Descriptor instead.
func (*NumericCrossStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{3}
}

func (x *NumericCrossStatistics) GetCorrelation() float32 {
	if x != nil {
		return x.Correlation
	}
	return 0
}

func (x *NumericCrossStatistics) GetCovariance() float32 {
	if x != nil {
		return x.Covariance
	}
	return 0
}

type CategoricalCrossStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Lift *LiftStatistics `protobuf:"bytes,1,opt,name=lift,proto3" json:"lift,omitempty"`
}

func (x *CategoricalCrossStatistics) Reset() {
	*x = CategoricalCrossStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CategoricalCrossStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CategoricalCrossStatistics) ProtoMessage() {}

func (x *CategoricalCrossStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[4]
	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 CategoricalCrossStatistics.ProtoReflect.Descriptor instead.
func (*CategoricalCrossStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{4}
}

func (x *CategoricalCrossStatistics) GetLift() *LiftStatistics {
	if x != nil {
		return x.Lift
	}
	return nil
}

type LiftStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Lift information for each value of path_y. Lift is defined for each pair of
	// values (x,y) as P(path_y=y|path_x=x)/P(path_y=y).
	LiftSeries []*LiftSeries `protobuf:"bytes,1,rep,name=lift_series,json=liftSeries,proto3" json:"lift_series,omitempty"`
	// Weighted lift information for each value of path_y. Weighted lift is
	// defined for each pair of values (x,y) as P(path_y=y|path_x=x)/P(path_y=y)
	// where probabilities are computed over weighted example space.
	WeightedLiftSeries []*LiftSeries `protobuf:"bytes,2,rep,name=weighted_lift_series,json=weightedLiftSeries,proto3" json:"weighted_lift_series,omitempty"`
}

func (x *LiftStatistics) Reset() {
	*x = LiftStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LiftStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LiftStatistics) ProtoMessage() {}

func (x *LiftStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[5]
	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 LiftStatistics.ProtoReflect.Descriptor instead.
func (*LiftStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{5}
}

func (x *LiftStatistics) GetLiftSeries() []*LiftSeries {
	if x != nil {
		return x.LiftSeries
	}
	return nil
}

func (x *LiftStatistics) GetWeightedLiftSeries() []*LiftSeries {
	if x != nil {
		return x.WeightedLiftSeries
	}
	return nil
}

// Container for lift information for a specific y-value.
type LiftSeries struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The particular value of path_y corresponding to this LiftSeries. Each
	// element in lift_values corresponds to the lift a different x_value and
	// this specific y_value.
	//
	// Types that are assignable to YValue:
	//	*LiftSeries_YInt
	//	*LiftSeries_YString
	//	*LiftSeries_YBucket
	YValue isLiftSeries_YValue `protobuf_oneof:"y_value"`
	// The number of examples in which y_value appears.
	//
	// Types that are assignable to YCountValue:
	//	*LiftSeries_YCount
	//	*LiftSeries_WeightedYCount
	YCountValue isLiftSeries_YCountValue `protobuf_oneof:"y_count_value"`
	// The lifts for a each path_x value and this y_value.
	LiftValues []*LiftSeries_LiftValue `protobuf:"bytes,6,rep,name=lift_values,json=liftValues,proto3" json:"lift_values,omitempty"`
}

func (x *LiftSeries) Reset() {
	*x = LiftSeries{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LiftSeries) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LiftSeries) ProtoMessage() {}

func (x *LiftSeries) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[6]
	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 LiftSeries.ProtoReflect.Descriptor instead.
func (*LiftSeries) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{6}
}

func (m *LiftSeries) GetYValue() isLiftSeries_YValue {
	if m != nil {
		return m.YValue
	}
	return nil
}

func (x *LiftSeries) GetYInt() int32 {
	if x, ok := x.GetYValue().(*LiftSeries_YInt); ok {
		return x.YInt
	}
	return 0
}

func (x *LiftSeries) GetYString() string {
	if x, ok := x.GetYValue().(*LiftSeries_YString); ok {
		return x.YString
	}
	return ""
}

func (x *LiftSeries) GetYBucket() *LiftSeries_Bucket {
	if x, ok := x.GetYValue().(*LiftSeries_YBucket); ok {
		return x.YBucket
	}
	return nil
}

func (m *LiftSeries) GetYCountValue() isLiftSeries_YCountValue {
	if m != nil {
		return m.YCountValue
	}
	return nil
}

func (x *LiftSeries) GetYCount() uint64 {
	if x, ok := x.GetYCountValue().(*LiftSeries_YCount); ok {
		return x.YCount
	}
	return 0
}

func (x *LiftSeries) GetWeightedYCount() float64 {
	if x, ok := x.GetYCountValue().(*LiftSeries_WeightedYCount); ok {
		return x.WeightedYCount
	}
	return 0
}

func (x *LiftSeries) GetLiftValues() []*LiftSeries_LiftValue {
	if x != nil {
		return x.LiftValues
	}
	return nil
}

type isLiftSeries_YValue interface {
	isLiftSeries_YValue()
}

type LiftSeries_YInt struct {
	YInt int32 `protobuf:"varint,1,opt,name=y_int,json=yInt,proto3,oneof"`
}

type LiftSeries_YString struct {
	YString string `protobuf:"bytes,2,opt,name=y_string,json=yString,proto3,oneof"`
}

type LiftSeries_YBucket struct {
	YBucket *LiftSeries_Bucket `protobuf:"bytes,3,opt,name=y_bucket,json=yBucket,proto3,oneof"`
}

func (*LiftSeries_YInt) isLiftSeries_YValue() {}

func (*LiftSeries_YString) isLiftSeries_YValue() {}

func (*LiftSeries_YBucket) isLiftSeries_YValue() {}

type isLiftSeries_YCountValue interface {
	isLiftSeries_YCountValue()
}

type LiftSeries_YCount struct {
	YCount uint64 `protobuf:"varint,4,opt,name=y_count,json=yCount,proto3,oneof"`
}

type LiftSeries_WeightedYCount struct {
	WeightedYCount float64 `protobuf:"fixed64,5,opt,name=weighted_y_count,json=weightedYCount,proto3,oneof"`
}

func (*LiftSeries_YCount) isLiftSeries_YCountValue() {}

func (*LiftSeries_WeightedYCount) isLiftSeries_YCountValue() {}

// The complete set of statistics for a given feature name for a dataset.
type FeatureNameStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// One can identify a field either by the name (for simple fields), or by
	// a path (for structured fields). Note that:
	// name: "foo"
	// is equivalent to:
	// path: {step:"foo"}
	// Note: this oneof must be consistently either name or path across all
	// FeatureNameStatistics in one DatasetFeatureStatistics.
	//
	// Types that are assignable to FieldId:
	//	*FeatureNameStatistics_Name
	//	*FeatureNameStatistics_Path
	FieldId isFeatureNameStatistics_FieldId `protobuf_oneof:"field_id"`
	// The data type of the feature
	Type FeatureNameStatistics_Type `protobuf:"varint,2,opt,name=type,proto3,enum=tensorflow.metadata.v0.FeatureNameStatistics_Type" json:"type,omitempty"`
	// The statistics of the values of the feature.
	//
	// Types that are assignable to Stats:
	//	*FeatureNameStatistics_NumStats
	//	*FeatureNameStatistics_StringStats
	//	*FeatureNameStatistics_BytesStats
	//	*FeatureNameStatistics_StructStats
	Stats isFeatureNameStatistics_Stats `protobuf_oneof:"stats"`
	// Any custom statistics can be stored in this list.
	CustomStats []*CustomStatistic `protobuf:"bytes,6,rep,name=custom_stats,json=customStats,proto3" json:"custom_stats,omitempty"`
}

func (x *FeatureNameStatistics) Reset() {
	*x = FeatureNameStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FeatureNameStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FeatureNameStatistics) ProtoMessage() {}

func (x *FeatureNameStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[7]
	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 FeatureNameStatistics.ProtoReflect.Descriptor instead.
func (*FeatureNameStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{7}
}

func (m *FeatureNameStatistics) GetFieldId() isFeatureNameStatistics_FieldId {
	if m != nil {
		return m.FieldId
	}
	return nil
}

func (x *FeatureNameStatistics) GetName() string {
	if x, ok := x.GetFieldId().(*FeatureNameStatistics_Name); ok {
		return x.Name
	}
	return ""
}

func (x *FeatureNameStatistics) GetPath() *Path {
	if x, ok := x.GetFieldId().(*FeatureNameStatistics_Path); ok {
		return x.Path
	}
	return nil
}

func (x *FeatureNameStatistics) GetType() FeatureNameStatistics_Type {
	if x != nil {
		return x.Type
	}
	return FeatureNameStatistics_INT
}

func (m *FeatureNameStatistics) GetStats() isFeatureNameStatistics_Stats {
	if m != nil {
		return m.Stats
	}
	return nil
}

func (x *FeatureNameStatistics) GetNumStats() *NumericStatistics {
	if x, ok := x.GetStats().(*FeatureNameStatistics_NumStats); ok {
		return x.NumStats
	}
	return nil
}

func (x *FeatureNameStatistics) GetStringStats() *StringStatistics {
	if x, ok := x.GetStats().(*FeatureNameStatistics_StringStats); ok {
		return x.StringStats
	}
	return nil
}

func (x *FeatureNameStatistics) GetBytesStats() *BytesStatistics {
	if x, ok := x.GetStats().(*FeatureNameStatistics_BytesStats); ok {
		return x.BytesStats
	}
	return nil
}

func (x *FeatureNameStatistics) GetStructStats() *StructStatistics {
	if x, ok := x.GetStats().(*FeatureNameStatistics_StructStats); ok {
		return x.StructStats
	}
	return nil
}

func (x *FeatureNameStatistics) GetCustomStats() []*CustomStatistic {
	if x != nil {
		return x.CustomStats
	}
	return nil
}

type isFeatureNameStatistics_FieldId interface {
	isFeatureNameStatistics_FieldId()
}

type FeatureNameStatistics_Name struct {
	// The feature name
	Name string `protobuf:"bytes,1,opt,name=name,proto3,oneof"`
}

type FeatureNameStatistics_Path struct {
	// The path of the feature.
	Path *Path `protobuf:"bytes,8,opt,name=path,proto3,oneof"`
}

func (*FeatureNameStatistics_Name) isFeatureNameStatistics_FieldId() {}

func (*FeatureNameStatistics_Path) isFeatureNameStatistics_FieldId() {}

type isFeatureNameStatistics_Stats interface {
	isFeatureNameStatistics_Stats()
}

type FeatureNameStatistics_NumStats struct {
	NumStats *NumericStatistics `protobuf:"bytes,3,opt,name=num_stats,json=numStats,proto3,oneof"`
}

type FeatureNameStatistics_StringStats struct {
	StringStats *StringStatistics `protobuf:"bytes,4,opt,name=string_stats,json=stringStats,proto3,oneof"`
}

type FeatureNameStatistics_BytesStats struct {
	BytesStats *BytesStatistics `protobuf:"bytes,5,opt,name=bytes_stats,json=bytesStats,proto3,oneof"`
}

type FeatureNameStatistics_StructStats struct {
	StructStats *StructStatistics `protobuf:"bytes,7,opt,name=struct_stats,json=structStats,proto3,oneof"`
}

func (*FeatureNameStatistics_NumStats) isFeatureNameStatistics_Stats() {}

func (*FeatureNameStatistics_StringStats) isFeatureNameStatistics_Stats() {}

func (*FeatureNameStatistics_BytesStats) isFeatureNameStatistics_Stats() {}

func (*FeatureNameStatistics_StructStats) isFeatureNameStatistics_Stats() {}

// Common weighted statistics for all feature types. Statistics counting number
// of values (i.e., avg_num_values and tot_num_values) include NaNs.
// If the weighted column is missing, then this counts as a weight of 1
// for that example.
type WeightedCommonStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Weighted number of examples not missing.
	NumNonMissing float64 `protobuf:"fixed64,1,opt,name=num_non_missing,json=numNonMissing,proto3" json:"num_non_missing,omitempty"`
	// Weighted number of examples missing.
	// Note that if the weighted column is zero, this does not count
	// as missing.
	NumMissing float64 `protobuf:"fixed64,2,opt,name=num_missing,json=numMissing,proto3" json:"num_missing,omitempty"`
	// average number of values, weighted by the number of examples.
	AvgNumValues float64 `protobuf:"fixed64,3,opt,name=avg_num_values,json=avgNumValues,proto3" json:"avg_num_values,omitempty"`
	// tot_num_values = avg_num_values * num_non_missing.
	// This is calculated directly, so should have less numerical error.
	TotNumValues float64 `protobuf:"fixed64,4,opt,name=tot_num_values,json=totNumValues,proto3" json:"tot_num_values,omitempty"`
}

func (x *WeightedCommonStatistics) Reset() {
	*x = WeightedCommonStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WeightedCommonStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WeightedCommonStatistics) ProtoMessage() {}

func (x *WeightedCommonStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[8]
	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 WeightedCommonStatistics.ProtoReflect.Descriptor instead.
func (*WeightedCommonStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{8}
}

func (x *WeightedCommonStatistics) GetNumNonMissing() float64 {
	if x != nil {
		return x.NumNonMissing
	}
	return 0
}

func (x *WeightedCommonStatistics) GetNumMissing() float64 {
	if x != nil {
		return x.NumMissing
	}
	return 0
}

func (x *WeightedCommonStatistics) GetAvgNumValues() float64 {
	if x != nil {
		return x.AvgNumValues
	}
	return 0
}

func (x *WeightedCommonStatistics) GetTotNumValues() float64 {
	if x != nil {
		return x.TotNumValues
	}
	return 0
}

// Stores the name and value of any custom statistic. The value can be a string,
// double, or histogram.
type CustomStatistic struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are assignable to Val:
	//	*CustomStatistic_Num
	//	*CustomStatistic_Str
	//	*CustomStatistic_Histogram
	//	*CustomStatistic_RankHistogram
	Val isCustomStatistic_Val `protobuf_oneof:"val"`
}

func (x *CustomStatistic) Reset() {
	*x = CustomStatistic{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CustomStatistic) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CustomStatistic) ProtoMessage() {}

func (x *CustomStatistic) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[9]
	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 CustomStatistic.ProtoReflect.Descriptor instead.
func (*CustomStatistic) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{9}
}

func (x *CustomStatistic) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (m *CustomStatistic) GetVal() isCustomStatistic_Val {
	if m != nil {
		return m.Val
	}
	return nil
}

func (x *CustomStatistic) GetNum() float64 {
	if x, ok := x.GetVal().(*CustomStatistic_Num); ok {
		return x.Num
	}
	return 0
}

func (x *CustomStatistic) GetStr() string {
	if x, ok := x.GetVal().(*CustomStatistic_Str); ok {
		return x.Str
	}
	return ""
}

func (x *CustomStatistic) GetHistogram() *Histogram {
	if x, ok := x.GetVal().(*CustomStatistic_Histogram); ok {
		return x.Histogram
	}
	return nil
}

func (x *CustomStatistic) GetRankHistogram() *RankHistogram {
	if x, ok := x.GetVal().(*CustomStatistic_RankHistogram); ok {
		return x.RankHistogram
	}
	return nil
}

type isCustomStatistic_Val interface {
	isCustomStatistic_Val()
}

type CustomStatistic_Num struct {
	Num float64 `protobuf:"fixed64,2,opt,name=num,proto3,oneof"`
}

type CustomStatistic_Str struct {
	Str string `protobuf:"bytes,3,opt,name=str,proto3,oneof"`
}

type CustomStatistic_Histogram struct {
	Histogram *Histogram `protobuf:"bytes,4,opt,name=histogram,proto3,oneof"`
}

type CustomStatistic_RankHistogram struct {
	RankHistogram *RankHistogram `protobuf:"bytes,5,opt,name=rank_histogram,json=rankHistogram,proto3,oneof"`
}

func (*CustomStatistic_Num) isCustomStatistic_Val() {}

func (*CustomStatistic_Str) isCustomStatistic_Val() {}

func (*CustomStatistic_Histogram) isCustomStatistic_Val() {}

func (*CustomStatistic_RankHistogram) isCustomStatistic_Val() {}

// Statistics for a numeric feature in a dataset.
type NumericStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CommonStats *CommonStatistics `protobuf:"bytes,1,opt,name=common_stats,json=commonStats,proto3" json:"common_stats,omitempty"`
	// The mean of the values
	Mean float64 `protobuf:"fixed64,2,opt,name=mean,proto3" json:"mean,omitempty"`
	// The standard deviation of the values
	StdDev float64 `protobuf:"fixed64,3,opt,name=std_dev,json=stdDev,proto3" json:"std_dev,omitempty"`
	// The number of values that equal 0
	NumZeros uint64 `protobuf:"varint,4,opt,name=num_zeros,json=numZeros,proto3" json:"num_zeros,omitempty"`
	// The minimum value
	Min float64 `protobuf:"fixed64,5,opt,name=min,proto3" json:"min,omitempty"`
	// The median value
	Median float64 `protobuf:"fixed64,6,opt,name=median,proto3" json:"median,omitempty"`
	// The maximum value
	Max float64 `protobuf:"fixed64,7,opt,name=max,proto3" json:"max,omitempty"`
	// The histogram(s) of the feature values.
	Histograms []*Histogram `protobuf:"bytes,8,rep,name=histograms,proto3" json:"histograms,omitempty"`
	// Weighted statistics for the feature, if the values have weights.
	WeightedNumericStats *WeightedNumericStatistics `protobuf:"bytes,9,opt,name=weighted_numeric_stats,json=weightedNumericStats,proto3" json:"weighted_numeric_stats,omitempty"`
}

func (x *NumericStatistics) Reset() {
	*x = NumericStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NumericStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NumericStatistics) ProtoMessage() {}

func (x *NumericStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[10]
	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 NumericStatistics.ProtoReflect.Descriptor instead.
func (*NumericStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{10}
}

func (x *NumericStatistics) GetCommonStats() *CommonStatistics {
	if x != nil {
		return x.CommonStats
	}
	return nil
}

func (x *NumericStatistics) GetMean() float64 {
	if x != nil {
		return x.Mean
	}
	return 0
}

func (x *NumericStatistics) GetStdDev() float64 {
	if x != nil {
		return x.StdDev
	}
	return 0
}

func (x *NumericStatistics) GetNumZeros() uint64 {
	if x != nil {
		return x.NumZeros
	}
	return 0
}

func (x *NumericStatistics) GetMin() float64 {
	if x != nil {
		return x.Min
	}
	return 0
}

func (x *NumericStatistics) GetMedian() float64 {
	if x != nil {
		return x.Median
	}
	return 0
}

func (x *NumericStatistics) GetMax() float64 {
	if x != nil {
		return x.Max
	}
	return 0
}

func (x *NumericStatistics) GetHistograms() []*Histogram {
	if x != nil {
		return x.Histograms
	}
	return nil
}

func (x *NumericStatistics) GetWeightedNumericStats() *WeightedNumericStatistics {
	if x != nil {
		return x.WeightedNumericStats
	}
	return nil
}

// Statistics for a string feature in a dataset.
type StringStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CommonStats *CommonStatistics `protobuf:"bytes,1,opt,name=common_stats,json=commonStats,proto3" json:"common_stats,omitempty"`
	// The number of unique values
	Unique uint64 `protobuf:"varint,2,opt,name=unique,proto3" json:"unique,omitempty"`
	// A sorted list of the most-frequent values and their frequencies, with
	// the most-frequent being first.
	TopValues []*StringStatistics_FreqAndValue `protobuf:"bytes,3,rep,name=top_values,json=topValues,proto3" json:"top_values,omitempty"`
	// The average length of the values
	AvgLength float32 `protobuf:"fixed32,4,opt,name=avg_length,json=avgLength,proto3" json:"avg_length,omitempty"`
	// The rank histogram for the values of the feature.
	// The rank is used to measure of how commonly the value is found in the
	// dataset. The most common value would have a rank of 1, with the second-most
	// common value having a rank of 2, and so on.
	RankHistogram *RankHistogram `protobuf:"bytes,5,opt,name=rank_histogram,json=rankHistogram,proto3" json:"rank_histogram,omitempty"`
	// Weighted statistics for the feature, if the values have weights.
	WeightedStringStats *WeightedStringStatistics `protobuf:"bytes,6,opt,name=weighted_string_stats,json=weightedStringStats,proto3" json:"weighted_string_stats,omitempty"`
	// A vocabulary file, used for vocabularies too large to store in the proto
	// itself.  Note that the file may be relative to some context-dependent
	// directory.  E.g. in TFX the feature statistics will live in a PPP and
	// vocabulary file names will be relative to this PPP.
	VocabularyFile string `protobuf:"bytes,7,opt,name=vocabulary_file,json=vocabularyFile,proto3" json:"vocabulary_file,omitempty"`
}

func (x *StringStatistics) Reset() {
	*x = StringStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StringStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StringStatistics) ProtoMessage() {}

func (x *StringStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[11]
	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 StringStatistics.ProtoReflect.Descriptor instead.
func (*StringStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{11}
}

func (x *StringStatistics) GetCommonStats() *CommonStatistics {
	if x != nil {
		return x.CommonStats
	}
	return nil
}

func (x *StringStatistics) GetUnique() uint64 {
	if x != nil {
		return x.Unique
	}
	return 0
}

func (x *StringStatistics) GetTopValues() []*StringStatistics_FreqAndValue {
	if x != nil {
		return x.TopValues
	}
	return nil
}

func (x *StringStatistics) GetAvgLength() float32 {
	if x != nil {
		return x.AvgLength
	}
	return 0
}

func (x *StringStatistics) GetRankHistogram() *RankHistogram {
	if x != nil {
		return x.RankHistogram
	}
	return nil
}

func (x *StringStatistics) GetWeightedStringStats() *WeightedStringStatistics {
	if x != nil {
		return x.WeightedStringStats
	}
	return nil
}

func (x *StringStatistics) GetVocabularyFile() string {
	if x != nil {
		return x.VocabularyFile
	}
	return ""
}

// Statistics for a weighted numeric feature in a dataset.
type WeightedNumericStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The weighted mean of the values
	Mean float64 `protobuf:"fixed64,1,opt,name=mean,proto3" json:"mean,omitempty"`
	// The weighted standard deviation of the values
	StdDev float64 `protobuf:"fixed64,2,opt,name=std_dev,json=stdDev,proto3" json:"std_dev,omitempty"`
	// The weighted median of the values
	Median float64 `protobuf:"fixed64,3,opt,name=median,proto3" json:"median,omitempty"`
	// The histogram(s) of the weighted feature values.
	Histograms []*Histogram `protobuf:"bytes,4,rep,name=histograms,proto3" json:"histograms,omitempty"`
}

func (x *WeightedNumericStatistics) Reset() {
	*x = WeightedNumericStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WeightedNumericStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WeightedNumericStatistics) ProtoMessage() {}

func (x *WeightedNumericStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[12]
	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 WeightedNumericStatistics.ProtoReflect.Descriptor instead.
func (*WeightedNumericStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{12}
}

func (x *WeightedNumericStatistics) GetMean() float64 {
	if x != nil {
		return x.Mean
	}
	return 0
}

func (x *WeightedNumericStatistics) GetStdDev() float64 {
	if x != nil {
		return x.StdDev
	}
	return 0
}

func (x *WeightedNumericStatistics) GetMedian() float64 {
	if x != nil {
		return x.Median
	}
	return 0
}

func (x *WeightedNumericStatistics) GetHistograms() []*Histogram {
	if x != nil {
		return x.Histograms
	}
	return nil
}

// Statistics for a weighted string feature in a dataset.
type WeightedStringStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A sorted list of the most-frequent values and their weighted frequencies,
	// with the most-frequent being first.
	TopValues []*StringStatistics_FreqAndValue `protobuf:"bytes,1,rep,name=top_values,json=topValues,proto3" json:"top_values,omitempty"`
	// The rank histogram for the weighted values of the feature.
	RankHistogram *RankHistogram `protobuf:"bytes,2,opt,name=rank_histogram,json=rankHistogram,proto3" json:"rank_histogram,omitempty"`
}

func (x *WeightedStringStatistics) Reset() {
	*x = WeightedStringStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WeightedStringStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WeightedStringStatistics) ProtoMessage() {}

func (x *WeightedStringStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[13]
	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 WeightedStringStatistics.ProtoReflect.Descriptor instead.
func (*WeightedStringStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{13}
}

func (x *WeightedStringStatistics) GetTopValues() []*StringStatistics_FreqAndValue {
	if x != nil {
		return x.TopValues
	}
	return nil
}

func (x *WeightedStringStatistics) GetRankHistogram() *RankHistogram {
	if x != nil {
		return x.RankHistogram
	}
	return nil
}

// Statistics for a bytes feature in a dataset.
type BytesStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CommonStats *CommonStatistics `protobuf:"bytes,1,opt,name=common_stats,json=commonStats,proto3" json:"common_stats,omitempty"`
	// The number of unique values
	Unique uint64 `protobuf:"varint,2,opt,name=unique,proto3" json:"unique,omitempty"`
	// The average number of bytes in a value
	AvgNumBytes float32 `protobuf:"fixed32,3,opt,name=avg_num_bytes,json=avgNumBytes,proto3" json:"avg_num_bytes,omitempty"`
	// The minimum number of bytes in a value
	MinNumBytes float32 `protobuf:"fixed32,4,opt,name=min_num_bytes,json=minNumBytes,proto3" json:"min_num_bytes,omitempty"`
	// The maximum number of bytes in a value
	MaxNumBytes float32 `protobuf:"fixed32,5,opt,name=max_num_bytes,json=maxNumBytes,proto3" json:"max_num_bytes,omitempty"`
}

func (x *BytesStatistics) Reset() {
	*x = BytesStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BytesStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BytesStatistics) ProtoMessage() {}

func (x *BytesStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_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 BytesStatistics.ProtoReflect.Descriptor instead.
func (*BytesStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{14}
}

func (x *BytesStatistics) GetCommonStats() *CommonStatistics {
	if x != nil {
		return x.CommonStats
	}
	return nil
}

func (x *BytesStatistics) GetUnique() uint64 {
	if x != nil {
		return x.Unique
	}
	return 0
}

func (x *BytesStatistics) GetAvgNumBytes() float32 {
	if x != nil {
		return x.AvgNumBytes
	}
	return 0
}

func (x *BytesStatistics) GetMinNumBytes() float32 {
	if x != nil {
		return x.MinNumBytes
	}
	return 0
}

func (x *BytesStatistics) GetMaxNumBytes() float32 {
	if x != nil {
		return x.MaxNumBytes
	}
	return 0
}

type StructStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CommonStats *CommonStatistics `protobuf:"bytes,1,opt,name=common_stats,json=commonStats,proto3" json:"common_stats,omitempty"`
}

func (x *StructStatistics) Reset() {
	*x = StructStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StructStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StructStatistics) ProtoMessage() {}

func (x *StructStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_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 StructStatistics.ProtoReflect.Descriptor instead.
func (*StructStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{15}
}

func (x *StructStatistics) GetCommonStats() *CommonStatistics {
	if x != nil {
		return x.CommonStats
	}
	return nil
}

// Common statistics for all feature types. Statistics counting number of values
// (i.e., min_num_values, max_num_values, avg_num_values, and tot_num_values)
// include NaNs.
type CommonStatistics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The number of examples with at least one value for this feature.
	NumNonMissing uint64 `protobuf:"varint,1,opt,name=num_non_missing,json=numNonMissing,proto3" json:"num_non_missing,omitempty"`
	// The number of examples with no values for this feature.
	NumMissing uint64 `protobuf:"varint,2,opt,name=num_missing,json=numMissing,proto3" json:"num_missing,omitempty"`
	// The minimum number of values in a single example for this feature.
	MinNumValues uint64 `protobuf:"varint,3,opt,name=min_num_values,json=minNumValues,proto3" json:"min_num_values,omitempty"`
	// The maximum number of values in a single example for this feature.
	MaxNumValues uint64 `protobuf:"varint,4,opt,name=max_num_values,json=maxNumValues,proto3" json:"max_num_values,omitempty"`
	// The average number of values in a single example for this feature.
	AvgNumValues float32 `protobuf:"fixed32,5,opt,name=avg_num_values,json=avgNumValues,proto3" json:"avg_num_values,omitempty"`
	// tot_num_values = avg_num_values * num_non_missing.
	// This is calculated directly, so should have less numerical error.
	TotNumValues uint64 `protobuf:"varint,8,opt,name=tot_num_values,json=totNumValues,proto3" json:"tot_num_values,omitempty"`
	// The quantiles histogram for the number of values in this feature.
	NumValuesHistogram  *Histogram                `protobuf:"bytes,6,opt,name=num_values_histogram,json=numValuesHistogram,proto3" json:"num_values_histogram,omitempty"`
	WeightedCommonStats *WeightedCommonStatistics `protobuf:"bytes,7,opt,name=weighted_common_stats,json=weightedCommonStats,proto3" json:"weighted_common_stats,omitempty"`
	// The histogram for the number of features in the feature list (only set if
	// this feature is a non-context feature from a tf.SequenceExample).
	// This is different from num_values_histogram, as num_values_histogram tracks
	// the count of all values for a feature in an example, whereas this tracks
	// the length of the feature list for this feature in an example (where each
	// feature list can contain multiple values).
	FeatureListLengthHistogram *Histogram `protobuf:"bytes,9,opt,name=feature_list_length_histogram,json=featureListLengthHistogram,proto3" json:"feature_list_length_histogram,omitempty"`
}

func (x *CommonStatistics) Reset() {
	*x = CommonStatistics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CommonStatistics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommonStatistics) ProtoMessage() {}

func (x *CommonStatistics) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[16]
	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 CommonStatistics.ProtoReflect.Descriptor instead.
func (*CommonStatistics) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{16}
}

func (x *CommonStatistics) GetNumNonMissing() uint64 {
	if x != nil {
		return x.NumNonMissing
	}
	return 0
}

func (x *CommonStatistics) GetNumMissing() uint64 {
	if x != nil {
		return x.NumMissing
	}
	return 0
}

func (x *CommonStatistics) GetMinNumValues() uint64 {
	if x != nil {
		return x.MinNumValues
	}
	return 0
}

func (x *CommonStatistics) GetMaxNumValues() uint64 {
	if x != nil {
		return x.MaxNumValues
	}
	return 0
}

func (x *CommonStatistics) GetAvgNumValues() float32 {
	if x != nil {
		return x.AvgNumValues
	}
	return 0
}

func (x *CommonStatistics) GetTotNumValues() uint64 {
	if x != nil {
		return x.TotNumValues
	}
	return 0
}

func (x *CommonStatistics) GetNumValuesHistogram() *Histogram {
	if x != nil {
		return x.NumValuesHistogram
	}
	return nil
}

func (x *CommonStatistics) GetWeightedCommonStats() *WeightedCommonStatistics {
	if x != nil {
		return x.WeightedCommonStats
	}
	return nil
}

func (x *CommonStatistics) GetFeatureListLengthHistogram() *Histogram {
	if x != nil {
		return x.FeatureListLengthHistogram
	}
	return nil
}

// The data used to create a histogram of a numeric feature for a dataset.
type Histogram struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The number of NaN values in the dataset.
	NumNan uint64 `protobuf:"varint,1,opt,name=num_nan,json=numNan,proto3" json:"num_nan,omitempty"`
	// The number of undefined values in the dataset.
	NumUndefined uint64 `protobuf:"varint,2,opt,name=num_undefined,json=numUndefined,proto3" json:"num_undefined,omitempty"`
	// A list of buckets in the histogram, sorted from lowest bucket to highest
	// bucket.
	Buckets []*Histogram_Bucket `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`
	// The type of the histogram.
	Type Histogram_HistogramType `protobuf:"varint,4,opt,name=type,proto3,enum=tensorflow.metadata.v0.Histogram_HistogramType" json:"type,omitempty"`
	// An optional descriptive name of the histogram, to be used for labeling.
	Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *Histogram) Reset() {
	*x = Histogram{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Histogram) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Histogram) ProtoMessage() {}

func (x *Histogram) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[17]
	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 Histogram.ProtoReflect.Descriptor instead.
func (*Histogram) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{17}
}

func (x *Histogram) GetNumNan() uint64 {
	if x != nil {
		return x.NumNan
	}
	return 0
}

func (x *Histogram) GetNumUndefined() uint64 {
	if x != nil {
		return x.NumUndefined
	}
	return 0
}

func (x *Histogram) GetBuckets() []*Histogram_Bucket {
	if x != nil {
		return x.Buckets
	}
	return nil
}

func (x *Histogram) GetType() Histogram_HistogramType {
	if x != nil {
		return x.Type
	}
	return Histogram_STANDARD
}

func (x *Histogram) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// The data used to create a rank histogram of a non-numeric feature of a
// dataset. The rank of a value in a feature can be used as a measure of how
// commonly the value is found in the entire dataset. With bucket sizes of one,
// this becomes a distribution function of all feature values.
type RankHistogram struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of buckets in the histogram, sorted from lowest-ranked bucket to
	// highest-ranked bucket.
	Buckets []*RankHistogram_Bucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"`
	// An optional descriptive name of the histogram, to be used for labeling.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *RankHistogram) Reset() {
	*x = RankHistogram{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RankHistogram) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RankHistogram) ProtoMessage() {}

func (x *RankHistogram) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[18]
	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 RankHistogram.ProtoReflect.Descriptor instead.
func (*RankHistogram) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{18}
}

func (x *RankHistogram) GetBuckets() []*RankHistogram_Bucket {
	if x != nil {
		return x.Buckets
	}
	return nil
}

func (x *RankHistogram) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// A bucket for referring to binned numeric features.
type LiftSeries_Bucket struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The low value of the bucket, inclusive.
	LowValue float64 `protobuf:"fixed64,1,opt,name=low_value,json=lowValue,proto3" json:"low_value,omitempty"`
	// The high value of the bucket, exclusive (unless the high_value is
	// positive infinity).
	HighValue float64 `protobuf:"fixed64,2,opt,name=high_value,json=highValue,proto3" json:"high_value,omitempty"`
}

func (x *LiftSeries_Bucket) Reset() {
	*x = LiftSeries_Bucket{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LiftSeries_Bucket) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LiftSeries_Bucket) ProtoMessage() {}

func (x *LiftSeries_Bucket) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[19]
	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 LiftSeries_Bucket.ProtoReflect.Descriptor instead.
func (*LiftSeries_Bucket) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{6, 0}
}

func (x *LiftSeries_Bucket) GetLowValue() float64 {
	if x != nil {
		return x.LowValue
	}
	return 0
}

func (x *LiftSeries_Bucket) GetHighValue() float64 {
	if x != nil {
		return x.HighValue
	}
	return 0
}

// A container for lift information about a specific value of path_x.
type LiftSeries_LiftValue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to XValue:
	//	*LiftSeries_LiftValue_XInt
	//	*LiftSeries_LiftValue_XString
	XValue isLiftSeries_LiftValue_XValue `protobuf_oneof:"x_value"`
	// P(path_y=y|path_x=x) / P(path_y=y) for x_value and the enclosing y_value.
	// In terms of concrete fields, this number represents:
	// (x_and_y_count / x_count) / (y_count / num_examples)
	Lift float64 `protobuf:"fixed64,3,opt,name=lift,proto3" json:"lift,omitempty"`
	// The number of examples in which x_value appears.
	//
	// Types that are assignable to XCountValue:
	//	*LiftSeries_LiftValue_XCount
	//	*LiftSeries_LiftValue_WeightedXCount
	XCountValue isLiftSeries_LiftValue_XCountValue `protobuf_oneof:"x_count_value"`
	// The number of examples in which x_value appears and y_value appears.
	//
	// Types that are assignable to XAndYCountValue:
	//	*LiftSeries_LiftValue_XAndYCount
	//	*LiftSeries_LiftValue_WeightedXAndYCount
	XAndYCountValue isLiftSeries_LiftValue_XAndYCountValue `protobuf_oneof:"x_and_y_count_value"`
}

func (x *LiftSeries_LiftValue) Reset() {
	*x = LiftSeries_LiftValue{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LiftSeries_LiftValue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LiftSeries_LiftValue) ProtoMessage() {}

func (x *LiftSeries_LiftValue) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[20]
	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 LiftSeries_LiftValue.ProtoReflect.Descriptor instead.
func (*LiftSeries_LiftValue) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{6, 1}
}

func (m *LiftSeries_LiftValue) GetXValue() isLiftSeries_LiftValue_XValue {
	if m != nil {
		return m.XValue
	}
	return nil
}

func (x *LiftSeries_LiftValue) GetXInt() int32 {
	if x, ok := x.GetXValue().(*LiftSeries_LiftValue_XInt); ok {
		return x.XInt
	}
	return 0
}

func (x *LiftSeries_LiftValue) GetXString() string {
	if x, ok := x.GetXValue().(*LiftSeries_LiftValue_XString); ok {
		return x.XString
	}
	return ""
}

func (x *LiftSeries_LiftValue) GetLift() float64 {
	if x != nil {
		return x.Lift
	}
	return 0
}

func (m *LiftSeries_LiftValue) GetXCountValue() isLiftSeries_LiftValue_XCountValue {
	if m != nil {
		return m.XCountValue
	}
	return nil
}

func (x *LiftSeries_LiftValue) GetXCount() uint64 {
	if x, ok := x.GetXCountValue().(*LiftSeries_LiftValue_XCount); ok {
		return x.XCount
	}
	return 0
}

func (x *LiftSeries_LiftValue) GetWeightedXCount() float64 {
	if x, ok := x.GetXCountValue().(*LiftSeries_LiftValue_WeightedXCount); ok {
		return x.WeightedXCount
	}
	return 0
}

func (m *LiftSeries_LiftValue) GetXAndYCountValue() isLiftSeries_LiftValue_XAndYCountValue {
	if m != nil {
		return m.XAndYCountValue
	}
	return nil
}

func (x *LiftSeries_LiftValue) GetXAndYCount() uint64 {
	if x, ok := x.GetXAndYCountValue().(*LiftSeries_LiftValue_XAndYCount); ok {
		return x.XAndYCount
	}
	return 0
}

func (x *LiftSeries_LiftValue) GetWeightedXAndYCount() float64 {
	if x, ok := x.GetXAndYCountValue().(*LiftSeries_LiftValue_WeightedXAndYCount); ok {
		return x.WeightedXAndYCount
	}
	return 0
}

type isLiftSeries_LiftValue_XValue interface {
	isLiftSeries_LiftValue_XValue()
}

type LiftSeries_LiftValue_XInt struct {
	XInt int32 `protobuf:"varint,1,opt,name=x_int,json=xInt,proto3,oneof"`
}

type LiftSeries_LiftValue_XString struct {
	XString string `protobuf:"bytes,2,opt,name=x_string,json=xString,proto3,oneof"`
}

func (*LiftSeries_LiftValue_XInt) isLiftSeries_LiftValue_XValue() {}

func (*LiftSeries_LiftValue_XString) isLiftSeries_LiftValue_XValue() {}

type isLiftSeries_LiftValue_XCountValue interface {
	isLiftSeries_LiftValue_XCountValue()
}

type LiftSeries_LiftValue_XCount struct {
	XCount uint64 `protobuf:"varint,4,opt,name=x_count,json=xCount,proto3,oneof"`
}

type LiftSeries_LiftValue_WeightedXCount struct {
	WeightedXCount float64 `protobuf:"fixed64,5,opt,name=weighted_x_count,json=weightedXCount,proto3,oneof"`
}

func (*LiftSeries_LiftValue_XCount) isLiftSeries_LiftValue_XCountValue() {}

func (*LiftSeries_LiftValue_WeightedXCount) isLiftSeries_LiftValue_XCountValue() {}

type isLiftSeries_LiftValue_XAndYCountValue interface {
	isLiftSeries_LiftValue_XAndYCountValue()
}

type LiftSeries_LiftValue_XAndYCount struct {
	XAndYCount uint64 `protobuf:"varint,6,opt,name=x_and_y_count,json=xAndYCount,proto3,oneof"`
}

type LiftSeries_LiftValue_WeightedXAndYCount struct {
	WeightedXAndYCount float64 `protobuf:"fixed64,7,opt,name=weighted_x_and_y_count,json=weightedXAndYCount,proto3,oneof"`
}

func (*LiftSeries_LiftValue_XAndYCount) isLiftSeries_LiftValue_XAndYCountValue() {}

func (*LiftSeries_LiftValue_WeightedXAndYCount) isLiftSeries_LiftValue_XAndYCountValue() {}

type StringStatistics_FreqAndValue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// The number of times the value occurs. Stored as a double to be able to
	// handle weighted features.
	Frequency float64 `protobuf:"fixed64,3,opt,name=frequency,proto3" json:"frequency,omitempty"`
}

func (x *StringStatistics_FreqAndValue) Reset() {
	*x = StringStatistics_FreqAndValue{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StringStatistics_FreqAndValue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StringStatistics_FreqAndValue) ProtoMessage() {}

func (x *StringStatistics_FreqAndValue) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[21]
	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 StringStatistics_FreqAndValue.ProtoReflect.Descriptor instead.
func (*StringStatistics_FreqAndValue) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{11, 0}
}

func (x *StringStatistics_FreqAndValue) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *StringStatistics_FreqAndValue) GetFrequency() float64 {
	if x != nil {
		return x.Frequency
	}
	return 0
}

// Each bucket defines its low and high values along with its count. The
// low and high values must be a real number or positive or negative
// infinity. They cannot be NaN or undefined. Counts of those special values
// can be found in the numNaN and numUndefined fields.
type Histogram_Bucket struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The low value of the bucket, inclusive.
	LowValue float64 `protobuf:"fixed64,1,opt,name=low_value,json=lowValue,proto3" json:"low_value,omitempty"`
	// The high value of the bucket, exclusive (unless the highValue is
	// positive infinity).
	HighValue float64 `protobuf:"fixed64,2,opt,name=high_value,json=highValue,proto3" json:"high_value,omitempty"`
	// The number of items in the bucket. Stored as a double to be able to
	// handle weighted histograms.
	SampleCount float64 `protobuf:"fixed64,4,opt,name=sample_count,json=sampleCount,proto3" json:"sample_count,omitempty"`
}

func (x *Histogram_Bucket) Reset() {
	*x = Histogram_Bucket{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Histogram_Bucket) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Histogram_Bucket) ProtoMessage() {}

func (x *Histogram_Bucket) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[22]
	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 Histogram_Bucket.ProtoReflect.Descriptor instead.
func (*Histogram_Bucket) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{17, 0}
}

func (x *Histogram_Bucket) GetLowValue() float64 {
	if x != nil {
		return x.LowValue
	}
	return 0
}

func (x *Histogram_Bucket) GetHighValue() float64 {
	if x != nil {
		return x.HighValue
	}
	return 0
}

func (x *Histogram_Bucket) GetSampleCount() float64 {
	if x != nil {
		return x.SampleCount
	}
	return 0
}

// Each bucket defines its start and end ranks along with its count.
type RankHistogram_Bucket struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The low rank of the bucket, inclusive.
	LowRank uint64 `protobuf:"varint,1,opt,name=low_rank,json=lowRank,proto3" json:"low_rank,omitempty"`
	// The high rank of the bucket, exclusive.
	HighRank uint64 `protobuf:"varint,2,opt,name=high_rank,json=highRank,proto3" json:"high_rank,omitempty"`
	// The label for the bucket. Can be used to list or summarize the values in
	// this rank bucket.
	Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"`
	// The number of items in the bucket. Stored as a double to be able to
	// handle weighted histograms.
	SampleCount float64 `protobuf:"fixed64,5,opt,name=sample_count,json=sampleCount,proto3" json:"sample_count,omitempty"`
}

func (x *RankHistogram_Bucket) Reset() {
	*x = RankHistogram_Bucket{}
	if protoimpl.UnsafeEnabled {
		mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RankHistogram_Bucket) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RankHistogram_Bucket) ProtoMessage() {}

func (x *RankHistogram_Bucket) ProtoReflect() protoreflect.Message {
	mi := &file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[23]
	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 RankHistogram_Bucket.ProtoReflect.Descriptor instead.
func (*RankHistogram_Bucket) Descriptor() ([]byte, []int) {
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP(), []int{18, 0}
}

func (x *RankHistogram_Bucket) GetLowRank() uint64 {
	if x != nil {
		return x.LowRank
	}
	return 0
}

func (x *RankHistogram_Bucket) GetHighRank() uint64 {
	if x != nil {
		return x.HighRank
	}
	return 0
}

func (x *RankHistogram_Bucket) GetLabel() string {
	if x != nil {
		return x.Label
	}
	return ""
}

func (x *RankHistogram_Bucket) GetSampleCount() float64 {
	if x != nil {
		return x.SampleCount
	}
	return 0
}

var File_tensorflow_metadata_proto_v0_statistics_proto protoreflect.FileDescriptor

var file_tensorflow_metadata_proto_v0_statistics_proto_rawDesc = []byte{
	0x0a, 0x2d, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x30, 0x2f, 0x73,
	0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x16, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x1a, 0x27, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66,
	0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x2f, 0x76, 0x30, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0x6c, 0x0a, 0x1c, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x4c, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x44, 0x61, 0x74, 0x61,
	0x73, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
	0x74, 0x69, 0x63, 0x73, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x22, 0xa7,
	0x02, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c,
	0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e,
	0x75, 0x6d, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x01, 0x52, 0x13, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x45, 0x78,
	0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f,
	0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76,
	0x30, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61,
	0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x73, 0x12, 0x55, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x6e, 0x73,
	0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
	0x76, 0x30, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x0d, 0x63, 0x72, 0x6f, 0x73, 0x73,
	0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xef, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x6f,
	0x73, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
	0x69, 0x63, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x78, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77,
	0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x50, 0x61, 0x74,
	0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x58, 0x12, 0x33, 0x0a, 0x06, 0x70, 0x61, 0x74, 0x68,
	0x5f, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f,
	0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76,
	0x30, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x59, 0x12, 0x14, 0x0a,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x72, 0x6f, 0x73, 0x73,
	0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74,
	0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x6f,
	0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x48, 0x00, 0x52, 0x0d,
	0x6e, 0x75, 0x6d, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x6c, 0x0a,
	0x17, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32,
	0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69,
	0x63, 0x61, 0x6c, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69,
	0x63, 0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61,
	0x6c, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x5a, 0x0a, 0x16, 0x4e, 0x75,
	0x6d, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
	0x74, 0x69, 0x63, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x72, 0x65,
	0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x76, 0x61, 0x72, 0x69,
	0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x76, 0x61,
	0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f,
	0x72, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
	0x74, 0x69, 0x63, 0x73, 0x12, 0x3a, 0x0a, 0x04, 0x6c, 0x69, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x4c, 0x69, 0x66, 0x74,
	0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x04, 0x6c, 0x69, 0x66, 0x74,
	0x22, 0xab, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
	0x69, 0x63, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x69,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f,
	0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76,
	0x30, 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x6c, 0x69,
	0x66, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x14, 0x77, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66,
	0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e,
	0x4c, 0x69, 0x66, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x12, 0x77, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0xab,
	0x05, 0x0a, 0x0a, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x15, 0x0a,
	0x05, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04,
	0x79, 0x49, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x08, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x79, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x12, 0x46, 0x0a, 0x08, 0x79, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77,
	0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x4c, 0x69, 0x66,
	0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00,
	0x52, 0x07, 0x79, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x79, 0x5f, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x79, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64,
	0x5f, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01,
	0x52, 0x0e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x59, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x4d, 0x0a, 0x0b, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18,
	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c,
	0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x4c,
	0x69, 0x66, 0x74, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x66, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a,
	0x44, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x77,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x6f,
	0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x68, 0x69, 0x67, 0x68,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xa8, 0x02, 0x0a, 0x09, 0x4c, 0x69, 0x66, 0x74, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x78, 0x49, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x08, 0x78, 0x5f,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07,
	0x78, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x66, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6c, 0x69, 0x66, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x78,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06,
	0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x65, 0x64, 0x5f, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01,
	0x48, 0x01, 0x52, 0x0e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x58, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x78, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x79, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x0a, 0x78, 0x41, 0x6e,
	0x64, 0x59, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x77, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x12, 0x77, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x65, 0x64, 0x58, 0x41, 0x6e, 0x64, 0x59, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0x0a,
	0x07, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x78, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x78, 0x5f, 0x61,
	0x6e, 0x64, 0x5f, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x42, 0x09, 0x0a, 0x07, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x79,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfd, 0x04, 0x0a,
	0x15, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04,
	0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x65, 0x6e,
	0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x2e, 0x76, 0x30, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68,
	0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32,
	0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e,
	0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f,
	0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65,
	0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x76, 0x30, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74,
	0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x48, 0x01, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x53, 0x74, 0x61,
	0x74, 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61,
	0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f,
	0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76,
	0x30, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69,
	0x63, 0x73, 0x48, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66,
	0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x48,
	0x01, 0x52, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4d, 0x0a,
	0x0c, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77,
	0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x53, 0x74, 0x72,
	0x75, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x48, 0x01, 0x52,
	0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0c,
	0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, 0x63, 0x75, 0x73,
	0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x3d, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f,
	0x41, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02,
	0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x53,
	0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x04, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
	0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0xaf, 0x01, 0x0a,
	0x18, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53,
	0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d,
	0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4e, 0x6f, 0x6e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e,
	0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x4d, 0x69, 0x73, 0x73, 0x69,
	0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x76, 0x67, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x61, 0x76, 0x67, 0x4e,
	0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x5f,
	0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01,
	0x52, 0x0c, 0x74, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xe7,
	0x01, 0x0a, 0x0f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
	0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x03, 0x73, 0x74,
	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x41,
	0x0a, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
	0x67, 0x72, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61,
	0x6d, 0x12, 0x4e, 0x0a, 0x0e, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67,
	0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6e, 0x73,
	0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
	0x76, 0x30, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d,
	0x48, 0x00, 0x52, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61,
	0x6d, 0x42, 0x05, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x92, 0x03, 0x0a, 0x11, 0x4e, 0x75, 0x6d,
	0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x4b,
	0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x0b,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d,
	0x65, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6d, 0x65, 0x61, 0x6e, 0x12,
	0x17, 0x0a, 0x07, 0x73, 0x74, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01,
	0x52, 0x06, 0x73, 0x74, 0x64, 0x44, 0x65, 0x76, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f,
	0x7a, 0x65, 0x72, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, 0x75, 0x6d,
	0x5a, 0x65, 0x72, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61,
	0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x12,
	0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x61,
	0x78, 0x12, 0x41, 0x0a, 0x0a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x18,
	0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c,
	0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x48,
	0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67,
	0x72, 0x61, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x16, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64,
	0x5f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x57, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61,
	0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x14, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65,
	0x64, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x93, 0x04,
	0x0a, 0x10, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69,
	0x63, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61,
	0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f,
	0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76,
	0x30, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69,
	0x63, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
	0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x54, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x65,
	0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x2e, 0x76, 0x30, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69,
	0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x64, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1d, 0x0a,
	0x0a, 0x61, 0x76, 0x67, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x02, 0x52, 0x09, 0x61, 0x76, 0x67, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4c, 0x0a, 0x0e,
	0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x52, 0x61,
	0x6e, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0d, 0x72, 0x61, 0x6e,
	0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x64, 0x0a, 0x15, 0x77, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74,
	0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6e, 0x73,
	0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
	0x76, 0x30, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x13, 0x77, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73,
	0x12, 0x27, 0x0a, 0x0f, 0x76, 0x6f, 0x63, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x79, 0x5f, 0x66,
	0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x6f, 0x63, 0x61, 0x62,
	0x75, 0x6c, 0x61, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x1a, 0x48, 0x0a, 0x0c, 0x46, 0x72, 0x65,
	0x71, 0x41, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4a, 0x04, 0x08,
	0x01, 0x10, 0x02, 0x22, 0xa3, 0x01, 0x0a, 0x19, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64,
	0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63,
	0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52,
	0x04, 0x6d, 0x65, 0x61, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x64, 0x5f, 0x64, 0x65, 0x76,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x73, 0x74, 0x64, 0x44, 0x65, 0x76, 0x12, 0x16,
	0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06,
	0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x12, 0x41, 0x0a, 0x0a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67,
	0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x6e,
	0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x2e, 0x76, 0x30, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0a, 0x68,
	0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x18, 0x57, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74,
	0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x54, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x65, 0x6e,
	0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x2e, 0x76, 0x30, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
	0x74, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0e,
	0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x52, 0x61,
	0x6e, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0d, 0x72, 0x61, 0x6e,
	0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0xe2, 0x01, 0x0a, 0x0f, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x4b,
	0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x43, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x0b,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75,
	0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x6e, 0x69,
	0x71, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x76, 0x67, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x62,
	0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x61, 0x76, 0x67, 0x4e,
	0x75, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x6e,
	0x75, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b,
	0x6d, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6d,
	0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22,
	0x5f, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
	0x69, 0x63, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x74,
	0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6e, 0x73,
	0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
	0x76, 0x30, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
	0x69, 0x63, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73,
	0x22, 0x94, 0x04, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69,
	0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x6f, 0x6e,
	0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d,
	0x6e, 0x75, 0x6d, 0x4e, 0x6f, 0x6e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a,
	0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x24,
	0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x61,
	0x78, 0x4e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x76,
	0x67, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x02, 0x52, 0x0c, 0x61, 0x76, 0x67, 0x4e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
	0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x4e, 0x75, 0x6d,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x14, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x48, 0x69,
	0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x64, 0x0a, 0x15, 0x77,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x73,
	0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x65, 0x6e,
	0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
	0x2e, 0x76, 0x30, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x13, 0x77, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x12, 0x64, 0x0a, 0x1d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x73,
	0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72,
	0x61, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f,
	0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76,
	0x30, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x1a, 0x66, 0x65, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x48, 0x69,
	0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0x83, 0x03, 0x0a, 0x09, 0x48, 0x69, 0x73, 0x74,
	0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x61, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x4e, 0x61, 0x6e, 0x12, 0x23,
	0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69,
	0x6e, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x48, 0x69,
	0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07,
	0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c,
	0x6f, 0x77, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x48,
	0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72,
	0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x1a, 0x6d, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f,
	0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c,
	0x6f, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x69, 0x67, 0x68, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x68, 0x69, 0x67,
	0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x73, 0x61,
	0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22,
	0x2c, 0x0a, 0x0d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x00, 0x12, 0x0d,
	0x0a, 0x09, 0x51, 0x55, 0x41, 0x4e, 0x54, 0x49, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x22, 0xec, 0x01,
	0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12,
	0x46, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x48, 0x69,
	0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07,
	0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x7f, 0x0a, 0x06, 0x42,
	0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x61, 0x6e,
	0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6c, 0x6f, 0x77, 0x52, 0x61, 0x6e, 0x6b,
	0x12, 0x1b, 0x0a, 0x09, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x08, 0x68, 0x69, 0x67, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a,
	0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c,
	0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x42, 0x68, 0x0a, 0x1a,
	0x6f, 0x72, 0x67, 0x2e, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x30, 0x50, 0x01, 0x5a, 0x45, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x64,
	0x65, 0x76, 0x2f, 0x66, 0x65, 0x61, 0x73, 0x74, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x67, 0x6f, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x66, 0x6c, 0x6f,
	0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x2f, 0x76, 0x30, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_tensorflow_metadata_proto_v0_statistics_proto_rawDescOnce sync.Once
	file_tensorflow_metadata_proto_v0_statistics_proto_rawDescData = file_tensorflow_metadata_proto_v0_statistics_proto_rawDesc
)

func file_tensorflow_metadata_proto_v0_statistics_proto_rawDescGZIP() []byte {
	file_tensorflow_metadata_proto_v0_statistics_proto_rawDescOnce.Do(func() {
		file_tensorflow_metadata_proto_v0_statistics_proto_rawDescData = protoimpl.X.CompressGZIP(file_tensorflow_metadata_proto_v0_statistics_proto_rawDescData)
	})
	return file_tensorflow_metadata_proto_v0_statistics_proto_rawDescData
}

var file_tensorflow_metadata_proto_v0_statistics_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
var file_tensorflow_metadata_proto_v0_statistics_proto_goTypes = []interface{}{
	(FeatureNameStatistics_Type)(0),       // 0: tensorflow.metadata.v0.FeatureNameStatistics.Type
	(Histogram_HistogramType)(0),          // 1: tensorflow.metadata.v0.Histogram.HistogramType
	(*DatasetFeatureStatisticsList)(nil),  // 2: tensorflow.metadata.v0.DatasetFeatureStatisticsList
	(*DatasetFeatureStatistics)(nil),      // 3: tensorflow.metadata.v0.DatasetFeatureStatistics
	(*CrossFeatureStatistics)(nil),        // 4: tensorflow.metadata.v0.CrossFeatureStatistics
	(*NumericCrossStatistics)(nil),        // 5: tensorflow.metadata.v0.NumericCrossStatistics
	(*CategoricalCrossStatistics)(nil),    // 6: tensorflow.metadata.v0.CategoricalCrossStatistics
	(*LiftStatistics)(nil),                // 7: tensorflow.metadata.v0.LiftStatistics
	(*LiftSeries)(nil),                    // 8: tensorflow.metadata.v0.LiftSeries
	(*FeatureNameStatistics)(nil),         // 9: tensorflow.metadata.v0.FeatureNameStatistics
	(*WeightedCommonStatistics)(nil),      // 10: tensorflow.metadata.v0.WeightedCommonStatistics
	(*CustomStatistic)(nil),               // 11: tensorflow.metadata.v0.CustomStatistic
	(*NumericStatistics)(nil),             // 12: tensorflow.metadata.v0.NumericStatistics
	(*StringStatistics)(nil),              // 13: tensorflow.metadata.v0.StringStatistics
	(*WeightedNumericStatistics)(nil),     // 14: tensorflow.metadata.v0.WeightedNumericStatistics
	(*WeightedStringStatistics)(nil),      // 15: tensorflow.metadata.v0.WeightedStringStatistics
	(*BytesStatistics)(nil),               // 16: tensorflow.metadata.v0.BytesStatistics
	(*StructStatistics)(nil),              // 17: tensorflow.metadata.v0.StructStatistics
	(*CommonStatistics)(nil),              // 18: tensorflow.metadata.v0.CommonStatistics
	(*Histogram)(nil),                     // 19: tensorflow.metadata.v0.Histogram
	(*RankHistogram)(nil),                 // 20: tensorflow.metadata.v0.RankHistogram
	(*LiftSeries_Bucket)(nil),             // 21: tensorflow.metadata.v0.LiftSeries.Bucket
	(*LiftSeries_LiftValue)(nil),          // 22: tensorflow.metadata.v0.LiftSeries.LiftValue
	(*StringStatistics_FreqAndValue)(nil), // 23: tensorflow.metadata.v0.StringStatistics.FreqAndValue
	(*Histogram_Bucket)(nil),              // 24: tensorflow.metadata.v0.Histogram.Bucket
	(*RankHistogram_Bucket)(nil),          // 25: tensorflow.metadata.v0.RankHistogram.Bucket
	(*Path)(nil),                          // 26: tensorflow.metadata.v0.Path
}
var file_tensorflow_metadata_proto_v0_statistics_proto_depIdxs = []int32{
	3,  // 0: tensorflow.metadata.v0.DatasetFeatureStatisticsList.datasets:type_name -> tensorflow.metadata.v0.DatasetFeatureStatistics
	9,  // 1: tensorflow.metadata.v0.DatasetFeatureStatistics.features:type_name -> tensorflow.metadata.v0.FeatureNameStatistics
	4,  // 2: tensorflow.metadata.v0.DatasetFeatureStatistics.cross_features:type_name -> tensorflow.metadata.v0.CrossFeatureStatistics
	26, // 3: tensorflow.metadata.v0.CrossFeatureStatistics.path_x:type_name -> tensorflow.metadata.v0.Path
	26, // 4: tensorflow.metadata.v0.CrossFeatureStatistics.path_y:type_name -> tensorflow.metadata.v0.Path
	5,  // 5: tensorflow.metadata.v0.CrossFeatureStatistics.num_cross_stats:type_name -> tensorflow.metadata.v0.NumericCrossStatistics
	6,  // 6: tensorflow.metadata.v0.CrossFeatureStatistics.categorical_cross_stats:type_name -> tensorflow.metadata.v0.CategoricalCrossStatistics
	7,  // 7: tensorflow.metadata.v0.CategoricalCrossStatistics.lift:type_name -> tensorflow.metadata.v0.LiftStatistics
	8,  // 8: tensorflow.metadata.v0.LiftStatistics.lift_series:type_name -> tensorflow.metadata.v0.LiftSeries
	8,  // 9: tensorflow.metadata.v0.LiftStatistics.weighted_lift_series:type_name -> tensorflow.metadata.v0.LiftSeries
	21, // 10: tensorflow.metadata.v0.LiftSeries.y_bucket:type_name -> tensorflow.metadata.v0.LiftSeries.Bucket
	22, // 11: tensorflow.metadata.v0.LiftSeries.lift_values:type_name -> tensorflow.metadata.v0.LiftSeries.LiftValue
	26, // 12: tensorflow.metadata.v0.FeatureNameStatistics.path:type_name -> tensorflow.metadata.v0.Path
	0,  // 13: tensorflow.metadata.v0.FeatureNameStatistics.type:type_name -> tensorflow.metadata.v0.FeatureNameStatistics.Type
	12, // 14: tensorflow.metadata.v0.FeatureNameStatistics.num_stats:type_name -> tensorflow.metadata.v0.NumericStatistics
	13, // 15: tensorflow.metadata.v0.FeatureNameStatistics.string_stats:type_name -> tensorflow.metadata.v0.StringStatistics
	16, // 16: tensorflow.metadata.v0.FeatureNameStatistics.bytes_stats:type_name -> tensorflow.metadata.v0.BytesStatistics
	17, // 17: tensorflow.metadata.v0.FeatureNameStatistics.struct_stats:type_name -> tensorflow.metadata.v0.StructStatistics
	11, // 18: tensorflow.metadata.v0.FeatureNameStatistics.custom_stats:type_name -> tensorflow.metadata.v0.CustomStatistic
	19, // 19: tensorflow.metadata.v0.CustomStatistic.histogram:type_name -> tensorflow.metadata.v0.Histogram
	20, // 20: tensorflow.metadata.v0.CustomStatistic.rank_histogram:type_name -> tensorflow.metadata.v0.RankHistogram
	18, // 21: tensorflow.metadata.v0.NumericStatistics.common_stats:type_name -> tensorflow.metadata.v0.CommonStatistics
	19, // 22: tensorflow.metadata.v0.NumericStatistics.histograms:type_name -> tensorflow.metadata.v0.Histogram
	14, // 23: tensorflow.metadata.v0.NumericStatistics.weighted_numeric_stats:type_name -> tensorflow.metadata.v0.WeightedNumericStatistics
	18, // 24: tensorflow.metadata.v0.StringStatistics.common_stats:type_name -> tensorflow.metadata.v0.CommonStatistics
	23, // 25: tensorflow.metadata.v0.StringStatistics.top_values:type_name -> tensorflow.metadata.v0.StringStatistics.FreqAndValue
	20, // 26: tensorflow.metadata.v0.StringStatistics.rank_histogram:type_name -> tensorflow.metadata.v0.RankHistogram
	15, // 27: tensorflow.metadata.v0.StringStatistics.weighted_string_stats:type_name -> tensorflow.metadata.v0.WeightedStringStatistics
	19, // 28: tensorflow.metadata.v0.WeightedNumericStatistics.histograms:type_name -> tensorflow.metadata.v0.Histogram
	23, // 29: tensorflow.metadata.v0.WeightedStringStatistics.top_values:type_name -> tensorflow.metadata.v0.StringStatistics.FreqAndValue
	20, // 30: tensorflow.metadata.v0.WeightedStringStatistics.rank_histogram:type_name -> tensorflow.metadata.v0.RankHistogram
	18, // 31: tensorflow.metadata.v0.BytesStatistics.common_stats:type_name -> tensorflow.metadata.v0.CommonStatistics
	18, // 32: tensorflow.metadata.v0.StructStatistics.common_stats:type_name -> tensorflow.metadata.v0.CommonStatistics
	19, // 33: tensorflow.metadata.v0.CommonStatistics.num_values_histogram:type_name -> tensorflow.metadata.v0.Histogram
	10, // 34: tensorflow.metadata.v0.CommonStatistics.weighted_common_stats:type_name -> tensorflow.metadata.v0.WeightedCommonStatistics
	19, // 35: tensorflow.metadata.v0.CommonStatistics.feature_list_length_histogram:type_name -> tensorflow.metadata.v0.Histogram
	24, // 36: tensorflow.metadata.v0.Histogram.buckets:type_name -> tensorflow.metadata.v0.Histogram.Bucket
	1,  // 37: tensorflow.metadata.v0.Histogram.type:type_name -> tensorflow.metadata.v0.Histogram.HistogramType
	25, // 38: tensorflow.metadata.v0.RankHistogram.buckets:type_name -> tensorflow.metadata.v0.RankHistogram.Bucket
	39, // [39:39] is the sub-list for method output_type
	39, // [39:39] is the sub-list for method input_type
	39, // [39:39] is the sub-list for extension type_name
	39, // [39:39] is the sub-list for extension extendee
	0,  // [0:39] is the sub-list for field type_name
}

func init() { file_tensorflow_metadata_proto_v0_statistics_proto_init() }
func file_tensorflow_metadata_proto_v0_statistics_proto_init() {
	if File_tensorflow_metadata_proto_v0_statistics_proto != nil {
		return
	}
	file_tensorflow_metadata_proto_v0_path_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DatasetFeatureStatisticsList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DatasetFeatureStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CrossFeatureStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NumericCrossStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CategoricalCrossStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LiftStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LiftSeries); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FeatureNameStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WeightedCommonStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CustomStatistic); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NumericStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WeightedNumericStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WeightedStringStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BytesStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StructStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommonStatistics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Histogram); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RankHistogram); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LiftSeries_Bucket); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LiftSeries_LiftValue); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringStatistics_FreqAndValue); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Histogram_Bucket); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RankHistogram_Bucket); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[2].OneofWrappers = []interface{}{
		(*CrossFeatureStatistics_NumCrossStats)(nil),
		(*CrossFeatureStatistics_CategoricalCrossStats)(nil),
	}
	file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[6].OneofWrappers = []interface{}{
		(*LiftSeries_YInt)(nil),
		(*LiftSeries_YString)(nil),
		(*LiftSeries_YBucket)(nil),
		(*LiftSeries_YCount)(nil),
		(*LiftSeries_WeightedYCount)(nil),
	}
	file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*FeatureNameStatistics_Name)(nil),
		(*FeatureNameStatistics_Path)(nil),
		(*FeatureNameStatistics_NumStats)(nil),
		(*FeatureNameStatistics_StringStats)(nil),
		(*FeatureNameStatistics_BytesStats)(nil),
		(*FeatureNameStatistics_StructStats)(nil),
	}
	file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*CustomStatistic_Num)(nil),
		(*CustomStatistic_Str)(nil),
		(*CustomStatistic_Histogram)(nil),
		(*CustomStatistic_RankHistogram)(nil),
	}
	file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes[20].OneofWrappers = []interface{}{
		(*LiftSeries_LiftValue_XInt)(nil),
		(*LiftSeries_LiftValue_XString)(nil),
		(*LiftSeries_LiftValue_XCount)(nil),
		(*LiftSeries_LiftValue_WeightedXCount)(nil),
		(*LiftSeries_LiftValue_XAndYCount)(nil),
		(*LiftSeries_LiftValue_WeightedXAndYCount)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_tensorflow_metadata_proto_v0_statistics_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   24,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_tensorflow_metadata_proto_v0_statistics_proto_goTypes,
		DependencyIndexes: file_tensorflow_metadata_proto_v0_statistics_proto_depIdxs,
		EnumInfos:         file_tensorflow_metadata_proto_v0_statistics_proto_enumTypes,
		MessageInfos:      file_tensorflow_metadata_proto_v0_statistics_proto_msgTypes,
	}.Build()
	File_tensorflow_metadata_proto_v0_statistics_proto = out.File
	file_tensorflow_metadata_proto_v0_statistics_proto_rawDesc = nil
	file_tensorflow_metadata_proto_v0_statistics_proto_goTypes = nil
	file_tensorflow_metadata_proto_v0_statistics_proto_depIdxs = nil
}
