// Copyright 2022 Google LLC
//
// 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.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.12.2
// source: google/cloud/timeseriesinsights/v1/timeseries_insights.proto

package timeseriesinsights

import (
	context "context"
	reflect "reflect"
	sync "sync"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	status "google.golang.org/genproto/googleapis/rpc/status"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status1 "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)

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)
)

// DataSet state.
type DataSet_State int32

const (
	// Unspecified / undefined state.
	DataSet_STATE_UNSPECIFIED DataSet_State = 0
	// Dataset is unknown to the system; we have never seen this dataset before
	// or we have seen this dataset but have fully GC-ed it.
	DataSet_UNKNOWN DataSet_State = 1
	// Dataset processing is pending.
	DataSet_PENDING DataSet_State = 2
	// Dataset is loading.
	DataSet_LOADING DataSet_State = 3
	// Dataset is loaded and can be queried.
	DataSet_LOADED DataSet_State = 4
	// Dataset is unloading.
	DataSet_UNLOADING DataSet_State = 5
	// Dataset is unloaded and is removed from the system.
	DataSet_UNLOADED DataSet_State = 6
	// Dataset processing failed.
	DataSet_FAILED DataSet_State = 7
)

// Enum value maps for DataSet_State.
var (
	DataSet_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		1: "UNKNOWN",
		2: "PENDING",
		3: "LOADING",
		4: "LOADED",
		5: "UNLOADING",
		6: "UNLOADED",
		7: "FAILED",
	}
	DataSet_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"UNKNOWN":           1,
		"PENDING":           2,
		"LOADING":           3,
		"LOADED":            4,
		"UNLOADING":         5,
		"UNLOADED":          6,
		"FAILED":            7,
	}
)

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

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

func (DataSet_State) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[0].Descriptor()
}

func (DataSet_State) Type() protoreflect.EnumType {
	return &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[0]
}

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

// Deprecated: Use DataSet_State.Descriptor instead.
func (DataSet_State) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{2, 0}
}

// A time period of a fixed interval.
type ForecastParams_Period int32

const (
	// Unknown or simply not given.
	ForecastParams_PERIOD_UNSPECIFIED ForecastParams_Period = 0
	// 1 hour
	ForecastParams_HOURLY ForecastParams_Period = 5
	// 24 hours
	ForecastParams_DAILY ForecastParams_Period = 1
	// 7 days
	ForecastParams_WEEKLY ForecastParams_Period = 2
	// 30 days
	ForecastParams_MONTHLY ForecastParams_Period = 3
	// 365 days
	ForecastParams_YEARLY ForecastParams_Period = 4
)

// Enum value maps for ForecastParams_Period.
var (
	ForecastParams_Period_name = map[int32]string{
		0: "PERIOD_UNSPECIFIED",
		5: "HOURLY",
		1: "DAILY",
		2: "WEEKLY",
		3: "MONTHLY",
		4: "YEARLY",
	}
	ForecastParams_Period_value = map[string]int32{
		"PERIOD_UNSPECIFIED": 0,
		"HOURLY":             5,
		"DAILY":              1,
		"WEEKLY":             2,
		"MONTHLY":            3,
		"YEARLY":             4,
	}
)

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

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

func (ForecastParams_Period) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[1].Descriptor()
}

func (ForecastParams_Period) Type() protoreflect.EnumType {
	return &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[1]
}

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

// Deprecated: Use ForecastParams_Period.Descriptor instead.
func (ForecastParams_Period) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP(), []int{12, 0}
}

// Methods by which we can aggregate multiple events by a given
// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric].
type TimeseriesParams_AggregationMethod int32

const (
	// Unspecified.
	TimeseriesParams_AGGREGATION_METHOD_UNSPECIFIED TimeseriesParams_AggregationMethod = 0
	// Aggregate multiple events by summing up the values found in the
	// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] dimension.
	TimeseriesParams_SUM TimeseriesParams_AggregationMethod = 1
	// Aggregate multiple events by averaging out the values found in the
	// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] dimension.
	TimeseriesParams_AVERAGE TimeseriesParams_AggregationMethod = 2
)

// Enum value maps for TimeseriesParams_AggregationMethod.
var (
	TimeseriesParams_AggregationMethod_name = map[int32]string{
		0: "AGGREGATION_METHOD_UNSPECIFIED",
		1: "SUM",
		2: "AVERAGE",
	}
	TimeseriesParams_AggregationMethod_value = map[string]int32{
		"AGGREGATION_METHOD_UNSPECIFIED": 0,
		"SUM":                            1,
		"AVERAGE":                        2,
	}
)

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

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

func (TimeseriesParams_AggregationMethod) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[2].Descriptor()
}

func (TimeseriesParams_AggregationMethod) Type() protoreflect.EnumType {
	return &file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes[2]
}

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

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

// Mapping of BigQuery columns to timestamp, group_id and dimensions.
type BigqueryMapping struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The column which should be used as the event timestamps. If not specified
	// 'Timestamp' is used by default. The column may have TIMESTAMP or INT64
	// type (the latter is interpreted as microseconds since the Unix epoch).
	TimestampColumn string `protobuf:"bytes,1,opt,name=timestamp_column,json=timestampColumn,proto3" json:"timestamp_column,omitempty"`
	// The column which should be used as the group ID (grouping events into
	// sessions). If not specified 'GroupId' is used by default, if the input
	// table does not have such a column, random unique group IDs are
	// generated automatically (different group ID per input row).
	GroupIdColumn string `protobuf:"bytes,2,opt,name=group_id_column,json=groupIdColumn,proto3" json:"group_id_column,omitempty"`
	// The list of columns that should be translated to dimensions. If empty,
	// all columns are translated to dimensions. The timestamp and group_id
	// columns should not be listed here again. Columns are expected to have
	// primitive types (STRING, INT64, FLOAT64 or NUMERIC).
	DimensionColumn []string `protobuf:"bytes,3,rep,name=dimension_column,json=dimensionColumn,proto3" json:"dimension_column,omitempty"`
}

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

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

func (*BigqueryMapping) ProtoMessage() {}

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

func (x *BigqueryMapping) GetTimestampColumn() string {
	if x != nil {
		return x.TimestampColumn
	}
	return ""
}

func (x *BigqueryMapping) GetGroupIdColumn() string {
	if x != nil {
		return x.GroupIdColumn
	}
	return ""
}

func (x *BigqueryMapping) GetDimensionColumn() []string {
	if x != nil {
		return x.DimensionColumn
	}
	return nil
}

// A data source consists of multiple [Event][google.cloud.timeseriesinsights.v1.Event] objects stored on
// Cloud Storage.  Each Event should be in JSON format, with one Event
// per line, also known as JSON Lines format.
type DataSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Data source URI.
	//
	// 1) Google Cloud Storage files (JSON) are defined in the following form.
	// `gs://bucket_name/object_name`. For more information on Cloud Storage URIs,
	// please see https://cloud.google.com/storage/docs/reference-uris.
	Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
	// For BigQuery inputs defines the columns that should be used for dimensions
	// (including time and group ID).
	BqMapping *BigqueryMapping `protobuf:"bytes,2,opt,name=bq_mapping,json=bqMapping,proto3" json:"bq_mapping,omitempty"`
}

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

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

func (*DataSource) ProtoMessage() {}

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

func (x *DataSource) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *DataSource) GetBqMapping() *BigqueryMapping {
	if x != nil {
		return x.BqMapping
	}
	return nil
}

