github.com/darrenli6/fabric-sdk-example@v0.0.0-20220109053535-94b13b56df8c/protos/gossip/message.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: gossip/message.proto 3 4 /* 5 Package gossip is a generated protocol buffer package. 6 7 It is generated from these files: 8 gossip/message.proto 9 10 It has these top-level messages: 11 Envelope 12 SecretEnvelope 13 Secret 14 GossipMessage 15 StateInfo 16 StateInfoSnapshot 17 StateInfoPullRequest 18 ConnEstablish 19 PeerIdentity 20 DataRequest 21 GossipHello 22 DataUpdate 23 DataDigest 24 DataMessage 25 Payload 26 AliveMessage 27 LeadershipMessage 28 PeerTime 29 MembershipRequest 30 MembershipResponse 31 Member 32 Empty 33 RemoteStateRequest 34 RemoteStateResponse 35 */ 36 package gossip 37 38 import proto "github.com/golang/protobuf/proto" 39 import fmt "fmt" 40 import math "math" 41 42 import ( 43 context "golang.org/x/net/context" 44 grpc "google.golang.org/grpc" 45 ) 46 47 // Reference imports to suppress errors if they are not otherwise used. 48 var _ = proto.Marshal 49 var _ = fmt.Errorf 50 var _ = math.Inf 51 52 // This is a compile-time assertion to ensure that this generated file 53 // is compatible with the proto package it is being compiled against. 54 // A compilation error at this line likely means your copy of the 55 // proto package needs to be updated. 56 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package 57 58 type PullMsgType int32 59 60 const ( 61 PullMsgType_UNDEFINED PullMsgType = 0 62 PullMsgType_BLOCK_MSG PullMsgType = 1 63 PullMsgType_IDENTITY_MSG PullMsgType = 2 64 ) 65 66 var PullMsgType_name = map[int32]string{ 67 0: "UNDEFINED", 68 1: "BLOCK_MSG", 69 2: "IDENTITY_MSG", 70 } 71 var PullMsgType_value = map[string]int32{ 72 "UNDEFINED": 0, 73 "BLOCK_MSG": 1, 74 "IDENTITY_MSG": 2, 75 } 76 77 func (x PullMsgType) String() string { 78 return proto.EnumName(PullMsgType_name, int32(x)) 79 } 80 func (PullMsgType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 81 82 type GossipMessage_Tag int32 83 84 const ( 85 GossipMessage_UNDEFINED GossipMessage_Tag = 0 86 GossipMessage_EMPTY GossipMessage_Tag = 1 87 GossipMessage_ORG_ONLY GossipMessage_Tag = 2 88 GossipMessage_CHAN_ONLY GossipMessage_Tag = 3 89 GossipMessage_CHAN_AND_ORG GossipMessage_Tag = 4 90 GossipMessage_CHAN_OR_ORG GossipMessage_Tag = 5 91 ) 92 93 var GossipMessage_Tag_name = map[int32]string{ 94 0: "UNDEFINED", 95 1: "EMPTY", 96 2: "ORG_ONLY", 97 3: "CHAN_ONLY", 98 4: "CHAN_AND_ORG", 99 5: "CHAN_OR_ORG", 100 } 101 var GossipMessage_Tag_value = map[string]int32{ 102 "UNDEFINED": 0, 103 "EMPTY": 1, 104 "ORG_ONLY": 2, 105 "CHAN_ONLY": 3, 106 "CHAN_AND_ORG": 4, 107 "CHAN_OR_ORG": 5, 108 } 109 110 func (x GossipMessage_Tag) String() string { 111 return proto.EnumName(GossipMessage_Tag_name, int32(x)) 112 } 113 func (GossipMessage_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } 114 115 // Envelope contains a marshalled 116 // GossipMessage and a signature over it. 117 // It may also contain a SecretEnvelope 118 // which is a marshalled Secret 119 type Envelope struct { 120 Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` 121 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 122 SecretEnvelope *SecretEnvelope `protobuf:"bytes,3,opt,name=secret_envelope,json=secretEnvelope" json:"secret_envelope,omitempty"` 123 } 124 125 func (m *Envelope) Reset() { *m = Envelope{} } 126 func (m *Envelope) String() string { return proto.CompactTextString(m) } 127 func (*Envelope) ProtoMessage() {} 128 func (*Envelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 129 130 func (m *Envelope) GetPayload() []byte { 131 if m != nil { 132 return m.Payload 133 } 134 return nil 135 } 136 137 func (m *Envelope) GetSignature() []byte { 138 if m != nil { 139 return m.Signature 140 } 141 return nil 142 } 143 144 func (m *Envelope) GetSecretEnvelope() *SecretEnvelope { 145 if m != nil { 146 return m.SecretEnvelope 147 } 148 return nil 149 } 150 151 // SecretEnvelope is a marshalled Secret 152 // and a signature over it. 153 // The signature should be validated by the peer 154 // that signed the Envelope the SecretEnvelope 155 // came with 156 type SecretEnvelope struct { 157 Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` 158 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 159 } 160 161 func (m *SecretEnvelope) Reset() { *m = SecretEnvelope{} } 162 func (m *SecretEnvelope) String() string { return proto.CompactTextString(m) } 163 func (*SecretEnvelope) ProtoMessage() {} 164 func (*SecretEnvelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 165 166 func (m *SecretEnvelope) GetPayload() []byte { 167 if m != nil { 168 return m.Payload 169 } 170 return nil 171 } 172 173 func (m *SecretEnvelope) GetSignature() []byte { 174 if m != nil { 175 return m.Signature 176 } 177 return nil 178 } 179 180 // Secret is an entity that might be omitted 181 // from an Envelope when the remote peer that is receiving 182 // the Envelope shouldn't know the secret's content. 183 type Secret struct { 184 // Types that are valid to be assigned to Content: 185 // *Secret_InternalEndpoint 186 Content isSecret_Content `protobuf_oneof:"content"` 187 } 188 189 func (m *Secret) Reset() { *m = Secret{} } 190 func (m *Secret) String() string { return proto.CompactTextString(m) } 191 func (*Secret) ProtoMessage() {} 192 func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 193 194 type isSecret_Content interface { 195 isSecret_Content() 196 } 197 198 type Secret_InternalEndpoint struct { 199 InternalEndpoint string `protobuf:"bytes,1,opt,name=internalEndpoint,oneof"` 200 } 201 202 func (*Secret_InternalEndpoint) isSecret_Content() {} 203 204 func (m *Secret) GetContent() isSecret_Content { 205 if m != nil { 206 return m.Content 207 } 208 return nil 209 } 210 211 func (m *Secret) GetInternalEndpoint() string { 212 if x, ok := m.GetContent().(*Secret_InternalEndpoint); ok { 213 return x.InternalEndpoint 214 } 215 return "" 216 } 217 218 // XXX_OneofFuncs is for the internal use of the proto package. 219 func (*Secret) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { 220 return _Secret_OneofMarshaler, _Secret_OneofUnmarshaler, _Secret_OneofSizer, []interface{}{ 221 (*Secret_InternalEndpoint)(nil), 222 } 223 } 224 225 func _Secret_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { 226 m := msg.(*Secret) 227 // content 228 switch x := m.Content.(type) { 229 case *Secret_InternalEndpoint: 230 b.EncodeVarint(1<<3 | proto.WireBytes) 231 b.EncodeStringBytes(x.InternalEndpoint) 232 case nil: 233 default: 234 return fmt.Errorf("Secret.Content has unexpected type %T", x) 235 } 236 return nil 237 } 238 239 func _Secret_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { 240 m := msg.(*Secret) 241 switch tag { 242 case 1: // content.internalEndpoint 243 if wire != proto.WireBytes { 244 return true, proto.ErrInternalBadWireType 245 } 246 x, err := b.DecodeStringBytes() 247 m.Content = &Secret_InternalEndpoint{x} 248 return true, err 249 default: 250 return false, nil 251 } 252 } 253 254 func _Secret_OneofSizer(msg proto.Message) (n int) { 255 m := msg.(*Secret) 256 // content 257 switch x := m.Content.(type) { 258 case *Secret_InternalEndpoint: 259 n += proto.SizeVarint(1<<3 | proto.WireBytes) 260 n += proto.SizeVarint(uint64(len(x.InternalEndpoint))) 261 n += len(x.InternalEndpoint) 262 case nil: 263 default: 264 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) 265 } 266 return n 267 } 268 269 // GossipMessage defines the message sent in a gossip network 270 type GossipMessage struct { 271 // used mainly for testing, but will might be used in the future 272 // for ensuring message delivery by acking 273 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 274 // The channel of the message. 275 // Some GossipMessages may set this to nil, because 276 // they are cross-channels but some may not 277 Channel []byte `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"` 278 // determines to which peers it is allowed 279 // to forward the message 280 Tag GossipMessage_Tag `protobuf:"varint,3,opt,name=tag,enum=gossip.GossipMessage_Tag" json:"tag,omitempty"` 281 // Types that are valid to be assigned to Content: 282 // *GossipMessage_AliveMsg 283 // *GossipMessage_MemReq 284 // *GossipMessage_MemRes 285 // *GossipMessage_DataMsg 286 // *GossipMessage_Hello 287 // *GossipMessage_DataDig 288 // *GossipMessage_DataReq 289 // *GossipMessage_DataUpdate 290 // *GossipMessage_Empty 291 // *GossipMessage_Conn 292 // *GossipMessage_StateInfo 293 // *GossipMessage_StateSnapshot 294 // *GossipMessage_StateInfoPullReq 295 // *GossipMessage_StateRequest 296 // *GossipMessage_StateResponse 297 // *GossipMessage_LeadershipMsg 298 // *GossipMessage_PeerIdentity 299 Content isGossipMessage_Content `protobuf_oneof:"content"` 300 } 301 302 func (m *GossipMessage) Reset() { *m = GossipMessage{} } 303 func (m *GossipMessage) String() string { return proto.CompactTextString(m) } 304 func (*GossipMessage) ProtoMessage() {} 305 func (*GossipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } 306 307 type isGossipMessage_Content interface { 308 isGossipMessage_Content() 309 } 310 311 type GossipMessage_AliveMsg struct { 312 AliveMsg *AliveMessage `protobuf:"bytes,5,opt,name=alive_msg,json=aliveMsg,oneof"` 313 } 314 type GossipMessage_MemReq struct { 315 MemReq *MembershipRequest `protobuf:"bytes,6,opt,name=mem_req,json=memReq,oneof"` 316 } 317 type GossipMessage_MemRes struct { 318 MemRes *MembershipResponse `protobuf:"bytes,7,opt,name=mem_res,json=memRes,oneof"` 319 } 320 type GossipMessage_DataMsg struct { 321 DataMsg *DataMessage `protobuf:"bytes,8,opt,name=data_msg,json=dataMsg,oneof"` 322 } 323 type GossipMessage_Hello struct { 324 Hello *GossipHello `protobuf:"bytes,9,opt,name=hello,oneof"` 325 } 326 type GossipMessage_DataDig struct { 327 DataDig *DataDigest `protobuf:"bytes,10,opt,name=data_dig,json=dataDig,oneof"` 328 } 329 type GossipMessage_DataReq struct { 330 DataReq *DataRequest `protobuf:"bytes,11,opt,name=data_req,json=dataReq,oneof"` 331 } 332 type GossipMessage_DataUpdate struct { 333 DataUpdate *DataUpdate `protobuf:"bytes,12,opt,name=data_update,json=dataUpdate,oneof"` 334 } 335 type GossipMessage_Empty struct { 336 Empty *Empty `protobuf:"bytes,13,opt,name=empty,oneof"` 337 } 338 type GossipMessage_Conn struct { 339 Conn *ConnEstablish `protobuf:"bytes,14,opt,name=conn,oneof"` 340 } 341 type GossipMessage_StateInfo struct { 342 StateInfo *StateInfo `protobuf:"bytes,15,opt,name=state_info,json=stateInfo,oneof"` 343 } 344 type GossipMessage_StateSnapshot struct { 345 StateSnapshot *StateInfoSnapshot `protobuf:"bytes,16,opt,name=state_snapshot,json=stateSnapshot,oneof"` 346 } 347 type GossipMessage_StateInfoPullReq struct { 348 StateInfoPullReq *StateInfoPullRequest `protobuf:"bytes,17,opt,name=state_info_pull_req,json=stateInfoPullReq,oneof"` 349 } 350 type GossipMessage_StateRequest struct { 351 StateRequest *RemoteStateRequest `protobuf:"bytes,18,opt,name=state_request,json=stateRequest,oneof"` 352 } 353 type GossipMessage_StateResponse struct { 354 StateResponse *RemoteStateResponse `protobuf:"bytes,19,opt,name=state_response,json=stateResponse,oneof"` 355 } 356 type GossipMessage_LeadershipMsg struct { 357 LeadershipMsg *LeadershipMessage `protobuf:"bytes,20,opt,name=leadership_msg,json=leadershipMsg,oneof"` 358 } 359 type GossipMessage_PeerIdentity struct { 360 PeerIdentity *PeerIdentity `protobuf:"bytes,21,opt,name=peer_identity,json=peerIdentity,oneof"` 361 } 362 363 func (*GossipMessage_AliveMsg) isGossipMessage_Content() {} 364 func (*GossipMessage_MemReq) isGossipMessage_Content() {} 365 func (*GossipMessage_MemRes) isGossipMessage_Content() {} 366 func (*GossipMessage_DataMsg) isGossipMessage_Content() {} 367 func (*GossipMessage_Hello) isGossipMessage_Content() {} 368 func (*GossipMessage_DataDig) isGossipMessage_Content() {} 369 func (*GossipMessage_DataReq) isGossipMessage_Content() {} 370 func (*GossipMessage_DataUpdate) isGossipMessage_Content() {} 371 func (*GossipMessage_Empty) isGossipMessage_Content() {} 372 func (*GossipMessage_Conn) isGossipMessage_Content() {} 373 func (*GossipMessage_StateInfo) isGossipMessage_Content() {} 374 func (*GossipMessage_StateSnapshot) isGossipMessage_Content() {} 375 func (*GossipMessage_StateInfoPullReq) isGossipMessage_Content() {} 376 func (*GossipMessage_StateRequest) isGossipMessage_Content() {} 377 func (*GossipMessage_StateResponse) isGossipMessage_Content() {} 378 func (*GossipMessage_LeadershipMsg) isGossipMessage_Content() {} 379 func (*GossipMessage_PeerIdentity) isGossipMessage_Content() {} 380 381 func (m *GossipMessage) GetContent() isGossipMessage_Content { 382 if m != nil { 383 return m.Content 384 } 385 return nil 386 } 387 388 func (m *GossipMessage) GetNonce() uint64 { 389 if m != nil { 390 return m.Nonce 391 } 392 return 0 393 } 394 395 func (m *GossipMessage) GetChannel() []byte { 396 if m != nil { 397 return m.Channel 398 } 399 return nil 400 } 401 402 func (m *GossipMessage) GetTag() GossipMessage_Tag { 403 if m != nil { 404 return m.Tag 405 } 406 return GossipMessage_UNDEFINED 407 } 408 409 func (m *GossipMessage) GetAliveMsg() *AliveMessage { 410 if x, ok := m.GetContent().(*GossipMessage_AliveMsg); ok { 411 return x.AliveMsg 412 } 413 return nil 414 } 415 416 func (m *GossipMessage) GetMemReq() *MembershipRequest { 417 if x, ok := m.GetContent().(*GossipMessage_MemReq); ok { 418 return x.MemReq 419 } 420 return nil 421 } 422 423 func (m *GossipMessage) GetMemRes() *MembershipResponse { 424 if x, ok := m.GetContent().(*GossipMessage_MemRes); ok { 425 return x.MemRes 426 } 427 return nil 428 } 429 430 func (m *GossipMessage) GetDataMsg() *DataMessage { 431 if x, ok := m.GetContent().(*GossipMessage_DataMsg); ok { 432 return x.DataMsg 433 } 434 return nil 435 } 436 437 func (m *GossipMessage) GetHello() *GossipHello { 438 if x, ok := m.GetContent().(*GossipMessage_Hello); ok { 439 return x.Hello 440 } 441 return nil 442 } 443 444 func (m *GossipMessage) GetDataDig() *DataDigest { 445 if x, ok := m.GetContent().(*GossipMessage_DataDig); ok { 446 return x.DataDig 447 } 448 return nil 449 } 450 451 func (m *GossipMessage) GetDataReq() *DataRequest { 452 if x, ok := m.GetContent().(*GossipMessage_DataReq); ok { 453 return x.DataReq 454 } 455 return nil 456 } 457 458 func (m *GossipMessage) GetDataUpdate() *DataUpdate { 459 if x, ok := m.GetContent().(*GossipMessage_DataUpdate); ok { 460 return x.DataUpdate 461 } 462 return nil 463 } 464 465 func (m *GossipMessage) GetEmpty() *Empty { 466 if x, ok := m.GetContent().(*GossipMessage_Empty); ok { 467 return x.Empty 468 } 469 return nil 470 } 471 472 func (m *GossipMessage) GetConn() *ConnEstablish { 473 if x, ok := m.GetContent().(*GossipMessage_Conn); ok { 474 return x.Conn 475 } 476 return nil 477 } 478 479 func (m *GossipMessage) GetStateInfo() *StateInfo { 480 if x, ok := m.GetContent().(*GossipMessage_StateInfo); ok { 481 return x.StateInfo 482 } 483 return nil 484 } 485 486 func (m *GossipMessage) GetStateSnapshot() *StateInfoSnapshot { 487 if x, ok := m.GetContent().(*GossipMessage_StateSnapshot); ok { 488 return x.StateSnapshot 489 } 490 return nil 491 } 492 493 func (m *GossipMessage) GetStateInfoPullReq() *StateInfoPullRequest { 494 if x, ok := m.GetContent().(*GossipMessage_StateInfoPullReq); ok { 495 return x.StateInfoPullReq 496 } 497 return nil 498 } 499 500 func (m *GossipMessage) GetStateRequest() *RemoteStateRequest { 501 if x, ok := m.GetContent().(*GossipMessage_StateRequest); ok { 502 return x.StateRequest 503 } 504 return nil 505 } 506 507 func (m *GossipMessage) GetStateResponse() *RemoteStateResponse { 508 if x, ok := m.GetContent().(*GossipMessage_StateResponse); ok { 509 return x.StateResponse 510 } 511 return nil 512 } 513 514 func (m *GossipMessage) GetLeadershipMsg() *LeadershipMessage { 515 if x, ok := m.GetContent().(*GossipMessage_LeadershipMsg); ok { 516 return x.LeadershipMsg 517 } 518 return nil 519 } 520 521 func (m *GossipMessage) GetPeerIdentity() *PeerIdentity { 522 if x, ok := m.GetContent().(*GossipMessage_PeerIdentity); ok { 523 return x.PeerIdentity 524 } 525 return nil 526 } 527 528 // XXX_OneofFuncs is for the internal use of the proto package. 529 func (*GossipMessage) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { 530 return _GossipMessage_OneofMarshaler, _GossipMessage_OneofUnmarshaler, _GossipMessage_OneofSizer, []interface{}{ 531 (*GossipMessage_AliveMsg)(nil), 532 (*GossipMessage_MemReq)(nil), 533 (*GossipMessage_MemRes)(nil), 534 (*GossipMessage_DataMsg)(nil), 535 (*GossipMessage_Hello)(nil), 536 (*GossipMessage_DataDig)(nil), 537 (*GossipMessage_DataReq)(nil), 538 (*GossipMessage_DataUpdate)(nil), 539 (*GossipMessage_Empty)(nil), 540 (*GossipMessage_Conn)(nil), 541 (*GossipMessage_StateInfo)(nil), 542 (*GossipMessage_StateSnapshot)(nil), 543 (*GossipMessage_StateInfoPullReq)(nil), 544 (*GossipMessage_StateRequest)(nil), 545 (*GossipMessage_StateResponse)(nil), 546 (*GossipMessage_LeadershipMsg)(nil), 547 (*GossipMessage_PeerIdentity)(nil), 548 } 549 } 550 551 func _GossipMessage_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { 552 m := msg.(*GossipMessage) 553 // content 554 switch x := m.Content.(type) { 555 case *GossipMessage_AliveMsg: 556 b.EncodeVarint(5<<3 | proto.WireBytes) 557 if err := b.EncodeMessage(x.AliveMsg); err != nil { 558 return err 559 } 560 case *GossipMessage_MemReq: 561 b.EncodeVarint(6<<3 | proto.WireBytes) 562 if err := b.EncodeMessage(x.MemReq); err != nil { 563 return err 564 } 565 case *GossipMessage_MemRes: 566 b.EncodeVarint(7<<3 | proto.WireBytes) 567 if err := b.EncodeMessage(x.MemRes); err != nil { 568 return err 569 } 570 case *GossipMessage_DataMsg: 571 b.EncodeVarint(8<<3 | proto.WireBytes) 572 if err := b.EncodeMessage(x.DataMsg); err != nil { 573 return err 574 } 575 case *GossipMessage_Hello: 576 b.EncodeVarint(9<<3 | proto.WireBytes) 577 if err := b.EncodeMessage(x.Hello); err != nil { 578 return err 579 } 580 case *GossipMessage_DataDig: 581 b.EncodeVarint(10<<3 | proto.WireBytes) 582 if err := b.EncodeMessage(x.DataDig); err != nil { 583 return err 584 } 585 case *GossipMessage_DataReq: 586 b.EncodeVarint(11<<3 | proto.WireBytes) 587 if err := b.EncodeMessage(x.DataReq); err != nil { 588 return err 589 } 590 case *GossipMessage_DataUpdate: 591 b.EncodeVarint(12<<3 | proto.WireBytes) 592 if err := b.EncodeMessage(x.DataUpdate); err != nil { 593 return err 594 } 595 case *GossipMessage_Empty: 596 b.EncodeVarint(13<<3 | proto.WireBytes) 597 if err := b.EncodeMessage(x.Empty); err != nil { 598 return err 599 } 600 case *GossipMessage_Conn: 601 b.EncodeVarint(14<<3 | proto.WireBytes) 602 if err := b.EncodeMessage(x.Conn); err != nil { 603 return err 604 } 605 case *GossipMessage_StateInfo: 606 b.EncodeVarint(15<<3 | proto.WireBytes) 607 if err := b.EncodeMessage(x.StateInfo); err != nil { 608 return err 609 } 610 case *GossipMessage_StateSnapshot: 611 b.EncodeVarint(16<<3 | proto.WireBytes) 612 if err := b.EncodeMessage(x.StateSnapshot); err != nil { 613 return err 614 } 615 case *GossipMessage_StateInfoPullReq: 616 b.EncodeVarint(17<<3 | proto.WireBytes) 617 if err := b.EncodeMessage(x.StateInfoPullReq); err != nil { 618 return err 619 } 620 case *GossipMessage_StateRequest: 621 b.EncodeVarint(18<<3 | proto.WireBytes) 622 if err := b.EncodeMessage(x.StateRequest); err != nil { 623 return err 624 } 625 case *GossipMessage_StateResponse: 626 b.EncodeVarint(19<<3 | proto.WireBytes) 627 if err := b.EncodeMessage(x.StateResponse); err != nil { 628 return err 629 } 630 case *GossipMessage_LeadershipMsg: 631 b.EncodeVarint(20<<3 | proto.WireBytes) 632 if err := b.EncodeMessage(x.LeadershipMsg); err != nil { 633 return err 634 } 635 case *GossipMessage_PeerIdentity: 636 b.EncodeVarint(21<<3 | proto.WireBytes) 637 if err := b.EncodeMessage(x.PeerIdentity); err != nil { 638 return err 639 } 640 case nil: 641 default: 642 return fmt.Errorf("GossipMessage.Content has unexpected type %T", x) 643 } 644 return nil 645 } 646 647 func _GossipMessage_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { 648 m := msg.(*GossipMessage) 649 switch tag { 650 case 5: // content.alive_msg 651 if wire != proto.WireBytes { 652 return true, proto.ErrInternalBadWireType 653 } 654 msg := new(AliveMessage) 655 err := b.DecodeMessage(msg) 656 m.Content = &GossipMessage_AliveMsg{msg} 657 return true, err 658 case 6: // content.mem_req 659 if wire != proto.WireBytes { 660 return true, proto.ErrInternalBadWireType 661 } 662 msg := new(MembershipRequest) 663 err := b.DecodeMessage(msg) 664 m.Content = &GossipMessage_MemReq{msg} 665 return true, err 666 case 7: // content.mem_res 667 if wire != proto.WireBytes { 668 return true, proto.ErrInternalBadWireType 669 } 670 msg := new(MembershipResponse) 671 err := b.DecodeMessage(msg) 672 m.Content = &GossipMessage_MemRes{msg} 673 return true, err 674 case 8: // content.data_msg 675 if wire != proto.WireBytes { 676 return true, proto.ErrInternalBadWireType 677 } 678 msg := new(DataMessage) 679 err := b.DecodeMessage(msg) 680 m.Content = &GossipMessage_DataMsg{msg} 681 return true, err 682 case 9: // content.hello 683 if wire != proto.WireBytes { 684 return true, proto.ErrInternalBadWireType 685 } 686 msg := new(GossipHello) 687 err := b.DecodeMessage(msg) 688 m.Content = &GossipMessage_Hello{msg} 689 return true, err 690 case 10: // content.data_dig 691 if wire != proto.WireBytes { 692 return true, proto.ErrInternalBadWireType 693 } 694 msg := new(DataDigest) 695 err := b.DecodeMessage(msg) 696 m.Content = &GossipMessage_DataDig{msg} 697 return true, err 698 case 11: // content.data_req 699 if wire != proto.WireBytes { 700 return true, proto.ErrInternalBadWireType 701 } 702 msg := new(DataRequest) 703 err := b.DecodeMessage(msg) 704 m.Content = &GossipMessage_DataReq{msg} 705 return true, err 706 case 12: // content.data_update 707 if wire != proto.WireBytes { 708 return true, proto.ErrInternalBadWireType 709 } 710 msg := new(DataUpdate) 711 err := b.DecodeMessage(msg) 712 m.Content = &GossipMessage_DataUpdate{msg} 713 return true, err 714 case 13: // content.empty 715 if wire != proto.WireBytes { 716 return true, proto.ErrInternalBadWireType 717 } 718 msg := new(Empty) 719 err := b.DecodeMessage(msg) 720 m.Content = &GossipMessage_Empty{msg} 721 return true, err 722 case 14: // content.conn 723 if wire != proto.WireBytes { 724 return true, proto.ErrInternalBadWireType 725 } 726 msg := new(ConnEstablish) 727 err := b.DecodeMessage(msg) 728 m.Content = &GossipMessage_Conn{msg} 729 return true, err 730 case 15: // content.state_info 731 if wire != proto.WireBytes { 732 return true, proto.ErrInternalBadWireType 733 } 734 msg := new(StateInfo) 735 err := b.DecodeMessage(msg) 736 m.Content = &GossipMessage_StateInfo{msg} 737 return true, err 738 case 16: // content.state_snapshot 739 if wire != proto.WireBytes { 740 return true, proto.ErrInternalBadWireType 741 } 742 msg := new(StateInfoSnapshot) 743 err := b.DecodeMessage(msg) 744 m.Content = &GossipMessage_StateSnapshot{msg} 745 return true, err 746 case 17: // content.state_info_pull_req 747 if wire != proto.WireBytes { 748 return true, proto.ErrInternalBadWireType 749 } 750 msg := new(StateInfoPullRequest) 751 err := b.DecodeMessage(msg) 752 m.Content = &GossipMessage_StateInfoPullReq{msg} 753 return true, err 754 case 18: // content.state_request 755 if wire != proto.WireBytes { 756 return true, proto.ErrInternalBadWireType 757 } 758 msg := new(RemoteStateRequest) 759 err := b.DecodeMessage(msg) 760 m.Content = &GossipMessage_StateRequest{msg} 761 return true, err 762 case 19: // content.state_response 763 if wire != proto.WireBytes { 764 return true, proto.ErrInternalBadWireType 765 } 766 msg := new(RemoteStateResponse) 767 err := b.DecodeMessage(msg) 768 m.Content = &GossipMessage_StateResponse{msg} 769 return true, err 770 case 20: // content.leadership_msg 771 if wire != proto.WireBytes { 772 return true, proto.ErrInternalBadWireType 773 } 774 msg := new(LeadershipMessage) 775 err := b.DecodeMessage(msg) 776 m.Content = &GossipMessage_LeadershipMsg{msg} 777 return true, err 778 case 21: // content.peer_identity 779 if wire != proto.WireBytes { 780 return true, proto.ErrInternalBadWireType 781 } 782 msg := new(PeerIdentity) 783 err := b.DecodeMessage(msg) 784 m.Content = &GossipMessage_PeerIdentity{msg} 785 return true, err 786 default: 787 return false, nil 788 } 789 } 790 791 func _GossipMessage_OneofSizer(msg proto.Message) (n int) { 792 m := msg.(*GossipMessage) 793 // content 794 switch x := m.Content.(type) { 795 case *GossipMessage_AliveMsg: 796 s := proto.Size(x.AliveMsg) 797 n += proto.SizeVarint(5<<3 | proto.WireBytes) 798 n += proto.SizeVarint(uint64(s)) 799 n += s 800 case *GossipMessage_MemReq: 801 s := proto.Size(x.MemReq) 802 n += proto.SizeVarint(6<<3 | proto.WireBytes) 803 n += proto.SizeVarint(uint64(s)) 804 n += s 805 case *GossipMessage_MemRes: 806 s := proto.Size(x.MemRes) 807 n += proto.SizeVarint(7<<3 | proto.WireBytes) 808 n += proto.SizeVarint(uint64(s)) 809 n += s 810 case *GossipMessage_DataMsg: 811 s := proto.Size(x.DataMsg) 812 n += proto.SizeVarint(8<<3 | proto.WireBytes) 813 n += proto.SizeVarint(uint64(s)) 814 n += s 815 case *GossipMessage_Hello: 816 s := proto.Size(x.Hello) 817 n += proto.SizeVarint(9<<3 | proto.WireBytes) 818 n += proto.SizeVarint(uint64(s)) 819 n += s 820 case *GossipMessage_DataDig: 821 s := proto.Size(x.DataDig) 822 n += proto.SizeVarint(10<<3 | proto.WireBytes) 823 n += proto.SizeVarint(uint64(s)) 824 n += s 825 case *GossipMessage_DataReq: 826 s := proto.Size(x.DataReq) 827 n += proto.SizeVarint(11<<3 | proto.WireBytes) 828 n += proto.SizeVarint(uint64(s)) 829 n += s 830 case *GossipMessage_DataUpdate: 831 s := proto.Size(x.DataUpdate) 832 n += proto.SizeVarint(12<<3 | proto.WireBytes) 833 n += proto.SizeVarint(uint64(s)) 834 n += s 835 case *GossipMessage_Empty: 836 s := proto.Size(x.Empty) 837 n += proto.SizeVarint(13<<3 | proto.WireBytes) 838 n += proto.SizeVarint(uint64(s)) 839 n += s 840 case *GossipMessage_Conn: 841 s := proto.Size(x.Conn) 842 n += proto.SizeVarint(14<<3 | proto.WireBytes) 843 n += proto.SizeVarint(uint64(s)) 844 n += s 845 case *GossipMessage_StateInfo: 846 s := proto.Size(x.StateInfo) 847 n += proto.SizeVarint(15<<3 | proto.WireBytes) 848 n += proto.SizeVarint(uint64(s)) 849 n += s 850 case *GossipMessage_StateSnapshot: 851 s := proto.Size(x.StateSnapshot) 852 n += proto.SizeVarint(16<<3 | proto.WireBytes) 853 n += proto.SizeVarint(uint64(s)) 854 n += s 855 case *GossipMessage_StateInfoPullReq: 856 s := proto.Size(x.StateInfoPullReq) 857 n += proto.SizeVarint(17<<3 | proto.WireBytes) 858 n += proto.SizeVarint(uint64(s)) 859 n += s 860 case *GossipMessage_StateRequest: 861 s := proto.Size(x.StateRequest) 862 n += proto.SizeVarint(18<<3 | proto.WireBytes) 863 n += proto.SizeVarint(uint64(s)) 864 n += s 865 case *GossipMessage_StateResponse: 866 s := proto.Size(x.StateResponse) 867 n += proto.SizeVarint(19<<3 | proto.WireBytes) 868 n += proto.SizeVarint(uint64(s)) 869 n += s 870 case *GossipMessage_LeadershipMsg: 871 s := proto.Size(x.LeadershipMsg) 872 n += proto.SizeVarint(20<<3 | proto.WireBytes) 873 n += proto.SizeVarint(uint64(s)) 874 n += s 875 case *GossipMessage_PeerIdentity: 876 s := proto.Size(x.PeerIdentity) 877 n += proto.SizeVarint(21<<3 | proto.WireBytes) 878 n += proto.SizeVarint(uint64(s)) 879 n += s 880 case nil: 881 default: 882 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) 883 } 884 return n 885 } 886 887 // StateInfo is used for a peer to relay its state information 888 // to other peers 889 type StateInfo struct { 890 Metadata []byte `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` 891 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 892 PkiId []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 893 // channel_MAC is an authentication code that proves 894 // that the peer that sent this message knows 895 // the name of the channel. 896 Channel_MAC []byte `protobuf:"bytes,4,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"` 897 } 898 899 func (m *StateInfo) Reset() { *m = StateInfo{} } 900 func (m *StateInfo) String() string { return proto.CompactTextString(m) } 901 func (*StateInfo) ProtoMessage() {} 902 func (*StateInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } 903 904 func (m *StateInfo) GetMetadata() []byte { 905 if m != nil { 906 return m.Metadata 907 } 908 return nil 909 } 910 911 func (m *StateInfo) GetTimestamp() *PeerTime { 912 if m != nil { 913 return m.Timestamp 914 } 915 return nil 916 } 917 918 func (m *StateInfo) GetPkiId() []byte { 919 if m != nil { 920 return m.PkiId 921 } 922 return nil 923 } 924 925 func (m *StateInfo) GetChannel_MAC() []byte { 926 if m != nil { 927 return m.Channel_MAC 928 } 929 return nil 930 } 931 932 // StateInfoSnapshot is an aggregation of StateInfo messages 933 type StateInfoSnapshot struct { 934 Elements []*Envelope `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"` 935 } 936 937 func (m *StateInfoSnapshot) Reset() { *m = StateInfoSnapshot{} } 938 func (m *StateInfoSnapshot) String() string { return proto.CompactTextString(m) } 939 func (*StateInfoSnapshot) ProtoMessage() {} 940 func (*StateInfoSnapshot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } 941 942 func (m *StateInfoSnapshot) GetElements() []*Envelope { 943 if m != nil { 944 return m.Elements 945 } 946 return nil 947 } 948 949 // StateInfoPullRequest is used to fetch a StateInfoSnapshot 950 // from a remote peer 951 type StateInfoPullRequest struct { 952 // channel_MAC is an authentication code that proves 953 // that the peer that sent this message knows 954 // the name of the channel. 955 Channel_MAC []byte `protobuf:"bytes,1,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"` 956 } 957 958 func (m *StateInfoPullRequest) Reset() { *m = StateInfoPullRequest{} } 959 func (m *StateInfoPullRequest) String() string { return proto.CompactTextString(m) } 960 func (*StateInfoPullRequest) ProtoMessage() {} 961 func (*StateInfoPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } 962 963 func (m *StateInfoPullRequest) GetChannel_MAC() []byte { 964 if m != nil { 965 return m.Channel_MAC 966 } 967 return nil 968 } 969 970 // ConnEstablish is the message used for the gossip handshake 971 // Whenever a peer connects to another peer, it handshakes 972 // with it by sending this message that proves its identity 973 type ConnEstablish struct { 974 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 975 Identity []byte `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` 976 TlsCertHash []byte `protobuf:"bytes,3,opt,name=tls_cert_hash,json=tlsCertHash,proto3" json:"tls_cert_hash,omitempty"` 977 } 978 979 func (m *ConnEstablish) Reset() { *m = ConnEstablish{} } 980 func (m *ConnEstablish) String() string { return proto.CompactTextString(m) } 981 func (*ConnEstablish) ProtoMessage() {} 982 func (*ConnEstablish) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } 983 984 func (m *ConnEstablish) GetPkiId() []byte { 985 if m != nil { 986 return m.PkiId 987 } 988 return nil 989 } 990 991 func (m *ConnEstablish) GetIdentity() []byte { 992 if m != nil { 993 return m.Identity 994 } 995 return nil 996 } 997 998 func (m *ConnEstablish) GetTlsCertHash() []byte { 999 if m != nil { 1000 return m.TlsCertHash 1001 } 1002 return nil 1003 } 1004 1005 // PeerIdentity defines the identity of the peer 1006 // Used to make other peers learn of the identity 1007 // of a certain peer 1008 type PeerIdentity struct { 1009 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1010 Cert []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"` 1011 Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` 1012 } 1013 1014 func (m *PeerIdentity) Reset() { *m = PeerIdentity{} } 1015 func (m *PeerIdentity) String() string { return proto.CompactTextString(m) } 1016 func (*PeerIdentity) ProtoMessage() {} 1017 func (*PeerIdentity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } 1018 1019 func (m *PeerIdentity) GetPkiId() []byte { 1020 if m != nil { 1021 return m.PkiId 1022 } 1023 return nil 1024 } 1025 1026 func (m *PeerIdentity) GetCert() []byte { 1027 if m != nil { 1028 return m.Cert 1029 } 1030 return nil 1031 } 1032 1033 func (m *PeerIdentity) GetMetadata() []byte { 1034 if m != nil { 1035 return m.Metadata 1036 } 1037 return nil 1038 } 1039 1040 // DataRequest is a message used for a peer to request 1041 // certain data blocks from a remote peer 1042 type DataRequest struct { 1043 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1044 Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` 1045 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1046 } 1047 1048 func (m *DataRequest) Reset() { *m = DataRequest{} } 1049 func (m *DataRequest) String() string { return proto.CompactTextString(m) } 1050 func (*DataRequest) ProtoMessage() {} 1051 func (*DataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } 1052 1053 func (m *DataRequest) GetNonce() uint64 { 1054 if m != nil { 1055 return m.Nonce 1056 } 1057 return 0 1058 } 1059 1060 func (m *DataRequest) GetDigests() []string { 1061 if m != nil { 1062 return m.Digests 1063 } 1064 return nil 1065 } 1066 1067 func (m *DataRequest) GetMsgType() PullMsgType { 1068 if m != nil { 1069 return m.MsgType 1070 } 1071 return PullMsgType_UNDEFINED 1072 } 1073 1074 // GossipHello is the message that is used for the peer to initiate 1075 // a pull round with another peer 1076 type GossipHello struct { 1077 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1078 Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 1079 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1080 } 1081 1082 func (m *GossipHello) Reset() { *m = GossipHello{} } 1083 func (m *GossipHello) String() string { return proto.CompactTextString(m) } 1084 func (*GossipHello) ProtoMessage() {} 1085 func (*GossipHello) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } 1086 1087 func (m *GossipHello) GetNonce() uint64 { 1088 if m != nil { 1089 return m.Nonce 1090 } 1091 return 0 1092 } 1093 1094 func (m *GossipHello) GetMetadata() []byte { 1095 if m != nil { 1096 return m.Metadata 1097 } 1098 return nil 1099 } 1100 1101 func (m *GossipHello) GetMsgType() PullMsgType { 1102 if m != nil { 1103 return m.MsgType 1104 } 1105 return PullMsgType_UNDEFINED 1106 } 1107 1108 // DataUpdate is the final message in the pull phase 1109 // sent from the receiver to the initiator 1110 type DataUpdate struct { 1111 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1112 Data []*Envelope `protobuf:"bytes,2,rep,name=data" json:"data,omitempty"` 1113 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1114 } 1115 1116 func (m *DataUpdate) Reset() { *m = DataUpdate{} } 1117 func (m *DataUpdate) String() string { return proto.CompactTextString(m) } 1118 func (*DataUpdate) ProtoMessage() {} 1119 func (*DataUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } 1120 1121 func (m *DataUpdate) GetNonce() uint64 { 1122 if m != nil { 1123 return m.Nonce 1124 } 1125 return 0 1126 } 1127 1128 func (m *DataUpdate) GetData() []*Envelope { 1129 if m != nil { 1130 return m.Data 1131 } 1132 return nil 1133 } 1134 1135 func (m *DataUpdate) GetMsgType() PullMsgType { 1136 if m != nil { 1137 return m.MsgType 1138 } 1139 return PullMsgType_UNDEFINED 1140 } 1141 1142 // DataDigest is the message sent from the receiver peer 1143 // to the initator peer and contains the data items it has 1144 type DataDigest struct { 1145 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1146 Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` 1147 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1148 } 1149 1150 func (m *DataDigest) Reset() { *m = DataDigest{} } 1151 func (m *DataDigest) String() string { return proto.CompactTextString(m) } 1152 func (*DataDigest) ProtoMessage() {} 1153 func (*DataDigest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } 1154 1155 func (m *DataDigest) GetNonce() uint64 { 1156 if m != nil { 1157 return m.Nonce 1158 } 1159 return 0 1160 } 1161 1162 func (m *DataDigest) GetDigests() []string { 1163 if m != nil { 1164 return m.Digests 1165 } 1166 return nil 1167 } 1168 1169 func (m *DataDigest) GetMsgType() PullMsgType { 1170 if m != nil { 1171 return m.MsgType 1172 } 1173 return PullMsgType_UNDEFINED 1174 } 1175 1176 // DataMessage is the message that contains a block 1177 type DataMessage struct { 1178 Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` 1179 } 1180 1181 func (m *DataMessage) Reset() { *m = DataMessage{} } 1182 func (m *DataMessage) String() string { return proto.CompactTextString(m) } 1183 func (*DataMessage) ProtoMessage() {} 1184 func (*DataMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } 1185 1186 func (m *DataMessage) GetPayload() *Payload { 1187 if m != nil { 1188 return m.Payload 1189 } 1190 return nil 1191 } 1192 1193 // Payload contains a block 1194 type Payload struct { 1195 SeqNum uint64 `protobuf:"varint,1,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` 1196 Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` 1197 } 1198 1199 func (m *Payload) Reset() { *m = Payload{} } 1200 func (m *Payload) String() string { return proto.CompactTextString(m) } 1201 func (*Payload) ProtoMessage() {} 1202 func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } 1203 1204 func (m *Payload) GetSeqNum() uint64 { 1205 if m != nil { 1206 return m.SeqNum 1207 } 1208 return 0 1209 } 1210 1211 func (m *Payload) GetData() []byte { 1212 if m != nil { 1213 return m.Data 1214 } 1215 return nil 1216 } 1217 1218 // AliveMessage is sent to inform remote peers 1219 // of a peer's existence and activity 1220 type AliveMessage struct { 1221 Membership *Member `protobuf:"bytes,1,opt,name=membership" json:"membership,omitempty"` 1222 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 1223 Identity []byte `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"` 1224 } 1225 1226 func (m *AliveMessage) Reset() { *m = AliveMessage{} } 1227 func (m *AliveMessage) String() string { return proto.CompactTextString(m) } 1228 func (*AliveMessage) ProtoMessage() {} 1229 func (*AliveMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } 1230 1231 func (m *AliveMessage) GetMembership() *Member { 1232 if m != nil { 1233 return m.Membership 1234 } 1235 return nil 1236 } 1237 1238 func (m *AliveMessage) GetTimestamp() *PeerTime { 1239 if m != nil { 1240 return m.Timestamp 1241 } 1242 return nil 1243 } 1244 1245 func (m *AliveMessage) GetIdentity() []byte { 1246 if m != nil { 1247 return m.Identity 1248 } 1249 return nil 1250 } 1251 1252 // Leadership Message is sent during leader election to inform 1253 // remote peers about intent of peer to proclaim itself as leader 1254 type LeadershipMessage struct { 1255 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1256 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 1257 IsDeclaration bool `protobuf:"varint,3,opt,name=is_declaration,json=isDeclaration" json:"is_declaration,omitempty"` 1258 } 1259 1260 func (m *LeadershipMessage) Reset() { *m = LeadershipMessage{} } 1261 func (m *LeadershipMessage) String() string { return proto.CompactTextString(m) } 1262 func (*LeadershipMessage) ProtoMessage() {} 1263 func (*LeadershipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } 1264 1265 func (m *LeadershipMessage) GetPkiId() []byte { 1266 if m != nil { 1267 return m.PkiId 1268 } 1269 return nil 1270 } 1271 1272 func (m *LeadershipMessage) GetTimestamp() *PeerTime { 1273 if m != nil { 1274 return m.Timestamp 1275 } 1276 return nil 1277 } 1278 1279 func (m *LeadershipMessage) GetIsDeclaration() bool { 1280 if m != nil { 1281 return m.IsDeclaration 1282 } 1283 return false 1284 } 1285 1286 // PeerTime defines the logical time of a peer's life 1287 type PeerTime struct { 1288 IncNum uint64 `protobuf:"varint,1,opt,name=inc_num,json=incNum" json:"inc_num,omitempty"` 1289 SeqNum uint64 `protobuf:"varint,2,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` 1290 } 1291 1292 func (m *PeerTime) Reset() { *m = PeerTime{} } 1293 func (m *PeerTime) String() string { return proto.CompactTextString(m) } 1294 func (*PeerTime) ProtoMessage() {} 1295 func (*PeerTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } 1296 1297 func (m *PeerTime) GetIncNum() uint64 { 1298 if m != nil { 1299 return m.IncNum 1300 } 1301 return 0 1302 } 1303 1304 func (m *PeerTime) GetSeqNum() uint64 { 1305 if m != nil { 1306 return m.SeqNum 1307 } 1308 return 0 1309 } 1310 1311 // MembershipRequest is used to ask membership information 1312 // from a remote peer 1313 type MembershipRequest struct { 1314 SelfInformation *Envelope `protobuf:"bytes,1,opt,name=self_information,json=selfInformation" json:"self_information,omitempty"` 1315 Known [][]byte `protobuf:"bytes,2,rep,name=known,proto3" json:"known,omitempty"` 1316 } 1317 1318 func (m *MembershipRequest) Reset() { *m = MembershipRequest{} } 1319 func (m *MembershipRequest) String() string { return proto.CompactTextString(m) } 1320 func (*MembershipRequest) ProtoMessage() {} 1321 func (*MembershipRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } 1322 1323 func (m *MembershipRequest) GetSelfInformation() *Envelope { 1324 if m != nil { 1325 return m.SelfInformation 1326 } 1327 return nil 1328 } 1329 1330 func (m *MembershipRequest) GetKnown() [][]byte { 1331 if m != nil { 1332 return m.Known 1333 } 1334 return nil 1335 } 1336 1337 // MembershipResponse is used for replying to MembershipRequests 1338 type MembershipResponse struct { 1339 Alive []*Envelope `protobuf:"bytes,1,rep,name=alive" json:"alive,omitempty"` 1340 Dead []*Envelope `protobuf:"bytes,2,rep,name=dead" json:"dead,omitempty"` 1341 } 1342 1343 func (m *MembershipResponse) Reset() { *m = MembershipResponse{} } 1344 func (m *MembershipResponse) String() string { return proto.CompactTextString(m) } 1345 func (*MembershipResponse) ProtoMessage() {} 1346 func (*MembershipResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } 1347 1348 func (m *MembershipResponse) GetAlive() []*Envelope { 1349 if m != nil { 1350 return m.Alive 1351 } 1352 return nil 1353 } 1354 1355 func (m *MembershipResponse) GetDead() []*Envelope { 1356 if m != nil { 1357 return m.Dead 1358 } 1359 return nil 1360 } 1361 1362 // Member holds membership-related information 1363 // about a peer 1364 type Member struct { 1365 Endpoint string `protobuf:"bytes,1,opt,name=endpoint" json:"endpoint,omitempty"` 1366 Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 1367 PkiId []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1368 } 1369 1370 func (m *Member) Reset() { *m = Member{} } 1371 func (m *Member) String() string { return proto.CompactTextString(m) } 1372 func (*Member) ProtoMessage() {} 1373 func (*Member) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } 1374 1375 func (m *Member) GetEndpoint() string { 1376 if m != nil { 1377 return m.Endpoint 1378 } 1379 return "" 1380 } 1381 1382 func (m *Member) GetMetadata() []byte { 1383 if m != nil { 1384 return m.Metadata 1385 } 1386 return nil 1387 } 1388 1389 func (m *Member) GetPkiId() []byte { 1390 if m != nil { 1391 return m.PkiId 1392 } 1393 return nil 1394 } 1395 1396 // Empty is used for pinging and in tests 1397 type Empty struct { 1398 } 1399 1400 func (m *Empty) Reset() { *m = Empty{} } 1401 func (m *Empty) String() string { return proto.CompactTextString(m) } 1402 func (*Empty) ProtoMessage() {} 1403 func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } 1404 1405 // RemoteStateRequest is used to ask a set of blocks 1406 // from a remote peer 1407 type RemoteStateRequest struct { 1408 StartSeqNum uint64 `protobuf:"varint,1,opt,name=start_seq_num,json=startSeqNum" json:"start_seq_num,omitempty"` 1409 EndSeqNum uint64 `protobuf:"varint,2,opt,name=end_seq_num,json=endSeqNum" json:"end_seq_num,omitempty"` 1410 } 1411 1412 func (m *RemoteStateRequest) Reset() { *m = RemoteStateRequest{} } 1413 func (m *RemoteStateRequest) String() string { return proto.CompactTextString(m) } 1414 func (*RemoteStateRequest) ProtoMessage() {} 1415 func (*RemoteStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } 1416 1417 func (m *RemoteStateRequest) GetStartSeqNum() uint64 { 1418 if m != nil { 1419 return m.StartSeqNum 1420 } 1421 return 0 1422 } 1423 1424 func (m *RemoteStateRequest) GetEndSeqNum() uint64 { 1425 if m != nil { 1426 return m.EndSeqNum 1427 } 1428 return 0 1429 } 1430 1431 // RemoteStateResponse is used to send a set of blocks 1432 // to a remote peer 1433 type RemoteStateResponse struct { 1434 Payloads []*Payload `protobuf:"bytes,1,rep,name=payloads" json:"payloads,omitempty"` 1435 } 1436 1437 func (m *RemoteStateResponse) Reset() { *m = RemoteStateResponse{} } 1438 func (m *RemoteStateResponse) String() string { return proto.CompactTextString(m) } 1439 func (*RemoteStateResponse) ProtoMessage() {} 1440 func (*RemoteStateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } 1441 1442 func (m *RemoteStateResponse) GetPayloads() []*Payload { 1443 if m != nil { 1444 return m.Payloads 1445 } 1446 return nil 1447 } 1448 1449 func init() { 1450 proto.RegisterType((*Envelope)(nil), "gossip.Envelope") 1451 proto.RegisterType((*SecretEnvelope)(nil), "gossip.SecretEnvelope") 1452 proto.RegisterType((*Secret)(nil), "gossip.Secret") 1453 proto.RegisterType((*GossipMessage)(nil), "gossip.GossipMessage") 1454 proto.RegisterType((*StateInfo)(nil), "gossip.StateInfo") 1455 proto.RegisterType((*StateInfoSnapshot)(nil), "gossip.StateInfoSnapshot") 1456 proto.RegisterType((*StateInfoPullRequest)(nil), "gossip.StateInfoPullRequest") 1457 proto.RegisterType((*ConnEstablish)(nil), "gossip.ConnEstablish") 1458 proto.RegisterType((*PeerIdentity)(nil), "gossip.PeerIdentity") 1459 proto.RegisterType((*DataRequest)(nil), "gossip.DataRequest") 1460 proto.RegisterType((*GossipHello)(nil), "gossip.GossipHello") 1461 proto.RegisterType((*DataUpdate)(nil), "gossip.DataUpdate") 1462 proto.RegisterType((*DataDigest)(nil), "gossip.DataDigest") 1463 proto.RegisterType((*DataMessage)(nil), "gossip.DataMessage") 1464 proto.RegisterType((*Payload)(nil), "gossip.Payload") 1465 proto.RegisterType((*AliveMessage)(nil), "gossip.AliveMessage") 1466 proto.RegisterType((*LeadershipMessage)(nil), "gossip.LeadershipMessage") 1467 proto.RegisterType((*PeerTime)(nil), "gossip.PeerTime") 1468 proto.RegisterType((*MembershipRequest)(nil), "gossip.MembershipRequest") 1469 proto.RegisterType((*MembershipResponse)(nil), "gossip.MembershipResponse") 1470 proto.RegisterType((*Member)(nil), "gossip.Member") 1471 proto.RegisterType((*Empty)(nil), "gossip.Empty") 1472 proto.RegisterType((*RemoteStateRequest)(nil), "gossip.RemoteStateRequest") 1473 proto.RegisterType((*RemoteStateResponse)(nil), "gossip.RemoteStateResponse") 1474 proto.RegisterEnum("gossip.PullMsgType", PullMsgType_name, PullMsgType_value) 1475 proto.RegisterEnum("gossip.GossipMessage_Tag", GossipMessage_Tag_name, GossipMessage_Tag_value) 1476 } 1477 1478 // Reference imports to suppress errors if they are not otherwise used. 1479 var _ context.Context 1480 var _ grpc.ClientConn 1481 1482 // This is a compile-time assertion to ensure that this generated file 1483 // is compatible with the grpc package it is being compiled against. 1484 const _ = grpc.SupportPackageIsVersion4 1485 1486 // Client API for Gossip service 1487 1488 type GossipClient interface { 1489 // GossipStream is the gRPC stream used for sending and receiving messages 1490 GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) 1491 // Ping is used to probe a remote peer's aliveness 1492 Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) 1493 } 1494 1495 type gossipClient struct { 1496 cc *grpc.ClientConn 1497 } 1498 1499 func NewGossipClient(cc *grpc.ClientConn) GossipClient { 1500 return &gossipClient{cc} 1501 } 1502 1503 func (c *gossipClient) GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) { 1504 stream, err := grpc.NewClientStream(ctx, &_Gossip_serviceDesc.Streams[0], c.cc, "/gossip.Gossip/GossipStream", opts...) 1505 if err != nil { 1506 return nil, err 1507 } 1508 x := &gossipGossipStreamClient{stream} 1509 return x, nil 1510 } 1511 1512 type Gossip_GossipStreamClient interface { 1513 Send(*Envelope) error 1514 Recv() (*Envelope, error) 1515 grpc.ClientStream 1516 } 1517 1518 type gossipGossipStreamClient struct { 1519 grpc.ClientStream 1520 } 1521 1522 func (x *gossipGossipStreamClient) Send(m *Envelope) error { 1523 return x.ClientStream.SendMsg(m) 1524 } 1525 1526 func (x *gossipGossipStreamClient) Recv() (*Envelope, error) { 1527 m := new(Envelope) 1528 if err := x.ClientStream.RecvMsg(m); err != nil { 1529 return nil, err 1530 } 1531 return m, nil 1532 } 1533 1534 func (c *gossipClient) Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { 1535 out := new(Empty) 1536 err := grpc.Invoke(ctx, "/gossip.Gossip/Ping", in, out, c.cc, opts...) 1537 if err != nil { 1538 return nil, err 1539 } 1540 return out, nil 1541 } 1542 1543 // Server API for Gossip service 1544 1545 type GossipServer interface { 1546 // GossipStream is the gRPC stream used for sending and receiving messages 1547 GossipStream(Gossip_GossipStreamServer) error 1548 // Ping is used to probe a remote peer's aliveness 1549 Ping(context.Context, *Empty) (*Empty, error) 1550 } 1551 1552 func RegisterGossipServer(s *grpc.Server, srv GossipServer) { 1553 s.RegisterService(&_Gossip_serviceDesc, srv) 1554 } 1555 1556 func _Gossip_GossipStream_Handler(srv interface{}, stream grpc.ServerStream) error { 1557 return srv.(GossipServer).GossipStream(&gossipGossipStreamServer{stream}) 1558 } 1559 1560 type Gossip_GossipStreamServer interface { 1561 Send(*Envelope) error 1562 Recv() (*Envelope, error) 1563 grpc.ServerStream 1564 } 1565 1566 type gossipGossipStreamServer struct { 1567 grpc.ServerStream 1568 } 1569 1570 func (x *gossipGossipStreamServer) Send(m *Envelope) error { 1571 return x.ServerStream.SendMsg(m) 1572 } 1573 1574 func (x *gossipGossipStreamServer) Recv() (*Envelope, error) { 1575 m := new(Envelope) 1576 if err := x.ServerStream.RecvMsg(m); err != nil { 1577 return nil, err 1578 } 1579 return m, nil 1580 } 1581 1582 func _Gossip_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 1583 in := new(Empty) 1584 if err := dec(in); err != nil { 1585 return nil, err 1586 } 1587 if interceptor == nil { 1588 return srv.(GossipServer).Ping(ctx, in) 1589 } 1590 info := &grpc.UnaryServerInfo{ 1591 Server: srv, 1592 FullMethod: "/gossip.Gossip/Ping", 1593 } 1594 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 1595 return srv.(GossipServer).Ping(ctx, req.(*Empty)) 1596 } 1597 return interceptor(ctx, in, info, handler) 1598 } 1599 1600 var _Gossip_serviceDesc = grpc.ServiceDesc{ 1601 ServiceName: "gossip.Gossip", 1602 HandlerType: (*GossipServer)(nil), 1603 Methods: []grpc.MethodDesc{ 1604 { 1605 MethodName: "Ping", 1606 Handler: _Gossip_Ping_Handler, 1607 }, 1608 }, 1609 Streams: []grpc.StreamDesc{ 1610 { 1611 StreamName: "GossipStream", 1612 Handler: _Gossip_GossipStream_Handler, 1613 ServerStreams: true, 1614 ClientStreams: true, 1615 }, 1616 }, 1617 Metadata: "gossip/message.proto", 1618 } 1619 1620 func init() { proto.RegisterFile("gossip/message.proto", fileDescriptor0) } 1621 1622 var fileDescriptor0 = []byte{ 1623 // 1366 bytes of a gzipped FileDescriptorProto 1624 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6f, 0xdc, 0x44, 1625 0x10, 0x3f, 0x27, 0xf7, 0x39, 0xf7, 0x91, 0xcb, 0x26, 0x05, 0x13, 0x2a, 0x88, 0x2c, 0x5a, 0x05, 1626 0x52, 0x2e, 0x55, 0xca, 0x47, 0xa5, 0x82, 0xd0, 0x25, 0x77, 0xe4, 0x22, 0x7a, 0x49, 0xe4, 0xa4, 1627 0x82, 0xf2, 0x62, 0x6d, 0xce, 0x13, 0x9f, 0xa9, 0xbd, 0x76, 0xbc, 0x7b, 0x85, 0x3c, 0x22, 0xde, 1628 0x78, 0xe1, 0x95, 0x3f, 0x17, 0x79, 0xd7, 0xf6, 0xd9, 0x75, 0x52, 0xa9, 0x95, 0x78, 0xf3, 0x7c, 1629 0xfc, 0x66, 0x66, 0x67, 0xe7, 0x63, 0x0d, 0x9b, 0x4e, 0xc0, 0xb9, 0x1b, 0xee, 0xf9, 0xc8, 0x39, 1630 0x75, 0x70, 0x10, 0x46, 0x81, 0x08, 0x48, 0x5d, 0x71, 0x8d, 0xbf, 0x34, 0x68, 0x8e, 0xd9, 0x6b, 1631 0xf4, 0x82, 0x10, 0x89, 0x0e, 0x8d, 0x90, 0xde, 0x78, 0x01, 0xb5, 0x75, 0x6d, 0x5b, 0xdb, 0xe9, 1632 0x98, 0x29, 0x49, 0xee, 0x43, 0x8b, 0xbb, 0x0e, 0xa3, 0x62, 0x11, 0xa1, 0xbe, 0x22, 0x65, 0x4b, 1633 0x06, 0xf9, 0x01, 0xd6, 0x38, 0xce, 0x22, 0x14, 0x16, 0x26, 0xa6, 0xf4, 0xd5, 0x6d, 0x6d, 0xa7, 1634 0xbd, 0xff, 0xc1, 0x40, 0xb9, 0x19, 0x9c, 0x4b, 0x71, 0xea, 0xc8, 0xec, 0xf1, 0x02, 0x6d, 0x4c, 1635 0xa0, 0x57, 0xd4, 0x78, 0xdf, 0x50, 0x8c, 0x21, 0xd4, 0x95, 0x25, 0xf2, 0x08, 0xfa, 0x2e, 0x13, 1636 0x18, 0x31, 0xea, 0x8d, 0x99, 0x1d, 0x06, 0x2e, 0x13, 0xd2, 0x54, 0x6b, 0x52, 0x31, 0x4b, 0x92, 1637 0x83, 0x16, 0x34, 0x66, 0x01, 0x13, 0xc8, 0x84, 0xf1, 0x6f, 0x0b, 0xba, 0x47, 0x32, 0xec, 0xa9, 1638 0x4a, 0x19, 0xd9, 0x84, 0x1a, 0x0b, 0xd8, 0x0c, 0x25, 0xbe, 0x6a, 0x2a, 0x22, 0x0e, 0x71, 0x36, 1639 0xa7, 0x8c, 0xa1, 0x97, 0x84, 0x91, 0x92, 0x64, 0x17, 0x56, 0x05, 0x75, 0x64, 0x0e, 0x7a, 0xfb, 1640 0x1f, 0xa5, 0x39, 0x28, 0xd8, 0x1c, 0x5c, 0x50, 0xc7, 0x8c, 0xb5, 0xc8, 0x13, 0x68, 0x51, 0xcf, 1641 0x7d, 0x8d, 0x96, 0xcf, 0x1d, 0xbd, 0x26, 0xd3, 0xb6, 0x99, 0x42, 0x86, 0xb1, 0x20, 0x41, 0x4c, 1642 0x2a, 0x66, 0x53, 0x2a, 0x4e, 0xb9, 0x43, 0xbe, 0x82, 0x86, 0x8f, 0xbe, 0x15, 0xe1, 0xb5, 0x5e, 1643 0x97, 0x90, 0xcc, 0xcb, 0x14, 0xfd, 0x4b, 0x8c, 0xf8, 0xdc, 0x0d, 0x4d, 0xbc, 0x5e, 0x20, 0x17, 1644 0x93, 0x8a, 0x59, 0xf7, 0xd1, 0x37, 0xf1, 0x9a, 0x7c, 0x9d, 0xa2, 0xb8, 0xde, 0x90, 0xa8, 0xad, 1645 0xdb, 0x50, 0x3c, 0x0c, 0x18, 0xc7, 0x0c, 0xc6, 0xc9, 0x63, 0x68, 0xda, 0x54, 0x50, 0x19, 0x60, 1646 0x53, 0xe2, 0x36, 0x52, 0xdc, 0x88, 0x0a, 0xba, 0x8c, 0xaf, 0x11, 0xab, 0xc5, 0xe1, 0xed, 0x42, 1647 0x6d, 0x8e, 0x9e, 0x17, 0xe8, 0xad, 0xa2, 0xba, 0x4a, 0xc1, 0x24, 0x16, 0x4d, 0x2a, 0xa6, 0xd2, 1648 0x21, 0x7b, 0x89, 0x79, 0xdb, 0x75, 0x74, 0x90, 0xfa, 0x24, 0x6f, 0x7e, 0xe4, 0x3a, 0xea, 0x14, 1649 0xd2, 0xfa, 0xc8, 0x75, 0xb2, 0x78, 0xe2, 0xd3, 0xb7, 0xcb, 0xf1, 0x2c, 0xcf, 0x2d, 0x11, 0xea, 1650 0xe0, 0x6d, 0x89, 0x58, 0x84, 0x36, 0x15, 0xa8, 0x77, 0xca, 0x5e, 0x5e, 0x48, 0xc9, 0xa4, 0x62, 1651 0x82, 0x9d, 0x51, 0xe4, 0x01, 0xd4, 0xd0, 0x0f, 0xc5, 0x8d, 0xde, 0x95, 0x80, 0x6e, 0x0a, 0x18, 1652 0xc7, 0xcc, 0xf8, 0x00, 0x52, 0x4a, 0x76, 0xa1, 0x3a, 0x0b, 0x18, 0xd3, 0x7b, 0x52, 0xeb, 0x5e, 1653 0xaa, 0x75, 0x18, 0x30, 0x36, 0xe6, 0x82, 0x5e, 0x7a, 0x2e, 0x9f, 0x4f, 0x2a, 0xa6, 0x54, 0x22, 1654 0xfb, 0x00, 0x5c, 0x50, 0x81, 0x96, 0xcb, 0xae, 0x02, 0x7d, 0x4d, 0x42, 0xd6, 0xb3, 0x36, 0x89, 1655 0x25, 0xc7, 0xec, 0x2a, 0xce, 0x4e, 0x8b, 0xa7, 0x04, 0x39, 0x80, 0x9e, 0xc2, 0x70, 0x46, 0x43, 1656 0x3e, 0x0f, 0x84, 0xde, 0x2f, 0x5e, 0x7a, 0x86, 0x3b, 0x4f, 0x14, 0x26, 0x15, 0xb3, 0x2b, 0x21, 1657 0x29, 0x83, 0x4c, 0x61, 0x63, 0xe9, 0xd7, 0x0a, 0x17, 0x9e, 0x27, 0xf3, 0xb7, 0x2e, 0x0d, 0xdd, 1658 0x2f, 0x19, 0x3a, 0x5b, 0x78, 0xde, 0x32, 0x91, 0x7d, 0xfe, 0x06, 0x9f, 0x0c, 0x41, 0xd9, 0x8f, 1659 0x8d, 0xc4, 0x4a, 0x3a, 0x29, 0x16, 0x94, 0x89, 0x7e, 0x20, 0x50, 0x9a, 0x5b, 0x9a, 0xe9, 0xf0, 1660 0x1c, 0x4d, 0x46, 0xe9, 0xa9, 0xa2, 0xa4, 0xe4, 0xf4, 0x0d, 0x69, 0xe3, 0xe3, 0x5b, 0x6d, 0x64, 1661 0x55, 0xd9, 0xe5, 0x79, 0x46, 0x9c, 0x1b, 0x0f, 0xa9, 0xad, 0x8a, 0x57, 0x96, 0xe8, 0x66, 0x31, 1662 0x37, 0xcf, 0x33, 0xe9, 0xb2, 0x50, 0xbb, 0x4b, 0x48, 0x5c, 0xae, 0xcf, 0xa0, 0x1b, 0x22, 0x46, 1663 0x96, 0x6b, 0x23, 0x13, 0xae, 0xb8, 0xd1, 0xef, 0x15, 0xdb, 0xf0, 0x0c, 0x31, 0x3a, 0x4e, 0x64, 1664 0xf1, 0x31, 0xc2, 0x1c, 0x6d, 0x58, 0xb0, 0x7a, 0x41, 0x1d, 0xd2, 0x85, 0xd6, 0x8b, 0x93, 0xd1, 1665 0xf8, 0xc7, 0xe3, 0x93, 0xf1, 0xa8, 0x5f, 0x21, 0x2d, 0xa8, 0x8d, 0xa7, 0x67, 0x17, 0x2f, 0xfb, 1666 0x1a, 0xe9, 0x40, 0xf3, 0xd4, 0x3c, 0xb2, 0x4e, 0x4f, 0x9e, 0xbf, 0xec, 0xaf, 0xc4, 0x7a, 0x87, 1667 0x93, 0xe1, 0x89, 0x22, 0x57, 0x49, 0x1f, 0x3a, 0x92, 0x1c, 0x9e, 0x8c, 0xac, 0x53, 0xf3, 0xa8, 1668 0x5f, 0x25, 0x6b, 0xd0, 0x56, 0x0a, 0xa6, 0x64, 0xd4, 0xf2, 0xa3, 0xe9, 0x1f, 0x0d, 0x5a, 0xd9, 1669 0x15, 0x91, 0x2d, 0x68, 0xfa, 0x28, 0x68, 0x5c, 0xb0, 0xc9, 0x90, 0xcc, 0x68, 0x32, 0x80, 0x96, 1670 0x70, 0x7d, 0xe4, 0x82, 0xfa, 0xa1, 0x1c, 0x4f, 0xed, 0xfd, 0x7e, 0xfe, 0x38, 0x17, 0xae, 0x8f, 1671 0xe6, 0x52, 0x85, 0xdc, 0x83, 0x7a, 0xf8, 0xca, 0xb5, 0x5c, 0x5b, 0x4e, 0xad, 0x8e, 0x59, 0x0b, 1672 0x5f, 0xb9, 0xc7, 0x36, 0xf9, 0x14, 0xda, 0xc9, 0x50, 0xb3, 0xa6, 0xc3, 0x43, 0xbd, 0x2a, 0x65, 1673 0x90, 0xb0, 0xa6, 0xc3, 0x43, 0x63, 0x08, 0xeb, 0xa5, 0xe2, 0x23, 0x8f, 0xa0, 0x89, 0x1e, 0xfa, 1674 0xc8, 0x04, 0xd7, 0xb5, 0xed, 0xd5, 0xbc, 0xef, 0x6c, 0x05, 0x64, 0x1a, 0xc6, 0xb7, 0xb0, 0x79, 1675 0x5b, 0xd9, 0xbd, 0xe9, 0x5b, 0x2b, 0xf9, 0xbe, 0x82, 0x6e, 0xa1, 0xc7, 0x72, 0x87, 0xd0, 0xf2, 1676 0x87, 0xd8, 0x82, 0x66, 0x76, 0xb3, 0x6a, 0x52, 0x67, 0x34, 0x31, 0xa0, 0x2b, 0x3c, 0x6e, 0xcd, 1677 0x30, 0x12, 0xd6, 0x9c, 0xf2, 0x79, 0x72, 0xfc, 0xb6, 0xf0, 0xf8, 0x21, 0x46, 0x62, 0x42, 0xf9, 1678 0xdc, 0x78, 0x01, 0x9d, 0x7c, 0x05, 0xdc, 0xe5, 0x86, 0x40, 0x35, 0x36, 0x93, 0xb8, 0x90, 0xdf, 1679 0x85, 0x2b, 0x5a, 0x2d, 0x5e, 0x91, 0xe1, 0x43, 0x3b, 0x37, 0xae, 0xee, 0x5e, 0x32, 0xb6, 0x1c, 1680 0x80, 0x5c, 0x5f, 0xd9, 0x5e, 0xdd, 0x69, 0x99, 0x29, 0x49, 0x06, 0xd0, 0xf4, 0xb9, 0x63, 0x89, 1681 0x9b, 0x64, 0xdb, 0xf6, 0x96, 0x53, 0x30, 0xce, 0xe2, 0x94, 0x3b, 0x17, 0x37, 0x21, 0x9a, 0x0d, 1682 0x5f, 0x7d, 0x18, 0x01, 0xb4, 0x73, 0xe3, 0xf7, 0x0e, 0x77, 0xf9, 0x78, 0x57, 0x4a, 0x25, 0xf5, 1683 0x6e, 0x0e, 0xff, 0x00, 0x58, 0x4e, 0xd6, 0x3b, 0xfc, 0x7d, 0x06, 0xd5, 0xc4, 0xd7, 0xed, 0x55, 1684 0x52, 0x7d, 0x2f, 0xcf, 0x9e, 0xf2, 0xac, 0x36, 0xc7, 0xff, 0x9e, 0xd8, 0xa7, 0xea, 0x1e, 0xd3, 1685 0xc7, 0xc2, 0xe7, 0xc5, 0x97, 0x4b, 0x7b, 0x7f, 0x2d, 0x43, 0x2b, 0x76, 0xf6, 0x94, 0x31, 0xbe, 1686 0x81, 0x46, 0xc2, 0x23, 0x1f, 0x42, 0x83, 0xe3, 0xb5, 0xc5, 0x16, 0x7e, 0x12, 0x66, 0x9d, 0xe3, 1687 0xf5, 0xc9, 0xc2, 0x8f, 0xab, 0x2a, 0x77, 0x1b, 0xf2, 0xdb, 0xf8, 0x5b, 0x83, 0x4e, 0xfe, 0x69, 1688 0x40, 0x06, 0x00, 0x7e, 0xb6, 0xc1, 0x13, 0xb7, 0xbd, 0xe2, 0x6e, 0x37, 0x73, 0x1a, 0xef, 0x3c, 1689 0x1d, 0xf2, 0x1d, 0x54, 0x2d, 0x76, 0x90, 0xf1, 0xa7, 0x06, 0xeb, 0xa5, 0x19, 0x7b, 0x57, 0x8f, 1690 0xbc, 0xab, 0xe3, 0x07, 0xd0, 0x73, 0xb9, 0x65, 0xe3, 0xcc, 0xa3, 0x11, 0x15, 0x6e, 0xc0, 0xe4, 1691 0x8d, 0x34, 0xcd, 0xae, 0xcb, 0x47, 0x4b, 0xa6, 0xf1, 0x1d, 0x34, 0x53, 0x74, 0x9c, 0x49, 0x97, 1692 0xcd, 0xf2, 0x99, 0x74, 0xd9, 0x2c, 0xce, 0x64, 0x2e, 0xc5, 0x2b, 0xf9, 0x14, 0x1b, 0x57, 0xb0, 1693 0x5e, 0x7a, 0x35, 0x91, 0x67, 0xd0, 0xe7, 0xe8, 0x5d, 0xc9, 0x75, 0x19, 0xf9, 0xca, 0xb7, 0x56, 1694 0x0c, 0x38, 0xab, 0xd2, 0xb5, 0x58, 0xf3, 0x78, 0xa9, 0x18, 0x97, 0xdc, 0x2b, 0x16, 0xfc, 0xce, 1695 0x64, 0x69, 0x75, 0x4c, 0x45, 0x18, 0x97, 0x40, 0xca, 0xef, 0x2c, 0xf2, 0x10, 0x6a, 0xf2, 0x59, 1696 0x77, 0xe7, 0xa4, 0x54, 0x62, 0xd9, 0x2a, 0x48, 0xed, 0xb7, 0xb4, 0x0a, 0x52, 0xdb, 0xf8, 0x19, 1697 0xea, 0xca, 0x47, 0x7c, 0x67, 0x58, 0x78, 0xf7, 0x9a, 0x19, 0xfd, 0xd6, 0x36, 0xbf, 0x7d, 0x13, 1698 0x18, 0x0d, 0xa8, 0xc9, 0x67, 0x8f, 0xf1, 0x0b, 0x90, 0xf2, 0x72, 0x8f, 0xe7, 0x28, 0x17, 0x34, 1699 0x12, 0x56, 0xb1, 0x8a, 0xdb, 0x92, 0x79, 0xae, 0x4a, 0xf9, 0x13, 0x68, 0x23, 0xb3, 0xad, 0xe2, 1700 0x25, 0xb4, 0x90, 0xd9, 0x4a, 0x6e, 0x1c, 0xc0, 0xc6, 0x2d, 0x2b, 0x9f, 0xec, 0x42, 0x33, 0x69, 1701 0x98, 0x74, 0x9b, 0x94, 0x3a, 0x2a, 0x53, 0xf8, 0xe2, 0x7b, 0x68, 0xe7, 0x9a, 0xf4, 0xcd, 0xad, 1702 0xdc, 0x85, 0xd6, 0xc1, 0xf3, 0xd3, 0xc3, 0x9f, 0xac, 0xe9, 0xf9, 0x51, 0x5f, 0x8b, 0x97, 0xef, 1703 0xf1, 0x68, 0x7c, 0x72, 0x71, 0x7c, 0xf1, 0x52, 0x72, 0x56, 0xf6, 0x7f, 0x83, 0xba, 0x1a, 0x92, 1704 0xe4, 0x29, 0x74, 0xd4, 0xd7, 0xb9, 0x88, 0x90, 0xfa, 0xa4, 0x94, 0xf0, 0xad, 0x12, 0xc7, 0xa8, 1705 0xec, 0x68, 0x8f, 0x35, 0xf2, 0x10, 0xaa, 0x67, 0x2e, 0x73, 0x48, 0xf1, 0xb9, 0xb8, 0x55, 0x24, 1706 0x8d, 0xca, 0xc1, 0x97, 0xbf, 0xee, 0x3a, 0xae, 0x98, 0x2f, 0x2e, 0x07, 0xb3, 0xc0, 0xdf, 0x9b, 1707 0xdf, 0x84, 0x18, 0x79, 0x68, 0x3b, 0x18, 0xed, 0x5d, 0xd1, 0xcb, 0xc8, 0x9d, 0xed, 0xc9, 0x3f, 1708 0x35, 0xbe, 0xa7, 0x60, 0x97, 0x75, 0x49, 0x3e, 0xf9, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x74, 0x25, 1709 0x05, 0xf1, 0xd0, 0x0d, 0x00, 0x00, 1710 }