Put decimal places with isenforced and digits on backend

pull/10616/head
ebb-tide 2018-04-27 16:36:02 -07:00
parent 39f2eeb146
commit 59ada00bc9
5 changed files with 234 additions and 191 deletions

View File

@ -344,7 +344,6 @@ func (m *DashboardCell) GetTableOptions() *TableOptions {
}
type TableOptions struct {
TimeFormat string `protobuf:"bytes,1,opt,name=timeFormat,proto3" json:"timeFormat,omitempty"`
VerticalTimeAxis bool `protobuf:"varint,2,opt,name=verticalTimeAxis,proto3" json:"verticalTimeAxis,omitempty"`
SortBy *RenamableField `protobuf:"bytes,3,opt,name=sortBy" json:"sortBy,omitempty"`
Wrapping string `protobuf:"bytes,4,opt,name=wrapping,proto3" json:"wrapping,omitempty"`
@ -357,13 +356,6 @@ func (m *TableOptions) String() string { return proto.CompactTextStri
func (*TableOptions) ProtoMessage() {}
func (*TableOptions) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{3} }
func (m *TableOptions) GetTimeFormat() string {
if m != nil {
return m.TimeFormat
}
return ""
}
func (m *TableOptions) GetVerticalTimeAxis() bool {
if m != nil {
return m.VerticalTimeAxis

View File

@ -280,13 +280,17 @@ func MarshalDashboard(d chronograf.Dashboard) ([]byte, error) {
FixFirstColumn: c.TableOptions.FixFirstColumn,
}
decimalPlaces := &DecimalPlaces{
IsEnforced: c.DecimalPlaces.IsEnforced,
Digits: c.DecimalPlaces.Digits,
}
fieldOptions := make([]*RenamableField, len(c.FieldOptions))
for i, field := range c.FieldOptions {
fieldOptions[i] = &RenamableField{
InternalName: field.InternalName,
DisplayName: field.DisplayName,
Visible: field.Visible,
Precision: field.Precision,
}
}
@ -305,9 +309,10 @@ func MarshalDashboard(d chronograf.Dashboard) ([]byte, error) {
Type: c.Legend.Type,
Orientation: c.Legend.Orientation,
},
TableOptions: tableOptions,
FieldOptions: fieldOptions,
TimeFormat: c.TimeFormat,
TableOptions: tableOptions,
FieldOptions: fieldOptions,
TimeFormat: c.TimeFormat,
DecimalPlaces: decimalPlaces,
}
}
templates := make([]*Template, len(d.Templates))
@ -454,7 +459,12 @@ func UnmarshalDashboard(data []byte, d *chronograf.Dashboard) error {
fieldOptions[i].InternalName = field.InternalName
fieldOptions[i].DisplayName = field.DisplayName
fieldOptions[i].Visible = field.Visible
fieldOptions[i].Precision = field.Precision
}
decimalPlaces := chronograf.DecimalPlaces{}
if c.DecimalPlaces != nil {
decimalPlaces.IsEnforced = c.DecimalPlaces.IsEnforced
decimalPlaces.Digits = c.DecimalPlaces.Digits
}
// FIXME: this is merely for legacy cells and
@ -465,20 +475,21 @@ func UnmarshalDashboard(data []byte, d *chronograf.Dashboard) error {
}
cells[i] = chronograf.DashboardCell{
ID: c.ID,
X: c.X,
Y: c.Y,
W: c.W,
H: c.H,
Name: c.Name,
Queries: queries,
Type: cellType,
Axes: axes,
CellColors: colors,
Legend: legend,
TableOptions: tableOptions,
FieldOptions: fieldOptions,
TimeFormat: c.TimeFormat,
ID: c.ID,
X: c.X,
Y: c.Y,
W: c.W,
H: c.H,
Name: c.Name,
Queries: queries,
Type: cellType,
Axes: axes,
CellColors: colors,
Legend: legend,
TableOptions: tableOptions,
FieldOptions: fieldOptions,
TimeFormat: c.TimeFormat,
DecimalPlaces: decimalPlaces,
}
}

View File