// A collection of data sources sent for processing.
type DataSet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The dataset name, which will be used for querying, status and unload
	// requests. This must be unique within a project.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// [Data dimension names][google.cloud.timeseriesinsights.v1.EventDimension.name] allowed for this `DataSet`.
	//
	// If left empty, all dimension names are included. This field works as a
	// filter to avoid regenerating the data.
	DataNames []string `protobuf:"bytes,2,rep,name=data_names,json=dataNames,proto3" json:"data_names,omitempty"`
	// Input data.
	DataSources []*DataSource `protobuf:"bytes,3,rep,name=data_sources,json=dataSources,proto3" json:"data_sources,omitempty"`
	// Dataset state in the system.
	State DataSet_State `protobuf:"varint,4,opt,name=state,proto3,enum=google.cloud.timeseriesinsights.v1.DataSet_State" json:"state,omitempty"`
	// Dataset processing status.
	Status *status.Status `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
	// Periodically we discard dataset [Event][google.cloud.timeseriesinsights.v1.Event] objects that have
	// timestamps older than 'ttl'.  Omitting this field or a zero value means no
	// events are discarded.
	Ttl *durationpb.Duration `protobuf:"bytes,6,opt,name=ttl,proto3" json:"ttl,omitempty"`
}

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

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

func (*DataSet) ProtoMessage() {}

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

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

func (x *DataSet) GetDataNames() []string {
	if x != nil {
		return x.DataNames
	}
	return nil
}

func (x *DataSet) GetDataSources() []*DataSource {
	if x != nil {
		return x.DataSources
	}
	return nil
}

func (x *DataSet) GetState() DataSet_State {
	if x != nil {
		return x.State
	}
	return DataSet_STATE_UNSPECIFIED
}

func (x *DataSet) GetStatus() *status.Status {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *DataSet) GetTtl() *durationpb.Duration {
	if x != nil {
		return x.Ttl
	}
	return nil
}

// Represents an event dimension.
type EventDimension struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Dimension name.
	//
	// **NOTE**: `EventDimension` names must be composed of alphanumeric
	// characters only, and are case insensitive. Unicode characters are *not*
	// supported. The underscore '_' is also allowed.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Dimension value.
	//
	// **NOTE**: All entries of the dimension `name` must have the same `value`
	// type.
	//
	// Types that are assignable to Value:
	//
	//	*EventDimension_StringVal
	//	*EventDimension_LongVal
	//	*EventDimension_BoolVal
	//	*EventDimension_DoubleVal
	Value isEventDimension_Value `protobuf_oneof:"value"`
}

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

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

func (*EventDimension) ProtoMessage() {}

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

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

func (m *EventDimension) GetValue() isEventDimension_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *EventDimension) GetStringVal() string {
	if x, ok := x.GetValue().(*EventDimension_StringVal); ok {
		return x.StringVal
	}
	return ""
}

func (x *EventDimension) GetLongVal() int64 {
	if x, ok := x.GetValue().(*EventDimension_LongVal); ok {
		return x.LongVal
	}
	return 0
}

func (x *EventDimension) GetBoolVal() bool {
	if x, ok := x.GetValue().(*EventDimension_BoolVal); ok {
		return x.BoolVal
	}
	return false
}

func (x *EventDimension) GetDoubleVal() float64 {
	if x, ok := x.GetValue().(*EventDimension_DoubleVal); ok {
		return x.DoubleVal
	}
	return 0
}

type isEventDimension_Value interface {
	isEventDimension_Value()
}

type EventDimension_StringVal struct {
	// String representation.
	//
	// **NOTE**: String values are case insensitive. Unicode characters are
	// supported.
	StringVal string `protobuf:"bytes,2,opt,name=string_val,json=stringVal,proto3,oneof"`
}

type EventDimension_LongVal struct {
	// Long representation.
	LongVal int64 `protobuf:"varint,3,opt,name=long_val,json=longVal,proto3,oneof"`
}

type EventDimension_BoolVal struct {
	// Bool representation.
	BoolVal bool `protobuf:"varint,4,opt,name=bool_val,json=boolVal,proto3,oneof"`
}

type EventDimension_DoubleVal struct {
	// Double representation.
	DoubleVal float64 `protobuf:"fixed64,5,opt,name=double_val,json=doubleVal,proto3,oneof"`
}

func (*EventDimension_StringVal) isEventDimension_Value() {}

func (*EventDimension_LongVal) isEventDimension_Value() {}

func (*EventDimension_BoolVal) isEventDimension_Value() {}

func (*EventDimension_DoubleVal) isEventDimension_Value() {}

// Represents an entry in a data source.
//
// Each Event has:
//
//   - A timestamp at which the event occurs.
//   - One or multiple dimensions.
//   - Optionally, a group ID that allows clients to group logically related
//     events (for example, all events representing payments transactions done by
//     a user in a day have the same group ID).  If a group ID is not provided, an
//     internal one will be generated based on the content and `eventTime`.
//
// **NOTE**:
//
//   - Internally, we discretize time in equal-sized chunks and we assume an
//     event has a 0
//     [TimeseriesPoint.value][google.cloud.timeseriesinsights.v1.TimeseriesPoint.value]
//     in a chunk that does not contain any occurrences of an event in the input.
//   - The number of Events with the same group ID should be limited.
//   - Group ID *cannot* be queried.
//   - Group ID does *not* correspond to a user ID or the like. If a user ID is of
//     interest to be queried, use a user ID `dimension` instead.
type Event struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Event dimensions.
	Dimensions []*EventDimension `protobuf:"bytes,1,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
	// Event group ID.
	//
	// **NOTE**: JSON encoding should use a string to hold a 64-bit integer value,
	// because a native JSON number holds only 53 binary bits for an integer.
	GroupId int64 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
	// Event timestamp.
	EventTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`
}

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

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

func (*Event) ProtoMessage() {}

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

func (x *Event) GetDimensions() []*EventDimension {
	if x != nil {
		return x.Dimensions
	}
	return nil
}

func (x *Event) GetGroupId() int64 {
	if x != nil {
		return x.GroupId
	}
	return 0
}

func (x *Event) GetEventTime() *timestamppb.Timestamp {
	if x != nil {
		return x.EventTime
	}
	return nil
}

// Appends events to an existing DataSet.
type AppendEventsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Events to be appended.
	//
	// Note:
	//
	//  0. The [DataSet][google.cloud.timeseriesinsights.v1.DataSet] must be shown in a `LOADED` state
	//     in the results of `list` method; otherwise, all events from
	//     the append request will be dropped, and a `NOT_FOUND` status will be
	//     returned.
	//  0. All events in a single request must have the same
	//     [groupId][google.cloud.timeseriesinsights.v1.Event.group_id] if set; otherwise, an
	//     `INVALID_ARGUMENT` status will be returned.
	//  0. If [groupId][google.cloud.timeseriesinsights.v1.Event.group_id] is not set (or 0), there
	//     should be only 1 event; otherwise, an `INVALID_ARGUMENT` status will be
	//     returned.
	//  0. The events must be newer than the current time minus
	//     [DataSet TTL][google.cloud.timeseriesinsights.v1.DataSet.ttl] or they will be dropped.
	Events []*Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
	// Required. The DataSet to which we want to append to in the format of
	// "projects/{project}/datasets/{dataset}"
	Dataset string `protobuf:"bytes,2,opt,name=dataset,proto3" json:"dataset,omitempty"`
}

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

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

func (*AppendEventsRequest) ProtoMessage() {}

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

func (x *AppendEventsRequest) GetEvents() []*Event {
	if x != nil {
		return x.Events
	}
	return nil
}

func (x *AppendEventsRequest) GetDataset() string {
	if x != nil {
		return x.Dataset
	}
	return ""
}

// Response for an AppendEvents RPC.
type AppendEventsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Dropped events; empty if all events are successfully added.
	DroppedEvents []*Event `protobuf:"bytes,1,rep,name=dropped_events,json=droppedEvents,proto3" json:"dropped_events,omitempty"`
}

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

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

func (*AppendEventsResponse) ProtoMessage() {}

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

func (x *AppendEventsResponse) GetDroppedEvents() []*Event {
	if x != nil {
		return x.DroppedEvents
	}
	return nil
}

// Create a DataSet request.
type CreateDataSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Client project name which will own this DataSet in the format of
	// 'projects/{project}'.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. Dataset to be loaded.
	Dataset *DataSet `protobuf:"bytes,2,opt,name=dataset,proto3" json:"dataset,omitempty"`
}

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

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

func (*CreateDataSetRequest) ProtoMessage() {}

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

func (x *CreateDataSetRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateDataSetRequest) GetDataset() *DataSet {
	if x != nil {
		return x.Dataset
	}
	return nil
}

// Unload DataSet request from the serving system.
type DeleteDataSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Dataset name in the format of "projects/{project}/datasets/{dataset}"
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*DeleteDataSetRequest) ProtoMessage() {}

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

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

// List the DataSets created by the current project.
type ListDataSetsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Project owning the DataSet in the format of "projects/{project}".
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Number of results to return in the list.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Token to provide to skip to a particular spot in the list.
	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}

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

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

func (*ListDataSetsRequest) ProtoMessage() {}

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

func (x *ListDataSetsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListDataSetsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListDataSetsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// Created DataSets list response.
type ListDataSetsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The list of created DataSets.
	Datasets []*DataSet `protobuf:"bytes,1,rep,name=datasets,proto3" json:"datasets,omitempty"`
	// Token to receive the next page of results.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

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

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

func (*ListDataSetsResponse) ProtoMessage() {}

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

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

func (x *ListDataSetsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// A categorical dimension fixed to a certain value.
type PinnedDimension struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name of the dimension for which we are fixing its value.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Dimension value.
	//
	// **NOTE**: The `value` type must match that in the data with the same
	// `dimension` as name.
	//
	// Types that are assignable to Value:
	//
	//	*PinnedDimension_StringVal
	//	*PinnedDimension_BoolVal
	Value isPinnedDimension_Value `protobuf_oneof:"value"`
}

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

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

func (*PinnedDimension) ProtoMessage() {}

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

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

func (m *PinnedDimension) GetValue() isPinnedDimension_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *PinnedDimension) GetStringVal() string {
	if x, ok := x.GetValue().(*PinnedDimension_StringVal); ok {
		return x.StringVal
	}
	return ""
}

func (x *PinnedDimension) GetBoolVal() bool {
	if x, ok := x.GetValue().(*PinnedDimension_BoolVal); ok {
		return x.BoolVal
	}
	return false
}

type isPinnedDimension_Value interface {
	isPinnedDimension_Value()
}

type PinnedDimension_StringVal struct {
	// A string value. This can be used for [dimensions][google.cloud.timeseriesinsights.v1.EventDimension], which
	// have their value field set to [string_val][google.cloud.timeseriesinsights.v1.EventDimension.string_val].
	StringVal string `protobuf:"bytes,2,opt,name=string_val,json=stringVal,proto3,oneof"`
}

type PinnedDimension_BoolVal struct {
	// A bool value. This can be used for [dimensions][google.cloud.timeseriesinsights.v1.EventDimension], which
	// have their value field set to [bool_val][google.cloud.timeseriesinsights.v1.EventDimension.bool_val].
	BoolVal bool `protobuf:"varint,3,opt,name=bool_val,json=boolVal,proto3,oneof"`
}

func (*PinnedDimension_StringVal) isPinnedDimension_Value() {}

func (*PinnedDimension_BoolVal) isPinnedDimension_Value() {}

// Parameters that control the sensitivity and other options for the time series
// forecast.
type ForecastParams struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Optional. Penalize variations between the actual and forecasted values smaller than
	// this. For more information about how this parameter affects the score, see
	// the [anomalyScore](EvaluatedSlice.anomaly_score) formula.
	//
	// Intuitively, anomaly scores summarize how statistically significant the
	// change between the actual and forecasted value is compared with what we
	// expect the change to be (see
	// [expectedDeviation](EvaluatedSlice.expected_deviation)). However, in
	// practice, depending on the application, changes smaller than certain
	// absolute values, while statistically significant, may not be important.
	//
	// This parameter allows us to penalize such low absolute value changes.
	//
	// Must be in the (0.0, inf) range.
	//
	// If unspecified, it defaults to 0.000001.
	NoiseThreshold *float64 `protobuf:"fixed64,12,opt,name=noise_threshold,json=noiseThreshold,proto3,oneof" json:"noise_threshold,omitempty"`
	// Optional. Specifying any known seasonality/periodicity in the time series
	// for the slices we will analyze can improve the quality of the results.
	//
	// If unsure, simply leave it unspecified by not setting a value for this
	// field.
	//
	// If your time series has multiple seasonal patterns, then set it to the most
	// granular one (e.g. if it has daily and weekly patterns, set this to DAILY).
	SeasonalityHint ForecastParams_Period `protobuf:"varint,10,opt,name=seasonality_hint,json=seasonalityHint,proto3,enum=google.cloud.timeseriesinsights.v1.ForecastParams_Period" json:"seasonality_hint,omitempty"`
	// Optional. The length of the returned [forecasted
	// timeseries][EvaluatedSlice.forecast].
	//
	// This duration is currently capped at 100 x
	// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity].
	//
	// Example: If the detection point is set to "2020-12-27T00:00:00Z", the
	// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity] to "3600s" and the
	// horizon_duration to "10800s", then we will generate 3 time
	// series points (from "2020-12-27T01:00:00Z" to "2020-12-27T04:00:00Z"), for
	// which we will return their forecasted values.
	//
	// Note: The horizon time is only used for forecasting not for anormaly
	// detection. To detect anomalies for multiple points of time,
	// simply send multiple queries with those as
	// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time].
	HorizonDuration *durationpb.Duration `protobuf:"bytes,13,opt,name=horizon_duration,json=horizonDuration,proto3" json:"horizon_duration,omitempty"`
}

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

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

func (*ForecastParams) ProtoMessage() {}

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

func (x *ForecastParams) GetNoiseThreshold() float64 {
	if x != nil && x.NoiseThreshold != nil {
		return *x.NoiseThreshold
	}
	return 0
}

func (x *ForecastParams) GetSeasonalityHint() ForecastParams_Period {
	if x != nil {
		return x.SeasonalityHint
	}
	return ForecastParams_PERIOD_UNSPECIFIED
}

func (x *ForecastParams) GetHorizonDuration() *durationpb.Duration {
	if x != nil {
		return x.HorizonDuration
	}
	return nil
}

// A point in a time series.
type TimeseriesPoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The timestamp of this point.
	Time *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"`
	// The value for this point.
	//
	// It is computed by aggregating all events in the associated slice that are
	// in the `[time, time + granularity]` range (see
	// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity]) using the specified
	// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric].
	Value *float64 `protobuf:"fixed64,2,opt,name=value,proto3,oneof" json:"value,omitempty"`
}

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

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

