github.com/tenywen/fabric@v1.0.0-beta.0.20170620030522-a5b1ed380643/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 // The channel name that this message relates to 897 // can only be computed by a peer that has joined 898 // the channel 899 Channel_MAC []byte `protobuf:"bytes,4,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"` 900 } 901 902 func (m *StateInfo) Reset() { *m = StateInfo{} } 903 func (m *StateInfo) String() string { return proto.CompactTextString(m) } 904 func (*StateInfo) ProtoMessage() {} 905 func (*StateInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } 906 907 func (m *StateInfo) GetMetadata() []byte { 908 if m != nil { 909 return m.Metadata 910 } 911 return nil 912 } 913 914 func (m *StateInfo) GetTimestamp() *PeerTime { 915 if m != nil { 916 return m.Timestamp 917 } 918 return nil 919 } 920 921 func (m *StateInfo) GetPkiId() []byte { 922 if m != nil { 923 return m.PkiId 924 } 925 return nil 926 } 927 928 func (m *StateInfo) GetChannel_MAC() []byte { 929 if m != nil { 930 return m.Channel_MAC 931 } 932 return nil 933 } 934 935 // StateInfoSnapshot is an aggregation of StateInfo messages 936 type StateInfoSnapshot struct { 937 Elements []*Envelope `protobuf:"bytes,1,rep,name=elements" json:"elements,omitempty"` 938 } 939 940 func (m *StateInfoSnapshot) Reset() { *m = StateInfoSnapshot{} } 941 func (m *StateInfoSnapshot) String() string { return proto.CompactTextString(m) } 942 func (*StateInfoSnapshot) ProtoMessage() {} 943 func (*StateInfoSnapshot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } 944 945 func (m *StateInfoSnapshot) GetElements() []*Envelope { 946 if m != nil { 947 return m.Elements 948 } 949 return nil 950 } 951 952 // StateInfoPullRequest is used to fetch a StateInfoSnapshot 953 // from a remote peer 954 type StateInfoPullRequest struct { 955 // channel_MAC is an authentication code that proves 956 // that the peer that sent this message knows 957 // the name of the channel. 958 // The channel name that this message relates to 959 // can only be computed by a peer that has joined 960 // the channel 961 Channel_MAC []byte `protobuf:"bytes,1,opt,name=channel_MAC,json=channelMAC,proto3" json:"channel_MAC,omitempty"` 962 } 963 964 func (m *StateInfoPullRequest) Reset() { *m = StateInfoPullRequest{} } 965 func (m *StateInfoPullRequest) String() string { return proto.CompactTextString(m) } 966 func (*StateInfoPullRequest) ProtoMessage() {} 967 func (*StateInfoPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } 968 969 func (m *StateInfoPullRequest) GetChannel_MAC() []byte { 970 if m != nil { 971 return m.Channel_MAC 972 } 973 return nil 974 } 975 976 // ConnEstablish is the message used for the gossip handshake 977 // Whenever a peer connects to another peer, it handshakes 978 // with it by sending this message that proves its identity 979 type ConnEstablish struct { 980 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 981 Identity []byte `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` 982 TlsCertHash []byte `protobuf:"bytes,3,opt,name=tls_cert_hash,json=tlsCertHash,proto3" json:"tls_cert_hash,omitempty"` 983 } 984 985 func (m *ConnEstablish) Reset() { *m = ConnEstablish{} } 986 func (m *ConnEstablish) String() string { return proto.CompactTextString(m) } 987 func (*ConnEstablish) ProtoMessage() {} 988 func (*ConnEstablish) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } 989 990 func (m *ConnEstablish) GetPkiId() []byte { 991 if m != nil { 992 return m.PkiId 993 } 994 return nil 995 } 996 997 func (m *ConnEstablish) GetIdentity() []byte { 998 if m != nil { 999 return m.Identity 1000 } 1001 return nil 1002 } 1003 1004 func (m *ConnEstablish) GetTlsCertHash() []byte { 1005 if m != nil { 1006 return m.TlsCertHash 1007 } 1008 return nil 1009 } 1010 1011 // PeerIdentity defines the identity of the peer 1012 // Used to make other peers learn of the identity 1013 // of a certain peer 1014 type PeerIdentity struct { 1015 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1016 Cert []byte `protobuf:"bytes,2,opt,name=cert,proto3" json:"cert,omitempty"` 1017 Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` 1018 } 1019 1020 func (m *PeerIdentity) Reset() { *m = PeerIdentity{} } 1021 func (m *PeerIdentity) String() string { return proto.CompactTextString(m) } 1022 func (*PeerIdentity) ProtoMessage() {} 1023 func (*PeerIdentity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } 1024 1025 func (m *PeerIdentity) GetPkiId() []byte { 1026 if m != nil { 1027 return m.PkiId 1028 } 1029 return nil 1030 } 1031 1032 func (m *PeerIdentity) GetCert() []byte { 1033 if m != nil { 1034 return m.Cert 1035 } 1036 return nil 1037 } 1038 1039 func (m *PeerIdentity) GetMetadata() []byte { 1040 if m != nil { 1041 return m.Metadata 1042 } 1043 return nil 1044 } 1045 1046 // DataRequest is a message used for a peer to request 1047 // certain data blocks from a remote peer 1048 type DataRequest struct { 1049 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1050 Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` 1051 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1052 } 1053 1054 func (m *DataRequest) Reset() { *m = DataRequest{} } 1055 func (m *DataRequest) String() string { return proto.CompactTextString(m) } 1056 func (*DataRequest) ProtoMessage() {} 1057 func (*DataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } 1058 1059 func (m *DataRequest) GetNonce() uint64 { 1060 if m != nil { 1061 return m.Nonce 1062 } 1063 return 0 1064 } 1065 1066 func (m *DataRequest) GetDigests() []string { 1067 if m != nil { 1068 return m.Digests 1069 } 1070 return nil 1071 } 1072 1073 func (m *DataRequest) GetMsgType() PullMsgType { 1074 if m != nil { 1075 return m.MsgType 1076 } 1077 return PullMsgType_UNDEFINED 1078 } 1079 1080 // GossipHello is the message that is used for the peer to initiate 1081 // a pull round with another peer 1082 type GossipHello struct { 1083 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1084 Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 1085 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1086 } 1087 1088 func (m *GossipHello) Reset() { *m = GossipHello{} } 1089 func (m *GossipHello) String() string { return proto.CompactTextString(m) } 1090 func (*GossipHello) ProtoMessage() {} 1091 func (*GossipHello) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } 1092 1093 func (m *GossipHello) GetNonce() uint64 { 1094 if m != nil { 1095 return m.Nonce 1096 } 1097 return 0 1098 } 1099 1100 func (m *GossipHello) GetMetadata() []byte { 1101 if m != nil { 1102 return m.Metadata 1103 } 1104 return nil 1105 } 1106 1107 func (m *GossipHello) GetMsgType() PullMsgType { 1108 if m != nil { 1109 return m.MsgType 1110 } 1111 return PullMsgType_UNDEFINED 1112 } 1113 1114 // DataUpdate is the final message in the pull phase 1115 // sent from the receiver to the initiator 1116 type DataUpdate struct { 1117 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1118 Data []*Envelope `protobuf:"bytes,2,rep,name=data" json:"data,omitempty"` 1119 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1120 } 1121 1122 func (m *DataUpdate) Reset() { *m = DataUpdate{} } 1123 func (m *DataUpdate) String() string { return proto.CompactTextString(m) } 1124 func (*DataUpdate) ProtoMessage() {} 1125 func (*DataUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } 1126 1127 func (m *DataUpdate) GetNonce() uint64 { 1128 if m != nil { 1129 return m.Nonce 1130 } 1131 return 0 1132 } 1133 1134 func (m *DataUpdate) GetData() []*Envelope { 1135 if m != nil { 1136 return m.Data 1137 } 1138 return nil 1139 } 1140 1141 func (m *DataUpdate) GetMsgType() PullMsgType { 1142 if m != nil { 1143 return m.MsgType 1144 } 1145 return PullMsgType_UNDEFINED 1146 } 1147 1148 // DataDigest is the message sent from the receiver peer 1149 // to the initator peer and contains the data items it has 1150 type DataDigest struct { 1151 Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` 1152 Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` 1153 MsgType PullMsgType `protobuf:"varint,3,opt,name=msg_type,json=msgType,enum=gossip.PullMsgType" json:"msg_type,omitempty"` 1154 } 1155 1156 func (m *DataDigest) Reset() { *m = DataDigest{} } 1157 func (m *DataDigest) String() string { return proto.CompactTextString(m) } 1158 func (*DataDigest) ProtoMessage() {} 1159 func (*DataDigest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } 1160 1161 func (m *DataDigest) GetNonce() uint64 { 1162 if m != nil { 1163 return m.Nonce 1164 } 1165 return 0 1166 } 1167 1168 func (m *DataDigest) GetDigests() []string { 1169 if m != nil { 1170 return m.Digests 1171 } 1172 return nil 1173 } 1174 1175 func (m *DataDigest) GetMsgType() PullMsgType { 1176 if m != nil { 1177 return m.MsgType 1178 } 1179 return PullMsgType_UNDEFINED 1180 } 1181 1182 // DataMessage is the message that contains a block 1183 type DataMessage struct { 1184 Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` 1185 } 1186 1187 func (m *DataMessage) Reset() { *m = DataMessage{} } 1188 func (m *DataMessage) String() string { return proto.CompactTextString(m) } 1189 func (*DataMessage) ProtoMessage() {} 1190 func (*DataMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } 1191 1192 func (m *DataMessage) GetPayload() *Payload { 1193 if m != nil { 1194 return m.Payload 1195 } 1196 return nil 1197 } 1198 1199 // Payload contains a block 1200 type Payload struct { 1201 SeqNum uint64 `protobuf:"varint,1,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` 1202 Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` 1203 } 1204 1205 func (m *Payload) Reset() { *m = Payload{} } 1206 func (m *Payload) String() string { return proto.CompactTextString(m) } 1207 func (*Payload) ProtoMessage() {} 1208 func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } 1209 1210 func (m *Payload) GetSeqNum() uint64 { 1211 if m != nil { 1212 return m.SeqNum 1213 } 1214 return 0 1215 } 1216 1217 func (m *Payload) GetData() []byte { 1218 if m != nil { 1219 return m.Data 1220 } 1221 return nil 1222 } 1223 1224 // AliveMessage is sent to inform remote peers 1225 // of a peer's existence and activity 1226 type AliveMessage struct { 1227 Membership *Member `protobuf:"bytes,1,opt,name=membership" json:"membership,omitempty"` 1228 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 1229 Identity []byte `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"` 1230 } 1231 1232 func (m *AliveMessage) Reset() { *m = AliveMessage{} } 1233 func (m *AliveMessage) String() string { return proto.CompactTextString(m) } 1234 func (*AliveMessage) ProtoMessage() {} 1235 func (*AliveMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } 1236 1237 func (m *AliveMessage) GetMembership() *Member { 1238 if m != nil { 1239 return m.Membership 1240 } 1241 return nil 1242 } 1243 1244 func (m *AliveMessage) GetTimestamp() *PeerTime { 1245 if m != nil { 1246 return m.Timestamp 1247 } 1248 return nil 1249 } 1250 1251 func (m *AliveMessage) GetIdentity() []byte { 1252 if m != nil { 1253 return m.Identity 1254 } 1255 return nil 1256 } 1257 1258 // Leadership Message is sent during leader election to inform 1259 // remote peers about intent of peer to proclaim itself as leader 1260 type LeadershipMessage struct { 1261 PkiId []byte `protobuf:"bytes,1,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1262 Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` 1263 IsDeclaration bool `protobuf:"varint,3,opt,name=is_declaration,json=isDeclaration" json:"is_declaration,omitempty"` 1264 } 1265 1266 func (m *LeadershipMessage) Reset() { *m = LeadershipMessage{} } 1267 func (m *LeadershipMessage) String() string { return proto.CompactTextString(m) } 1268 func (*LeadershipMessage) ProtoMessage() {} 1269 func (*LeadershipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } 1270 1271 func (m *LeadershipMessage) GetPkiId() []byte { 1272 if m != nil { 1273 return m.PkiId 1274 } 1275 return nil 1276 } 1277 1278 func (m *LeadershipMessage) GetTimestamp() *PeerTime { 1279 if m != nil { 1280 return m.Timestamp 1281 } 1282 return nil 1283 } 1284 1285 func (m *LeadershipMessage) GetIsDeclaration() bool { 1286 if m != nil { 1287 return m.IsDeclaration 1288 } 1289 return false 1290 } 1291 1292 // PeerTime defines the logical time of a peer's life 1293 type PeerTime struct { 1294 IncNum uint64 `protobuf:"varint,1,opt,name=inc_num,json=incNum" json:"inc_num,omitempty"` 1295 SeqNum uint64 `protobuf:"varint,2,opt,name=seq_num,json=seqNum" json:"seq_num,omitempty"` 1296 } 1297 1298 func (m *PeerTime) Reset() { *m = PeerTime{} } 1299 func (m *PeerTime) String() string { return proto.CompactTextString(m) } 1300 func (*PeerTime) ProtoMessage() {} 1301 func (*PeerTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } 1302 1303 func (m *PeerTime) GetIncNum() uint64 { 1304 if m != nil { 1305 return m.IncNum 1306 } 1307 return 0 1308 } 1309 1310 func (m *PeerTime) GetSeqNum() uint64 { 1311 if m != nil { 1312 return m.SeqNum 1313 } 1314 return 0 1315 } 1316 1317 // MembershipRequest is used to ask membership information 1318 // from a remote peer 1319 type MembershipRequest struct { 1320 SelfInformation *Envelope `protobuf:"bytes,1,opt,name=self_information,json=selfInformation" json:"self_information,omitempty"` 1321 Known [][]byte `protobuf:"bytes,2,rep,name=known,proto3" json:"known,omitempty"` 1322 } 1323 1324 func (m *MembershipRequest) Reset() { *m = MembershipRequest{} } 1325 func (m *MembershipRequest) String() string { return proto.CompactTextString(m) } 1326 func (*MembershipRequest) ProtoMessage() {} 1327 func (*MembershipRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } 1328 1329 func (m *MembershipRequest) GetSelfInformation() *Envelope { 1330 if m != nil { 1331 return m.SelfInformation 1332 } 1333 return nil 1334 } 1335 1336 func (m *MembershipRequest) GetKnown() [][]byte { 1337 if m != nil { 1338 return m.Known 1339 } 1340 return nil 1341 } 1342 1343 // MembershipResponse is used for replying to MembershipRequests 1344 type MembershipResponse struct { 1345 Alive []*Envelope `protobuf:"bytes,1,rep,name=alive" json:"alive,omitempty"` 1346 Dead []*Envelope `protobuf:"bytes,2,rep,name=dead" json:"dead,omitempty"` 1347 } 1348 1349 func (m *MembershipResponse) Reset() { *m = MembershipResponse{} } 1350 func (m *MembershipResponse) String() string { return proto.CompactTextString(m) } 1351 func (*MembershipResponse) ProtoMessage() {} 1352 func (*MembershipResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } 1353 1354 func (m *MembershipResponse) GetAlive() []*Envelope { 1355 if m != nil { 1356 return m.Alive 1357 } 1358 return nil 1359 } 1360 1361 func (m *MembershipResponse) GetDead() []*Envelope { 1362 if m != nil { 1363 return m.Dead 1364 } 1365 return nil 1366 } 1367 1368 // Member holds membership-related information 1369 // about a peer 1370 type Member struct { 1371 Endpoint string `protobuf:"bytes,1,opt,name=endpoint" json:"endpoint,omitempty"` 1372 Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 1373 PkiId []byte `protobuf:"bytes,3,opt,name=pki_id,json=pkiId,proto3" json:"pki_id,omitempty"` 1374 } 1375 1376 func (m *Member) Reset() { *m = Member{} } 1377 func (m *Member) String() string { return proto.CompactTextString(m) } 1378 func (*Member) ProtoMessage() {} 1379 func (*Member) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } 1380 1381 func (m *Member) GetEndpoint() string { 1382 if m != nil { 1383 return m.Endpoint 1384 } 1385 return "" 1386 } 1387 1388 func (m *Member) GetMetadata() []byte { 1389 if m != nil { 1390 return m.Metadata 1391 } 1392 return nil 1393 } 1394 1395 func (m *Member) GetPkiId() []byte { 1396 if m != nil { 1397 return m.PkiId 1398 } 1399 return nil 1400 } 1401 1402 // Empty is used for pinging and in tests 1403 type Empty struct { 1404 } 1405 1406 func (m *Empty) Reset() { *m = Empty{} } 1407 func (m *Empty) String() string { return proto.CompactTextString(m) } 1408 func (*Empty) ProtoMessage() {} 1409 func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } 1410 1411 // RemoteStateRequest is used to ask a set of blocks 1412 // from a remote peer 1413 type RemoteStateRequest struct { 1414 StartSeqNum uint64 `protobuf:"varint,1,opt,name=start_seq_num,json=startSeqNum" json:"start_seq_num,omitempty"` 1415 EndSeqNum uint64 `protobuf:"varint,2,opt,name=end_seq_num,json=endSeqNum" json:"end_seq_num,omitempty"` 1416 } 1417 1418 func (m *RemoteStateRequest) Reset() { *m = RemoteStateRequest{} } 1419 func (m *RemoteStateRequest) String() string { return proto.CompactTextString(m) } 1420 func (*RemoteStateRequest) ProtoMessage() {} 1421 func (*RemoteStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } 1422 1423 func (m *RemoteStateRequest) GetStartSeqNum() uint64 { 1424 if m != nil { 1425 return m.StartSeqNum 1426 } 1427 return 0 1428 } 1429 1430 func (m *RemoteStateRequest) GetEndSeqNum() uint64 { 1431 if m != nil { 1432 return m.EndSeqNum 1433 } 1434 return 0 1435 } 1436 1437 // RemoteStateResponse is used to send a set of blocks 1438 // to a remote peer 1439 type RemoteStateResponse struct { 1440 Payloads []*Payload `protobuf:"bytes,1,rep,name=payloads" json:"payloads,omitempty"` 1441 } 1442 1443 func (m *RemoteStateResponse) Reset() { *m = RemoteStateResponse{} } 1444 func (m *RemoteStateResponse) String() string { return proto.CompactTextString(m) } 1445 func (*RemoteStateResponse) ProtoMessage() {} 1446 func (*RemoteStateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } 1447 1448 func (m *RemoteStateResponse) GetPayloads() []*Payload { 1449 if m != nil { 1450 return m.Payloads 1451 } 1452 return nil 1453 } 1454 1455 func init() { 1456 proto.RegisterType((*Envelope)(nil), "gossip.Envelope") 1457 proto.RegisterType((*SecretEnvelope)(nil), "gossip.SecretEnvelope") 1458 proto.RegisterType((*Secret)(nil), "gossip.Secret") 1459 proto.RegisterType((*GossipMessage)(nil), "gossip.GossipMessage") 1460 proto.RegisterType((*StateInfo)(nil), "gossip.StateInfo") 1461 proto.RegisterType((*StateInfoSnapshot)(nil), "gossip.StateInfoSnapshot") 1462 proto.RegisterType((*StateInfoPullRequest)(nil), "gossip.StateInfoPullRequest") 1463 proto.RegisterType((*ConnEstablish)(nil), "gossip.ConnEstablish") 1464 proto.RegisterType((*PeerIdentity)(nil), "gossip.PeerIdentity") 1465 proto.RegisterType((*DataRequest)(nil), "gossip.DataRequest") 1466 proto.RegisterType((*GossipHello)(nil), "gossip.GossipHello") 1467 proto.RegisterType((*DataUpdate)(nil), "gossip.DataUpdate") 1468 proto.RegisterType((*DataDigest)(nil), "gossip.DataDigest") 1469 proto.RegisterType((*DataMessage)(nil), "gossip.DataMessage") 1470 proto.RegisterType((*Payload)(nil), "gossip.Payload") 1471 proto.RegisterType((*AliveMessage)(nil), "gossip.AliveMessage") 1472 proto.RegisterType((*LeadershipMessage)(nil), "gossip.LeadershipMessage") 1473 proto.RegisterType((*PeerTime)(nil), "gossip.PeerTime") 1474 proto.RegisterType((*MembershipRequest)(nil), "gossip.MembershipRequest") 1475 proto.RegisterType((*MembershipResponse)(nil), "gossip.MembershipResponse") 1476 proto.RegisterType((*Member)(nil), "gossip.Member") 1477 proto.RegisterType((*Empty)(nil), "gossip.Empty") 1478 proto.RegisterType((*RemoteStateRequest)(nil), "gossip.RemoteStateRequest") 1479 proto.RegisterType((*RemoteStateResponse)(nil), "gossip.RemoteStateResponse") 1480 proto.RegisterEnum("gossip.PullMsgType", PullMsgType_name, PullMsgType_value) 1481 proto.RegisterEnum("gossip.GossipMessage_Tag", GossipMessage_Tag_name, GossipMessage_Tag_value) 1482 } 1483 1484 // Reference imports to suppress errors if they are not otherwise used. 1485 var _ context.Context 1486 var _ grpc.ClientConn 1487 1488 // This is a compile-time assertion to ensure that this generated file 1489 // is compatible with the grpc package it is being compiled against. 1490 const _ = grpc.SupportPackageIsVersion4 1491 1492 // Client API for Gossip service 1493 1494 type GossipClient interface { 1495 // GossipStream is the gRPC stream used for sending and receiving messages 1496 GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) 1497 // Ping is used to probe a remote peer's aliveness 1498 Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) 1499 } 1500 1501 type gossipClient struct { 1502 cc *grpc.ClientConn 1503 } 1504 1505 func NewGossipClient(cc *grpc.ClientConn) GossipClient { 1506 return &gossipClient{cc} 1507 } 1508 1509 func (c *gossipClient) GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) { 1510 stream, err := grpc.NewClientStream(ctx, &_Gossip_serviceDesc.Streams[0], c.cc, "/gossip.Gossip/GossipStream", opts...) 1511 if err != nil { 1512 return nil, err 1513 } 1514 x := &gossipGossipStreamClient{stream} 1515 return x, nil 1516 } 1517 1518 type Gossip_GossipStreamClient interface { 1519 Send(*Envelope) error 1520 Recv() (*Envelope, error) 1521 grpc.ClientStream 1522 } 1523 1524 type gossipGossipStreamClient struct { 1525 grpc.ClientStream 1526 } 1527 1528 func (x *gossipGossipStreamClient) Send(m *Envelope) error { 1529 return x.ClientStream.SendMsg(m) 1530 } 1531 1532 func (x *gossipGossipStreamClient) Recv() (*Envelope, error) { 1533 m := new(Envelope) 1534 if err := x.ClientStream.RecvMsg(m); err != nil { 1535 return nil, err 1536 } 1537 return m, nil 1538 } 1539 1540 func (c *gossipClient) Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { 1541 out := new(Empty) 1542 err := grpc.Invoke(ctx, "/gossip.Gossip/Ping", in, out, c.cc, opts...) 1543 if err != nil { 1544 return nil, err 1545 } 1546 return out, nil 1547 } 1548 1549 // Server API for Gossip service 1550 1551 type GossipServer interface { 1552 // GossipStream is the gRPC stream used for sending and receiving messages 1553 GossipStream(Gossip_GossipStreamServer) error 1554 // Ping is used to probe a remote peer's aliveness 1555 Ping(context.Context, *Empty) (*Empty, error) 1556 } 1557 1558 func RegisterGossipServer(s *grpc.Server, srv GossipServer) { 1559 s.RegisterService(&_Gossip_serviceDesc, srv) 1560 } 1561 1562 func _Gossip_GossipStream_Handler(srv interface{}, stream grpc.ServerStream) error { 1563 return srv.(GossipServer).GossipStream(&gossipGossipStreamServer{stream}) 1564 } 1565 1566 type Gossip_GossipStreamServer interface { 1567 Send(*Envelope) error 1568 Recv() (*Envelope, error) 1569 grpc.ServerStream 1570 } 1571 1572 type gossipGossipStreamServer struct { 1573 grpc.ServerStream 1574 } 1575 1576 func (x *gossipGossipStreamServer) Send(m *Envelope) error { 1577 return x.ServerStream.SendMsg(m) 1578 } 1579 1580 func (x *gossipGossipStreamServer) Recv() (*Envelope, error) { 1581 m := new(Envelope) 1582 if err := x.ServerStream.RecvMsg(m); err != nil { 1583 return nil, err 1584 } 1585 return m, nil 1586 } 1587 1588 func _Gossip_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 1589 in := new(Empty) 1590 if err := dec(in); err != nil { 1591 return nil, err 1592 } 1593 if interceptor == nil { 1594 return srv.(GossipServer).Ping(ctx, in) 1595 } 1596 info := &grpc.UnaryServerInfo{ 1597 Server: srv, 1598 FullMethod: "/gossip.Gossip/Ping", 1599 } 1600 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 1601 return srv.(GossipServer).Ping(ctx, req.(*Empty)) 1602 } 1603 return interceptor(ctx, in, info, handler) 1604 } 1605 1606 var _Gossip_serviceDesc = grpc.ServiceDesc{ 1607 ServiceName: "gossip.Gossip", 1608 HandlerType: (*GossipServer)(nil), 1609 Methods: []grpc.MethodDesc{ 1610 { 1611 MethodName: "Ping", 1612 Handler: _Gossip_Ping_Handler, 1613 }, 1614 }, 1615 Streams: []grpc.StreamDesc{ 1616 { 1617 StreamName: "GossipStream", 1618 Handler: _Gossip_GossipStream_Handler, 1619 ServerStreams: true, 1620 ClientStreams: true, 1621 }, 1622 }, 1623 Metadata: "gossip/message.proto", 1624 } 1625 1626 func init() { proto.RegisterFile("gossip/message.proto", fileDescriptor0) } 1627 1628 var fileDescriptor0 = []byte{ 1629 // 1366 bytes of a gzipped FileDescriptorProto 1630 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6f, 0xdc, 0x44, 1631 0x10, 0x3f, 0x27, 0xf7, 0x39, 0xf7, 0x91, 0xcb, 0x26, 0x05, 0x13, 0x2a, 0x88, 0x2c, 0x5a, 0x05, 1632 0x52, 0x2e, 0x55, 0xca, 0x47, 0xa5, 0x82, 0xd0, 0x25, 0x77, 0xe4, 0x22, 0x7a, 0x49, 0xe4, 0xa4, 1633 0x82, 0xf2, 0x62, 0x6d, 0xce, 0x13, 0x9f, 0xa9, 0xbd, 0x76, 0xbc, 0x7b, 0x85, 0x3c, 0x22, 0xde, 1634 0x78, 0xe1, 0x95, 0x3f, 0x17, 0x79, 0xd7, 0xf6, 0xd9, 0x75, 0x52, 0xa9, 0x95, 0x78, 0xf3, 0x7c, 1635 0xfc, 0x66, 0x66, 0x67, 0xe7, 0x63, 0x0d, 0x9b, 0x4e, 0xc0, 0xb9, 0x1b, 0xee, 0xf9, 0xc8, 0x39, 1636 0x75, 0x70, 0x10, 0x46, 0x81, 0x08, 0x48, 0x5d, 0x71, 0x8d, 0xbf, 0x34, 0x68, 0x8e, 0xd9, 0x6b, 1637 0xf4, 0x82, 0x10, 0x89, 0x0e, 0x8d, 0x90, 0xde, 0x78, 0x01, 0xb5, 0x75, 0x6d, 0x5b, 0xdb, 0xe9, 1638 0x98, 0x29, 0x49, 0xee, 0x43, 0x8b, 0xbb, 0x0e, 0xa3, 0x62, 0x11, 0xa1, 0xbe, 0x22, 0x65, 0x4b, 1639 0x06, 0xf9, 0x01, 0xd6, 0x38, 0xce, 0x22, 0x14, 0x16, 0x26, 0xa6, 0xf4, 0xd5, 0x6d, 0x6d, 0xa7, 1640 0xbd, 0xff, 0xc1, 0x40, 0xb9, 0x19, 0x9c, 0x4b, 0x71, 0xea, 0xc8, 0xec, 0xf1, 0x02, 0x6d, 0x4c, 1641 0xa0, 0x57, 0xd4, 0x78, 0xdf, 0x50, 0x8c, 0x21, 0xd4, 0x95, 0x25, 0xf2, 0x08, 0xfa, 0x2e, 0x13, 1642 0x18, 0x31, 0xea, 0x8d, 0x99, 0x1d, 0x06, 0x2e, 0x13, 0xd2, 0x54, 0x6b, 0x52, 0x31, 0x4b, 0x92, 1643 0x83, 0x16, 0x34, 0x66, 0x01, 0x13, 0xc8, 0x84, 0xf1, 0x6f, 0x0b, 0xba, 0x47, 0x32, 0xec, 0xa9, 1644 0x4a, 0x19, 0xd9, 0x84, 0x1a, 0x0b, 0xd8, 0x0c, 0x25, 0xbe, 0x6a, 0x2a, 0x22, 0x0e, 0x71, 0x36, 1645 0xa7, 0x8c, 0xa1, 0x97, 0x84, 0x91, 0x92, 0x64, 0x17, 0x56, 0x05, 0x75, 0x64, 0x0e, 0x7a, 0xfb, 1646 0x1f, 0xa5, 0x39, 0x28, 0xd8, 0x1c, 0x5c, 0x50, 0xc7, 0x8c, 0xb5, 0xc8, 0x13, 0x68, 0x51, 0xcf, 1647 0x7d, 0x8d, 0x96, 0xcf, 0x1d, 0xbd, 0x26, 0xd3, 0xb6, 0x99, 0x42, 0x86, 0xb1, 0x20, 0x41, 0x4c, 1648 0x2a, 0x66, 0x53, 0x2a, 0x4e, 0xb9, 0x43, 0xbe, 0x82, 0x86, 0x8f, 0xbe, 0x15, 0xe1, 0xb5, 0x5e, 1649 0x97, 0x90, 0xcc, 0xcb, 0x14, 0xfd, 0x4b, 0x8c, 0xf8, 0xdc, 0x0d, 0x4d, 0xbc, 0x5e, 0x20, 0x17, 1650 0x93, 0x8a, 0x59, 0xf7, 0xd1, 0x37, 0xf1, 0x9a, 0x7c, 0x9d, 0xa2, 0xb8, 0xde, 0x90, 0xa8, 0xad, 1651 0xdb, 0x50, 0x3c, 0x0c, 0x18, 0xc7, 0x0c, 0xc6, 0xc9, 0x63, 0x68, 0xda, 0x54, 0x50, 0x19, 0x60, 1652 0x53, 0xe2, 0x36, 0x52, 0xdc, 0x88, 0x0a, 0xba, 0x8c, 0xaf, 0x11, 0xab, 0xc5, 0xe1, 0xed, 0x42, 1653 0x6d, 0x8e, 0x9e, 0x17, 0xe8, 0xad, 0xa2, 0xba, 0x4a, 0xc1, 0x24, 0x16, 0x4d, 0x2a, 0xa6, 0xd2, 1654 0x21, 0x7b, 0x89, 0x79, 0xdb, 0x75, 0x74, 0x90, 0xfa, 0x24, 0x6f, 0x7e, 0xe4, 0x3a, 0xea, 0x14, 1655 0xd2, 0xfa, 0xc8, 0x75, 0xb2, 0x78, 0xe2, 0xd3, 0xb7, 0xcb, 0xf1, 0x2c, 0xcf, 0x2d, 0x11, 0xea, 1656 0xe0, 0x6d, 0x89, 0x58, 0x84, 0x36, 0x15, 0xa8, 0x77, 0xca, 0x5e, 0x5e, 0x48, 0xc9, 0xa4, 0x62, 1657 0x82, 0x9d, 0x51, 0xe4, 0x01, 0xd4, 0xd0, 0x0f, 0xc5, 0x8d, 0xde, 0x95, 0x80, 0x6e, 0x0a, 0x18, 1658 0xc7, 0xcc, 0xf8, 0x00, 0x52, 0x4a, 0x76, 0xa1, 0x3a, 0x0b, 0x18, 0xd3, 0x7b, 0x52, 0xeb, 0x5e, 1659 0xaa, 0x75, 0x18, 0x30, 0x36, 0xe6, 0x82, 0x5e, 0x7a, 0x2e, 0x9f, 0x4f, 0x2a, 0xa6, 0x54, 0x22, 1660 0xfb, 0x00, 0x5c, 0x50, 0x81, 0x96, 0xcb, 0xae, 0x02, 0x7d, 0x4d, 0x42, 0xd6, 0xb3, 0x36, 0x89, 1661 0x25, 0xc7, 0xec, 0x2a, 0xce, 0x4e, 0x8b, 0xa7, 0x04, 0x39, 0x80, 0x9e, 0xc2, 0x70, 0x46, 0x43, 1662 0x3e, 0x0f, 0x84, 0xde, 0x2f, 0x5e, 0x7a, 0x86, 0x3b, 0x4f, 0x14, 0x26, 0x15, 0xb3, 0x2b, 0x21, 1663 0x29, 0x83, 0x4c, 0x61, 0x63, 0xe9, 0xd7, 0x0a, 0x17, 0x9e, 0x27, 0xf3, 0xb7, 0x2e, 0x0d, 0xdd, 1664 0x2f, 0x19, 0x3a, 0x5b, 0x78, 0xde, 0x32, 0x91, 0x7d, 0xfe, 0x06, 0x9f, 0x0c, 0x41, 0xd9, 0x8f, 1665 0x8d, 0xc4, 0x4a, 0x3a, 0x29, 0x16, 0x94, 0x89, 0x7e, 0x20, 0x50, 0x9a, 0x5b, 0x9a, 0xe9, 0xf0, 1666 0x1c, 0x4d, 0x46, 0xe9, 0xa9, 0xa2, 0xa4, 0xe4, 0xf4, 0x0d, 0x69, 0xe3, 0xe3, 0x5b, 0x6d, 0x64, 1667 0x55, 0xd9, 0xe5, 0x79, 0x46, 0x9c, 0x1b, 0x0f, 0xa9, 0xad, 0x8a, 0x57, 0x96, 0xe8, 0x66, 0x31, 1668 0x37, 0xcf, 0x33, 0xe9, 0xb2, 0x50, 0xbb, 0x4b, 0x48, 0x5c, 0xae, 0xcf, 0xa0, 0x1b, 0x22, 0x46, 1669 0x96, 0x6b, 0x23, 0x13, 0xae, 0xb8, 0xd1, 0xef, 0x15, 0xdb, 0xf0, 0x0c, 0x31, 0x3a, 0x4e, 0x64, 1670 0xf1, 0x31, 0xc2, 0x1c, 0x6d, 0x58, 0xb0, 0x7a, 0x41, 0x1d, 0xd2, 0x85, 0xd6, 0x8b, 0x93, 0xd1, 1671 0xf8, 0xc7, 0xe3, 0x93, 0xf1, 0xa8, 0x5f, 0x21, 0x2d, 0xa8, 0x8d, 0xa7, 0x67, 0x17, 0x2f, 0xfb, 1672 0x1a, 0xe9, 0x40, 0xf3, 0xd4, 0x3c, 0xb2, 0x4e, 0x4f, 0x9e, 0xbf, 0xec, 0xaf, 0xc4, 0x7a, 0x87, 1673 0x93, 0xe1, 0x89, 0x22, 0x57, 0x49, 0x1f, 0x3a, 0x92, 0x1c, 0x9e, 0x8c, 0xac, 0x53, 0xf3, 0xa8, 1674 0x5f, 0x25, 0x6b, 0xd0, 0x56, 0x0a, 0xa6, 0x64, 0xd4, 0xf2, 0xa3, 0xe9, 0x1f, 0x0d, 0x5a, 0xd9, 1675 0x15, 0x91, 0x2d, 0x68, 0xfa, 0x28, 0x68, 0x5c, 0xb0, 0xc9, 0x90, 0xcc, 0x68, 0x32, 0x80, 0x96, 1676 0x70, 0x7d, 0xe4, 0x82, 0xfa, 0xa1, 0x1c, 0x4f, 0xed, 0xfd, 0x7e, 0xfe, 0x38, 0x17, 0xae, 0x8f, 1677 0xe6, 0x52, 0x85, 0xdc, 0x83, 0x7a, 0xf8, 0xca, 0xb5, 0x5c, 0x5b, 0x4e, 0xad, 0x8e, 0x59, 0x0b, 1678 0x5f, 0xb9, 0xc7, 0x36, 0xf9, 0x14, 0xda, 0xc9, 0x50, 0xb3, 0xa6, 0xc3, 0x43, 0xbd, 0x2a, 0x65, 1679 0x90, 0xb0, 0xa6, 0xc3, 0x43, 0x63, 0x08, 0xeb, 0xa5, 0xe2, 0x23, 0x8f, 0xa0, 0x89, 0x1e, 0xfa, 1680 0xc8, 0x04, 0xd7, 0xb5, 0xed, 0xd5, 0xbc, 0xef, 0x6c, 0x05, 0x64, 0x1a, 0xc6, 0xb7, 0xb0, 0x79, 1681 0x5b, 0xd9, 0xbd, 0xe9, 0x5b, 0x2b, 0xf9, 0xbe, 0x82, 0x6e, 0xa1, 0xc7, 0x72, 0x87, 0xd0, 0xf2, 1682 0x87, 0xd8, 0x82, 0x66, 0x76, 0xb3, 0x6a, 0x52, 0x67, 0x34, 0x31, 0xa0, 0x2b, 0x3c, 0x6e, 0xcd, 1683 0x30, 0x12, 0xd6, 0x9c, 0xf2, 0x79, 0x72, 0xfc, 0xb6, 0xf0, 0xf8, 0x21, 0x46, 0x62, 0x42, 0xf9, 1684 0xdc, 0x78, 0x01, 0x9d, 0x7c, 0x05, 0xdc, 0xe5, 0x86, 0x40, 0x35, 0x36, 0x93, 0xb8, 0x90, 0xdf, 1685 0x85, 0x2b, 0x5a, 0x2d, 0x5e, 0x91, 0xe1, 0x43, 0x3b, 0x37, 0xae, 0xee, 0x5e, 0x32, 0xb6, 0x1c, 1686 0x80, 0x5c, 0x5f, 0xd9, 0x5e, 0xdd, 0x69, 0x99, 0x29, 0x49, 0x06, 0xd0, 0xf4, 0xb9, 0x63, 0x89, 1687 0x9b, 0x64, 0xdb, 0xf6, 0x96, 0x53, 0x30, 0xce, 0xe2, 0x94, 0x3b, 0x17, 0x37, 0x21, 0x9a, 0x0d, 1688 0x5f, 0x7d, 0x18, 0x01, 0xb4, 0x73, 0xe3, 0xf7, 0x0e, 0x77, 0xf9, 0x78, 0x57, 0x4a, 0x25, 0xf5, 1689 0x6e, 0x0e, 0xff, 0x00, 0x58, 0x4e, 0xd6, 0x3b, 0xfc, 0x7d, 0x06, 0xd5, 0xc4, 0xd7, 0xed, 0x55, 1690 0x52, 0x7d, 0x2f, 0xcf, 0x9e, 0xf2, 0xac, 0x36, 0xc7, 0xff, 0x9e, 0xd8, 0xa7, 0xea, 0x1e, 0xd3, 1691 0xc7, 0xc2, 0xe7, 0xc5, 0x97, 0x4b, 0x7b, 0x7f, 0x2d, 0x43, 0x2b, 0x76, 0xf6, 0x94, 0x31, 0xbe, 1692 0x81, 0x46, 0xc2, 0x23, 0x1f, 0x42, 0x83, 0xe3, 0xb5, 0xc5, 0x16, 0x7e, 0x12, 0x66, 0x9d, 0xe3, 1693 0xf5, 0xc9, 0xc2, 0x8f, 0xab, 0x2a, 0x77, 0x1b, 0xf2, 0xdb, 0xf8, 0x5b, 0x83, 0x4e, 0xfe, 0x69, 1694 0x40, 0x06, 0x00, 0x7e, 0xb6, 0xc1, 0x13, 0xb7, 0xbd, 0xe2, 0x6e, 0x37, 0x73, 0x1a, 0xef, 0x3c, 1695 0x1d, 0xf2, 0x1d, 0x54, 0x2d, 0x76, 0x90, 0xf1, 0xa7, 0x06, 0xeb, 0xa5, 0x19, 0x7b, 0x57, 0x8f, 1696 0xbc, 0xab, 0xe3, 0x07, 0xd0, 0x73, 0xb9, 0x65, 0xe3, 0xcc, 0xa3, 0x11, 0x15, 0x6e, 0xc0, 0xe4, 1697 0x8d, 0x34, 0xcd, 0xae, 0xcb, 0x47, 0x4b, 0xa6, 0xf1, 0x1d, 0x34, 0x53, 0x74, 0x9c, 0x49, 0x97, 1698 0xcd, 0xf2, 0x99, 0x74, 0xd9, 0x2c, 0xce, 0x64, 0x2e, 0xc5, 0x2b, 0xf9, 0x14, 0x1b, 0x57, 0xb0, 1699 0x5e, 0x7a, 0x35, 0x91, 0x67, 0xd0, 0xe7, 0xe8, 0x5d, 0xc9, 0x75, 0x19, 0xf9, 0xca, 0xb7, 0x56, 1700 0x0c, 0x38, 0xab, 0xd2, 0xb5, 0x58, 0xf3, 0x78, 0xa9, 0x18, 0x97, 0xdc, 0x2b, 0x16, 0xfc, 0xce, 1701 0x64, 0x69, 0x75, 0x4c, 0x45, 0x18, 0x97, 0x40, 0xca, 0xef, 0x2c, 0xf2, 0x10, 0x6a, 0xf2, 0x59, 1702 0x77, 0xe7, 0xa4, 0x54, 0x62, 0xd9, 0x2a, 0x48, 0xed, 0xb7, 0xb4, 0x0a, 0x52, 0xdb, 0xf8, 0x19, 1703 0xea, 0xca, 0x47, 0x7c, 0x67, 0x58, 0x78, 0xf7, 0x9a, 0x19, 0xfd, 0xd6, 0x36, 0xbf, 0x7d, 0x13, 1704 0x18, 0x0d, 0xa8, 0xc9, 0x67, 0x8f, 0xf1, 0x0b, 0x90, 0xf2, 0x72, 0x8f, 0xe7, 0x28, 0x17, 0x34, 1705 0x12, 0x56, 0xb1, 0x8a, 0xdb, 0x92, 0x79, 0xae, 0x4a, 0xf9, 0x13, 0x68, 0x23, 0xb3, 0xad, 0xe2, 1706 0x25, 0xb4, 0x90, 0xd9, 0x4a, 0x6e, 0x1c, 0xc0, 0xc6, 0x2d, 0x2b, 0x9f, 0xec, 0x42, 0x33, 0x69, 1707 0x98, 0x74, 0x9b, 0x94, 0x3a, 0x2a, 0x53, 0xf8, 0xe2, 0x7b, 0x68, 0xe7, 0x9a, 0xf4, 0xcd, 0xad, 1708 0xdc, 0x85, 0xd6, 0xc1, 0xf3, 0xd3, 0xc3, 0x9f, 0xac, 0xe9, 0xf9, 0x51, 0x5f, 0x8b, 0x97, 0xef, 1709 0xf1, 0x68, 0x7c, 0x72, 0x71, 0x7c, 0xf1, 0x52, 0x72, 0x56, 0xf6, 0x7f, 0x83, 0xba, 0x1a, 0x92, 1710 0xe4, 0x29, 0x74, 0xd4, 0xd7, 0xb9, 0x88, 0x90, 0xfa, 0xa4, 0x94, 0xf0, 0xad, 0x12, 0xc7, 0xa8, 1711 0xec, 0x68, 0x8f, 0x35, 0xf2, 0x10, 0xaa, 0x67, 0x2e, 0x73, 0x48, 0xf1, 0xb9, 0xb8, 0x55, 0x24, 1712 0x8d, 0xca, 0xc1, 0x97, 0xbf, 0xee, 0x3a, 0xae, 0x98, 0x2f, 0x2e, 0x07, 0xb3, 0xc0, 0xdf, 0x9b, 1713 0xdf, 0x84, 0x18, 0x79, 0x68, 0x3b, 0x18, 0xed, 0x5d, 0xd1, 0xcb, 0xc8, 0x9d, 0xed, 0xc9, 0x3f, 1714 0x35, 0xbe, 0xa7, 0x60, 0x97, 0x75, 0x49, 0x3e, 0xf9, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x74, 0x25, 1715 0x05, 0xf1, 0xd0, 0x0d, 0x00, 0x00, 1716 }