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  }