func (*TimeseriesPoint) ProtoMessage() {}

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

func (x *TimeseriesPoint) GetTime() *timestamppb.Timestamp {
	if x != nil {
		return x.Time
	}
	return nil
}

func (x *TimeseriesPoint) GetValue() float64 {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return 0
}

// A time series.
type Timeseries struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The points in this time series, ordered by their timestamp.
	Point []*TimeseriesPoint `protobuf:"bytes,1,rep,name=point,proto3" json:"point,omitempty"`
}

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

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

func (*Timeseries) ProtoMessage() {}

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

func (x *Timeseries) GetPoint() []*TimeseriesPoint {
	if x != nil {
		return x.Point
	}
	return nil
}

// Forecast result for a given slice.
type EvaluatedSlice struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Values for all categorical dimensions that uniquely identify this slice.
	Dimensions []*PinnedDimension `protobuf:"bytes,1,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
	// The actual value at the detection time (see
	// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time]).
	//
	// **NOTE**: This value can be an estimate, so it should not be used as a
	// source of truth.
	DetectionPointActual *float64 `protobuf:"fixed64,11,opt,name=detection_point_actual,json=detectionPointActual,proto3,oneof" json:"detection_point_actual,omitempty"`
	// The expected value at the detection time, which is obtained by forecasting
	// on the historical time series.
	DetectionPointForecast *float64 `protobuf:"fixed64,12,opt,name=detection_point_forecast,json=detectionPointForecast,proto3,oneof" json:"detection_point_forecast,omitempty"`
	// How much our forecast model expects the detection point actual will
	// deviate from its forecasted value based on how well it fit the input time
	// series.
	//
	// In general, we expect the `detectionPointActual` to
	// be in the `[detectionPointForecast - expectedDeviation,
	// detectionPointForecast + expectedDeviation]` range. The more the actual
	// value is outside this range, the more statistically significant the
	// anomaly is.
	//
	// The expected deviation is always positive.
	ExpectedDeviation *float64 `protobuf:"fixed64,16,opt,name=expected_deviation,json=expectedDeviation,proto3,oneof" json:"expected_deviation,omitempty"`
	// Summarizes how significant the change between the actual and forecasted
	// detection points are compared with the historical patterns observed on the
	// [history][google.cloud.timeseriesinsights.v1.EvaluatedSlice.history] time series.
	//
	// Defined as *|a - f| / (e + nt)*, where:
	//
	// - *a* is the [detectionPointActual][google.cloud.timeseriesinsights.v1.EvaluatedSlice.detection_point_actual].
	// - *f* is the [detectionPointForecast][google.cloud.timeseriesinsights.v1.EvaluatedSlice.detection_point_forecast].
	// - *e* is the [expectedDeviation][google.cloud.timeseriesinsights.v1.EvaluatedSlice.expected_deviation].
	// - *nt` is the [noiseThreshold][google.cloud.timeseriesinsights.v1.ForecastParams.noise_threshold].
	//
	// Anomaly scores between different requests and datasets are comparable. As
	// a guideline, the risk of a slice being an anomaly based on the anomaly
	// score is:
	//
	// - **Very High** if `anomalyScore` > 5.
	// - **High** if the `anomalyScore` is in the [2, 5] range.
	// - **Medium** if the `anomalyScore` is in the [1, 2) range.
	// - **Low** if the `anomalyScore` is < 1.
	//
	// If there were issues evaluating this slice, then the anomaly score will be
	// set to -1.0 and the [status][google.cloud.timeseriesinsights.v1.EvaluatedSlice.status] field will contain details on what
	// went wrong.
	AnomalyScore *float64 `protobuf:"fixed64,17,opt,name=anomaly_score,json=anomalyScore,proto3,oneof" json:"anomaly_score,omitempty"`
	// The actual values in the `[`
	// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] `-`
	// [forecastHistory][google.cloud.timeseriesinsights.v1.TimeseriesParams.forecast_history]`,`
	// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] `]` time
	// range.
	//
	// **NOTE**: This field is only populated if
	// [returnTimeseries][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.return_timeseries] is true.
	History *Timeseries `protobuf:"bytes,5,opt,name=history,proto3" json:"history,omitempty"`
	// The forecasted values in the `[`
	// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] `+`
	// [granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity]`,`
	// [forecastParams.horizonTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.forecast_params] `]` time
	// range.
	//
	// **NOTE**: This field is only populated if
	// [returnTimeseries][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.return_timeseries] is true.
	Forecast *Timeseries `protobuf:"bytes,10,opt,name=forecast,proto3" json:"forecast,omitempty"`
	// Evaluation status. Contains an error message if the `anomalyScore` is < 0.
	//
	// Possible error messages:
	//
	// - **"Time series too sparse"**: The returned time series for this slice did
	// not contain enough data points (we require a minimum of 10).
	// - **"Not enough recent time series points"**: The time series contains the
	// minimum of 10 points, but there are not enough close in time to the
	// detection point.
	// - **"Missing detection point data"**: There were not events to be
	// aggregated within the `[detectionTime, detectionTime + granularity]` time
	// interval, so we don't have an actual value with which we can compare our
	// prediction.
	// - **"Data retrieval error"**: We failed to retrieve the time series data
	// for this slice and could not evaluate it successfully. Should be a
	// transient error.
	// - **"Internal server error"**: Internal unexpected error.
	Status *status.Status `protobuf:"bytes,18,opt,name=status,proto3" json:"status,omitempty"`
}

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

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

func (*EvaluatedSlice) ProtoMessage() {}

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

func (x *EvaluatedSlice) GetDimensions() []*PinnedDimension {
	if x != nil {
		return x.Dimensions
	}
	return nil
}

func (x *EvaluatedSlice) GetDetectionPointActual() float64 {
	if x != nil && x.DetectionPointActual != nil {
		return *x.DetectionPointActual
	}
	return 0
}

func (x *EvaluatedSlice) GetDetectionPointForecast() float64 {
	if x != nil && x.DetectionPointForecast != nil {
		return *x.DetectionPointForecast
	}
	return 0
}

func (x *EvaluatedSlice) GetExpectedDeviation() float64 {
	if x != nil && x.ExpectedDeviation != nil {
		return *x.ExpectedDeviation
	}
	return 0
}

func (x *EvaluatedSlice) GetAnomalyScore() float64 {
	if x != nil && x.AnomalyScore != nil {
		return *x.AnomalyScore
	}
	return 0
}

func (x *EvaluatedSlice) GetHistory() *Timeseries {
	if x != nil {
		return x.History
	}
	return nil
}

func (x *EvaluatedSlice) GetForecast() *Timeseries {
	if x != nil {
		return x.Forecast
	}
	return nil
}