@ -11,6 +11,7 @@ It has these top-level messages:
Source
Dashboard
DashboardCell
DecimalPlaces
TableOptions
RenamableField
Color
@ -220,20 +221,21 @@ func (m *Dashboard) GetOrganization() string {
}
type DashboardCell struct {
X int32 `protobuf:"varint,1,opt,name=x,proto3" json:"x,omitempty"`
Y int32 `protobuf:"varint,2,opt,name=y,proto3" json:"y,omitempty"`
W int32 `protobuf:"varint,3,opt,name=w,proto3" json:"w,omitempty"`
H int32 `protobuf:"varint,4,opt,name=h,proto3" json:"h,omitempty"`
Queries []*Query `protobuf:"bytes,5,rep,name=queries" json:"queries,omitempty"`
Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"`
ID string `protobuf:"bytes,8,opt,name=ID,proto3" json:"ID,omitempty"`
Axes map[string]*Axis `protobuf:"bytes,9,rep,name=axes" json:"axes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"`
Colors []*Color `protobuf:"bytes,10,rep,name=colors" json:"colors,omitempty"`
Legend *Legend `protobuf:"bytes,11,opt,name=legend" json:"legend,omitempty"`
TableOptions *TableOptions `protobuf:"bytes,12,opt,name=tableOptions" json:"tableOptions,omitempty"`
FieldOptions []*RenamableField `protobuf:"bytes,13,rep,name=fieldOptions" json:"fieldOptions,omitempty"`
TimeFormat string `protobuf:"bytes,14,opt,name=timeFormat,proto3" json:"timeFormat,omitempty"`
X int32 `protobuf:"varint,1,opt,name=x,proto3" json:"x,omitempty"`
Y int32 `protobuf:"varint,2,opt,name=y,proto3" json:"y,omitempty"`
W int32 `protobuf:"varint,3,opt,name=w,proto3" json:"w,omitempty"`
H int32 `protobuf:"varint,4,opt,name=h,proto3" json:"h,omitempty"`
Queries []*Query `protobuf:"bytes,5,rep,name=queries" json:"queries,omitempty"`
Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"`
ID string `protobuf:"bytes,8,opt,name=ID,proto3" json:"ID,omitempty"`
Axes map[string]*Axis `protobuf:"bytes,9,rep,name=axes" json:"axes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"`
Colors []*Color `protobuf:"bytes,10,rep,name=colors" json:"colors,omitempty"`
Legend *Legend `protobuf:"bytes,11,opt,name=legend" json:"legend,omitempty"`
TableOptions *TableOptions `protobuf:"bytes,12,opt,name=tableOptions" json:"tableOptions,omitempty"`
FieldOptions []*RenamableField `protobuf:"bytes,13,rep,name=fieldOptions" json:"fieldOptions,omitempty"`
TimeFormat string `protobuf:"bytes,14,opt,name=timeFormat,proto3" json:"timeFormat,omitempty"`
DecimalPlaces *DecimalPlaces `protobuf:"bytes,15,opt,name=decimalPlaces" json:"decimalPlaces,omitempty"`
}
func (m *DashboardCell) Reset() { *m = DashboardCell{} }
@ -339,6 +341,37 @@ func (m *DashboardCell) GetTimeFormat() string {
return ""
}
func (m *DashboardCell) GetDecimalPlaces() *DecimalPlaces {
if m != nil {
return m.DecimalPlaces
}
return nil
}
type DecimalPlaces struct {
IsEnforced bool `protobuf:"varint,1,opt,name=isEnforced,proto3" json:"isEnforced,omitempty"`
Digits int32 `protobuf:"varint,2,opt,name=digits,proto3" json:"digits,omitempty"`
}
func (m *DecimalPlaces) Reset() { *m = DecimalPlaces{} }
func (m *DecimalPlaces) String() string { return proto.CompactTextString(m) }
func (*DecimalPlaces) ProtoMessage() {}
func (*DecimalPlaces) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{3} }
func (m *DecimalPlaces) GetIsEnforced() bool {
if m != nil {
return m.IsEnforced
}
return false
}
func (m *DecimalPlaces) GetDigits() int32 {
if m != nil {
return m.Digits
}
return 0
}
type TableOptions struct {
VerticalTimeAxis bool `protobuf:"varint,2,opt,name=verticalTimeAxis,proto3" json:"verticalTimeAxis,omitempty"`
SortBy *RenamableField `protobuf:"bytes,3,opt,name=sortBy" json:"sortBy,omitempty"`
@ -349,7 +382,7 @@ type TableOptions struct {
func (m *TableOptions) Reset() { *m = TableOptions{} }
func (m *TableOptions) String() string { return proto.CompactTextString(m) }
func (*TableOptions) ProtoMessage() {}
func (*TableOptions) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{3} }
func (*TableOptions) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{4} }
func (m *TableOptions) GetVerticalTimeAxis() bool {
if m != nil {
@ -383,13 +416,12 @@ type RenamableField struct {
InternalName string `protobuf:"bytes,1,opt,name=internalName,proto3" json:"internalName,omitempty"`
DisplayName string `protobuf:"bytes,2,opt,name=displayName,proto3" json:"displayName,omitempty"`
Visible bool `protobuf:"varint,3,opt,name=visible,proto3" json:"visible,omitempty"`
Precision int32 `protobuf:"varint,4,opt,name=precision,proto3" json:"precision,omitempty"`
}
func (m *RenamableField) Reset() { *m = RenamableField{} }
func (m *RenamableField) String() string { return proto.CompactTextString(m) }
func (*RenamableField) ProtoMessage() {}
func (*RenamableField) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{4} }
func (*RenamableField) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{5} }
func (m *RenamableField) GetInternalName() string {
if m != nil {
@ -412,13 +444,6 @@ func (m *RenamableField) GetVisible() bool {
return false
}
func (m *RenamableField) GetPrecision() int32 {
if m != nil {
return m.Precision
}
return 0
}
type Color struct {
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
Type string `protobuf:"bytes,2,opt,name=Type,proto3" json:"Type,omitempty"`
@ -430,7 +455,7 @@ type Color struct {
func (m *Color) Reset() { *m = Color{} }
func (m *Color) String() string { return proto.CompactTextString(m) }
func (*Color) ProtoMessage() {}
func (*Color) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{5} }
func (*Color) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{6} }
func (m *Color) GetID() string {
if m != nil {
@ -475,7 +500,7 @@ type Legend struct {
func (m *Legend) Reset() { *m = Legend{} }
func (m *Legend) String() string { return proto.CompactTextString(m) }
func (*Legend) ProtoMessage() {}
func (*Legend) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{6} }
func (*Legend) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{7} }
func (m *Legend) GetType() string {
if m != nil {
@ -504,7 +529,7 @@ type Axis struct {
func (m *Axis) Reset() { *m = Axis{} }
func (m *Axis) String() string { return proto.CompactTextString(m) }
func (*Axis) ProtoMessage() {}
func (*Axis) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{7} }
func (*Axis) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{8} }
func (m *Axis) GetLegacyBounds() []int64 {
if m != nil {
@ -567,7 +592,7 @@ type Template struct {
func (m *Template) Reset() { *m = Template{} }
func (m *Template) String() string { return proto.CompactTextString(m) }
func (*Template) ProtoMessage() {}
func (*Template) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{8} }
func (*Template) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{9} }
func (m *Template) GetID() string {
if m != nil {
@ -620,7 +645,7 @@ type TemplateValue struct {
func (m *TemplateValue) Reset() { *m = TemplateValue{} }
func (m *TemplateValue) String() string { return proto.CompactTextString(m) }
func (*TemplateValue) ProtoMessage() {}
func (*TemplateValue) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{9} }
func (*TemplateValue) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{10} }
func (m *TemplateValue) GetType() string {
if m != nil {
@ -655,7 +680,7 @@ type TemplateQuery struct {
func (m *TemplateQuery) Reset() { *m = TemplateQuery{} }
func (m *TemplateQuery) String() string { return proto.CompactTextString(m) }
func (*TemplateQuery) ProtoMessage() {}
func (*TemplateQuery) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{10} }
func (*TemplateQuery) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{11} }
func (m *TemplateQuery) GetCommand() string {
if m != nil {
@ -714,7 +739,7 @@ type Server struct {
func (m *Server) Reset() { *m = Server{} }
func (m *Server) String() string { return proto.CompactTextString(m) }
func (*Server) ProtoMessage() {}
func (*Server) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{11} }
func (*Server) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{12} }
func (m *Server) GetID() int64 {
if m != nil {
@ -790,7 +815,7 @@ type Layout struct {
func (m *Layout) Reset() { *m = Layout{} }
func (m *Layout) String() string { return proto.CompactTextString(m) }
func (*Layout) ProtoMessage() {}
func (*Layout) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{12} }
func (*Layout) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{13} }
func (m *Layout) GetID() string {
if m != nil {
@ -844,7 +869,7 @@ type Cell struct {
func (m *Cell) Reset() { *m = Cell{} }
func (m *Cell) String() string { return proto.CompactTextString(m) }
func (*Cell) ProtoMessage() {}
func (*Cell) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{13} }
func (*Cell) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{14} }
func (m *Cell) GetX() int32 {
if m != nil {
@ -938,7 +963,7 @@ type Query struct {
func (m *Query) Reset() { *m = Query{} }
func (m *Query) String() string { return proto.CompactTextString(m) }
func (*Query) ProtoMessage() {}
func (*Query) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{14} }
func (*Query) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{15} }
func (m *Query) GetCommand() string {
if m != nil {
@ -1012,7 +1037,7 @@ type TimeShift struct {
func (m *TimeShift) Reset() { *m = TimeShift{} }
func (m *TimeShift) String() string { return proto.CompactTextString(m) }
func (*TimeShift) ProtoMessage() {}
func (*TimeShift) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{15} }
func (*TimeShift) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{16} }
func (m *TimeShift) GetLabel() string {
if m != nil {
@ -1043,7 +1068,7 @@ type Range struct {
func (m *Range) Reset() { *m = Range{} }
func (m *Range) String() string { return proto.CompactTextString(m) }
func (*Range) ProtoMessage() {}
func (*Range) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{16} }
func (*Range) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{17} }
func (m *Range) GetUpper() int64 {
if m != nil {
@ -1069,7 +1094,7 @@ type AlertRule struct {
func (m *AlertRule) Reset() { *m = AlertRule{} }
func (m *AlertRule) String() string { return proto.CompactTextString(m) }
func (*AlertRule) ProtoMessage() {}
func (*AlertRule) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{17} }
func (*AlertRule) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{18} }
func (m *AlertRule) GetID() string {
if m != nil {
@ -1111,7 +1136,7 @@ type User struct {
func (m *User) Reset() { *m = User{} }
func (m *User) String() string { return proto.CompactTextString(m) }
func (*User) ProtoMessage() {}
func (*User) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{18} }
func (*User) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{19} }
func (m *User) GetID() uint64 {
if m != nil {
@ -1163,7 +1188,7 @@ type Role struct {
func (m *Role) Reset() { *m = Role{} }
func (m *Role) String() string { return proto.CompactTextString(m) }
func (*Role) ProtoMessage() {}
func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{19} }
func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{20} }
func (m *Role) GetOrganization() string {
if m != nil {
@ -1190,7 +1215,7 @@ type Mapping struct {
func (m *Mapping) Reset() { *m = Mapping{} }
func (m *Mapping) String() string { return proto.CompactTextString(m) }
func (*Mapping) ProtoMessage() {}
func (*Mapping) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{20} }
func (*Mapping) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{21} }
func (m *Mapping) GetProvider() string {
if m != nil {
@ -1236,7 +1261,7 @@ type Organization struct {
func (m *Organization) Reset() { *m = Organization{} }
func (m *Organization) String() string { return proto.CompactTextString(m) }
func (*Organization) ProtoMessage() {}
func (*Organization) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{21} }
func (*Organization) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{22} }
func (m *Organization) GetID() string {
if m != nil {
@ -1266,7 +1291,7 @@ type Config struct {
func (m *Config) Reset() { *m = Config{} }
func (m *Config) String() string { return proto.CompactTextString(m) }
func (*Config) ProtoMessage() {}
func (*Config) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{22} }
func (*Config) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{23} }
func (m *Config) GetAuth() *AuthConfig {
if m != nil {
@ -1282,7 +1307,7 @@ type AuthConfig struct {
func (m *AuthConfig) Reset() { *m = AuthConfig{} }
func (m *AuthConfig) String() string { return proto.CompactTextString(m) }
func (*AuthConfig) ProtoMessage() {}
func (*AuthConfig) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{23} }
func (*AuthConfig) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{24} }
func (m *AuthConfig) GetSuperAdminNewUsers() bool {
if m != nil {
@ -1299,7 +1324,7 @@ type BuildInfo struct {
func (m *BuildInfo) Reset() { *m = BuildInfo{} }
func (m *BuildInfo) String() string { return proto.CompactTextString(m) }
func (*BuildInfo) ProtoMessage() {}
func (*BuildInfo) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{24} }
func (*BuildInfo) Descriptor() ([]byte, []int) { return fileDescriptorInternal, []int{25} }
func (m *BuildInfo) GetVersion() string {
if m != nil {
@ -1319,6 +1344,7 @@ func init() {
proto.RegisterType((*Source)(nil), "internal.Source")
proto.RegisterType((*Dashboard)(nil), "internal.Dashboard")
proto.RegisterType((*DashboardCell)(nil), "internal.DashboardCell")
proto.RegisterType((*DecimalPlaces)(nil), "internal.DecimalPlaces")
proto.RegisterType((*TableOptions)(nil), "internal.TableOptions")
proto.RegisterType((*RenamableField)(nil), "internal.RenamableField")
proto.RegisterType((*Color)(nil), "internal.Color")
@ -1346,107 +1372,110 @@ func init() {
func init() { proto.RegisterFile("internal.proto", fileDescriptorInternal) }
var fileDescriptorInternal = []byte{
// 1627 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xdd, 0x8f, 0xe3, 0x48,
0x11, 0x97, 0x13, 0x3b, 0x89, 0x2b, 0xd9, 0x61, 0xd4, 0xac, 0xee, 0xcc, 0x81, 0x50, 0xb0, 0xf8,
0x08, 0x1f, 0x37, 0x9c, 0xe6, 0x84, 0x84, 0x4e, 0xc7, 0x49, 0x99, 0x09, 0x7b, 0xcc, 0xee, 0xec,
0xce, 0x6c, 0x67, 0x66, 0x78, 0x42, 0xa7, 0x4e, 0xd2, 0x49, 0x5a, 0xe7, 0xd8, 0xa6, 0x6d, 0xcf,
0xc4, 0x3c, 0xf3, 0xcc, 0x2b, 0x6f, 0x48, 0x48, 0xf0, 0x0f, 0x20, 0x1e, 0x91, 0x78, 0xe7, 0x1f,
0x82, 0x47, 0x54, 0xfd, 0x61, 0x3b, 0x93, 0xec, 0x6a, 0x91, 0xd0, 0xbd, 0xf5, 0xaf, 0xaa, 0x52,
0xdd, 0x55, 0x5d, 0xf5, 0xeb, 0x72, 0xe0, 0x48, 0xc4, 0x39, 0x97, 0x31, 0x8b, 0x4e, 0x52, 0x99,
0xe4, 0x09, 0xe9, 0x59, 0x1c, 0xfe, 0xbe, 0x0d, 0x9d, 0x69, 0x52, 0xc8, 0x39, 0x27, 0x47, 0xd0,
0xba, 0x98, 0x04, 0xce, 0xd0, 0x19, 0xb5, 0x69, 0xeb, 0x62, 0x42, 0x08, 0xb8, 0xaf, 0xd8, 0x86,
0x07, 0xad, 0xa1, 0x33, 0xf2, 0xa9, 0x5a, 0xa3, 0xec, 0xa6, 0x4c, 0x79, 0xd0, 0xd6, 0x32, 0x5c,
0x93, 0x0f, 0xa0, 0x77, 0x9b, 0xa1, 0xb7, 0x0d, 0x0f, 0x5c, 0x25, 0xaf, 0x30, 0xea, 0xae, 0x59,
0x96, 0x3d, 0x24, 0x72, 0x11, 0x78, 0x5a, 0x67, 0x31, 0x39, 0x86, 0xf6, 0x2d, 0xbd, 0x0c, 0x3a,
0x4a, 0x8c, 0x4b, 0x12, 0x40, 0x77, 0xc2, 0x97, 0xac, 0x88, 0xf2, 0xa0, 0x3b, 0x74, 0x46, 0x3d,
0x6a, 0x21, 0xfa, 0xb9, 0xe1, 0x11, 0x5f, 0x49, 0xb6, 0x0c, 0x7a, 0xda, 0x8f, 0xc5, 0xe4, 0x04,
0xc8, 0x45, 0x9c, 0xf1, 0x79, 0x21, 0xf9, 0xf4, 0x4b, 0x91, 0xde, 0x71, 0x29, 0x96, 0x65, 0xe0,
0x2b, 0x07, 0x07, 0x34, 0xb8, 0xcb, 0x4b, 0x9e, 0x33, 0xdc, 0x1b, 0x94, 0x2b, 0x0b, 0x49, 0x08,
0x83, 0xe9, 0x9a, 0x49, 0xbe, 0x98, 0xf2, 0xb9, 0xe4, 0x79, 0xd0, 0x57, 0xea, 0x1d, 0x19, 0xda,
0x5c, 0xc9, 0x15, 0x8b, 0xc5, 0xef, 0x58, 0x2e, 0x92, 0x38, 0x18, 0x68, 0x9b, 0xa6, 0x0c, 0xb3,
0x44, 0x93, 0x88, 0x07, 0x4f, 0x74, 0x96, 0x70, 0x4d, 0xbe, 0x05, 0xbe, 0x09, 0x86, 0x5e, 0x07,
0x47, 0x4a, 0x51, 0x0b, 0xc2, 0xbf, 0x3b, 0xe0, 0x4f, 0x58, 0xb6, 0x9e, 0x25, 0x4c, 0x2e, 0xde,
0xe9, 0x26, 0x3e, 0x04, 0x6f, 0xce, 0xa3, 0x28, 0x0b, 0xda, 0xc3, 0xf6, 0xa8, 0x7f, 0xfa, 0xfe,
0x49, 0x75, 0xc5, 0x95, 0x9f, 0x73, 0x1e, 0x45, 0x54, 0x5b, 0x91, 0x8f, 0xc0, 0xcf, 0xf9, 0x26,
0x8d, 0x58, 0xce, 0xb3, 0xc0, 0x55, 0x3f, 0x21, 0xf5, 0x4f, 0x6e, 0x8c, 0x8a, 0xd6, 0x46, 0x7b,
0x81, 0x7a, 0xfb, 0x81, 0x86, 0x7f, 0x74, 0xe1, 0xc9, 0xce, 0x76, 0x64, 0x00, 0xce, 0x56, 0x9d,
0xdc, 0xa3, 0xce, 0x16, 0x51, 0xa9, 0x4e, 0xed, 0x51, 0xa7, 0x44, 0xf4, 0xa0, 0x2a, 0xc7, 0xa3,
0xce, 0x03, 0xa2, 0xb5, 0xaa, 0x17, 0x8f, 0x3a, 0x6b, 0xf2, 0x43, 0xe8, 0xfe, 0xb6, 0xe0, 0x52,
0xf0, 0x2c, 0xf0, 0xd4, 0xe9, 0xbe, 0x56, 0x9f, 0xee, 0x75, 0xc1, 0x65, 0x49, 0xad, 0x1e, 0xb3,
0xa1, 0x6a, 0x4d, 0x17, 0x8e, 0x5a, 0xa3, 0x2c, 0xc7, 0xba, 0xec, 0x6a, 0x19, 0xae, 0x4d, 0x16,
0x75, 0xb5, 0x60, 0x16, 0x7f, 0x06, 0x2e, 0xdb, 0xf2, 0x2c, 0xf0, 0x95, 0xff, 0xef, 0xbc, 0x21,
0x61, 0x27, 0xe3, 0x2d, 0xcf, 0x7e, 0x19, 0xe7, 0xb2, 0xa4, 0xca, 0x9c, 0xfc, 0x00, 0x3a, 0xf3,
0x24, 0x4a, 0x64, 0x16, 0xc0, 0xe3, 0x83, 0x9d, 0xa3, 0x9c, 0x1a, 0x35, 0x19, 0x41, 0x27, 0xe2,
0x2b, 0x1e, 0x2f, 0x54, 0xdd, 0xf4, 0x4f, 0x8f, 0x6b, 0xc3, 0x4b, 0x25, 0xa7, 0x46, 0x4f, 0x3e,
0x81, 0x41, 0xce, 0x66, 0x11, 0xbf, 0x4a, 0x31, 0x8b, 0x99, 0xaa, 0xa1, 0xfe, 0xe9, 0x7b, 0x8d,
0xfb, 0x68, 0x68, 0xe9, 0x8e, 0x2d, 0xf9, 0x14, 0x06, 0x4b, 0xc1, 0xa3, 0x85, 0xfd, 0xed, 0x13,
0x75, 0xa8, 0xa0, 0xfe, 0x2d, 0xe5, 0x31, 0xdb, 0xe0, 0x2f, 0x9e, 0xa1, 0x19, 0xdd, 0xb1, 0x26,
0xdf, 0x06, 0xc8, 0xc5, 0x86, 0x3f, 0x4b, 0xe4, 0x86, 0xe5, 0xa6, 0x0c, 0x1b, 0x92, 0x0f, 0x3e,
0x07, 0xbf, 0x8a, 0x1f, 0x1b, 0xf4, 0x4b, 0x5e, 0xaa, 0xdb, 0xf4, 0x29, 0x2e, 0xc9, 0x77, 0xc1,
0xbb, 0x67, 0x51, 0xa1, 0x2b, 0xb1, 0x7f, 0x7a, 0x54, 0xef, 0x3a, 0xde, 0x8a, 0x8c, 0x6a, 0xe5,
0x27, 0xad, 0x9f, 0x3b, 0xe1, 0x3f, 0x1c, 0x18, 0x34, 0xa3, 0x20, 0x3f, 0x82, 0xe3, 0x7b, 0x2e,
0x73, 0x31, 0x67, 0xd1, 0x8d, 0xd8, 0x70, 0xb4, 0x57, 0x5e, 0x7a, 0x74, 0x4f, 0x4e, 0x3e, 0x82,
0x4e, 0x96, 0xc8, 0xfc, 0xac, 0x54, 0xd5, 0xf2, 0xb6, 0xe8, 0x8c, 0x1d, 0xf2, 0xc3, 0x83, 0x64,
0x69, 0x2a, 0xe2, 0x95, 0xe5, 0x20, 0x8b, 0xc9, 0xf7, 0xe1, 0x68, 0x29, 0xb6, 0xcf, 0x84, 0xcc,
0xf2, 0xf3, 0x24, 0x2a, 0x36, 0xb1, 0xaa, 0x9c, 0x1e, 0x7d, 0x24, 0x7d, 0xee, 0xf6, 0x9c, 0xe3,
0xd6, 0x73, 0xb7, 0xe7, 0x1d, 0x77, 0xc2, 0x3f, 0x38, 0x70, 0xb4, 0xbb, 0x15, 0xf6, 0x83, 0x3d,
0x85, 0x6a, 0x46, 0x9d, 0x96, 0x1d, 0x19, 0x19, 0x42, 0x7f, 0x21, 0xb2, 0x34, 0x62, 0x65, 0xa3,
0x5f, 0x9b, 0x22, 0x24, 0x9f, 0x7b, 0x91, 0x89, 0x59, 0xa4, 0x39, 0xb4, 0x47, 0x2d, 0x44, 0x82,
0x48, 0x25, 0x9f, 0x8b, 0x0c, 0x9b, 0x4d, 0xf7, 0x45, 0x2d, 0x08, 0x57, 0xe0, 0xa9, 0x6a, 0x6b,
0x70, 0x83, 0x6f, 0xb9, 0x41, 0x31, 0x72, 0xab, 0xc1, 0xc8, 0xc7, 0xd0, 0xfe, 0x15, 0xdf, 0x1a,
0x92, 0xc6, 0x65, 0xc5, 0x20, 0x6e, 0x83, 0x41, 0x9e, 0x82, 0x77, 0xa7, 0x2e, 0x53, 0x77, 0xb6,
0x06, 0xe1, 0x67, 0xd0, 0xd1, 0xd5, 0x5a, 0x79, 0x76, 0x1a, 0x9e, 0x87, 0xd0, 0xbf, 0x92, 0x82,
0xc7, 0xb9, 0xe6, 0x04, 0x13, 0x60, 0x43, 0x14, 0xfe, 0xcd, 0x01, 0x57, 0x5d, 0x62, 0x08, 0x83,
0x88, 0xaf, 0xd8, 0xbc, 0x3c, 0x4b, 0x8a, 0x78, 0x91, 0x05, 0xce, 0xb0, 0x3d, 0x6a, 0xd3, 0x1d,
0x19, 0x79, 0x0f, 0x3a, 0x33, 0xad, 0x6d, 0x0d, 0xdb, 0x23, 0x9f, 0x1a, 0x84, 0x47, 0x8b, 0xd8,
0x8c, 0x47, 0x26, 0x04, 0x0d, 0xd0, 0x3a, 0x95, 0x7c, 0x29, 0xb6, 0x26, 0x0c, 0x83, 0x50, 0x9e,
0x15, 0x4b, 0x94, 0xeb, 0x48, 0x0c, 0xc2, 0x00, 0x66, 0x2c, 0xab, 0x88, 0x02, 0xd7, 0xe8, 0x39,
0x9b, 0xb3, 0xc8, 0x32, 0x85, 0x06, 0xe1, 0x3f, 0x1d, 0x7c, 0x5f, 0x34, 0xf3, 0xed, 0x65, 0xf8,
0x1b, 0xd0, 0x43, 0x56, 0xfc, 0xe2, 0x9e, 0x49, 0x13, 0x70, 0x17, 0xf1, 0x1d, 0x93, 0xe4, 0xa7,
0xd0, 0x51, 0x25, 0x7f, 0x80, 0x85, 0xad, 0x3b, 0x95, 0x55, 0x6a, 0xcc, 0x2a, 0x9e, 0x72, 0x1b,
0x3c, 0x55, 0x05, 0xeb, 0x35, 0x83, 0xfd, 0x10, 0x3c, 0x24, 0xbc, 0x52, 0x9d, 0xfe, 0xa0, 0x67,
0x4d, 0x8b, 0xda, 0x2a, 0xbc, 0x85, 0x27, 0x3b, 0x3b, 0x56, 0x3b, 0x39, 0xbb, 0x3b, 0xd5, 0xed,
0xeb, 0x9b, 0x76, 0xc5, 0xde, 0xc9, 0x78, 0xc4, 0xe7, 0x39, 0x5f, 0x98, 0x9a, 0xac, 0x70, 0xf8,
0x67, 0xa7, 0xf6, 0xab, 0xf6, 0xc3, 0x02, 0x9e, 0x27, 0x9b, 0x0d, 0x8b, 0x17, 0xc6, 0xb5, 0x85,
0x98, 0xb7, 0xc5, 0xcc, 0xb8, 0x6e, 0x2d, 0x66, 0x88, 0x65, 0x6a, 0x6e, 0xb0, 0x25, 0x53, 0xac,
0x9d, 0x0d, 0x67, 0x59, 0x21, 0xf9, 0x86, 0xc7, 0xb9, 0x49, 0x41, 0x53, 0x44, 0xde, 0x87, 0x6e,
0xce, 0x56, 0x5f, 0x20, 0xe9, 0x98, 0x9b, 0xcc, 0xd9, 0xea, 0x05, 0x2f, 0xc9, 0x37, 0xc1, 0x57,
0x34, 0xa6, 0x54, 0xfa, 0x3a, 0x7b, 0x4a, 0xf0, 0x82, 0x97, 0xe1, 0x7f, 0x1c, 0xe8, 0x4c, 0xb9,
0xbc, 0xe7, 0xf2, 0x9d, 0x1e, 0xce, 0xe6, 0xb8, 0xd2, 0x7e, 0xcb, 0xb8, 0xe2, 0x1e, 0x1e, 0x57,
0xbc, 0x7a, 0x5c, 0x79, 0x0a, 0xde, 0x54, 0xce, 0x2f, 0x26, 0xea, 0x44, 0x6d, 0xaa, 0x01, 0x56,
0xe3, 0x78, 0x9e, 0x8b, 0x7b, 0x6e, 0x66, 0x18, 0x83, 0xf6, 0xde, 0xd3, 0xde, 0x81, 0xc1, 0xe1,
0x7f, 0x1c, 0x65, 0xc2, 0x3f, 0x39, 0xd0, 0xb9, 0x64, 0x65, 0x52, 0xe4, 0x7b, 0x55, 0x3b, 0x84,
0xfe, 0x38, 0x4d, 0x23, 0x31, 0xdf, 0xe9, 0xd4, 0x86, 0x08, 0x2d, 0x5e, 0x36, 0xee, 0x43, 0xe7,
0xa2, 0x29, 0x42, 0xba, 0x3f, 0x57, 0x33, 0x86, 0x1e, 0x18, 0x1a, 0x74, 0xaf, 0x47, 0x0b, 0xa5,
0xc4, 0xa4, 0x8d, 0x8b, 0x3c, 0x59, 0x46, 0xc9, 0x83, 0xca, 0x4e, 0x8f, 0x56, 0x38, 0xfc, 0x57,
0x0b, 0xdc, 0xaf, 0x6a, 0x2e, 0x18, 0x80, 0x23, 0x4c, 0x71, 0x38, 0xa2, 0x9a, 0x12, 0xba, 0x8d,
0x29, 0x21, 0x80, 0x6e, 0x29, 0x59, 0xbc, 0xe2, 0x59, 0xd0, 0x53, 0x6c, 0x64, 0xa1, 0xd2, 0xa8,
0xbe, 0xd3, 0xe3, 0x81, 0x4f, 0x2d, 0xac, 0xfa, 0x08, 0x1a, 0x7d, 0xf4, 0x13, 0x33, 0x49, 0xf4,
0x1f, 0xbf, 0xbd, 0x87, 0x06, 0x88, 0xff, 0xdf, 0x9b, 0xfa, 0x6f, 0x07, 0xbc, 0xaa, 0x09, 0xcf,
0x77, 0x9b, 0xf0, 0xbc, 0x6e, 0xc2, 0xc9, 0x99, 0x6d, 0xc2, 0xc9, 0x19, 0x62, 0x7a, 0x6d, 0x9b,
0x90, 0x5e, 0xe3, 0x65, 0x7d, 0x2e, 0x93, 0x22, 0x3d, 0x2b, 0xf5, 0xad, 0xfa, 0xb4, 0xc2, 0x58,
0xb9, 0xbf, 0x5e, 0x73, 0x69, 0x52, 0xed, 0x53, 0x83, 0xb0, 0xce, 0x2f, 0x15, 0x41, 0xe9, 0xe4,
0x6a, 0x40, 0xbe, 0x07, 0x1e, 0xc5, 0xe4, 0xa9, 0x0c, 0xef, 0xdc, 0x8b, 0x12, 0x53, 0xad, 0x45,
0xa7, 0xfa, 0xfb, 0xc2, 0x14, 0xbc, 0xfd, 0xda, 0xf8, 0x31, 0x74, 0xa6, 0x6b, 0xb1, 0xcc, 0xed,
0x3c, 0xf6, 0xf5, 0x06, 0xc1, 0x89, 0x0d, 0x57, 0x3a, 0x6a, 0x4c, 0xc2, 0xd7, 0xe0, 0x57, 0xc2,
0xfa, 0x38, 0x4e, 0xf3, 0x38, 0x04, 0xdc, 0xdb, 0x58, 0xe4, 0xb6, 0xd5, 0x71, 0x8d, 0xc1, 0xbe,
0x2e, 0x58, 0x9c, 0x8b, 0xbc, 0xb4, 0xad, 0x6e, 0x71, 0xf8, 0xb1, 0x39, 0x3e, 0xba, 0xbb, 0x4d,
0x53, 0x2e, 0x0d, 0x6d, 0x68, 0xa0, 0x36, 0x49, 0x1e, 0xb8, 0x66, 0xfc, 0x36, 0xd5, 0x20, 0xfc,
0x0d, 0xf8, 0xe3, 0x88, 0xcb, 0x9c, 0x16, 0x11, 0x3f, 0xf4, 0x12, 0x3f, 0x9f, 0x5e, 0xbd, 0xb2,
0x27, 0xc0, 0x75, 0x4d, 0x11, 0xed, 0x47, 0x14, 0xf1, 0x82, 0xa5, 0xec, 0x62, 0xa2, 0xea, 0xbc,
0x4d, 0x0d, 0x0a, 0xff, 0xe2, 0x80, 0x8b, 0x5c, 0xd4, 0x70, 0xed, 0xbe, 0x8d, 0xc7, 0xae, 0x65,
0x72, 0x2f, 0x16, 0x5c, 0xda, 0xe0, 0x2c, 0x56, 0x49, 0x9f, 0xaf, 0x79, 0xf5, 0xe0, 0x1b, 0x84,
0xb5, 0x86, 0x1f, 0x23, 0xb6, 0x97, 0x1a, 0xb5, 0x86, 0x62, 0xaa, 0x95, 0x38, 0x24, 0x4e, 0x8b,
0x94, 0xcb, 0xf1, 0x62, 0x23, 0xec, 0xb0, 0xd4, 0x90, 0x84, 0x9f, 0xe9, 0xcf, 0x9b, 0x3d, 0x46,
0x73, 0x0e, 0x7f, 0x0a, 0x3d, 0x3e, 0x79, 0xf8, 0x57, 0x07, 0xba, 0x2f, 0xcd, 0x70, 0xd6, 0x8c,
0xc2, 0x79, 0x63, 0x14, 0xad, 0x9d, 0x28, 0x4e, 0xe1, 0xa9, 0xb5, 0xd9, 0xd9, 0x5f, 0x67, 0xe1,
0xa0, 0xce, 0x64, 0xd4, 0xad, 0x2e, 0xeb, 0x5d, 0xbe, 0x6e, 0x6e, 0x76, 0x6d, 0x0e, 0x5d, 0xf8,
0xde, 0xad, 0x0c, 0xa1, 0x6f, 0xbf, 0xea, 0x92, 0xc8, 0x3e, 0x30, 0x4d, 0x51, 0x78, 0x0a, 0x9d,
0xf3, 0x24, 0x5e, 0x8a, 0x15, 0x19, 0x81, 0x3b, 0x2e, 0xf2, 0xb5, 0xf2, 0xd8, 0x3f, 0x7d, 0xda,
0x68, 0xfc, 0x22, 0x5f, 0x6b, 0x1b, 0xaa, 0x2c, 0xc2, 0x4f, 0x01, 0x6a, 0x19, 0xbe, 0x12, 0xf5,
0x6d, 0xbc, 0xe2, 0x0f, 0x58, 0x32, 0x99, 0xf2, 0xd2, 0xa3, 0x07, 0x34, 0xe1, 0x2f, 0xc0, 0x3f,
0x2b, 0x44, 0xb4, 0xb8, 0x88, 0x97, 0x09, 0x52, 0xc7, 0x1d, 0x97, 0x59, 0x7d, 0x5f, 0x16, 0x62,
0xba, 0x91, 0x45, 0xaa, 0x1e, 0x32, 0x68, 0xd6, 0x51, 0xff, 0x19, 0x7c, 0xfc, 0xdf, 0x00, 0x00,
0x00, 0xff, 0xff, 0x54, 0x72, 0x77, 0x46, 0x45, 0x10, 0x00, 0x00,
// 1667 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5b, 0x6f, 0xe4, 0x48,
0x15, 0x96, 0xbb, 0xed, 0x4e, 0xfb, 0x74, 0x92, 0x8d, 0x8a, 0xd1, 0xae, 0x59, 0x10, 0x6a, 0x2c,
0x2e, 0xe1, 0xb2, 0xc3, 0x2a, 0x2b, 0x24, 0xb4, 0xda, 0x5d, 0x29, 0x97, 0x9d, 0x21, 0x73, 0xcd,
0x54, 0x27, 0xc3, 0x13, 0x5a, 0x55, 0xdb, 0xd5, 0xdd, 0xa5, 0x75, 0xdb, 0xa6, 0x6c, 0x27, 0x31,
0xcf, 0xfc, 0x0e, 0x24, 0x24, 0xf8, 0x03, 0x88, 0x47, 0x24, 0xde, 0xf9, 0x01, 0xfc, 0x15, 0x78,
0x44, 0xa7, 0x2e, 0xee, 0x72, 0xd2, 0x33, 0x1a, 0x24, 0xb4, 0x6f, 0xf5, 0x9d, 0x73, 0xfa, 0x54,
0xd5, 0xb9, 0x7c, 0x75, 0xdc, 0xb0, 0x2f, 0xf2, 0x9a, 0xcb, 0x9c, 0x65, 0x0f, 0x4b, 0x59, 0xd4,
0x05, 0x19, 0x5b, 0x1c, 0xff, 0x61, 0x08, 0xa3, 0x59, 0xd1, 0xc8, 0x84, 0x93, 0x7d, 0x18, 0x9c,
0x9f, 0x45, 0xde, 0xd4, 0x3b, 0x1c, 0xd2, 0xc1, 0xf9, 0x19, 0x21, 0xe0, 0xbf, 0x60, 0x6b, 0x1e,
0x0d, 0xa6, 0xde, 0x61, 0x48, 0xd5, 0x1a, 0x65, 0x97, 0x6d, 0xc9, 0xa3, 0xa1, 0x96, 0xe1, 0x9a,
0x7c, 0x08, 0xe3, 0xab, 0x0a, 0xbd, 0xad, 0x79, 0xe4, 0x2b, 0x79, 0x87, 0x51, 0x77, 0xc1, 0xaa,
0xea, 0xa6, 0x90, 0x69, 0x14, 0x68, 0x9d, 0xc5, 0xe4, 0x00, 0x86, 0x57, 0xf4, 0x59, 0x34, 0x52,
0x62, 0x5c, 0x92, 0x08, 0x76, 0xce, 0xf8, 0x82, 0x35, 0x59, 0x1d, 0xed, 0x4c, 0xbd, 0xc3, 0x31,
0xb5, 0x10, 0xfd, 0x5c, 0xf2, 0x8c, 0x2f, 0x25, 0x5b, 0x44, 0x63, 0xed, 0xc7, 0x62, 0xf2, 0x10,
0xc8, 0x79, 0x5e, 0xf1, 0xa4, 0x91, 0x7c, 0xf6, 0xb5, 0x28, 0x5f, 0x73, 0x29, 0x16, 0x6d, 0x14,
0x2a, 0x07, 0x5b, 0x34, 0xb8, 0xcb, 0x73, 0x5e, 0x33, 0xdc, 0x1b, 0x94, 0x2b, 0x0b, 0x49, 0x0c,
0xbb, 0xb3, 0x15, 0x93, 0x3c, 0x9d, 0xf1, 0x44, 0xf2, 0x3a, 0x9a, 0x28, 0x75, 0x4f, 0x86, 0x36,
0x2f, 0xe5, 0x92, 0xe5, 0xe2, 0xf7, 0xac, 0x16, 0x45, 0x1e, 0xed, 0x6a, 0x1b, 0x57, 0x86, 0x51,
0xa2, 0x45, 0xc6, 0xa3, 0x3d, 0x1d, 0x25, 0x5c, 0x93, 0xef, 0x42, 0x68, 0x2e, 0x43, 0x2f, 0xa2,
0x7d, 0xa5, 0xd8, 0x08, 0xe2, 0xbf, 0x79, 0x10, 0x9e, 0xb1, 0x6a, 0x35, 0x2f, 0x98, 0x4c, 0xdf,
0x29, 0x13, 0x1f, 0x41, 0x90, 0xf0, 0x2c, 0xab, 0xa2, 0xe1, 0x74, 0x78, 0x38, 0x39, 0xfa, 0xe0,
0x61, 0x97, 0xe2, 0xce, 0xcf, 0x29, 0xcf, 0x32, 0xaa, 0xad, 0xc8, 0xc7, 0x10, 0xd6, 0x7c, 0x5d,
0x66, 0xac, 0xe6, 0x55, 0xe4, 0xab, 0x9f, 0x90, 0xcd, 0x4f, 0x2e, 0x8d, 0x8a, 0x6e, 0x8c, 0xee,
0x5d, 0x34, 0xb8, 0x7f, 0xd1, 0xf8, 0x5f, 0x3e, 0xec, 0xf5, 0xb6, 0x23, 0xbb, 0xe0, 0xdd, 0xaa,
0x93, 0x07, 0xd4, 0xbb, 0x45, 0xd4, 0xaa, 0x53, 0x07, 0xd4, 0x6b, 0x11, 0xdd, 0xa8, 0xca, 0x09,
0xa8, 0x77, 0x83, 0x68, 0xa5, 0xea, 0x25, 0xa0, 0xde, 0x8a, 0xfc, 0x04, 0x76, 0x7e, 0xd7, 0x70,
0x29, 0x78, 0x15, 0x05, 0xea, 0x74, 0xef, 0x6d, 0x4e, 0xf7, 0xaa, 0xe1, 0xb2, 0xa5, 0x56, 0x8f,
0xd1, 0x50, 0xb5, 0xa6, 0x0b, 0x47, 0xad, 0x51, 0x56, 0x63, 0x5d, 0xee, 0x68, 0x19, 0xae, 0x4d,
0x14, 0x75, 0xb5, 0x60, 0x14, 0x7f, 0x09, 0x3e, 0xbb, 0xe5, 0x55, 0x14, 0x2a, 0xff, 0xdf, 0x7f,
0x43, 0xc0, 0x1e, 0x1e, 0xdf, 0xf2, 0xea, 0xcb, 0xbc, 0x96, 0x2d, 0x55, 0xe6, 0xe4, 0xc7, 0x30,
0x4a, 0x8a, 0xac, 0x90, 0x55, 0x04, 0x77, 0x0f, 0x76, 0x8a, 0x72, 0x6a, 0xd4, 0xe4, 0x10, 0x46,
0x19, 0x5f, 0xf2, 0x3c, 0x55, 0x75, 0x33, 0x39, 0x3a, 0xd8, 0x18, 0x3e, 0x53, 0x72, 0x6a, 0xf4,
0xe4, 0x53, 0xd8, 0xad, 0xd9, 0x3c, 0xe3, 0x2f, 0x4b, 0x8c, 0x62, 0xa5, 0x6a, 0x68, 0x72, 0xf4,
0xbe, 0x93, 0x0f, 0x47, 0x4b, 0x7b, 0xb6, 0xe4, 0x33, 0xd8, 0x5d, 0x08, 0x9e, 0xa5, 0xf6, 0xb7,
0x7b, 0xea, 0x50, 0xd1, 0xe6, 0xb7, 0x94, 0xe7, 0x6c, 0x8d, 0xbf, 0x78, 0x84, 0x66, 0xb4, 0x67,
0x4d, 0xbe, 0x07, 0x50, 0x8b, 0x35, 0x7f, 0x54, 0xc8, 0x35, 0xab, 0x4d, 0x19, 0x3a, 0x12, 0xf2,
0x39, 0xec, 0xa5, 0x3c, 0x11, 0x6b, 0x96, 0x5d, 0x64, 0x2c, 0xe1, 0x55, 0xf4, 0x9e, 0x3a, 0x9a,
0x5b, 0x5d, 0xae, 0x9a, 0xf6, 0xad, 0x3f, 0x7c, 0x0c, 0x61, 0x17, 0x3e, 0xec, 0xef, 0xaf, 0x79,
0xab, 0x8a, 0x21, 0xa4, 0xb8, 0x24, 0x3f, 0x80, 0xe0, 0x9a, 0x65, 0x8d, 0x2e, 0xe4, 0xc9, 0xd1,
0xfe, 0xc6, 0xeb, 0xf1, 0xad, 0xa8, 0xa8, 0x56, 0x7e, 0x3a, 0xf8, 0x95, 0x17, 0x3f, 0x86, 0xbd,
0xde, 0x46, 0x78, 0x70, 0x51, 0x7d, 0x99, 0x2f, 0x0a, 0x99, 0xf0, 0x54, 0xf9, 0x1c, 0x53, 0x47,
0x42, 0xde, 0x87, 0x51, 0x2a, 0x96, 0xa2, 0xae, 0x4c, 0xb9, 0x19, 0x14, 0xff, 0xdd, 0x83, 0x5d,
0x37, 0x9a, 0xe4, 0xa7, 0x70, 0x70, 0xcd, 0x65, 0x2d, 0x12, 0x96, 0x5d, 0x8a, 0x35, 0xc7, 0x8d,
0xd5, 0x4f, 0xc6, 0xf4, 0x9e, 0x9c, 0x7c, 0x0c, 0xa3, 0xaa, 0x90, 0xf5, 0x49, 0xab, 0xaa, 0xf6,
0x6d, 0x51, 0x36, 0x76, 0xc8, 0x53, 0x37, 0x92, 0x95, 0xa5, 0xc8, 0x97, 0x96, 0x0b, 0x2d, 0x26,
0x3f, 0x82, 0xfd, 0x85, 0xb8, 0x7d, 0x24, 0x64, 0x55, 0x9f, 0x16, 0x59, 0xb3, 0xce, 0x55, 0x05,
0x8f, 0xe9, 0x1d, 0xe9, 0x13, 0x7f, 0xec, 0x1d, 0x0c, 0x9e, 0xf8, 0xe3, 0xe0, 0x60, 0x14, 0x97,
0xb0, 0xdf, 0xdf, 0x09, 0xdb, 0xd2, 0x1e, 0x42, 0x71, 0x82, 0x0e, 0x6f, 0x4f, 0x46, 0xa6, 0x30,
0x49, 0x45, 0x55, 0x66, 0xac, 0x75, 0x68, 0xc3, 0x15, 0x21, 0x07, 0x5e, 0x8b, 0x4a, 0xcc, 0x33,
0x4d, 0xe5, 0x63, 0x6a, 0x61, 0xbc, 0x84, 0x40, 0x95, 0xb5, 0x43, 0x42, 0xa1, 0x25, 0x21, 0x45,
0xfd, 0x03, 0x87, 0xfa, 0x0f, 0x60, 0xf8, 0x6b, 0x7e, 0x6b, 0x5e, 0x03, 0x5c, 0x76, 0x54, 0xe5,
0x3b, 0x54, 0xf5, 0x00, 0x82, 0xd7, 0x2a, 0xed, 0x9a, 0x42, 0x34, 0x88, 0xbf, 0x80, 0x91, 0x6e,
0x8b, 0xce, 0xb3, 0xe7, 0x78, 0x9e, 0xc2, 0xe4, 0xa5, 0x14, 0x3c, 0xaf, 0x35, 0xf9, 0x98, 0x2b,
0x38, 0xa2, 0xf8, 0xaf, 0x1e, 0xf8, 0x2a, 0x4b, 0x31, 0xec, 0x66, 0x7c, 0xc9, 0x92, 0xf6, 0xa4,
0x68, 0xf2, 0xb4, 0x8a, 0xbc, 0xe9, 0xf0, 0x70, 0x48, 0x7b, 0x32, 0x2c, 0x8f, 0xb9, 0xd6, 0x0e,
0xa6, 0xc3, 0xc3, 0x90, 0x1a, 0x84, 0x47, 0xcb, 0xd8, 0x9c, 0x67, 0xe6, 0x0a, 0x1a, 0xa0, 0x75,
0x29, 0xf9, 0x42, 0xdc, 0x9a, 0x6b, 0x18, 0x84, 0xf2, 0xaa, 0x59, 0xa0, 0x5c, 0xdf, 0xc4, 0x20,
0xbc, 0xc0, 0x9c, 0x55, 0x1d, 0x23, 0xe1, 0x1a, 0x3d, 0x57, 0x09, 0xcb, 0x2c, 0x25, 0x69, 0x10,
0xff, 0xc3, 0xc3, 0x87, 0x4c, 0x53, 0xec, 0xbd, 0x08, 0x7f, 0x1b, 0xc6, 0x48, 0xbf, 0x5f, 0x5d,
0x33, 0x69, 0x2e, 0xbc, 0x83, 0xf8, 0x35, 0x93, 0xe4, 0x17, 0x30, 0x52, 0xcd, 0xb1, 0x85, 0xee,
0xad, 0x3b, 0x15, 0x55, 0x6a, 0xcc, 0x3a, 0x42, 0xf4, 0x1d, 0x42, 0xec, 0x2e, 0x1b, 0xb8, 0x97,
0xfd, 0x08, 0x02, 0x64, 0xd6, 0x56, 0x9d, 0x7e, 0xab, 0x67, 0xcd, 0xbf, 0xda, 0x2a, 0xbe, 0x82,
0xbd, 0xde, 0x8e, 0xdd, 0x4e, 0x5e, 0x7f, 0xa7, 0x4d, 0xa3, 0x87, 0xa6, 0xb1, 0xb1, 0x39, 0x2a,
0x9e, 0xf1, 0xa4, 0xe6, 0xa9, 0xa9, 0xba, 0x0e, 0xc7, 0x7f, 0xf2, 0x36, 0x7e, 0xd5, 0x7e, 0x58,
0xa2, 0x49, 0xb1, 0x5e, 0xb3, 0x3c, 0x35, 0xae, 0x2d, 0xc4, 0xb8, 0xa5, 0x73, 0xe3, 0x7a, 0x90,
0xce, 0x11, 0xcb, 0xd2, 0x64, 0x70, 0x20, 0x4b, 0xac, 0x9d, 0x35, 0x67, 0x55, 0x23, 0xf9, 0x9a,
0xe7, 0xb5, 0x09, 0x81, 0x2b, 0x22, 0x1f, 0xc0, 0x4e, 0xcd, 0x96, 0x5f, 0x21, 0x3d, 0x99, 0x4c,
0xd6, 0x6c, 0xf9, 0x94, 0xb7, 0xe4, 0x3b, 0x10, 0x2a, 0xbe, 0x54, 0x2a, 0x9d, 0xce, 0xb1, 0x12,
0x3c, 0xe5, 0x6d, 0xfc, 0x1f, 0x0f, 0x46, 0x33, 0x2e, 0xaf, 0xb9, 0x7c, 0xa7, 0x17, 0xda, 0x9d,
0x8b, 0x86, 0x6f, 0x99, 0x8b, 0xfc, 0xed, 0x73, 0x51, 0xb0, 0x99, 0x8b, 0x1e, 0x40, 0x30, 0x93,
0xc9, 0xf9, 0x99, 0x3a, 0xd1, 0x90, 0x6a, 0x80, 0xd5, 0x78, 0x9c, 0xd4, 0xe2, 0x9a, 0x9b, 0x61,
0xc9, 0xa0, 0x7b, 0x0f, 0xf7, 0x78, 0xcb, 0x84, 0xf2, 0x3f, 0xce, 0x4c, 0xf1, 0x1f, 0x3d, 0x18,
0x3d, 0x63, 0x6d, 0xd1, 0xd4, 0xf7, 0xaa, 0x76, 0x0a, 0x93, 0xe3, 0xb2, 0xcc, 0x44, 0xd2, 0xeb,
0x54, 0x47, 0x84, 0x16, 0xcf, 0x9d, 0x7c, 0xe8, 0x58, 0xb8, 0x22, 0x7c, 0x18, 0x4e, 0xd5, 0x30,
0xa3, 0x27, 0x13, 0xe7, 0x61, 0xd0, 0x33, 0x8c, 0x52, 0x62, 0xd0, 0x8e, 0x9b, 0xba, 0x58, 0x64,
0xc5, 0x8d, 0x8a, 0xce, 0x98, 0x76, 0x38, 0xfe, 0xe7, 0x00, 0xfc, 0x6f, 0x6a, 0x00, 0xd9, 0x05,
0x4f, 0x98, 0xe2, 0xf0, 0x44, 0x37, 0x8e, 0xec, 0x38, 0xe3, 0x48, 0x04, 0x3b, 0xad, 0x64, 0xf9,
0x92, 0x57, 0xd1, 0x58, 0xb1, 0x91, 0x85, 0x4a, 0xa3, 0xfa, 0x4e, 0xcf, 0x21, 0x21, 0xb5, 0xb0,
0xeb, 0x23, 0x70, 0xfa, 0xe8, 0xe7, 0x66, 0x64, 0x99, 0xdc, 0x7d, 0xe4, 0xb7, 0x4d, 0x2a, 0xff,
0xbf, 0xd7, 0xf7, 0xdf, 0x1e, 0x04, 0x5d, 0x13, 0x9e, 0xf6, 0x9b, 0xf0, 0x74, 0xd3, 0x84, 0x67,
0x27, 0xb6, 0x09, 0xcf, 0x4e, 0x10, 0xd3, 0x0b, 0xdb, 0x84, 0xf4, 0x02, 0x93, 0xf5, 0x58, 0x16,
0x4d, 0x79, 0xd2, 0xea, 0xac, 0x86, 0xb4, 0xc3, 0x58, 0xb9, 0xbf, 0x59, 0x71, 0x69, 0x42, 0x1d,
0x52, 0x83, 0xb0, 0xce, 0x9f, 0x29, 0x82, 0xd2, 0xc1, 0xd5, 0x80, 0xfc, 0x10, 0x02, 0x8a, 0xc1,
0x53, 0x11, 0xee, 0xe5, 0x45, 0x89, 0xa9, 0xd6, 0xa2, 0x53, 0xfd, 0x21, 0x63, 0x0a, 0xde, 0x7e,
0xd6, 0xfc, 0x0c, 0x46, 0xb3, 0x95, 0x58, 0xd4, 0x76, 0xf0, 0xfb, 0x96, 0x43, 0x70, 0x62, 0xcd,
0x95, 0x8e, 0x1a, 0x93, 0xf8, 0x15, 0x84, 0x9d, 0x70, 0x73, 0x1c, 0xcf, 0x3d, 0x0e, 0x01, 0xff,
0x2a, 0x17, 0xb5, 0x6d, 0x75, 0x5c, 0xe3, 0x65, 0x5f, 0x35, 0x2c, 0xaf, 0x45, 0xdd, 0xda, 0x56,
0xb7, 0x38, 0xfe, 0xc4, 0x1c, 0x1f, 0xdd, 0x5d, 0x95, 0x25, 0x97, 0x86, 0x36, 0x34, 0x50, 0x9b,
0x14, 0x37, 0x5c, 0x33, 0xfe, 0x90, 0x6a, 0x10, 0xff, 0x16, 0xc2, 0xe3, 0x8c, 0xcb, 0x9a, 0x36,
0x19, 0xdf, 0xf6, 0x12, 0x3f, 0x99, 0xbd, 0x7c, 0x61, 0x4f, 0x80, 0xeb, 0x0d, 0x45, 0x0c, 0xef,
0x50, 0xc4, 0x53, 0x56, 0xb2, 0xf3, 0x33, 0x55, 0xe7, 0x43, 0x6a, 0x50, 0xfc, 0x67, 0x0f, 0x7c,
0xe4, 0x22, 0xc7, 0xb5, 0xff, 0x36, 0x1e, 0xbb, 0x90, 0xc5, 0xb5, 0x48, 0xb9, 0xb4, 0x97, 0xb3,
0x58, 0x05, 0x3d, 0x59, 0xf1, 0xee, 0xc1, 0x37, 0x08, 0x6b, 0x0d, 0xbf, 0x7a, 0x6c, 0x2f, 0x39,
0xb5, 0x86, 0x62, 0xaa, 0x95, 0x38, 0xd4, 0xcd, 0x9a, 0x92, 0xcb, 0xe3, 0x74, 0x2d, 0xec, 0x34,
0xe4, 0x48, 0xe2, 0x2f, 0xf4, 0x77, 0xd4, 0x3d, 0x46, 0xf3, 0xb6, 0x7f, 0x73, 0xdd, 0x3d, 0x79,
0xfc, 0x17, 0x0f, 0x76, 0x9e, 0x9b, 0xe9, 0xcb, 0xbd, 0x85, 0xf7, 0xc6, 0x5b, 0x0c, 0x7a, 0xb7,
0x38, 0x82, 0x07, 0xd6, 0xa6, 0xb7, 0xbf, 0x8e, 0xc2, 0x56, 0x9d, 0x89, 0xa8, 0xdf, 0x25, 0xeb,
0x5d, 0x3e, 0xa3, 0x2e, 0xfb, 0x36, 0xdb, 0x12, 0x7e, 0x2f, 0x2b, 0x53, 0x98, 0xd8, 0xcf, 0xc7,
0x22, 0xb3, 0x0f, 0x8c, 0x2b, 0x8a, 0x8f, 0x60, 0x74, 0x5a, 0xe4, 0x0b, 0xb1, 0x24, 0x87, 0xe0,
0x1f, 0x37, 0xf5, 0x4a, 0x79, 0x9c, 0x1c, 0x3d, 0x70, 0x1a, 0xbf, 0xa9, 0x57, 0xda, 0x86, 0x2a,
0x8b, 0xf8, 0x33, 0x80, 0x8d, 0x0c, 0x5f, 0x89, 0x4d, 0x36, 0x5e, 0xf0, 0x1b, 0x2c, 0x99, 0xca,
0x0c, 0xdf, 0x5b, 0x34, 0xf1, 0xe7, 0x10, 0x9e, 0x34, 0x22, 0x4b, 0xcf, 0xf3, 0x45, 0x81, 0xd4,
0xf1, 0x9a, 0xcb, 0x6a, 0x93, 0x2f, 0x0b, 0x31, 0xdc, 0xc8, 0x22, 0x5d, 0x0f, 0x19, 0x34, 0x1f,
0xa9, 0x3f, 0x27, 0x3e, 0xf9, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x77, 0xc4, 0xaa, 0x16, 0xae,
0x10, 0x00, 0x00,
}

View File

@ -41,6 +41,12 @@ message DashboardCell {
TableOptions tableOptions = 12; // TableOptions for visualization of cell with type 'table'
repeated RenamableField fieldOptions = 13; // Options for each of the fields returned in a cell
string timeFormat = 14; // format for time
DecimalPlaces decimalPlaces = 15; // Represents how precise the values of this field should be
}
message DecimalPlaces {
bool isEnforced = 1; // whether decimal places should be enforced
int32 digits = 2; // the number of digits to display after decical point
}
message TableOptions {
@ -55,8 +61,7 @@ message TableOptions {
message RenamableField {
string internalName = 1; // name of column
string displayName = 2; // what column is renamed to
bool visible = 3; // Represents whether RenamableField is visible
int32 precision = 4; // Represents how precise the values of this field should be
bool visible = 3; // Represents whether RenamableField is visible
}
message Color {

View File

@ -563,20 +563,21 @@ type Legend struct {
// DashboardCell holds visual and query information for a cell
type DashboardCell struct {
ID string `json:"i"`
X int32 `json:"x"`
Y int32 `json:"y"`
W int32 `json:"w"`
H int32 `json:"h"`
Name string `json:"name"`
Queries []DashboardQuery `json:"queries"`
Axes map[string]Axis `json:"axes"`
Type string `json:"type"`
CellColors []CellColor `json:"colors"`
Legend Legend `json:"legend"`
TableOptions TableOptions `json:"tableOptions,omitempty"`
FieldOptions []RenamableField `json:"fieldOptions"`
TimeFormat string `json:"timeFormat"`
ID string `json:"i"`
X int32 `json:"x"`
Y int32 `json:"y"`
W int32 `json:"w"`
H int32 `json:"h"`
Name string `json:"name"`
Queries []DashboardQuery `json:"queries"`
Axes map[string]Axis `json:"axes"`
Type string `json:"type"`
CellColors []CellColor `json:"colors"`
Legend Legend `json:"legend"`
TableOptions TableOptions `json:"tableOptions,omitempty"`
FieldOptions []RenamableField `json:"fieldOptions"`
TimeFormat string `json:"timeFormat"`
DecimalPlaces DecimalPlaces `json:"decimalPlaces"`
}
// RenamableField is a column/row field in a DashboardCell of type Table
@ -584,7 +585,6 @@ type RenamableField struct {
InternalName string `json:"internalName"`
DisplayName string `json:"displayName"`
Visible bool `json:"visible"`
Precision int32 `json:"precision"`
}
// TableOptions is a type of options for a DashboardCell with type Table
@ -595,6 +595,12 @@ type TableOptions struct {
FixFirstColumn bool `json:"fixFirstColumn"`
}
// DecimalPlaces indicates whether decimal places should be enforced, and how many digits it should show.
type DecimalPlaces struct {
IsEnforced bool `json:"isEnforced"`
Digits int32 `json:"digits"`
}
// DashboardsStore is the storage and retrieval of dashboards
type DashboardsStore interface {
// All lists all dashboards from the DashboardStore