github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/stats/histogram.pb.go (about) 1 // Code generated by protoc-gen-gogo. DO NOT EDIT. 2 // source: sql/stats/histogram.proto 3 4 package stats 5 6 import proto "github.com/gogo/protobuf/proto" 7 import fmt "fmt" 8 import math "math" 9 import types "github.com/cockroachdb/cockroach/pkg/sql/types" 10 11 import encoding_binary "encoding/binary" 12 13 import io "io" 14 15 // Reference imports to suppress errors if they are not otherwise used. 16 var _ = proto.Marshal 17 var _ = fmt.Errorf 18 var _ = math.Inf 19 20 // This is a compile-time assertion to ensure that this generated file 21 // is compatible with the proto package it is being compiled against. 22 // A compilation error at this line likely means your copy of the 23 // proto package needs to be updated. 24 const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package 25 26 // HistogramData encodes the data for a histogram, which captures the 27 // distribution of values on a specific column. 28 type HistogramData struct { 29 // Value type for the column. 30 ColumnType *types.T `protobuf:"bytes,2,opt,name=column_type,json=columnType,proto3" json:"column_type,omitempty"` 31 // Histogram buckets. Note that NULL values are excluded from the 32 // histogram. 33 Buckets []HistogramData_Bucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets"` 34 } 35 36 func (m *HistogramData) Reset() { *m = HistogramData{} } 37 func (m *HistogramData) String() string { return proto.CompactTextString(m) } 38 func (*HistogramData) ProtoMessage() {} 39 func (*HistogramData) Descriptor() ([]byte, []int) { 40 return fileDescriptor_histogram_40b21550afd0ea12, []int{0} 41 } 42 func (m *HistogramData) XXX_Unmarshal(b []byte) error { 43 return m.Unmarshal(b) 44 } 45 func (m *HistogramData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 46 b = b[:cap(b)] 47 n, err := m.MarshalTo(b) 48 if err != nil { 49 return nil, err 50 } 51 return b[:n], nil 52 } 53 func (dst *HistogramData) XXX_Merge(src proto.Message) { 54 xxx_messageInfo_HistogramData.Merge(dst, src) 55 } 56 func (m *HistogramData) XXX_Size() int { 57 return m.Size() 58 } 59 func (m *HistogramData) XXX_DiscardUnknown() { 60 xxx_messageInfo_HistogramData.DiscardUnknown(m) 61 } 62 63 var xxx_messageInfo_HistogramData proto.InternalMessageInfo 64 65 type HistogramData_Bucket struct { 66 // The estimated number of values that are equal to upper_bound. 67 NumEq int64 `protobuf:"varint,1,opt,name=num_eq,json=numEq,proto3" json:"num_eq,omitempty"` 68 // The estimated number of values in the bucket (excluding those 69 // that are equal to upper_bound). Splitting the count into two 70 // makes the histogram effectively equivalent to a histogram with 71 // twice as many buckets, with every other bucket containing a 72 // single value. This might be particularly advantageous if the 73 // histogram algorithm makes sure the top "heavy hitters" (most 74 // frequent elements) are bucket boundaries (similar to a 75 // compressed histogram). 76 NumRange int64 `protobuf:"varint,2,opt,name=num_range,json=numRange,proto3" json:"num_range,omitempty"` 77 // The estimated number of distinct values in the bucket (excluding 78 // those that are equal to upper_bound). This is a floating point 79 // value because it is estimated by distributing the known distinct 80 // count for the column among the buckets, in proportion to the number 81 // of rows in each bucket. This value is in fact derived from the rest 82 // of the data, but is included to avoid re-computing it later. 83 DistinctRange float64 `protobuf:"fixed64,4,opt,name=distinct_range,json=distinctRange,proto3" json:"distinct_range,omitempty"` 84 // The upper boundary of the bucket. The column values for the upper bound 85 // are encoded using the ascending key encoding of the column type. 86 UpperBound []byte `protobuf:"bytes,3,opt,name=upper_bound,json=upperBound,proto3" json:"upper_bound,omitempty"` 87 } 88 89 func (m *HistogramData_Bucket) Reset() { *m = HistogramData_Bucket{} } 90 func (m *HistogramData_Bucket) String() string { return proto.CompactTextString(m) } 91 func (*HistogramData_Bucket) ProtoMessage() {} 92 func (*HistogramData_Bucket) Descriptor() ([]byte, []int) { 93 return fileDescriptor_histogram_40b21550afd0ea12, []int{0, 0} 94 } 95 func (m *HistogramData_Bucket) XXX_Unmarshal(b []byte) error { 96 return m.Unmarshal(b) 97 } 98 func (m *HistogramData_Bucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 99 b = b[:cap(b)] 100 n, err := m.MarshalTo(b) 101 if err != nil { 102 return nil, err 103 } 104 return b[:n], nil 105 } 106 func (dst *HistogramData_Bucket) XXX_Merge(src proto.Message) { 107 xxx_messageInfo_HistogramData_Bucket.Merge(dst, src) 108 } 109 func (m *HistogramData_Bucket) XXX_Size() int { 110 return m.Size() 111 } 112 func (m *HistogramData_Bucket) XXX_DiscardUnknown() { 113 xxx_messageInfo_HistogramData_Bucket.DiscardUnknown(m) 114 } 115 116 var xxx_messageInfo_HistogramData_Bucket proto.InternalMessageInfo 117 118 func init() { 119 proto.RegisterType((*HistogramData)(nil), "cockroach.sql.stats.HistogramData") 120 proto.RegisterType((*HistogramData_Bucket)(nil), "cockroach.sql.stats.HistogramData.Bucket") 121 } 122 func (m *HistogramData) Marshal() (dAtA []byte, err error) { 123 size := m.Size() 124 dAtA = make([]byte, size) 125 n, err := m.MarshalTo(dAtA) 126 if err != nil { 127 return nil, err 128 } 129 return dAtA[:n], nil 130 } 131 132 func (m *HistogramData) MarshalTo(dAtA []byte) (int, error) { 133 var i int 134 _ = i 135 var l int 136 _ = l 137 if len(m.Buckets) > 0 { 138 for _, msg := range m.Buckets { 139 dAtA[i] = 0xa 140 i++ 141 i = encodeVarintHistogram(dAtA, i, uint64(msg.Size())) 142 n, err := msg.MarshalTo(dAtA[i:]) 143 if err != nil { 144 return 0, err 145 } 146 i += n 147 } 148 } 149 if m.ColumnType != nil { 150 dAtA[i] = 0x12 151 i++ 152 i = encodeVarintHistogram(dAtA, i, uint64(m.ColumnType.Size())) 153 n1, err := m.ColumnType.MarshalTo(dAtA[i:]) 154 if err != nil { 155 return 0, err 156 } 157 i += n1 158 } 159 return i, nil 160 } 161 162 func (m *HistogramData_Bucket) Marshal() (dAtA []byte, err error) { 163 size := m.Size() 164 dAtA = make([]byte, size) 165 n, err := m.MarshalTo(dAtA) 166 if err != nil { 167 return nil, err 168 } 169 return dAtA[:n], nil 170 } 171 172 func (m *HistogramData_Bucket) MarshalTo(dAtA []byte) (int, error) { 173 var i int 174 _ = i 175 var l int 176 _ = l 177 if m.NumEq != 0 { 178 dAtA[i] = 0x8 179 i++ 180 i = encodeVarintHistogram(dAtA, i, uint64(m.NumEq)) 181 } 182 if m.NumRange != 0 { 183 dAtA[i] = 0x10 184 i++ 185 i = encodeVarintHistogram(dAtA, i, uint64(m.NumRange)) 186 } 187 if len(m.UpperBound) > 0 { 188 dAtA[i] = 0x1a 189 i++ 190 i = encodeVarintHistogram(dAtA, i, uint64(len(m.UpperBound))) 191 i += copy(dAtA[i:], m.UpperBound) 192 } 193 if m.DistinctRange != 0 { 194 dAtA[i] = 0x21 195 i++ 196 encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DistinctRange)))) 197 i += 8 198 } 199 return i, nil 200 } 201 202 func encodeVarintHistogram(dAtA []byte, offset int, v uint64) int { 203 for v >= 1<<7 { 204 dAtA[offset] = uint8(v&0x7f | 0x80) 205 v >>= 7 206 offset++ 207 } 208 dAtA[offset] = uint8(v) 209 return offset + 1 210 } 211 func (m *HistogramData) Size() (n int) { 212 if m == nil { 213 return 0 214 } 215 var l int 216 _ = l 217 if len(m.Buckets) > 0 { 218 for _, e := range m.Buckets { 219 l = e.Size() 220 n += 1 + l + sovHistogram(uint64(l)) 221 } 222 } 223 if m.ColumnType != nil { 224 l = m.ColumnType.Size() 225 n += 1 + l + sovHistogram(uint64(l)) 226 } 227 return n 228 } 229 230 func (m *HistogramData_Bucket) Size() (n int) { 231 if m == nil { 232 return 0 233 } 234 var l int 235 _ = l 236 if m.NumEq != 0 { 237 n += 1 + sovHistogram(uint64(m.NumEq)) 238 } 239 if m.NumRange != 0 { 240 n += 1 + sovHistogram(uint64(m.NumRange)) 241 } 242 l = len(m.UpperBound) 243 if l > 0 { 244 n += 1 + l + sovHistogram(uint64(l)) 245 } 246 if m.DistinctRange != 0 { 247 n += 9 248 } 249 return n 250 } 251 252 func sovHistogram(x uint64) (n int) { 253 for { 254 n++ 255 x >>= 7 256 if x == 0 { 257 break 258 } 259 } 260 return n 261 } 262 func sozHistogram(x uint64) (n int) { 263 return sovHistogram(uint64((x << 1) ^ uint64((int64(x) >> 63)))) 264 } 265 func (m *HistogramData) Unmarshal(dAtA []byte) error { 266 l := len(dAtA) 267 iNdEx := 0 268 for iNdEx < l { 269 preIndex := iNdEx 270 var wire uint64 271 for shift := uint(0); ; shift += 7 { 272 if shift >= 64 { 273 return ErrIntOverflowHistogram 274 } 275 if iNdEx >= l { 276 return io.ErrUnexpectedEOF 277 } 278 b := dAtA[iNdEx] 279 iNdEx++ 280 wire |= (uint64(b) & 0x7F) << shift 281 if b < 0x80 { 282 break 283 } 284 } 285 fieldNum := int32(wire >> 3) 286 wireType := int(wire & 0x7) 287 if wireType == 4 { 288 return fmt.Errorf("proto: HistogramData: wiretype end group for non-group") 289 } 290 if fieldNum <= 0 { 291 return fmt.Errorf("proto: HistogramData: illegal tag %d (wire type %d)", fieldNum, wire) 292 } 293 switch fieldNum { 294 case 1: 295 if wireType != 2 { 296 return fmt.Errorf("proto: wrong wireType = %d for field Buckets", wireType) 297 } 298 var msglen int 299 for shift := uint(0); ; shift += 7 { 300 if shift >= 64 { 301 return ErrIntOverflowHistogram 302 } 303 if iNdEx >= l { 304 return io.ErrUnexpectedEOF 305 } 306 b := dAtA[iNdEx] 307 iNdEx++ 308 msglen |= (int(b) & 0x7F) << shift 309 if b < 0x80 { 310 break 311 } 312 } 313 if msglen < 0 { 314 return ErrInvalidLengthHistogram 315 } 316 postIndex := iNdEx + msglen 317 if postIndex > l { 318 return io.ErrUnexpectedEOF 319 } 320 m.Buckets = append(m.Buckets, HistogramData_Bucket{}) 321 if err := m.Buckets[len(m.Buckets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { 322 return err 323 } 324 iNdEx = postIndex 325 case 2: 326 if wireType != 2 { 327 return fmt.Errorf("proto: wrong wireType = %d for field ColumnType", wireType) 328 } 329 var msglen int 330 for shift := uint(0); ; shift += 7 { 331 if shift >= 64 { 332 return ErrIntOverflowHistogram 333 } 334 if iNdEx >= l { 335 return io.ErrUnexpectedEOF 336 } 337 b := dAtA[iNdEx] 338 iNdEx++ 339 msglen |= (int(b) & 0x7F) << shift 340 if b < 0x80 { 341 break 342 } 343 } 344 if msglen < 0 { 345 return ErrInvalidLengthHistogram 346 } 347 postIndex := iNdEx + msglen 348 if postIndex > l { 349 return io.ErrUnexpectedEOF 350 } 351 if m.ColumnType == nil { 352 m.ColumnType = &types.T{} 353 } 354 if err := m.ColumnType.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { 355 return err 356 } 357 iNdEx = postIndex 358 default: 359 iNdEx = preIndex 360 skippy, err := skipHistogram(dAtA[iNdEx:]) 361 if err != nil { 362 return err 363 } 364 if skippy < 0 { 365 return ErrInvalidLengthHistogram 366 } 367 if (iNdEx + skippy) > l { 368 return io.ErrUnexpectedEOF 369 } 370 iNdEx += skippy 371 } 372 } 373 374 if iNdEx > l { 375 return io.ErrUnexpectedEOF 376 } 377 return nil 378 } 379 func (m *HistogramData_Bucket) Unmarshal(dAtA []byte) error { 380 l := len(dAtA) 381 iNdEx := 0 382 for iNdEx < l { 383 preIndex := iNdEx 384 var wire uint64 385 for shift := uint(0); ; shift += 7 { 386 if shift >= 64 { 387 return ErrIntOverflowHistogram 388 } 389 if iNdEx >= l { 390 return io.ErrUnexpectedEOF 391 } 392 b := dAtA[iNdEx] 393 iNdEx++ 394 wire |= (uint64(b) & 0x7F) << shift 395 if b < 0x80 { 396 break 397 } 398 } 399 fieldNum := int32(wire >> 3) 400 wireType := int(wire & 0x7) 401 if wireType == 4 { 402 return fmt.Errorf("proto: Bucket: wiretype end group for non-group") 403 } 404 if fieldNum <= 0 { 405 return fmt.Errorf("proto: Bucket: illegal tag %d (wire type %d)", fieldNum, wire) 406 } 407 switch fieldNum { 408 case 1: 409 if wireType != 0 { 410 return fmt.Errorf("proto: wrong wireType = %d for field NumEq", wireType) 411 } 412 m.NumEq = 0 413 for shift := uint(0); ; shift += 7 { 414 if shift >= 64 { 415 return ErrIntOverflowHistogram 416 } 417 if iNdEx >= l { 418 return io.ErrUnexpectedEOF 419 } 420 b := dAtA[iNdEx] 421 iNdEx++ 422 m.NumEq |= (int64(b) & 0x7F) << shift 423 if b < 0x80 { 424 break 425 } 426 } 427 case 2: 428 if wireType != 0 { 429 return fmt.Errorf("proto: wrong wireType = %d for field NumRange", wireType) 430 } 431 m.NumRange = 0 432 for shift := uint(0); ; shift += 7 { 433 if shift >= 64 { 434 return ErrIntOverflowHistogram 435 } 436 if iNdEx >= l { 437 return io.ErrUnexpectedEOF 438 } 439 b := dAtA[iNdEx] 440 iNdEx++ 441 m.NumRange |= (int64(b) & 0x7F) << shift 442 if b < 0x80 { 443 break 444 } 445 } 446 case 3: 447 if wireType != 2 { 448 return fmt.Errorf("proto: wrong wireType = %d for field UpperBound", wireType) 449 } 450 var byteLen int 451 for shift := uint(0); ; shift += 7 { 452 if shift >= 64 { 453 return ErrIntOverflowHistogram 454 } 455 if iNdEx >= l { 456 return io.ErrUnexpectedEOF 457 } 458 b := dAtA[iNdEx] 459 iNdEx++ 460 byteLen |= (int(b) & 0x7F) << shift 461 if b < 0x80 { 462 break 463 } 464 } 465 if byteLen < 0 { 466 return ErrInvalidLengthHistogram 467 } 468 postIndex := iNdEx + byteLen 469 if postIndex > l { 470 return io.ErrUnexpectedEOF 471 } 472 m.UpperBound = append(m.UpperBound[:0], dAtA[iNdEx:postIndex]...) 473 if m.UpperBound == nil { 474 m.UpperBound = []byte{} 475 } 476 iNdEx = postIndex 477 case 4: 478 if wireType != 1 { 479 return fmt.Errorf("proto: wrong wireType = %d for field DistinctRange", wireType) 480 } 481 var v uint64 482 if (iNdEx + 8) > l { 483 return io.ErrUnexpectedEOF 484 } 485 v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) 486 iNdEx += 8 487 m.DistinctRange = float64(math.Float64frombits(v)) 488 default: 489 iNdEx = preIndex 490 skippy, err := skipHistogram(dAtA[iNdEx:]) 491 if err != nil { 492 return err 493 } 494 if skippy < 0 { 495 return ErrInvalidLengthHistogram 496 } 497 if (iNdEx + skippy) > l { 498 return io.ErrUnexpectedEOF 499 } 500 iNdEx += skippy 501 } 502 } 503 504 if iNdEx > l { 505 return io.ErrUnexpectedEOF 506 } 507 return nil 508 } 509 func skipHistogram(dAtA []byte) (n int, err error) { 510 l := len(dAtA) 511 iNdEx := 0 512 for iNdEx < l { 513 var wire uint64 514 for shift := uint(0); ; shift += 7 { 515 if shift >= 64 { 516 return 0, ErrIntOverflowHistogram 517 } 518 if iNdEx >= l { 519 return 0, io.ErrUnexpectedEOF 520 } 521 b := dAtA[iNdEx] 522 iNdEx++ 523 wire |= (uint64(b) & 0x7F) << shift 524 if b < 0x80 { 525 break 526 } 527 } 528 wireType := int(wire & 0x7) 529 switch wireType { 530 case 0: 531 for shift := uint(0); ; shift += 7 { 532 if shift >= 64 { 533 return 0, ErrIntOverflowHistogram 534 } 535 if iNdEx >= l { 536 return 0, io.ErrUnexpectedEOF 537 } 538 iNdEx++ 539 if dAtA[iNdEx-1] < 0x80 { 540 break 541 } 542 } 543 return iNdEx, nil 544 case 1: 545 iNdEx += 8 546 return iNdEx, nil 547 case 2: 548 var length int 549 for shift := uint(0); ; shift += 7 { 550 if shift >= 64 { 551 return 0, ErrIntOverflowHistogram 552 } 553 if iNdEx >= l { 554 return 0, io.ErrUnexpectedEOF 555 } 556 b := dAtA[iNdEx] 557 iNdEx++ 558 length |= (int(b) & 0x7F) << shift 559 if b < 0x80 { 560 break 561 } 562 } 563 iNdEx += length 564 if length < 0 { 565 return 0, ErrInvalidLengthHistogram 566 } 567 return iNdEx, nil 568 case 3: 569 for { 570 var innerWire uint64 571 var start int = iNdEx 572 for shift := uint(0); ; shift += 7 { 573 if shift >= 64 { 574 return 0, ErrIntOverflowHistogram 575 } 576 if iNdEx >= l { 577 return 0, io.ErrUnexpectedEOF 578 } 579 b := dAtA[iNdEx] 580 iNdEx++ 581 innerWire |= (uint64(b) & 0x7F) << shift 582 if b < 0x80 { 583 break 584 } 585 } 586 innerWireType := int(innerWire & 0x7) 587 if innerWireType == 4 { 588 break 589 } 590 next, err := skipHistogram(dAtA[start:]) 591 if err != nil { 592 return 0, err 593 } 594 iNdEx = start + next 595 } 596 return iNdEx, nil 597 case 4: 598 return iNdEx, nil 599 case 5: 600 iNdEx += 4 601 return iNdEx, nil 602 default: 603 return 0, fmt.Errorf("proto: illegal wireType %d", wireType) 604 } 605 } 606 panic("unreachable") 607 } 608 609 var ( 610 ErrInvalidLengthHistogram = fmt.Errorf("proto: negative length found during unmarshaling") 611 ErrIntOverflowHistogram = fmt.Errorf("proto: integer overflow") 612 ) 613 614 func init() { 615 proto.RegisterFile("sql/stats/histogram.proto", fileDescriptor_histogram_40b21550afd0ea12) 616 } 617 618 var fileDescriptor_histogram_40b21550afd0ea12 = []byte{ 619 // 326 bytes of a gzipped FileDescriptorProto 620 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0x31, 0x4e, 0xf3, 0x30, 621 0x18, 0x86, 0xe3, 0xa6, 0xed, 0xff, 0xe3, 0x50, 0x06, 0x43, 0xa5, 0x10, 0x24, 0x37, 0x42, 0x42, 622 0x84, 0xc5, 0x95, 0xca, 0xc8, 0x16, 0x81, 0x04, 0xab, 0xd5, 0x89, 0xa5, 0x4a, 0xd3, 0x28, 0xad, 623 0xda, 0xd8, 0x49, 0x6c, 0x0f, 0xdd, 0x39, 0x00, 0x27, 0xe0, 0x3c, 0x1d, 0x3b, 0x76, 0x42, 0x90, 624 0x5e, 0x04, 0xd9, 0xa6, 0x03, 0x88, 0x25, 0x8a, 0x1f, 0xbf, 0xef, 0xf3, 0x59, 0x1f, 0x3c, 0x17, 625 0xd5, 0x6a, 0x28, 0x64, 0x22, 0xc5, 0x70, 0xbe, 0x10, 0x92, 0xe7, 0x75, 0x52, 0x90, 0xb2, 0xe6, 626 0x92, 0xa3, 0xd3, 0x94, 0xa7, 0xcb, 0x9a, 0x27, 0xe9, 0x9c, 0x88, 0x6a, 0x45, 0x4c, 0x28, 0x38, 627 0xcb, 0x79, 0xce, 0xcd, 0xfd, 0x50, 0xff, 0xd9, 0x68, 0xd0, 0xd7, 0x16, 0xb9, 0x2e, 0x33, 0x61, 628 0xbf, 0x16, 0x5f, 0xbe, 0xb5, 0x60, 0xef, 0xf1, 0x60, 0xbd, 0x4f, 0x64, 0x82, 0x9e, 0xe0, 0xbf, 629 0xa9, 0x4a, 0x97, 0x99, 0x14, 0x3e, 0x08, 0xdd, 0xc8, 0x1b, 0xdd, 0x90, 0x3f, 0xa6, 0x90, 0x1f, 630 0x25, 0x12, 0x9b, 0x46, 0xdc, 0xde, 0xbc, 0x0f, 0x1c, 0x7a, 0xe8, 0xa3, 0x3b, 0xe8, 0xa5, 0x7c, 631 0xa5, 0x0a, 0x36, 0xd1, 0x23, 0xfd, 0x56, 0x08, 0x22, 0x6f, 0x14, 0xfc, 0xd6, 0x65, 0x05, 0xb1, 632 0x2f, 0x1a, 0x53, 0x68, 0xe3, 0xe3, 0x75, 0x99, 0x05, 0x2f, 0x00, 0x76, 0xad, 0x16, 0xf5, 0x61, 633 0x97, 0xa9, 0x62, 0x92, 0x55, 0x3e, 0x08, 0x41, 0xe4, 0xd2, 0x0e, 0x53, 0xc5, 0x43, 0x85, 0x2e, 634 0xe0, 0x91, 0xc6, 0x75, 0xc2, 0x72, 0x2b, 0x77, 0xe9, 0x7f, 0xa6, 0x0a, 0xaa, 0xcf, 0x68, 0x00, 635 0x3d, 0x55, 0x96, 0x59, 0x3d, 0x99, 0x72, 0xc5, 0x66, 0xbe, 0x1b, 0x82, 0xe8, 0x98, 0x42, 0x83, 636 0x62, 0x4d, 0xd0, 0x15, 0x3c, 0x99, 0x2d, 0x84, 0x5c, 0xb0, 0x54, 0x7e, 0x2b, 0xda, 0x21, 0x88, 637 0x00, 0xed, 0x1d, 0xa8, 0xf1, 0xc4, 0xd7, 0x9b, 0x4f, 0xec, 0x6c, 0x1a, 0x0c, 0xb6, 0x0d, 0x06, 638 0xbb, 0x06, 0x83, 0x8f, 0x06, 0x83, 0xd7, 0x3d, 0x76, 0xb6, 0x7b, 0xec, 0xec, 0xf6, 0xd8, 0x79, 639 0xee, 0x98, 0x85, 0x4c, 0xbb, 0x66, 0xa1, 0xb7, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbf, 0xd2, 640 0x87, 0x1e, 0xaf, 0x01, 0x00, 0x00, 641 }