func (x *EvaluatedSlice) GetStatus() *status.Status {
	if x != nil {
		return x.Status
	}
	return nil
}

// Parameters that control how we slice the dataset and, optionally, filter
// slices that have some specific values on some dimensions (pinned dimensions).
type SlicingParams struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Dimensions over which we will group the events in slices. The names
	// specified here come from the
	// [EventDimension.name][google.cloud.timeseriesinsights.v1.EventDimension.name] field. At least
	// one dimension name must be specified. All dimension names that do not exist
	// in the queried `DataSet` will be ignored.
	//
	// Currently only dimensions that hold string values can be specified here.
	DimensionNames []string `protobuf:"bytes,1,rep,name=dimension_names,json=dimensionNames,proto3" json:"dimension_names,omitempty"`
	// Optional. We will only analyze slices for which
	// [EvaluatedSlice.dimensions][google.cloud.timeseriesinsights.v1.EvaluatedSlice.dimensions] contain all of the
	// following pinned dimensions. A query with a pinned dimension `{ name: "d3"
	// stringVal: "v3" }` will only analyze events which contain the dimension `{
	// name: "d3" stringVal: "v3" }`.
	// The [pinnedDimensions][google.cloud.timeseriesinsights.v1.SlicingParams.pinned_dimensions] and
	// [dimensionNames][google.cloud.timeseriesinsights.v1.SlicingParams.dimension_names] fields can **not**
	// share the same dimension names.
	//
	// Example a valid specification:
	//
	// ```json
	//
	//	{
	//	  dimensionNames: ["d1", "d2"],
	//	  pinnedDimensions: [
	//	    { name: "d3" stringVal: "v3" },
	//	    { name: "d4" stringVal: "v4" }
	//	  ]
	//	}
	//
	// ```
	//
	// In the previous example we will slice the dataset by dimensions "d1",
	// "d2", "d3" and "d4", but we will only analyze slices for which "d3=v3" and
	// "d4=v4".
	//
	// The following example is **invalid** as "d2" is present in both
	// dimensionNames and pinnedDimensions:
	//
	// ```json
	//
	//	{
	//	  dimensionNames: ["d1", "d2"],
	//	  pinnedDimensions: [
	//	    { name: "d2" stringVal: "v2" },
	//	    { name: "d4" stringVal: "v4" }
	//	  ]
	//	}
	//
	// ```
	PinnedDimensions []*PinnedDimension `protobuf:"bytes,2,rep,name=pinned_dimensions,json=pinnedDimensions,proto3" json:"pinned_dimensions,omitempty"`
}

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

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

func (*SlicingParams) ProtoMessage() {}

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

func (x *SlicingParams) GetDimensionNames() []string {
	if x != nil {
		return x.DimensionNames
	}
	return nil
}

func (x *SlicingParams) GetPinnedDimensions() []*PinnedDimension {
	if x != nil {
		return x.PinnedDimensions
	}
	return nil
}

// Parameters that control how we construct the time series for each slice.
type TimeseriesParams struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. How long should we go in the past when fetching the timeline used for
	// forecasting each slice.
	//
	// This is used in combination with the
	// [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] parameter.
	// The time series we construct will have the following time range:
	// `[detectionTime - forecastHistory, detectionTime + granularity]`.
	//
	// The forecast history might be rounded up, so that a multiple of
	// `granularity` is used to process the query.
	//
	// Note: If there are not enough events in the
	// `[detectionTime - forecastHistory, detectionTime + granularity]` time
	// interval, the slice evaluation can fail. For more information, see
	// [EvaluatedSlice.status][google.cloud.timeseriesinsights.v1.EvaluatedSlice.status].
	ForecastHistory *durationpb.Duration `protobuf:"bytes,1,opt,name=forecast_history,json=forecastHistory,proto3" json:"forecast_history,omitempty"`
	// Required. The time granularity of the time series (on the x-axis). Each time series
	// point starting at time T will aggregate all events for a particular slice
	// in *[T, T + granularity)* time windows.
	//
	// Note: The aggregation is decided based on the
	// [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] parameter.
	//
	// This granularity defines the query-time aggregation windows and is not
	// necessarily related to any event time granularity in the raw data (though
	// we do recommend that the query-time granularity is not finer than the
	// ingestion-time one).
	//
	// Currently, the minimal supported granularity is 10 seconds.
	Granularity *durationpb.Duration `protobuf:"bytes,2,opt,name=granularity,proto3" json:"granularity,omitempty"`
	// Optional. Denotes the [name][google.cloud.timeseriesinsights.v1.EventDimension.name] of a numerical
	// dimension that will have its values aggregated to compute the y-axis of the
	// time series.
	//
	// The aggregation method must also be specified by setting the
	// [metricAggregationMethod][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric_aggregation_method]
	// field.
	//
	// Note: Currently, if the aggregation method is unspecified, we will
	// default to SUM for backward compatibility reasons, but new implementations
	// should set the
	// [metricAggregationMethod][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric_aggregation_method]
	// explicitly.
	//
	// If the metric is unspecified, we will use the number of events that each
	// time series point contains as the point value.
	//
	// Example: Let's assume we have the following three events in our dataset:
	// ```json
	//
	//	{
	//	  eventTime: "2020-12-27T00:00:00Z",
	//	  dimensions: [
	//	    { name: "d1" stringVal: "v1" },
	//	    { name: "d2" stringVal: "v2" }
	//	    { name: "m1" longVal: 100 }
	//	    { name: "m2" longVal: 11 }
	//	  ]
	//	},
	//
	//	{
	//	  eventTime: "2020-12-27T00:10:00Z",
	//	  dimensions: [
	//	    { name: "d1" stringVal: "v1" },
	//	    { name: "d2" stringVal: "v2" }
	//	    { name: "m1" longVal: 200 }
	//	    { name: "m2" longVal: 22 }
	//	  ]
	//	},
	//
	//	{
	//	  eventTime: "2020-12-27T00:20:00Z",
	//	  dimensions: [
	//	    { name: "d1" stringVal: "v1" },
	//	    { name: "d2" stringVal: "v2" }
	//	    { name: "m1" longVal: 300 }
	//	    { name: "m2" longVal: 33 }
	//	  ]
	//	}
	//
	// ```
	//
	// These events are all within the same hour, spaced 10 minutes between each
	// of them. Assuming our [QueryDataSetRequest][google.cloud.timeseriesinsights.v1.QueryDataSetRequest] had set
	// [slicingParams.dimensionNames][google.cloud.timeseriesinsights.v1.SlicingParams.dimension_names] to ["d1",
	// "d2"] and [timeseries_params.granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity] to
	// "3600s", then all the previous events will be aggregated into the same
	// [timeseries point][google.cloud.timeseriesinsights.v1.TimeseriesPoint].
	//
	// The time series point that they're all part of will have the
	// [time][google.cloud.timeseriesinsights.v1.TimeseriesPoint.time] set to "2020-12-27T00:00:00Z" and the
	// [value][google.cloud.timeseriesinsights.v1.TimeseriesPoint.value] populated based on this metric field:
	//
	// - If the metric is set to "m1" and metric_aggregation_method to SUM, then
	// the value of the point will be 600.
	// - If the metric is set to "m2" and metric_aggregation_method to SUM, then
	// the value of the point will be 66.
	// - If the metric is set to "m1" and metric_aggregation_method to AVERAGE,
	// then the value of the point will be 200.
	// - If the metric is set to "m2" and metric_aggregation_method to AVERAGE,
	// then the value of the point will be 22.
	// - If the metric field is "" or unspecified, then the value of the point
	// will be 3, as we will simply count the events.
	Metric *string `protobuf:"bytes,4,opt,name=metric,proto3,oneof" json:"metric,omitempty"`
	// Optional. Together with the [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] field, specifies how
	// we will aggregate multiple events to obtain the value of a time series
	// point. See the [metric][google.cloud.timeseriesinsights.v1.TimeseriesParams.metric] documentation for more
	// details.
	//
	// If the metric is not specified or "", then this field will be ignored.
	MetricAggregationMethod TimeseriesParams_AggregationMethod `protobuf:"varint,5,opt,name=metric_aggregation_method,json=metricAggregationMethod,proto3,enum=google.cloud.timeseriesinsights.v1.TimeseriesParams_AggregationMethod" json:"metric_aggregation_method,omitempty"`
}

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

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

func (*TimeseriesParams) ProtoMessage() {}

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

func (x *TimeseriesParams) GetForecastHistory() *durationpb.Duration {
	if x != nil {
		return x.ForecastHistory
	}
	return nil
}

func (x *TimeseriesParams) GetGranularity() *durationpb.Duration {
	if x != nil {
		return x.Granularity
	}
	return nil
}

func (x *TimeseriesParams) GetMetric() string {
	if x != nil && x.Metric != nil {
		return *x.Metric
	}
	return ""
}

func (x *TimeseriesParams) GetMetricAggregationMethod() TimeseriesParams_AggregationMethod {
	if x != nil {
		return x.MetricAggregationMethod
	}
	return TimeseriesParams_AGGREGATION_METHOD_UNSPECIFIED
}

// Request for performing a query against a loaded DataSet.
type QueryDataSetRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Loaded DataSet to be queried in the format of
	// "projects/{project}/datasets/{dataset}"
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Required. This is the point in time that we want to probe for anomalies.
	//
	// The corresponding [TimeseriesPoint][google.cloud.timeseriesinsights.v1.TimeseriesPoint] is referred to as the
	// detection point.
	//
	// **NOTE**: As with any other time series point, the value is given by
	// aggregating all events in the slice that are in the
	// [detectionTime, detectionTime + granularity) time interval, where
	// the granularity is specified in the
	// [timeseriesParams.granularity][google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity] field.
	DetectionTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=detection_time,json=detectionTime,proto3" json:"detection_time,omitempty"`
	// How many slices are returned in
	// [QueryDataSetResponse.slices][google.cloud.timeseriesinsights.v1.QueryDataSetResponse.slices].
	//
	// The returned slices are tentatively the ones with the highest
	// [anomaly scores][google.cloud.timeseriesinsights.v1.EvaluatedSlice.anomaly_score] in the dataset that match
	// the query, but it is not guaranteed.
	//
	// Reducing this number will improve query performance, both in terms of
	// latency and resource usage.
	//
	// Defaults to 50.
	NumReturnedSlices *int32 `protobuf:"varint,13,opt,name=num_returned_slices,json=numReturnedSlices,proto3,oneof" json:"num_returned_slices,omitempty"`
	// Parameters controlling how we will split the dataset into the slices that
	// we will analyze.
	SlicingParams *SlicingParams `protobuf:"bytes,9,opt,name=slicing_params,json=slicingParams,proto3" json:"slicing_params,omitempty"`
	// Parameters controlling how we will build the time series used to predict
	// the [detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time] value for each slice.
	TimeseriesParams *TimeseriesParams `protobuf:"bytes,10,opt,name=timeseries_params,json=timeseriesParams,proto3" json:"timeseries_params,omitempty"`
	// Parameters that control the time series forecasting models, such as the
	// sensitivity of the anomaly detection.
	ForecastParams *ForecastParams `protobuf:"bytes,5,opt,name=forecast_params,json=forecastParams,proto3" json:"forecast_params,omitempty"`
	// If specified, we will return the actual and forecasted time for all
	// returned slices.
	//
	// The time series are returned in the
	// [EvaluatedSlice.history][google.cloud.timeseriesinsights.v1.EvaluatedSlice.history] and
	// [EvaluatedSlice.forecast][google.cloud.timeseriesinsights.v1.EvaluatedSlice.forecast] fields.
	ReturnTimeseries bool `protobuf:"varint,8,opt,name=return_timeseries,json=returnTimeseries,proto3" json:"return_timeseries,omitempty"`
}

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

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

func (*QueryDataSetRequest) ProtoMessage() {}

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

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

func (x *QueryDataSetRequest) GetDetectionTime() *timestamppb.Timestamp {
	if x != nil {
		return x.DetectionTime
	}
	return nil
}

func (x *QueryDataSetRequest) GetNumReturnedSlices() int32 {
	if x != nil && x.NumReturnedSlices != nil {
		return *x.NumReturnedSlices
	}
	return 0
}

func (x *QueryDataSetRequest) GetSlicingParams() *SlicingParams {
	if x != nil {
		return x.SlicingParams
	}
	return nil
}

func (x *QueryDataSetRequest) GetTimeseriesParams() *TimeseriesParams {
	if x != nil {
		return x.TimeseriesParams
	}
	return nil
}

func (x *QueryDataSetRequest) GetForecastParams() *ForecastParams {
	if x != nil {
		return x.ForecastParams
	}
	return nil
}

func (x *QueryDataSetRequest) GetReturnTimeseries() bool {
	if x != nil {
		return x.ReturnTimeseries
	}
	return false
}

// Response for a query executed by the system.
type QueryDataSetResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Loaded DataSet that was queried.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Slices sorted in descending order by their
	// [anomalyScore][google.cloud.timeseriesinsights.v1.EvaluatedSlice.anomaly_score].
	//
	// At most [numReturnedSlices][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.num_returned_slices]
	// slices are present in this field.
	Slices []*EvaluatedSlice `protobuf:"bytes,3,rep,name=slices,proto3" json:"slices,omitempty"`
}

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

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

func (*QueryDataSetResponse) ProtoMessage() {}

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

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

func (x *QueryDataSetResponse) GetSlices() []*EvaluatedSlice {
	if x != nil {
		return x.Slices
	}
	return nil
}

// Request for evaluateSlice.
type EvaluateSliceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Loaded DataSet to be queried in the format of
	// "projects/{project}/datasets/{dataset}"
	Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"`
	// Required. Dimensions with pinned values that specify the slice for which we will
	// fetch the time series.
	PinnedDimensions []*PinnedDimension `protobuf:"bytes,2,rep,name=pinned_dimensions,json=pinnedDimensions,proto3" json:"pinned_dimensions,omitempty"`
	// Required. This is the point in time that we want to probe for anomalies.
	//
	// See documentation for
	// [QueryDataSetRequest.detectionTime][google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time].
	DetectionTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=detection_time,json=detectionTime,proto3" json:"detection_time,omitempty"`
	// Parameters controlling how we will build the time series used to predict
	// the [detectionTime][google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.detection_time] value for this slice.
	TimeseriesParams *TimeseriesParams `protobuf:"bytes,4,opt,name=timeseries_params,json=timeseriesParams,proto3" json:"timeseries_params,omitempty"`
	// Parameters that control the time series forecasting models, such as the
	// sensitivity of the anomaly detection.
	ForecastParams *ForecastParams `protobuf:"bytes,5,opt,name=forecast_params,json=forecastParams,proto3" json:"forecast_params,omitempty"`
}

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

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

func (*EvaluateSliceRequest) ProtoMessage() {}

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

func (x *EvaluateSliceRequest) GetDataset() string {
	if x != nil {
		return x.Dataset
	}
	return ""
}

func (x *EvaluateSliceRequest) GetPinnedDimensions() []*PinnedDimension {
	if x != nil {
		return x.PinnedDimensions
	}
	return nil
}

func (x *EvaluateSliceRequest) GetDetectionTime() *timestamppb.Timestamp {
	if x != nil {
		return x.DetectionTime
	}
	return nil
}

func (x *EvaluateSliceRequest) GetTimeseriesParams() *TimeseriesParams {
	if x != nil {
		return x.TimeseriesParams
	}
	return nil
}

func (x *EvaluateSliceRequest) GetForecastParams() *ForecastParams {
	if x != nil {
		return x.ForecastParams
	}
	return nil
}

// Request for evaluateTimeseries.
type EvaluateTimeseriesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Client project name in the format of 'projects/{project}'.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Evaluate this time series without requiring it was previously loaded in
	// a data set.
	//
	// The evaluated time series point is the last one, analogous to calling
	// evaluateSlice or query with
	// [detectionTime][google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.detection_time] set to
	// `timeseries.point(timeseries.point_size() - 1).time`.
	//
	// The length of the time series must be at least 10.
	//
	// All points must have the same time offset relative to the granularity. For
	// example, if the [granularity][google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.granularity] is "5s", then the following
	// point.time sequences are valid:
	// - "100s", "105s", "120s", "125s" (no offset)
	// - "102s", "107s", "122s", "127s" (offset is "2s")
	// However, the following sequence is invalid as it has inconsistent offsets:
	// - "100s", "105s", "122s", "127s" (offsets are either "0s" or "2s")
	Timeseries *Timeseries `protobuf:"bytes,2,opt,name=timeseries,proto3" json:"timeseries,omitempty"`
	// The granularity of the time series (time distance between two consecutive
	// points).
	Granularity *durationpb.Duration `protobuf:"bytes,3,opt,name=granularity,proto3" json:"granularity,omitempty"`
	// The forecast parameters.
	ForecastParams *ForecastParams `protobuf:"bytes,4,opt,name=forecast_params,json=forecastParams,proto3" json:"forecast_params,omitempty"`
}

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

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

func (*EvaluateTimeseriesRequest) ProtoMessage() {}

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

func (x *EvaluateTimeseriesRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *EvaluateTimeseriesRequest) GetTimeseries() *Timeseries {
	if x != nil {
		return x.Timeseries
	}
	return nil
}

func (x *EvaluateTimeseriesRequest) GetGranularity() *durationpb.Duration {
	if x != nil {
		return x.Granularity
	}
	return nil
}

func (x *EvaluateTimeseriesRequest) GetForecastParams() *ForecastParams {
	if x != nil {
		return x.ForecastParams
	}
	return nil
}

var File_google_cloud_timeseriesinsights_v1_timeseries_insights_proto protoreflect.FileDescriptor

var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc = []byte{
	0x0a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74,
	0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
	0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f,
	0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x22,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e,
	0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61,
	0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x01, 0x0a,
	0x0f, 0x42, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
	0x12, 0x29, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x63, 0x6f,
	0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x43, 0x6f, 0x6c,
	0x75, 0x6d, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
	0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64,
	0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0x72,
	0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03,
	0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x52,
	0x0a, 0x0a, 0x62, 0x71, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69,
	0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79,
	0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x62, 0x71, 0x4d, 0x61, 0x70, 0x70, 0x69,
	0x6e, 0x67, 0x22, 0xc2, 0x04, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x12,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65,
	0x73, 0x12, 0x51, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65,
	0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74,
	0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
	0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74,
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x7a, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
	0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02,
	0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0a, 0x0a,
	0x06, 0x4c, 0x4f, 0x41, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x4c,
	0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x4e, 0x4c, 0x4f,
	0x41, 0x44, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44,
	0x10, 0x07, 0x3a, 0x92, 0x01, 0xea, 0x41, 0x8e, 0x01, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
	0x61, 0x73, 0x65, 0x74, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74,
	0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x12, 0x3a, 0x70, 0x72, 0x6f,
	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64,
	0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x22, 0xa9, 0x01, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e,
	0x74, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f,
	0x0a, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12,
	0x1b, 0x0a, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x03, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x6f, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x08,
	0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00,
	0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x64, 0x6f, 0x75,
	0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52,
	0x09, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a,
	0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67,
	0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x6d, 0x65,
	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
	0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a,
	0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x76,
	0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x65,
	0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x41, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74,
	0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
	0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e,
	0x74, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44,
	0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x22,
	0x68, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x70,
	0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74,
	0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
	0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x64, 0x72, 0x6f, 0x70,
	0x70, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x14, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
	0x4a, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68,
	0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x22, 0x5d, 0x0a, 0x14, 0x44,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
	0x61, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x13, 0x4c,
	0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
	0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x14,
	0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
	0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61,
	0x53, 0x65, 0x74, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a,
	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x6c, 0x0a, 0x0f, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44,
	0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a,
	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12, 0x1b, 0x0a,
	0x08, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48,
	0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x22, 0xeb, 0x02, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74,
	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x31, 0x0a, 0x0f, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f,
	0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x42,
	0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x54, 0x68, 0x72,
	0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x10, 0x73, 0x65, 0x61,
	0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
	0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73,
	0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x03,
	0xe0, 0x41, 0x01, 0x52, 0x0f, 0x73, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79,
	0x48, 0x69, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x10, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x5f,
	0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f,
	0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
	0x5c, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x52,
	0x49, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x05, 0x12, 0x09, 0x0a,
	0x05, 0x44, 0x41, 0x49, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x45, 0x45, 0x4b,
	0x4c, 0x59, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10,
	0x03, 0x12, 0x0a, 0x0a, 0x06, 0x59, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x04, 0x42, 0x12, 0x0a,
	0x10, 0x5f, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
	0x64, 0x22, 0x66, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50,
	0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04,
	0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42,
	0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x57, 0x0a, 0x0a, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
	0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x69,
	0x6e, 0x74, 0x22, 0xe0, 0x04, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64,
	0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
	0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a,
	0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x65,
	0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x63,
	0x74, 0x75, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x14, 0x64, 0x65,
	0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x75,
	0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73,
	0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x16, 0x64, 0x65, 0x74, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73,
	0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
	0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01,
	0x48, 0x02, 0x52, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x6e, 0x6f, 0x6d,
	0x61, 0x6c, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x01, 0x48,
	0x03, 0x52, 0x0c, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88,
	0x01, 0x01, 0x12, 0x48, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
	0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
	0x69, 0x65, 0x73, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x08,
	0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73,
	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x08,
	0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x42,
	0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f,
	0x69, 0x6e, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x42, 0x15, 0x0a, 0x13,
	0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x5f,
	0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x0d, 0x53, 0x6c, 0x69, 0x63, 0x69, 0x6e,
	0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x69, 0x6d, 0x65, 0x6e,
	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
	0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x11, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f,
	0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68,
	0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65,
	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x70, 0x69, 0x6e, 0x6e,
	0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa5, 0x03, 0x0a,
	0x10, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d,
	0x73, 0x12, 0x49, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x69,
	0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x66, 0x6f, 0x72,
	0x65, 0x63, 0x61, 0x73, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x0b,
	0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20,
	0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, 0x01, 0x01,
	0x12, 0x87, 0x01, 0x0a, 0x19, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x67, 0x67, 0x72,
	0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
	0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65,
	0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65,
	0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x03, 0xe0, 0x41,
	0x01, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x4d, 0x0a, 0x11, 0x41, 0x67,
	0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12,
	0x22, 0x0a, 0x1e, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d,
	0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
	0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x55, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07,
	0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x22, 0xb8, 0x04, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61,
	0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa,
	0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
	0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x64, 0x65,
	0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x13, 0x6e,
	0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x69, 0x63,
	0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x52,
	0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01,
	0x12, 0x58, 0x0a, 0x0e, 0x73, 0x6c, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61,
	0x6d, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69,
	0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6c,
	0x69, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0d, 0x73, 0x6c, 0x69,
	0x63, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69,
	0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x10, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5b, 0x0a,
	0x0f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
	0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65,
	0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x65,
	0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65,
	0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6e, 0x75, 0x6d, 0x5f,
	0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x22,
	0x76, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x73,
	0x6c, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
	0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52,
	0x06, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x22, 0xd2, 0x03, 0x0a, 0x14, 0x45, 0x76, 0x61, 0x6c,
	0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x4b, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74,
	0x61, 0x73, 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x65, 0x0a,
	0x11, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69,
	0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69,
	0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x10, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x64,
	0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x11,
	0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65,
	0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x10, 0x74,
	0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
	0x5b, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61,
	0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69,
	0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f,
	0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x66, 0x6f,
	0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xd2, 0x02, 0x0a,
	0x19, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
	0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61,
	0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa,
	0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52,
	0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75,
	0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61,
	0x72, 0x69, 0x74, 0x79, 0x12, 0x5b, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74,
	0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e,
	0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d,
	0x73, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d,
	0x73, 0x32, 0xb1, 0x0e, 0x0a, 0x1c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
	0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
	0x65, 0x72, 0x12, 0xe4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53,
	0x65, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
	0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74,
	0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76,
	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, 0x2c,
	0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
	0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x5a, 0x22, 0x12, 0x20,
	0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a,
	0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
	0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xf3, 0x01, 0x0a, 0x0d, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69,
	0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53,
	0x65, 0x74, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f,
	0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
	0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65,
	0x74, 0x5a, 0x2b, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74,
	0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0xda, 0x41,
	0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12,
	0xc2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65,
	0x74, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67,
	0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74,
	0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
	0x70, 0x74, 0x79, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x2a, 0x2c, 0x2f, 0x76, 0x31,
	0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
	0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61,
	0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x22, 0x2a, 0x20, 0x2f, 0x76, 0x31,
	0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
	0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x93, 0x02, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45,
	0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69,
	0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e,
	0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73,
	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x78, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x3d,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f,
	0x2a, 0x7d, 0x3a, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a,
	0x01, 0x2a, 0x5a, 0x35, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73,
	0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61,
	0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64,
	0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0e, 0x64, 0x61, 0x74, 0x61,
	0x73, 0x65, 0x74, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xed, 0x01, 0x0a, 0x0c, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
	0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
	0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44,
	0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x64, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
	0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74,
	0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x5a, 0x2b, 0x22,
	0x26, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a,
	0x7d, 0x3a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x80, 0x02, 0x0a, 0x0d, 0x45,
	0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76,
	0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73,
	0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c,
	0x75, 0x61, 0x74, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x7a, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65,
	0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74,
	0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69,
	0x63, 0x65, 0x3a, 0x01, 0x2a, 0x5a, 0x36, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61,
	0x74, 0x61, 0x73, 0x65, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
	0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x76, 0x61,
	0x6c, 0x75, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8e, 0x02,
	0x0a, 0x12, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65,
	0x72, 0x69, 0x65, 0x73, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e,
	0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
	0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74,
	0x65, 0x64, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x84, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7e,
	0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x65,
	0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65,
	0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
	0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x1a, 0x55,
	0xca, 0x41, 0x21, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73,
	0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
	0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
	0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x9c, 0x01, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31,
	0x42, 0x17, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x49, 0x6e, 0x73, 0x69,
	0x67, 0x68, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67,
	0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
	0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72,
	0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x74,
	0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74,
	0x73, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescOnce sync.Once
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData = file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc
)

func file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescGZIP() []byte {
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescOnce.Do(func() {
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData)
	})
	return file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDescData
}

var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_goTypes = []interface{}{
	(DataSet_State)(0),                      // 0: google.cloud.timeseriesinsights.v1.DataSet.State
	(ForecastParams_Period)(0),              // 1: google.cloud.timeseriesinsights.v1.ForecastParams.Period
	(TimeseriesParams_AggregationMethod)(0), // 2: google.cloud.timeseriesinsights.v1.TimeseriesParams.AggregationMethod
	(*BigqueryMapping)(nil),                 // 3: google.cloud.timeseriesinsights.v1.BigqueryMapping
	(*DataSource)(nil),                      // 4: google.cloud.timeseriesinsights.v1.DataSource
	(*DataSet)(nil),                         // 5: google.cloud.timeseriesinsights.v1.DataSet
	(*EventDimension)(nil),                  // 6: google.cloud.timeseriesinsights.v1.EventDimension
	(*Event)(nil),                           // 7: google.cloud.timeseriesinsights.v1.Event
	(*AppendEventsRequest)(nil),             // 8: google.cloud.timeseriesinsights.v1.AppendEventsRequest
	(*AppendEventsResponse)(nil),            // 9: google.cloud.timeseriesinsights.v1.AppendEventsResponse
	(*CreateDataSetRequest)(nil),            // 10: google.cloud.timeseriesinsights.v1.CreateDataSetRequest
	(*DeleteDataSetRequest)(nil),            // 11: google.cloud.timeseriesinsights.v1.DeleteDataSetRequest
	(*ListDataSetsRequest)(nil),             // 12: google.cloud.timeseriesinsights.v1.ListDataSetsRequest
	(*ListDataSetsResponse)(nil),            // 13: google.cloud.timeseriesinsights.v1.ListDataSetsResponse
	(*PinnedDimension)(nil),                 // 14: google.cloud.timeseriesinsights.v1.PinnedDimension
	(*ForecastParams)(nil),                  // 15: google.cloud.timeseriesinsights.v1.ForecastParams
	(*TimeseriesPoint)(nil),                 // 16: google.cloud.timeseriesinsights.v1.TimeseriesPoint
	(*Timeseries)(nil),                      // 17: google.cloud.timeseriesinsights.v1.Timeseries
	(*EvaluatedSlice)(nil),                  // 18: google.cloud.timeseriesinsights.v1.EvaluatedSlice
	(*SlicingParams)(nil),                   // 19: google.cloud.timeseriesinsights.v1.SlicingParams
	(*TimeseriesParams)(nil),                // 20: google.cloud.timeseriesinsights.v1.TimeseriesParams
	(*QueryDataSetRequest)(nil),             // 21: google.cloud.timeseriesinsights.v1.QueryDataSetRequest
	(*QueryDataSetResponse)(nil),            // 22: google.cloud.timeseriesinsights.v1.QueryDataSetResponse
	(*EvaluateSliceRequest)(nil),            // 23: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest
	(*EvaluateTimeseriesRequest)(nil),       // 24: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest
	(*status.Status)(nil),                   // 25: google.rpc.Status
	(*durationpb.Duration)(nil),             // 26: google.protobuf.Duration
	(*timestamppb.Timestamp)(nil),           // 27: google.protobuf.Timestamp
	(*emptypb.Empty)(nil),                   // 28: google.protobuf.Empty
}
var file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_depIdxs = []int32{
	3,  // 0: google.cloud.timeseriesinsights.v1.DataSource.bq_mapping:type_name -> google.cloud.timeseriesinsights.v1.BigqueryMapping
	4,  // 1: google.cloud.timeseriesinsights.v1.DataSet.data_sources:type_name -> google.cloud.timeseriesinsights.v1.DataSource
	0,  // 2: google.cloud.timeseriesinsights.v1.DataSet.state:type_name -> google.cloud.timeseriesinsights.v1.DataSet.State
	25, // 3: google.cloud.timeseriesinsights.v1.DataSet.status:type_name -> google.rpc.Status
	26, // 4: google.cloud.timeseriesinsights.v1.DataSet.ttl:type_name -> google.protobuf.Duration
	6,  // 5: google.cloud.timeseriesinsights.v1.Event.dimensions:type_name -> google.cloud.timeseriesinsights.v1.EventDimension
	27, // 6: google.cloud.timeseriesinsights.v1.Event.event_time:type_name -> google.protobuf.Timestamp
	7,  // 7: google.cloud.timeseriesinsights.v1.AppendEventsRequest.events:type_name -> google.cloud.timeseriesinsights.v1.Event
	7,  // 8: google.cloud.timeseriesinsights.v1.AppendEventsResponse.dropped_events:type_name -> google.cloud.timeseriesinsights.v1.Event
	5,  // 9: google.cloud.timeseriesinsights.v1.CreateDataSetRequest.dataset:type_name -> google.cloud.timeseriesinsights.v1.DataSet
	5,  // 10: google.cloud.timeseriesinsights.v1.ListDataSetsResponse.datasets:type_name -> google.cloud.timeseriesinsights.v1.DataSet
	1,  // 11: google.cloud.timeseriesinsights.v1.ForecastParams.seasonality_hint:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams.Period
	26, // 12: google.cloud.timeseriesinsights.v1.ForecastParams.horizon_duration:type_name -> google.protobuf.Duration
	27, // 13: google.cloud.timeseriesinsights.v1.TimeseriesPoint.time:type_name -> google.protobuf.Timestamp
	16, // 14: google.cloud.timeseriesinsights.v1.Timeseries.point:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesPoint
	14, // 15: google.cloud.timeseriesinsights.v1.EvaluatedSlice.dimensions:type_name -> google.cloud.timeseriesinsights.v1.PinnedDimension
	17, // 16: google.cloud.timeseriesinsights.v1.EvaluatedSlice.history:type_name -> google.cloud.timeseriesinsights.v1.Timeseries
	17, // 17: google.cloud.timeseriesinsights.v1.EvaluatedSlice.forecast:type_name -> google.cloud.timeseriesinsights.v1.Timeseries
	25, // 18: google.cloud.timeseriesinsights.v1.EvaluatedSlice.status:type_name -> google.rpc.Status
	14, // 19: google.cloud.timeseriesinsights.v1.SlicingParams.pinned_dimensions:type_name -> google.cloud.timeseriesinsights.v1.PinnedDimension
	26, // 20: google.cloud.timeseriesinsights.v1.TimeseriesParams.forecast_history:type_name -> google.protobuf.Duration
	26, // 21: google.cloud.timeseriesinsights.v1.TimeseriesParams.granularity:type_name -> google.protobuf.Duration
	2,  // 22: google.cloud.timeseriesinsights.v1.TimeseriesParams.metric_aggregation_method:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesParams.AggregationMethod
	27, // 23: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.detection_time:type_name -> google.protobuf.Timestamp
	19, // 24: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.slicing_params:type_name -> google.cloud.timeseriesinsights.v1.SlicingParams
	20, // 25: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.timeseries_params:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesParams
	15, // 26: google.cloud.timeseriesinsights.v1.QueryDataSetRequest.forecast_params:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams
	18, // 27: google.cloud.timeseriesinsights.v1.QueryDataSetResponse.slices:type_name -> google.cloud.timeseriesinsights.v1.EvaluatedSlice
	14, // 28: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.pinned_dimensions:type_name -> google.cloud.timeseriesinsights.v1.PinnedDimension
	27, // 29: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.detection_time:type_name -> google.protobuf.Timestamp
	20, // 30: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.timeseries_params:type_name -> google.cloud.timeseriesinsights.v1.TimeseriesParams
	15, // 31: google.cloud.timeseriesinsights.v1.EvaluateSliceRequest.forecast_params:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams
	17, // 32: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.timeseries:type_name -> google.cloud.timeseriesinsights.v1.Timeseries
	26, // 33: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.granularity:type_name -> google.protobuf.Duration
	15, // 34: google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest.forecast_params:type_name -> google.cloud.timeseriesinsights.v1.ForecastParams
	12, // 35: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.ListDataSets:input_type -> google.cloud.timeseriesinsights.v1.ListDataSetsRequest
	10, // 36: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.CreateDataSet:input_type -> google.cloud.timeseriesinsights.v1.CreateDataSetRequest
	11, // 37: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.DeleteDataSet:input_type -> google.cloud.timeseriesinsights.v1.DeleteDataSetRequest
	8,  // 38: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.AppendEvents:input_type -> google.cloud.timeseriesinsights.v1.AppendEventsRequest
	21, // 39: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.QueryDataSet:input_type -> google.cloud.timeseriesinsights.v1.QueryDataSetRequest
	23, // 40: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateSlice:input_type -> google.cloud.timeseriesinsights.v1.EvaluateSliceRequest
	24, // 41: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateTimeseries:input_type -> google.cloud.timeseriesinsights.v1.EvaluateTimeseriesRequest
	13, // 42: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.ListDataSets:output_type -> google.cloud.timeseriesinsights.v1.ListDataSetsResponse
	5,  // 43: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.CreateDataSet:output_type -> google.cloud.timeseriesinsights.v1.DataSet
	28, // 44: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.DeleteDataSet:output_type -> google.protobuf.Empty
	9,  // 45: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.AppendEvents:output_type -> google.cloud.timeseriesinsights.v1.AppendEventsResponse
	22, // 46: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.QueryDataSet:output_type -> google.cloud.timeseriesinsights.v1.QueryDataSetResponse
	18, // 47: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateSlice:output_type -> google.cloud.timeseriesinsights.v1.EvaluatedSlice
	18, // 48: google.cloud.timeseriesinsights.v1.TimeseriesInsightsController.EvaluateTimeseries:output_type -> google.cloud.timeseriesinsights.v1.EvaluatedSlice
	42, // [42:49] is the sub-list for method output_type
	35, // [35:42] is the sub-list for method input_type
	35, // [35:35] is the sub-list for extension type_name
	35, // [35:35] is the sub-list for extension extendee
	0,  // [0:35] is the sub-list for field type_name
}

func init() { file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_init() }
func file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_init() {
	if File_google_cloud_timeseriesinsights_v1_timeseries_insights_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BigqueryMapping); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DataSource); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DataSet); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EventDimension); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Event); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppendEventsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppendEventsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateDataSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteDataSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListDataSetsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListDataSetsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PinnedDimension); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ForecastParams); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TimeseriesPoint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Timeseries); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EvaluatedSlice); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SlicingParams); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TimeseriesParams); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QueryDataSetRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*QueryDataSetResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EvaluateSliceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EvaluateTimeseriesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[3].OneofWrappers = []interface{}{
		(*EventDimension_StringVal)(nil),
		(*EventDimension_LongVal)(nil),
		(*EventDimension_BoolVal)(nil),
		(*EventDimension_DoubleVal)(nil),
	}
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[11].OneofWrappers = []interface{}{
		(*PinnedDimension_StringVal)(nil),
		(*PinnedDimension_BoolVal)(nil),
	}
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[12].OneofWrappers = []interface{}{}
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[13].OneofWrappers = []interface{}{}
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[15].OneofWrappers = []interface{}{}
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[17].OneofWrappers = []interface{}{}
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes[18].OneofWrappers = []interface{}{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc,
			NumEnums:      3,
			NumMessages:   22,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_goTypes,
		DependencyIndexes: file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_depIdxs,
		EnumInfos:         file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_enumTypes,
		MessageInfos:      file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_msgTypes,
	}.Build()
	File_google_cloud_timeseriesinsights_v1_timeseries_insights_proto = out.File
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_rawDesc = nil
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_goTypes = nil
	file_google_cloud_timeseriesinsights_v1_timeseries_insights_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// TimeseriesInsightsControllerClient is the client API for TimeseriesInsightsController service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type TimeseriesInsightsControllerClient interface {
	// Lists [DataSets][google.cloud.timeseriesinsights.v1.DataSet] under the project.
	//
	// The order of the results is unspecified but deterministic. Newly created
	// [DataSets][google.cloud.timeseriesinsights.v1.DataSet] will not necessarily be added to the end
	// of this list.
	ListDataSets(ctx context.Context, in *ListDataSetsRequest, opts ...grpc.CallOption) (*ListDataSetsResponse, error)
	// Create a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from data stored on Cloud
	// Storage.
	//
	// The data must stay immutable while we process the
	// [DataSet][google.cloud.timeseriesinsights.v1.DataSet] creation; otherwise, undefined outcomes
	// might result.  For more information, see [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	CreateDataSet(ctx context.Context, in *CreateDataSetRequest, opts ...grpc.CallOption) (*DataSet, error)
	// Delete a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from the system.
	//
	// **NOTE**: If the [DataSet][google.cloud.timeseriesinsights.v1.DataSet] is still being
	// processed, it will be aborted and deleted.
	DeleteDataSet(ctx context.Context, in *DeleteDataSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Append events to a `LOADED` [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	AppendEvents(ctx context.Context, in *AppendEventsRequest, opts ...grpc.CallOption) (*AppendEventsResponse, error)
	// Execute a Timeseries Insights query over a loaded
	// [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	QueryDataSet(ctx context.Context, in *QueryDataSetRequest, opts ...grpc.CallOption) (*QueryDataSetResponse, error)
	// Evaluate an explicit slice from a loaded [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	EvaluateSlice(ctx context.Context, in *EvaluateSliceRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error)
	// Evaluate an explicit timeseries.
	EvaluateTimeseries(ctx context.Context, in *EvaluateTimeseriesRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error)
}

type timeseriesInsightsControllerClient struct {
	cc grpc.ClientConnInterface
}

func NewTimeseriesInsightsControllerClient(cc grpc.ClientConnInterface) TimeseriesInsightsControllerClient {
	return &timeseriesInsightsControllerClient{cc}
}

func (c *timeseriesInsightsControllerClient) ListDataSets(ctx context.Context, in *ListDataSetsRequest, opts ...grpc.CallOption) (*ListDataSetsResponse, error) {
	out := new(ListDataSetsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/ListDataSets", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *timeseriesInsightsControllerClient) CreateDataSet(ctx context.Context, in *CreateDataSetRequest, opts ...grpc.CallOption) (*DataSet, error) {
	out := new(DataSet)
	err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/CreateDataSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *timeseriesInsightsControllerClient) DeleteDataSet(ctx context.Context, in *DeleteDataSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/DeleteDataSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *timeseriesInsightsControllerClient) AppendEvents(ctx context.Context, in *AppendEventsRequest, opts ...grpc.CallOption) (*AppendEventsResponse, error) {
	out := new(AppendEventsResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/AppendEvents", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *timeseriesInsightsControllerClient) QueryDataSet(ctx context.Context, in *QueryDataSetRequest, opts ...grpc.CallOption) (*QueryDataSetResponse, error) {
	out := new(QueryDataSetResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/QueryDataSet", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *timeseriesInsightsControllerClient) EvaluateSlice(ctx context.Context, in *EvaluateSliceRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error) {
	out := new(EvaluatedSlice)
	err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateSlice", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *timeseriesInsightsControllerClient) EvaluateTimeseries(ctx context.Context, in *EvaluateTimeseriesRequest, opts ...grpc.CallOption) (*EvaluatedSlice, error) {
	out := new(EvaluatedSlice)
	err := c.cc.Invoke(ctx, "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateTimeseries", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// TimeseriesInsightsControllerServer is the server API for TimeseriesInsightsController service.
type TimeseriesInsightsControllerServer interface {
	// Lists [DataSets][google.cloud.timeseriesinsights.v1.DataSet] under the project.
	//
	// The order of the results is unspecified but deterministic. Newly created
	// [DataSets][google.cloud.timeseriesinsights.v1.DataSet] will not necessarily be added to the end
	// of this list.
	ListDataSets(context.Context, *ListDataSetsRequest) (*ListDataSetsResponse, error)
	// Create a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from data stored on Cloud
	// Storage.
	//
	// The data must stay immutable while we process the
	// [DataSet][google.cloud.timeseriesinsights.v1.DataSet] creation; otherwise, undefined outcomes
	// might result.  For more information, see [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	CreateDataSet(context.Context, *CreateDataSetRequest) (*DataSet, error)
	// Delete a [DataSet][google.cloud.timeseriesinsights.v1.DataSet] from the system.
	//
	// **NOTE**: If the [DataSet][google.cloud.timeseriesinsights.v1.DataSet] is still being
	// processed, it will be aborted and deleted.
	DeleteDataSet(context.Context, *DeleteDataSetRequest) (*emptypb.Empty, error)
	// Append events to a `LOADED` [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	AppendEvents(context.Context, *AppendEventsRequest) (*AppendEventsResponse, error)
	// Execute a Timeseries Insights query over a loaded
	// [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	QueryDataSet(context.Context, *QueryDataSetRequest) (*QueryDataSetResponse, error)
	// Evaluate an explicit slice from a loaded [DataSet][google.cloud.timeseriesinsights.v1.DataSet].
	EvaluateSlice(context.Context, *EvaluateSliceRequest) (*EvaluatedSlice, error)
	// Evaluate an explicit timeseries.
	EvaluateTimeseries(context.Context, *EvaluateTimeseriesRequest) (*EvaluatedSlice, error)
}

// UnimplementedTimeseriesInsightsControllerServer can be embedded to have forward compatible implementations.
type UnimplementedTimeseriesInsightsControllerServer struct {
}

func (*UnimplementedTimeseriesInsightsControllerServer) ListDataSets(context.Context, *ListDataSetsRequest) (*ListDataSetsResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method ListDataSets not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) CreateDataSet(context.Context, *CreateDataSetRequest) (*DataSet, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method CreateDataSet not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) DeleteDataSet(context.Context, *DeleteDataSetRequest) (*emptypb.Empty, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method DeleteDataSet not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) AppendEvents(context.Context, *AppendEventsRequest) (*AppendEventsResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method AppendEvents not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) QueryDataSet(context.Context, *QueryDataSetRequest) (*QueryDataSetResponse, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method QueryDataSet not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) EvaluateSlice(context.Context, *EvaluateSliceRequest) (*EvaluatedSlice, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method EvaluateSlice not implemented")
}
func (*UnimplementedTimeseriesInsightsControllerServer) EvaluateTimeseries(context.Context, *EvaluateTimeseriesRequest) (*EvaluatedSlice, error) {
	return nil, status1.Errorf(codes.Unimplemented, "method EvaluateTimeseries not implemented")
}

func RegisterTimeseriesInsightsControllerServer(s *grpc.Server, srv TimeseriesInsightsControllerServer) {
	s.RegisterService(&_TimeseriesInsightsController_serviceDesc, srv)
}

func _TimeseriesInsightsController_ListDataSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListDataSetsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TimeseriesInsightsControllerServer).ListDataSets(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/ListDataSets",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TimeseriesInsightsControllerServer).ListDataSets(ctx, req.(*ListDataSetsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TimeseriesInsightsController_CreateDataSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateDataSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TimeseriesInsightsControllerServer).CreateDataSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/CreateDataSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TimeseriesInsightsControllerServer).CreateDataSet(ctx, req.(*CreateDataSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TimeseriesInsightsController_DeleteDataSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteDataSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TimeseriesInsightsControllerServer).DeleteDataSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/DeleteDataSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TimeseriesInsightsControllerServer).DeleteDataSet(ctx, req.(*DeleteDataSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TimeseriesInsightsController_AppendEvents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AppendEventsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TimeseriesInsightsControllerServer).AppendEvents(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/AppendEvents",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TimeseriesInsightsControllerServer).AppendEvents(ctx, req.(*AppendEventsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TimeseriesInsightsController_QueryDataSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(QueryDataSetRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TimeseriesInsightsControllerServer).QueryDataSet(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/QueryDataSet",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TimeseriesInsightsControllerServer).QueryDataSet(ctx, req.(*QueryDataSetRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TimeseriesInsightsController_EvaluateSlice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(EvaluateSliceRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TimeseriesInsightsControllerServer).EvaluateSlice(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateSlice",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TimeseriesInsightsControllerServer).EvaluateSlice(ctx, req.(*EvaluateSliceRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _TimeseriesInsightsController_EvaluateTimeseries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(EvaluateTimeseriesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TimeseriesInsightsControllerServer).EvaluateTimeseries(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.timeseriesinsights.v1.TimeseriesInsightsController/EvaluateTimeseries",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TimeseriesInsightsControllerServer).EvaluateTimeseries(ctx, req.(*EvaluateTimeseriesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _TimeseriesInsightsController_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.cloud.timeseriesinsights.v1.TimeseriesInsightsController",
	HandlerType: (*TimeseriesInsightsControllerServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "ListDataSets",
			Handler:    _TimeseriesInsightsController_ListDataSets_Handler,
		},
		{
			MethodName: "CreateDataSet",
			Handler:    _TimeseriesInsightsController_CreateDataSet_Handler,
		},
		{
			MethodName: "DeleteDataSet",
			Handler:    _TimeseriesInsightsController_DeleteDataSet_Handler,
		},
		{
			MethodName: "AppendEvents",
			Handler:    _TimeseriesInsightsController_AppendEvents_Handler,
		},
		{
			MethodName: "QueryDataSet",
			Handler:    _TimeseriesInsightsController_QueryDataSet_Handler,
		},
		{
			MethodName: "EvaluateSlice",
			Handler:    _TimeseriesInsightsController_EvaluateSlice_Handler,
		},
		{
			MethodName: "EvaluateTimeseries",
			Handler:    _TimeseriesInsightsController_EvaluateTimeseries_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "google/cloud/timeseriesinsights/v1/timeseries_insights.proto",
}
