// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.9.1
// source: paracross.proto

package types

import (
	context "context"
	reflect "reflect"
	sync "sync"

	types "github.com/33cn/chain33/types"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// stateDB
type ParacrossStatusDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addrs     []string `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
	BlockHash [][]byte `protobuf:"bytes,2,rep,name=blockHash,proto3" json:"blockHash,omitempty"`
}

func (x *ParacrossStatusDetails) Reset() {
	*x = ParacrossStatusDetails{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossStatusDetails) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossStatusDetails) ProtoMessage() {}

func (x *ParacrossStatusDetails) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossStatusDetails.ProtoReflect.Descriptor instead.
func (*ParacrossStatusDetails) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{0}
}

func (x *ParacrossStatusDetails) GetAddrs() []string {
	if x != nil {
		return x.Addrs
	}
	return nil
}

func (x *ParacrossStatusDetails) GetBlockHash() [][]byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

//记录不同blockHash的详细数据
type ParacrossStatusBlockDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockHashs [][]byte `protobuf:"bytes,1,rep,name=blockHashs,proto3" json:"blockHashs,omitempty"`
	TxResults  [][]byte `protobuf:"bytes,2,rep,name=txResults,proto3" json:"txResults,omitempty"`
}

func (x *ParacrossStatusBlockDetails) Reset() {
	*x = ParacrossStatusBlockDetails{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossStatusBlockDetails) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossStatusBlockDetails) ProtoMessage() {}

func (x *ParacrossStatusBlockDetails) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossStatusBlockDetails.ProtoReflect.Descriptor instead.
func (*ParacrossStatusBlockDetails) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{1}
}

func (x *ParacrossStatusBlockDetails) GetBlockHashs() [][]byte {
	if x != nil {
		return x.BlockHashs
	}
	return nil
}

func (x *ParacrossStatusBlockDetails) GetTxResults() [][]byte {
	if x != nil {
		return x.TxResults
	}
	return nil
}

type ParacrossHeightStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ing, done
	Status             int32                        `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Title              string                       `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Height             int64                        `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	Details            *ParacrossStatusDetails      `protobuf:"bytes,4,opt,name=details,proto3" json:"details,omitempty"`
	MainHeight         int64                        `protobuf:"varint,5,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash           []byte                       `protobuf:"bytes,6,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	BlockDetails       *ParacrossStatusBlockDetails `protobuf:"bytes,7,opt,name=blockDetails,proto3" json:"blockDetails,omitempty"`
	SupervisionDetails *ParacrossStatusDetails      `protobuf:"bytes,8,opt,name=supervisionDetails,proto3" json:"supervisionDetails,omitempty"`
}

func (x *ParacrossHeightStatus) Reset() {
	*x = ParacrossHeightStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossHeightStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossHeightStatus) ProtoMessage() {}

func (x *ParacrossHeightStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossHeightStatus.ProtoReflect.Descriptor instead.
func (*ParacrossHeightStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{2}
}

func (x *ParacrossHeightStatus) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ParacrossHeightStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParacrossHeightStatus) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParacrossHeightStatus) GetDetails() *ParacrossStatusDetails {
	if x != nil {
		return x.Details
	}
	return nil
}

func (x *ParacrossHeightStatus) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParacrossHeightStatus) GetMainHash() []byte {
	if x != nil {
		return x.MainHash
	}
	return nil
}

func (x *ParacrossHeightStatus) GetBlockDetails() *ParacrossStatusBlockDetails {
	if x != nil {
		return x.BlockDetails
	}
	return nil
}

func (x *ParacrossHeightStatus) GetSupervisionDetails() *ParacrossStatusDetails {
	if x != nil {
		return x.SupervisionDetails
	}
	return nil
}

type ParacrossHeightStatusRsp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status                     int32    `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Title                      string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Height                     int64    `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	MainHeight                 int64    `protobuf:"varint,4,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash                   string   `protobuf:"bytes,5,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	CommitAddrs                []string `protobuf:"bytes,6,rep,name=commitAddrs,proto3" json:"commitAddrs,omitempty"`
	CommitBlockHash            []string `protobuf:"bytes,7,rep,name=commitBlockHash,proto3" json:"commitBlockHash,omitempty"`
	CommitSupervisionAddrs     []string `protobuf:"bytes,8,rep,name=commitSupervisionAddrs,proto3" json:"commitSupervisionAddrs,omitempty"`
	CommitSupervisionBlockHash []string `protobuf:"bytes,9,rep,name=commitSupervisionBlockHash,proto3" json:"commitSupervisionBlockHash,omitempty"`
}

func (x *ParacrossHeightStatusRsp) Reset() {
	*x = ParacrossHeightStatusRsp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossHeightStatusRsp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossHeightStatusRsp) ProtoMessage() {}

func (x *ParacrossHeightStatusRsp) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossHeightStatusRsp.ProtoReflect.Descriptor instead.
func (*ParacrossHeightStatusRsp) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{3}
}

func (x *ParacrossHeightStatusRsp) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ParacrossHeightStatusRsp) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParacrossHeightStatusRsp) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParacrossHeightStatusRsp) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParacrossHeightStatusRsp) GetMainHash() string {
	if x != nil {
		return x.MainHash
	}
	return ""
}

func (x *ParacrossHeightStatusRsp) GetCommitAddrs() []string {
	if x != nil {
		return x.CommitAddrs
	}
	return nil
}

func (x *ParacrossHeightStatusRsp) GetCommitBlockHash() []string {
	if x != nil {
		return x.CommitBlockHash
	}
	return nil
}

func (x *ParacrossHeightStatusRsp) GetCommitSupervisionAddrs() []string {
	if x != nil {
		return x.CommitSupervisionAddrs
	}
	return nil
}

func (x *ParacrossHeightStatusRsp) GetCommitSupervisionBlockHash() []string {
	if x != nil {
		return x.CommitSupervisionBlockHash
	}
	return nil
}

type ParacrossStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title      string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Height     int64  `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
	BlockHash  []byte `protobuf:"bytes,3,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	MainHeight int64  `protobuf:"varint,4,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash   []byte `protobuf:"bytes,5,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
}

func (x *ParacrossStatus) Reset() {
	*x = ParacrossStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossStatus) ProtoMessage() {}

func (x *ParacrossStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossStatus.ProtoReflect.Descriptor instead.
func (*ParacrossStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{4}
}

func (x *ParacrossStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParacrossStatus) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParacrossStatus) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *ParacrossStatus) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParacrossStatus) GetMainHash() []byte {
	if x != nil {
		return x.MainHash
	}
	return nil
}

type ParacrossConsensusStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title            string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	ChainHeight      int64  `protobuf:"varint,2,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"`
	ConsensHeight    int64  `protobuf:"varint,3,opt,name=consensHeight,proto3" json:"consensHeight,omitempty"`
	ConsensBlockHash string `protobuf:"bytes,4,opt,name=consensBlockHash,proto3" json:"consensBlockHash,omitempty"`
}

func (x *ParacrossConsensusStatus) Reset() {
	*x = ParacrossConsensusStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossConsensusStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossConsensusStatus) ProtoMessage() {}

func (x *ParacrossConsensusStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossConsensusStatus.ProtoReflect.Descriptor instead.
func (*ParacrossConsensusStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{5}
}

func (x *ParacrossConsensusStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParacrossConsensusStatus) GetChainHeight() int64 {
	if x != nil {
		return x.ChainHeight
	}
	return 0
}

func (x *ParacrossConsensusStatus) GetConsensHeight() int64 {
	if x != nil {
		return x.ConsensHeight
	}
	return 0
}

func (x *ParacrossConsensusStatus) GetConsensBlockHash() string {
	if x != nil {
		return x.ConsensBlockHash
	}
	return ""
}

type ParaNodeAddrConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title       string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Op          uint32 `protobuf:"varint,2,opt,name=op,proto3" json:"op,omitempty"`
	Id          string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
	Addr        string `protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,omitempty"`
	Value       uint32 `protobuf:"varint,5,opt,name=value,proto3" json:"value,omitempty"`
	CoinsFrozen int64  `protobuf:"varint,6,opt,name=coinsFrozen,proto3" json:"coinsFrozen,omitempty"`
	BlsPubKey   string `protobuf:"bytes,7,opt,name=blsPubKey,proto3" json:"blsPubKey,omitempty"` //本地址私钥对应的bls聚合签名的公钥
}

func (x *ParaNodeAddrConfig) Reset() {
	*x = ParaNodeAddrConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeAddrConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeAddrConfig) ProtoMessage() {}

func (x *ParaNodeAddrConfig) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeAddrConfig.ProtoReflect.Descriptor instead.
func (*ParaNodeAddrConfig) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{6}
}

func (x *ParaNodeAddrConfig) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaNodeAddrConfig) GetOp() uint32 {
	if x != nil {
		return x.Op
	}
	return 0
}

func (x *ParaNodeAddrConfig) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ParaNodeAddrConfig) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ParaNodeAddrConfig) GetValue() uint32 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *ParaNodeAddrConfig) GetCoinsFrozen() int64 {
	if x != nil {
		return x.CoinsFrozen
	}
	return 0
}

func (x *ParaNodeAddrConfig) GetBlsPubKey() string {
	if x != nil {
		return x.BlsPubKey
	}
	return ""
}

type ParaNodeVoteDetail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addrs []string `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
	Votes []string `protobuf:"bytes,2,rep,name=votes,proto3" json:"votes,omitempty"`
}

func (x *ParaNodeVoteDetail) Reset() {
	*x = ParaNodeVoteDetail{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeVoteDetail) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeVoteDetail) ProtoMessage() {}

func (x *ParaNodeVoteDetail) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeVoteDetail.ProtoReflect.Descriptor instead.
func (*ParaNodeVoteDetail) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{7}
}

func (x *ParaNodeVoteDetail) GetAddrs() []string {
	if x != nil {
		return x.Addrs
	}
	return nil
}

func (x *ParaNodeVoteDetail) GetVotes() []string {
	if x != nil {
		return x.Votes
	}
	return nil
}

type ParaNodeAddrIdStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr       string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	ProposalId string `protobuf:"bytes,2,opt,name=proposalId,proto3" json:"proposalId,omitempty"`
	QuitId     string `protobuf:"bytes,3,opt,name=quitId,proto3" json:"quitId,omitempty"`
	Status     int32  `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	Title      string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
	BlsPubKey  string `protobuf:"bytes,6,opt,name=blsPubKey,proto3" json:"blsPubKey,omitempty"`
}

func (x *ParaNodeAddrIdStatus) Reset() {
	*x = ParaNodeAddrIdStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeAddrIdStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeAddrIdStatus) ProtoMessage() {}

func (x *ParaNodeAddrIdStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeAddrIdStatus.ProtoReflect.Descriptor instead.
func (*ParaNodeAddrIdStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{8}
}

func (x *ParaNodeAddrIdStatus) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ParaNodeAddrIdStatus) GetProposalId() string {
	if x != nil {
		return x.ProposalId
	}
	return ""
}

func (x *ParaNodeAddrIdStatus) GetQuitId() string {
	if x != nil {
		return x.QuitId
	}
	return ""
}

func (x *ParaNodeAddrIdStatus) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ParaNodeAddrIdStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaNodeAddrIdStatus) GetBlsPubKey() string {
	if x != nil {
		return x.BlsPubKey
	}
	return ""
}

type ParaNodeIdStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id          string              `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Status      int32               `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	Title       string              `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	TargetAddr  string              `protobuf:"bytes,4,opt,name=targetAddr,proto3" json:"targetAddr,omitempty"`
	CoinsFrozen int64               `protobuf:"varint,5,opt,name=coinsFrozen,proto3" json:"coinsFrozen,omitempty"`
	Votes       *ParaNodeVoteDetail `protobuf:"bytes,6,opt,name=votes,proto3" json:"votes,omitempty"`
	FromAddr    string              `protobuf:"bytes,7,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	Height      int64               `protobuf:"varint,8,opt,name=height,proto3" json:"height,omitempty"`
	BlsPubKey   string              `protobuf:"bytes,9,opt,name=blsPubKey,proto3" json:"blsPubKey,omitempty"`
}

func (x *ParaNodeIdStatus) Reset() {
	*x = ParaNodeIdStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeIdStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeIdStatus) ProtoMessage() {}

func (x *ParaNodeIdStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeIdStatus.ProtoReflect.Descriptor instead.
func (*ParaNodeIdStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{9}
}

func (x *ParaNodeIdStatus) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ParaNodeIdStatus) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ParaNodeIdStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaNodeIdStatus) GetTargetAddr() string {
	if x != nil {
		return x.TargetAddr
	}
	return ""
}

func (x *ParaNodeIdStatus) GetCoinsFrozen() int64 {
	if x != nil {
		return x.CoinsFrozen
	}
	return 0
}

func (x *ParaNodeIdStatus) GetVotes() *ParaNodeVoteDetail {
	if x != nil {
		return x.Votes
	}
	return nil
}

func (x *ParaNodeIdStatus) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *ParaNodeIdStatus) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParaNodeIdStatus) GetBlsPubKey() string {
	if x != nil {
		return x.BlsPubKey
	}
	return ""
}

type ReceiptParaNodeConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr    string              `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Config  *ParaNodeAddrConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
	Prev    *ParaNodeIdStatus   `protobuf:"bytes,3,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *ParaNodeIdStatus   `protobuf:"bytes,4,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptParaNodeConfig) Reset() {
	*x = ReceiptParaNodeConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParaNodeConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParaNodeConfig) ProtoMessage() {}

func (x *ReceiptParaNodeConfig) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParaNodeConfig.ProtoReflect.Descriptor instead.
func (*ReceiptParaNodeConfig) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{10}
}

func (x *ReceiptParaNodeConfig) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReceiptParaNodeConfig) GetConfig() *ParaNodeAddrConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *ReceiptParaNodeConfig) GetPrev() *ParaNodeIdStatus {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptParaNodeConfig) GetCurrent() *ParaNodeIdStatus {
	if x != nil {
		return x.Current
	}
	return nil
}

type ReceiptParaNodeAddrStatUpdate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FromAddr string                `protobuf:"bytes,1,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	Prev     *ParaNodeAddrIdStatus `protobuf:"bytes,2,opt,name=prev,proto3" json:"prev,omitempty"`
	Current  *ParaNodeAddrIdStatus `protobuf:"bytes,3,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptParaNodeAddrStatUpdate) Reset() {
	*x = ReceiptParaNodeAddrStatUpdate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParaNodeAddrStatUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParaNodeAddrStatUpdate) ProtoMessage() {}

func (x *ReceiptParaNodeAddrStatUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParaNodeAddrStatUpdate.ProtoReflect.Descriptor instead.
func (*ReceiptParaNodeAddrStatUpdate) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{11}
}

func (x *ReceiptParaNodeAddrStatUpdate) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *ReceiptParaNodeAddrStatUpdate) GetPrev() *ParaNodeAddrIdStatus {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptParaNodeAddrStatUpdate) GetCurrent() *ParaNodeAddrIdStatus {
	if x != nil {
		return x.Current
	}
	return nil
}

type ReceiptParaNodeVoteDone struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id         string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Title      string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	TargetAddr string `protobuf:"bytes,3,opt,name=targetAddr,proto3" json:"targetAddr,omitempty"`
	TotalNodes int32  `protobuf:"varint,4,opt,name=totalNodes,proto3" json:"totalNodes,omitempty"`
	TotalVote  int32  `protobuf:"varint,5,opt,name=totalVote,proto3" json:"totalVote,omitempty"`
	MostVote   int32  `protobuf:"varint,6,opt,name=mostVote,proto3" json:"mostVote,omitempty"`
	VoteRst    string `protobuf:"bytes,7,opt,name=voteRst,proto3" json:"voteRst,omitempty"`
	DoneStatus int32  `protobuf:"varint,8,opt,name=doneStatus,proto3" json:"doneStatus,omitempty"`
}

func (x *ReceiptParaNodeVoteDone) Reset() {
	*x = ReceiptParaNodeVoteDone{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParaNodeVoteDone) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParaNodeVoteDone) ProtoMessage() {}

func (x *ReceiptParaNodeVoteDone) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParaNodeVoteDone.ProtoReflect.Descriptor instead.
func (*ReceiptParaNodeVoteDone) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{12}
}

func (x *ReceiptParaNodeVoteDone) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ReceiptParaNodeVoteDone) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ReceiptParaNodeVoteDone) GetTargetAddr() string {
	if x != nil {
		return x.TargetAddr
	}
	return ""
}

func (x *ReceiptParaNodeVoteDone) GetTotalNodes() int32 {
	if x != nil {
		return x.TotalNodes
	}
	return 0
}

func (x *ReceiptParaNodeVoteDone) GetTotalVote() int32 {
	if x != nil {
		return x.TotalVote
	}
	return 0
}

func (x *ReceiptParaNodeVoteDone) GetMostVote() int32 {
	if x != nil {
		return x.MostVote
	}
	return 0
}

func (x *ReceiptParaNodeVoteDone) GetVoteRst() string {
	if x != nil {
		return x.VoteRst
	}
	return ""
}

func (x *ReceiptParaNodeVoteDone) GetDoneStatus() int32 {
	if x != nil {
		return x.DoneStatus
	}
	return 0
}

type ParaNodeGroupConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title          string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Op             uint32 `protobuf:"varint,2,opt,name=op,proto3" json:"op,omitempty"`
	Id             string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
	Addrs          string `protobuf:"bytes,4,opt,name=addrs,proto3" json:"addrs,omitempty"`
	CoinsFrozen    int64  `protobuf:"varint,5,opt,name=coinsFrozen,proto3" json:"coinsFrozen,omitempty"`
	BlsPubKeys     string `protobuf:"bytes,6,opt,name=blsPubKeys,proto3" json:"blsPubKeys,omitempty"`
	AutonomyItemID string `protobuf:"bytes,7,opt,name=autonomyItemID,proto3" json:"autonomyItemID,omitempty"`
}

func (x *ParaNodeGroupConfig) Reset() {
	*x = ParaNodeGroupConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeGroupConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeGroupConfig) ProtoMessage() {}

func (x *ParaNodeGroupConfig) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeGroupConfig.ProtoReflect.Descriptor instead.
func (*ParaNodeGroupConfig) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{13}
}

func (x *ParaNodeGroupConfig) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaNodeGroupConfig) GetOp() uint32 {
	if x != nil {
		return x.Op
	}
	return 0
}

func (x *ParaNodeGroupConfig) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ParaNodeGroupConfig) GetAddrs() string {
	if x != nil {
		return x.Addrs
	}
	return ""
}

func (x *ParaNodeGroupConfig) GetCoinsFrozen() int64 {
	if x != nil {
		return x.CoinsFrozen
	}
	return 0
}

func (x *ParaNodeGroupConfig) GetBlsPubKeys() string {
	if x != nil {
		return x.BlsPubKeys
	}
	return ""
}

func (x *ParaNodeGroupConfig) GetAutonomyItemID() string {
	if x != nil {
		return x.AutonomyItemID
	}
	return ""
}

type ParaNodeGroupStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id          string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Status      int32  `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	Title       string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	TargetAddrs string `protobuf:"bytes,4,opt,name=targetAddrs,proto3" json:"targetAddrs,omitempty"`
	CoinsFrozen int64  `protobuf:"varint,5,opt,name=coinsFrozen,proto3" json:"coinsFrozen,omitempty"`
	FromAddr    string `protobuf:"bytes,6,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	Height      int64  `protobuf:"varint,7,opt,name=height,proto3" json:"height,omitempty"`
	BlsPubKeys  string `protobuf:"bytes,8,opt,name=blsPubKeys,proto3" json:"blsPubKeys,omitempty"`
}

func (x *ParaNodeGroupStatus) Reset() {
	*x = ParaNodeGroupStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeGroupStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeGroupStatus) ProtoMessage() {}

func (x *ParaNodeGroupStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeGroupStatus.ProtoReflect.Descriptor instead.
func (*ParaNodeGroupStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{14}
}

func (x *ParaNodeGroupStatus) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ParaNodeGroupStatus) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ParaNodeGroupStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaNodeGroupStatus) GetTargetAddrs() string {
	if x != nil {
		return x.TargetAddrs
	}
	return ""
}

func (x *ParaNodeGroupStatus) GetCoinsFrozen() int64 {
	if x != nil {
		return x.CoinsFrozen
	}
	return 0
}

func (x *ParaNodeGroupStatus) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *ParaNodeGroupStatus) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParaNodeGroupStatus) GetBlsPubKeys() string {
	if x != nil {
		return x.BlsPubKeys
	}
	return ""
}

type ReceiptParaNodeGroupConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr    string               `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Config  *ParaNodeGroupConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
	Prev    *ParaNodeGroupStatus `protobuf:"bytes,3,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *ParaNodeGroupStatus `protobuf:"bytes,4,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptParaNodeGroupConfig) Reset() {
	*x = ReceiptParaNodeGroupConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParaNodeGroupConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParaNodeGroupConfig) ProtoMessage() {}

func (x *ReceiptParaNodeGroupConfig) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParaNodeGroupConfig.ProtoReflect.Descriptor instead.
func (*ReceiptParaNodeGroupConfig) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{15}
}

func (x *ReceiptParaNodeGroupConfig) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReceiptParaNodeGroupConfig) GetConfig() *ParaNodeGroupConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *ReceiptParaNodeGroupConfig) GetPrev() *ParaNodeGroupStatus {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptParaNodeGroupConfig) GetCurrent() *ParaNodeGroupStatus {
	if x != nil {
		return x.Current
	}
	return nil
}

// node query
type ReqParacrossNodeInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title     string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Id        string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Addr      string `protobuf:"bytes,3,opt,name=addr,proto3" json:"addr,omitempty"`
	Status    int32  `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	BlsPubKey string `protobuf:"bytes,5,opt,name=blsPubKey,proto3" json:"blsPubKey,omitempty"`
}

func (x *ReqParacrossNodeInfo) Reset() {
	*x = ReqParacrossNodeInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReqParacrossNodeInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReqParacrossNodeInfo) ProtoMessage() {}

func (x *ReqParacrossNodeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReqParacrossNodeInfo.ProtoReflect.Descriptor instead.
func (*ReqParacrossNodeInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{16}
}

func (x *ReqParacrossNodeInfo) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ReqParacrossNodeInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ReqParacrossNodeInfo) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReqParacrossNodeInfo) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ReqParacrossNodeInfo) GetBlsPubKey() string {
	if x != nil {
		return x.BlsPubKey
	}
	return ""
}

type RespParacrossNodeAddrs struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Ids []*ParaNodeIdStatus `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"`
}

func (x *RespParacrossNodeAddrs) Reset() {
	*x = RespParacrossNodeAddrs{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RespParacrossNodeAddrs) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RespParacrossNodeAddrs) ProtoMessage() {}

func (x *RespParacrossNodeAddrs) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RespParacrossNodeAddrs.ProtoReflect.Descriptor instead.
func (*RespParacrossNodeAddrs) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{17}
}

func (x *RespParacrossNodeAddrs) GetIds() []*ParaNodeIdStatus {
	if x != nil {
		return x.Ids
	}
	return nil
}

type RespParacrossNodeGroups struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Ids []*ParaNodeGroupStatus `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"`
}

func (x *RespParacrossNodeGroups) Reset() {
	*x = RespParacrossNodeGroups{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RespParacrossNodeGroups) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RespParacrossNodeGroups) ProtoMessage() {}

func (x *RespParacrossNodeGroups) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RespParacrossNodeGroups.ProtoReflect.Descriptor instead.
func (*RespParacrossNodeGroups) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{18}
}

func (x *RespParacrossNodeGroups) GetIds() []*ParaNodeGroupStatus {
	if x != nil {
		return x.Ids
	}
	return nil
}

//para bind miner
type ParaBindMinerCmd struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BindAction int32  `protobuf:"varint,1,opt,name=bindAction,proto3" json:"bindAction,omitempty"` // 1: bind, 2:unbind
	BindCoins  int64  `protobuf:"varint,2,opt,name=bindCoins,proto3" json:"bindCoins,omitempty"`   // bind coins count
	TargetNode string `protobuf:"bytes,3,opt,name=targetNode,proto3" json:"targetNode,omitempty"`  // super node addr
}

func (x *ParaBindMinerCmd) Reset() {
	*x = ParaBindMinerCmd{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaBindMinerCmd) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaBindMinerCmd) ProtoMessage() {}

func (x *ParaBindMinerCmd) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaBindMinerCmd.ProtoReflect.Descriptor instead.
func (*ParaBindMinerCmd) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{19}
}

func (x *ParaBindMinerCmd) GetBindAction() int32 {
	if x != nil {
		return x.BindAction
	}
	return 0
}

func (x *ParaBindMinerCmd) GetBindCoins() int64 {
	if x != nil {
		return x.BindCoins
	}
	return 0
}

func (x *ParaBindMinerCmd) GetTargetNode() string {
	if x != nil {
		return x.TargetNode
	}
	return ""
}

type ParaBindMinerInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr        string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`                // miner addr
	BindStatus  int32  `protobuf:"varint,2,opt,name=bindStatus,proto3" json:"bindStatus,omitempty"`   // 1: bind, 2:unbind
	BindCoins   int64  `protobuf:"varint,3,opt,name=bindCoins,proto3" json:"bindCoins,omitempty"`     // bind coins count
	TargetNode  string `protobuf:"bytes,4,opt,name=targetNode,proto3" json:"targetNode,omitempty"`    // super node addr
	BlockTime   int64  `protobuf:"varint,5,opt,name=blockTime,proto3" json:"blockTime,omitempty"`     // action bind block time
	BlockHeight int64  `protobuf:"varint,6,opt,name=blockHeight,proto3" json:"blockHeight,omitempty"` // action bind block height
}

func (x *ParaBindMinerInfo) Reset() {
	*x = ParaBindMinerInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaBindMinerInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaBindMinerInfo) ProtoMessage() {}

func (x *ParaBindMinerInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaBindMinerInfo.ProtoReflect.Descriptor instead.
func (*ParaBindMinerInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{20}
}

func (x *ParaBindMinerInfo) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ParaBindMinerInfo) GetBindStatus() int32 {
	if x != nil {
		return x.BindStatus
	}
	return 0
}

func (x *ParaBindMinerInfo) GetBindCoins() int64 {
	if x != nil {
		return x.BindCoins
	}
	return 0
}

func (x *ParaBindMinerInfo) GetTargetNode() string {
	if x != nil {
		return x.TargetNode
	}
	return ""
}

func (x *ParaBindMinerInfo) GetBlockTime() int64 {
	if x != nil {
		return x.BlockTime
	}
	return 0
}

func (x *ParaBindMinerInfo) GetBlockHeight() int64 {
	if x != nil {
		return x.BlockHeight
	}
	return 0
}

type ReceiptParaBindMinerInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr    string             `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"` // miner addr
	Prev    *ParaBindMinerInfo `protobuf:"bytes,2,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *ParaBindMinerInfo `protobuf:"bytes,3,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptParaBindMinerInfo) Reset() {
	*x = ReceiptParaBindMinerInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParaBindMinerInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParaBindMinerInfo) ProtoMessage() {}

func (x *ReceiptParaBindMinerInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParaBindMinerInfo.ProtoReflect.Descriptor instead.
func (*ReceiptParaBindMinerInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{21}
}

func (x *ReceiptParaBindMinerInfo) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReceiptParaBindMinerInfo) GetPrev() *ParaBindMinerInfo {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptParaBindMinerInfo) GetCurrent() *ParaBindMinerInfo {
	if x != nil {
		return x.Current
	}
	return nil
}

type ParaNodeBindOne struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SuperNode string `protobuf:"bytes,1,opt,name=superNode,proto3" json:"superNode,omitempty"`
	Miner     string `protobuf:"bytes,2,opt,name=miner,proto3" json:"miner,omitempty"`
}

func (x *ParaNodeBindOne) Reset() {
	*x = ParaNodeBindOne{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeBindOne) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeBindOne) ProtoMessage() {}

func (x *ParaNodeBindOne) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeBindOne.ProtoReflect.Descriptor instead.
func (*ParaNodeBindOne) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{22}
}

func (x *ParaNodeBindOne) GetSuperNode() string {
	if x != nil {
		return x.SuperNode
	}
	return ""
}

func (x *ParaNodeBindOne) GetMiner() string {
	if x != nil {
		return x.Miner
	}
	return ""
}

type ParaNodeBindList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title  string             `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Miners []*ParaNodeBindOne `protobuf:"bytes,2,rep,name=miners,proto3" json:"miners,omitempty"`
}

func (x *ParaNodeBindList) Reset() {
	*x = ParaNodeBindList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaNodeBindList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaNodeBindList) ProtoMessage() {}

func (x *ParaNodeBindList) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaNodeBindList.ProtoReflect.Descriptor instead.
func (*ParaNodeBindList) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{23}
}

func (x *ParaNodeBindList) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaNodeBindList) GetMiners() []*ParaNodeBindOne {
	if x != nil {
		return x.Miners
	}
	return nil
}

type ReceiptParaNodeBindListUpdate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prev    *ParaNodeBindList `protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *ParaNodeBindList `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptParaNodeBindListUpdate) Reset() {
	*x = ReceiptParaNodeBindListUpdate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParaNodeBindListUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParaNodeBindListUpdate) ProtoMessage() {}

func (x *ReceiptParaNodeBindListUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParaNodeBindListUpdate.ProtoReflect.Descriptor instead.
func (*ReceiptParaNodeBindListUpdate) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{24}
}

func (x *ReceiptParaNodeBindListUpdate) GetPrev() *ParaNodeBindList {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptParaNodeBindListUpdate) GetCurrent() *ParaNodeBindList {
	if x != nil {
		return x.Current
	}
	return nil
}

type RespParaNodeBindList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	List    *ParaNodeBindList    `protobuf:"bytes,1,opt,name=list,proto3" json:"list,omitempty"`
	Details []*ParaBindMinerInfo `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"`
}

func (x *RespParaNodeBindList) Reset() {
	*x = RespParaNodeBindList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RespParaNodeBindList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RespParaNodeBindList) ProtoMessage() {}

func (x *RespParaNodeBindList) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[25]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RespParaNodeBindList.ProtoReflect.Descriptor instead.
func (*RespParaNodeBindList) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{25}
}

func (x *RespParaNodeBindList) GetList() *ParaNodeBindList {
	if x != nil {
		return x.List
	}
	return nil
}

func (x *RespParaNodeBindList) GetDetails() []*ParaBindMinerInfo {
	if x != nil {
		return x.Details
	}
	return nil
}

type ParaBlock2MainMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height     int64  `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	BlockHash  string `protobuf:"bytes,2,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	MainHeight int64  `protobuf:"varint,3,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash   string `protobuf:"bytes,4,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
}

func (x *ParaBlock2MainMap) Reset() {
	*x = ParaBlock2MainMap{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaBlock2MainMap) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaBlock2MainMap) ProtoMessage() {}

func (x *ParaBlock2MainMap) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[26]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaBlock2MainMap.ProtoReflect.Descriptor instead.
func (*ParaBlock2MainMap) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{26}
}

func (x *ParaBlock2MainMap) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParaBlock2MainMap) GetBlockHash() string {
	if x != nil {
		return x.BlockHash
	}
	return ""
}

func (x *ParaBlock2MainMap) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParaBlock2MainMap) GetMainHash() string {
	if x != nil {
		return x.MainHash
	}
	return ""
}

type ParaBlock2MainInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Items []*ParaBlock2MainMap `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
}

func (x *ParaBlock2MainInfo) Reset() {
	*x = ParaBlock2MainInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaBlock2MainInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaBlock2MainInfo) ProtoMessage() {}

func (x *ParaBlock2MainInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[27]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaBlock2MainInfo.ProtoReflect.Descriptor instead.
func (*ParaBlock2MainInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{27}
}

func (x *ParaBlock2MainInfo) GetItems() []*ParaBlock2MainMap {
	if x != nil {
		return x.Items
	}
	return nil
}

// action
type ParacrossNodeStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MainBlockHash     []byte   `protobuf:"bytes,1,opt,name=mainBlockHash,proto3" json:"mainBlockHash,omitempty"`
	MainBlockHeight   int64    `protobuf:"varint,2,opt,name=mainBlockHeight,proto3" json:"mainBlockHeight,omitempty"`
	Title             string   `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	Height            int64    `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"`
	PreBlockHash      []byte   `protobuf:"bytes,5,opt,name=preBlockHash,proto3" json:"preBlockHash,omitempty"`
	BlockHash         []byte   `protobuf:"bytes,6,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	PreStateHash      []byte   `protobuf:"bytes,7,opt,name=preStateHash,proto3" json:"preStateHash,omitempty"`
	StateHash         []byte   `protobuf:"bytes,8,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	TxCounts          uint32   `protobuf:"varint,9,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
	TxResult          []byte   `protobuf:"bytes,10,opt,name=txResult,proto3" json:"txResult,omitempty"`
	TxHashs           [][]byte `protobuf:"bytes,11,rep,name=txHashs,proto3" json:"txHashs,omitempty"`
	CrossTxResult     []byte   `protobuf:"bytes,12,opt,name=crossTxResult,proto3" json:"crossTxResult,omitempty"`
	CrossTxHashs      [][]byte `protobuf:"bytes,13,rep,name=crossTxHashs,proto3" json:"crossTxHashs,omitempty"`
	NonCommitTxCounts uint32   `protobuf:"varint,14,opt,name=nonCommitTxCounts,proto3" json:"nonCommitTxCounts,omitempty"`
}

func (x *ParacrossNodeStatus) Reset() {
	*x = ParacrossNodeStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossNodeStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossNodeStatus) ProtoMessage() {}

func (x *ParacrossNodeStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[28]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossNodeStatus.ProtoReflect.Descriptor instead.
func (*ParacrossNodeStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{28}
}

func (x *ParacrossNodeStatus) GetMainBlockHash() []byte {
	if x != nil {
		return x.MainBlockHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetMainBlockHeight() int64 {
	if x != nil {
		return x.MainBlockHeight
	}
	return 0
}

func (x *ParacrossNodeStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParacrossNodeStatus) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParacrossNodeStatus) GetPreBlockHash() []byte {
	if x != nil {
		return x.PreBlockHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetPreStateHash() []byte {
	if x != nil {
		return x.PreStateHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetStateHash() []byte {
	if x != nil {
		return x.StateHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetTxCounts() uint32 {
	if x != nil {
		return x.TxCounts
	}
	return 0
}

func (x *ParacrossNodeStatus) GetTxResult() []byte {
	if x != nil {
		return x.TxResult
	}
	return nil
}

func (x *ParacrossNodeStatus) GetTxHashs() [][]byte {
	if x != nil {
		return x.TxHashs
	}
	return nil
}

func (x *ParacrossNodeStatus) GetCrossTxResult() []byte {
	if x != nil {
		return x.CrossTxResult
	}
	return nil
}

func (x *ParacrossNodeStatus) GetCrossTxHashs() [][]byte {
	if x != nil {
		return x.CrossTxHashs
	}
	return nil
}

func (x *ParacrossNodeStatus) GetNonCommitTxCounts() uint32 {
	if x != nil {
		return x.NonCommitTxCounts
	}
	return 0
}

type SelfConsensStages struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Items []*SelfConsensStage `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
}

func (x *SelfConsensStages) Reset() {
	*x = SelfConsensStages{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SelfConsensStages) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SelfConsensStages) ProtoMessage() {}

func (x *SelfConsensStages) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[29]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SelfConsensStages.ProtoReflect.Descriptor instead.
func (*SelfConsensStages) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{29}
}

func (x *SelfConsensStages) GetItems() []*SelfConsensStage {
	if x != nil {
		return x.Items
	}
	return nil
}

type SelfConsensStage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartHeight int64  `protobuf:"varint,1,opt,name=startHeight,proto3" json:"startHeight,omitempty"`
	Enable      uint32 `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
}

func (x *SelfConsensStage) Reset() {
	*x = SelfConsensStage{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SelfConsensStage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SelfConsensStage) ProtoMessage() {}

func (x *SelfConsensStage) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[30]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SelfConsensStage.ProtoReflect.Descriptor instead.
func (*SelfConsensStage) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{30}
}

func (x *SelfConsensStage) GetStartHeight() int64 {
	if x != nil {
		return x.StartHeight
	}
	return 0
}

func (x *SelfConsensStage) GetEnable() uint32 {
	if x != nil {
		return x.Enable
	}
	return 0
}

type SelfConsensStageInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id         string              `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Status     uint32              `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	Stage      *SelfConsensStage   `protobuf:"bytes,3,opt,name=stage,proto3" json:"stage,omitempty"`
	FromAddr   string              `protobuf:"bytes,4,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	ExecHeight int64               `protobuf:"varint,5,opt,name=execHeight,proto3" json:"execHeight,omitempty"`
	Votes      *ParaNodeVoteDetail `protobuf:"bytes,6,opt,name=votes,proto3" json:"votes,omitempty"`
}

func (x *SelfConsensStageInfo) Reset() {
	*x = SelfConsensStageInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SelfConsensStageInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SelfConsensStageInfo) ProtoMessage() {}

func (x *SelfConsensStageInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[31]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SelfConsensStageInfo.ProtoReflect.Descriptor instead.
func (*SelfConsensStageInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{31}
}

func (x *SelfConsensStageInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *SelfConsensStageInfo) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *SelfConsensStageInfo) GetStage() *SelfConsensStage {
	if x != nil {
		return x.Stage
	}
	return nil
}

func (x *SelfConsensStageInfo) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *SelfConsensStageInfo) GetExecHeight() int64 {
	if x != nil {
		return x.ExecHeight
	}
	return 0
}

func (x *SelfConsensStageInfo) GetVotes() *ParaNodeVoteDetail {
	if x != nil {
		return x.Votes
	}
	return nil
}

type LocalSelfConsStageInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Stage   *SelfConsensStageInfo `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"`
	TxIndex string                `protobuf:"bytes,2,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
}

func (x *LocalSelfConsStageInfo) Reset() {
	*x = LocalSelfConsStageInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LocalSelfConsStageInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LocalSelfConsStageInfo) ProtoMessage() {}

func (x *LocalSelfConsStageInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[32]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LocalSelfConsStageInfo.ProtoReflect.Descriptor instead.
func (*LocalSelfConsStageInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{32}
}

func (x *LocalSelfConsStageInfo) GetStage() *SelfConsensStageInfo {
	if x != nil {
		return x.Stage
	}
	return nil
}

func (x *LocalSelfConsStageInfo) GetTxIndex() string {
	if x != nil {
		return x.TxIndex
	}
	return ""
}

type ConfigVoteInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// 投票值　１:ok 2:nok
	Value uint32 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *ConfigVoteInfo) Reset() {
	*x = ConfigVoteInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ConfigVoteInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ConfigVoteInfo) ProtoMessage() {}

func (x *ConfigVoteInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[33]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ConfigVoteInfo.ProtoReflect.Descriptor instead.
func (*ConfigVoteInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{33}
}

func (x *ConfigVoteInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ConfigVoteInfo) GetValue() uint32 {
	if x != nil {
		return x.Value
	}
	return 0
}

type ConfigCancelInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *ConfigCancelInfo) Reset() {
	*x = ConfigCancelInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ConfigCancelInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ConfigCancelInfo) ProtoMessage() {}

func (x *ConfigCancelInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[34]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ConfigCancelInfo.ProtoReflect.Descriptor instead.
func (*ConfigCancelInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{34}
}

func (x *ConfigCancelInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

//广义配置类型
type ParaStageConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	// 配置类型
	Ty uint32 `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
	// Types that are assignable to Value:
	//	*ParaStageConfig_Stage
	//	*ParaStageConfig_Vote
	//	*ParaStageConfig_Cancel
	Value isParaStageConfig_Value `protobuf_oneof:"value"`
}

func (x *ParaStageConfig) Reset() {
	*x = ParaStageConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaStageConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaStageConfig) ProtoMessage() {}

func (x *ParaStageConfig) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[35]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaStageConfig.ProtoReflect.Descriptor instead.
func (*ParaStageConfig) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{35}
}

func (x *ParaStageConfig) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaStageConfig) GetTy() uint32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

func (m *ParaStageConfig) GetValue() isParaStageConfig_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *ParaStageConfig) GetStage() *SelfConsensStage {
	if x, ok := x.GetValue().(*ParaStageConfig_Stage); ok {
		return x.Stage
	}
	return nil
}

func (x *ParaStageConfig) GetVote() *ConfigVoteInfo {
	if x, ok := x.GetValue().(*ParaStageConfig_Vote); ok {
		return x.Vote
	}
	return nil
}

func (x *ParaStageConfig) GetCancel() *ConfigCancelInfo {
	if x, ok := x.GetValue().(*ParaStageConfig_Cancel); ok {
		return x.Cancel
	}
	return nil
}

type isParaStageConfig_Value interface {
	isParaStageConfig_Value()
}

type ParaStageConfig_Stage struct {
	Stage *SelfConsensStage `protobuf:"bytes,10,opt,name=stage,proto3,oneof"`
}

type ParaStageConfig_Vote struct {
	Vote *ConfigVoteInfo `protobuf:"bytes,11,opt,name=vote,proto3,oneof"`
}

type ParaStageConfig_Cancel struct {
	Cancel *ConfigCancelInfo `protobuf:"bytes,12,opt,name=cancel,proto3,oneof"`
}

func (*ParaStageConfig_Stage) isParaStageConfig_Value() {}

func (*ParaStageConfig_Vote) isParaStageConfig_Value() {}

func (*ParaStageConfig_Cancel) isParaStageConfig_Value() {}

type ReceiptSelfConsStageConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prev    *SelfConsensStageInfo `protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *SelfConsensStageInfo `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptSelfConsStageConfig) Reset() {
	*x = ReceiptSelfConsStageConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptSelfConsStageConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptSelfConsStageConfig) ProtoMessage() {}

func (x *ReceiptSelfConsStageConfig) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[36]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptSelfConsStageConfig.ProtoReflect.Descriptor instead.
func (*ReceiptSelfConsStageConfig) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{36}
}

func (x *ReceiptSelfConsStageConfig) GetPrev() *SelfConsensStageInfo {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptSelfConsStageConfig) GetCurrent() *SelfConsensStageInfo {
	if x != nil {
		return x.Current
	}
	return nil
}

type ReceiptSelfConsStageVoteDone struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id         string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Stage      *SelfConsensStage `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"`
	TotalNodes int32             `protobuf:"varint,3,opt,name=totalNodes,proto3" json:"totalNodes,omitempty"`
	TotalVote  int32             `protobuf:"varint,4,opt,name=totalVote,proto3" json:"totalVote,omitempty"`
	MostVote   int32             `protobuf:"varint,5,opt,name=mostVote,proto3" json:"mostVote,omitempty"`
	VoteRst    string            `protobuf:"bytes,6,opt,name=voteRst,proto3" json:"voteRst,omitempty"`
}

func (x *ReceiptSelfConsStageVoteDone) Reset() {
	*x = ReceiptSelfConsStageVoteDone{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptSelfConsStageVoteDone) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptSelfConsStageVoteDone) ProtoMessage() {}

func (x *ReceiptSelfConsStageVoteDone) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[37]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptSelfConsStageVoteDone.ProtoReflect.Descriptor instead.
func (*ReceiptSelfConsStageVoteDone) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{37}
}

func (x *ReceiptSelfConsStageVoteDone) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ReceiptSelfConsStageVoteDone) GetStage() *SelfConsensStage {
	if x != nil {
		return x.Stage
	}
	return nil
}

func (x *ReceiptSelfConsStageVoteDone) GetTotalNodes() int32 {
	if x != nil {
		return x.TotalNodes
	}
	return 0
}

func (x *ReceiptSelfConsStageVoteDone) GetTotalVote() int32 {
	if x != nil {
		return x.TotalVote
	}
	return 0
}

func (x *ReceiptSelfConsStageVoteDone) GetMostVote() int32 {
	if x != nil {
		return x.MostVote
	}
	return 0
}

func (x *ReceiptSelfConsStageVoteDone) GetVoteRst() string {
	if x != nil {
		return x.VoteRst
	}
	return ""
}

type ReceiptSelfConsStagesUpdate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prev    *SelfConsensStages `protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *SelfConsensStages `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptSelfConsStagesUpdate) Reset() {
	*x = ReceiptSelfConsStagesUpdate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptSelfConsStagesUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptSelfConsStagesUpdate) ProtoMessage() {}

func (x *ReceiptSelfConsStagesUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[38]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptSelfConsStagesUpdate.ProtoReflect.Descriptor instead.
func (*ReceiptSelfConsStagesUpdate) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{38}
}

func (x *ReceiptSelfConsStagesUpdate) GetPrev() *SelfConsensStages {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptSelfConsStagesUpdate) GetCurrent() *SelfConsensStages {
	if x != nil {
		return x.Current
	}
	return nil
}

// query
type ReqQuerySelfStages struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status    uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Id        string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Count     int32  `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
	Direction int32  `protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
	Height    int64  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	Index     int32  `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
}

func (x *ReqQuerySelfStages) Reset() {
	*x = ReqQuerySelfStages{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReqQuerySelfStages) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReqQuerySelfStages) ProtoMessage() {}

func (x *ReqQuerySelfStages) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[39]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReqQuerySelfStages.ProtoReflect.Descriptor instead.
func (*ReqQuerySelfStages) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{39}
}

func (x *ReqQuerySelfStages) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ReqQuerySelfStages) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ReqQuerySelfStages) GetCount() int32 {
	if x != nil {
		return x.Count
	}
	return 0
}

func (x *ReqQuerySelfStages) GetDirection() int32 {
	if x != nil {
		return x.Direction
	}
	return 0
}

func (x *ReqQuerySelfStages) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ReqQuerySelfStages) GetIndex() int32 {
	if x != nil {
		return x.Index
	}
	return 0
}

type ReplyQuerySelfStages struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StageInfo []*SelfConsensStageInfo `protobuf:"bytes,1,rep,name=stageInfo,proto3" json:"stageInfo,omitempty"`
}

func (x *ReplyQuerySelfStages) Reset() {
	*x = ReplyQuerySelfStages{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReplyQuerySelfStages) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReplyQuerySelfStages) ProtoMessage() {}

func (x *ReplyQuerySelfStages) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[40]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReplyQuerySelfStages.ProtoReflect.Descriptor instead.
func (*ReplyQuerySelfStages) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{40}
}

func (x *ReplyQuerySelfStages) GetStageInfo() []*SelfConsensStageInfo {
	if x != nil {
		return x.StageInfo
	}
	return nil
}

type ParacrossCommitBlsInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Sign     []byte   `protobuf:"bytes,1,opt,name=sign,proto3" json:"sign,omitempty"`
	AddrsMap []byte   `protobuf:"bytes,2,opt,name=addrsMap,proto3" json:"addrsMap,omitempty"` //addrs' bitmap
	Addrs    []string `protobuf:"bytes,3,rep,name=addrs,proto3" json:"addrs,omitempty"`       //addr's array
}

func (x *ParacrossCommitBlsInfo) Reset() {
	*x = ParacrossCommitBlsInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossCommitBlsInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossCommitBlsInfo) ProtoMessage() {}

func (x *ParacrossCommitBlsInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[41]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossCommitBlsInfo.ProtoReflect.Descriptor instead.
func (*ParacrossCommitBlsInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{41}
}

func (x *ParacrossCommitBlsInfo) GetSign() []byte {
	if x != nil {
		return x.Sign
	}
	return nil
}

func (x *ParacrossCommitBlsInfo) GetAddrsMap() []byte {
	if x != nil {
		return x.AddrsMap
	}
	return nil
}

func (x *ParacrossCommitBlsInfo) GetAddrs() []string {
	if x != nil {
		return x.Addrs
	}
	return nil
}

type ParacrossCommitAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status *ParacrossNodeStatus    `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	Bls    *ParacrossCommitBlsInfo `protobuf:"bytes,2,opt,name=bls,proto3" json:"bls,omitempty"`
}

func (x *ParacrossCommitAction) Reset() {
	*x = ParacrossCommitAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossCommitAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossCommitAction) ProtoMessage() {}

func (x *ParacrossCommitAction) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[42]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossCommitAction.ProtoReflect.Descriptor instead.
func (*ParacrossCommitAction) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{42}
}

func (x *ParacrossCommitAction) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ParacrossCommitAction) GetBls() *ParacrossCommitBlsInfo {
	if x != nil {
		return x.Bls
	}
	return nil
}

type ParacrossMinerAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status          *ParacrossNodeStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	IsSelfConsensus bool                 `protobuf:"varint,2,opt,name=isSelfConsensus,proto3" json:"isSelfConsensus,omitempty"`
	AddIssueCoins   int64                `protobuf:"varint,3,opt,name=addIssueCoins,proto3" json:"addIssueCoins,omitempty"`
}

func (x *ParacrossMinerAction) Reset() {
	*x = ParacrossMinerAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossMinerAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossMinerAction) ProtoMessage() {}

func (x *ParacrossMinerAction) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[43]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossMinerAction.ProtoReflect.Descriptor instead.
func (*ParacrossMinerAction) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{43}
}

func (x *ParacrossMinerAction) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ParacrossMinerAction) GetIsSelfConsensus() bool {
	if x != nil {
		return x.IsSelfConsensus
	}
	return false
}

func (x *ParacrossMinerAction) GetAddIssueCoins() int64 {
	if x != nil {
		return x.AddIssueCoins
	}
	return 0
}

type ParaMinerReward struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr   string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Amount int64  `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
}

func (x *ParaMinerReward) Reset() {
	*x = ParaMinerReward{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaMinerReward) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaMinerReward) ProtoMessage() {}

func (x *ParaMinerReward) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[44]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaMinerReward.ProtoReflect.Descriptor instead.
func (*ParaMinerReward) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{44}
}

func (x *ParaMinerReward) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ParaMinerReward) GetAmount() int64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

type CrossAssetTransfer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AssetExec   string `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Amount      int64  `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
	//default signed addr
	ToAddr string `protobuf:"bytes,4,opt,name=toAddr,proto3" json:"toAddr,omitempty"`
	Note   string `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
}

func (x *CrossAssetTransfer) Reset() {
	*x = CrossAssetTransfer{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CrossAssetTransfer) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CrossAssetTransfer) ProtoMessage() {}

func (x *CrossAssetTransfer) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[45]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CrossAssetTransfer.ProtoReflect.Descriptor instead.
func (*CrossAssetTransfer) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{45}
}

func (x *CrossAssetTransfer) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *CrossAssetTransfer) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *CrossAssetTransfer) GetAmount() int64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *CrossAssetTransfer) GetToAddr() string {
	if x != nil {
		return x.ToAddr
	}
	return ""
}

func (x *CrossAssetTransfer) GetNote() string {
	if x != nil {
		return x.Note
	}
	return ""
}

type ParacrossAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//	*ParacrossAction_Commit
	//	*ParacrossAction_Miner
	//	*ParacrossAction_AssetTransfer
	//	*ParacrossAction_AssetWithdraw
	//	*ParacrossAction_Transfer
	//	*ParacrossAction_Withdraw
	//	*ParacrossAction_TransferToExec
	//	*ParacrossAction_NodeConfig
	//	*ParacrossAction_NodeGroupConfig
	//	*ParacrossAction_SelfStageConfig
	//	*ParacrossAction_CrossAssetTransfer
	//	*ParacrossAction_ParaBindMiner
	//	*ParacrossAction_SupervisionNodeConfig
	Value isParacrossAction_Value `protobuf_oneof:"value"`
	Ty    int32                   `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
}

func (x *ParacrossAction) Reset() {
	*x = ParacrossAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossAction) ProtoMessage() {}

func (x *ParacrossAction) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[46]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossAction.ProtoReflect.Descriptor instead.
func (*ParacrossAction) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{46}
}

func (m *ParacrossAction) GetValue() isParacrossAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *ParacrossAction) GetCommit() *ParacrossCommitAction {
	if x, ok := x.GetValue().(*ParacrossAction_Commit); ok {
		return x.Commit
	}
	return nil
}

func (x *ParacrossAction) GetMiner() *ParacrossMinerAction {
	if x, ok := x.GetValue().(*ParacrossAction_Miner); ok {
		return x.Miner
	}
	return nil
}

func (x *ParacrossAction) GetAssetTransfer() *types.AssetsTransfer {
	if x, ok := x.GetValue().(*ParacrossAction_AssetTransfer); ok {
		return x.AssetTransfer
	}
	return nil
}

func (x *ParacrossAction) GetAssetWithdraw() *types.AssetsWithdraw {
	if x, ok := x.GetValue().(*ParacrossAction_AssetWithdraw); ok {
		return x.AssetWithdraw
	}
	return nil
}

func (x *ParacrossAction) GetTransfer() *types.AssetsTransfer {
	if x, ok := x.GetValue().(*ParacrossAction_Transfer); ok {
		return x.Transfer
	}
	return nil
}

func (x *ParacrossAction) GetWithdraw() *types.AssetsWithdraw {
	if x, ok := x.GetValue().(*ParacrossAction_Withdraw); ok {
		return x.Withdraw
	}
	return nil
}

func (x *ParacrossAction) GetTransferToExec() *types.AssetsTransferToExec {
	if x, ok := x.GetValue().(*ParacrossAction_TransferToExec); ok {
		return x.TransferToExec
	}
	return nil
}

func (x *ParacrossAction) GetNodeConfig() *ParaNodeAddrConfig {
	if x, ok := x.GetValue().(*ParacrossAction_NodeConfig); ok {
		return x.NodeConfig
	}
	return nil
}

func (x *ParacrossAction) GetNodeGroupConfig() *ParaNodeGroupConfig {
	if x, ok := x.GetValue().(*ParacrossAction_NodeGroupConfig); ok {
		return x.NodeGroupConfig
	}
	return nil
}

func (x *ParacrossAction) GetSelfStageConfig() *ParaStageConfig {
	if x, ok := x.GetValue().(*ParacrossAction_SelfStageConfig); ok {
		return x.SelfStageConfig
	}
	return nil
}

func (x *ParacrossAction) GetCrossAssetTransfer() *CrossAssetTransfer {
	if x, ok := x.GetValue().(*ParacrossAction_CrossAssetTransfer); ok {
		return x.CrossAssetTransfer
	}
	return nil
}

func (x *ParacrossAction) GetParaBindMiner() *ParaBindMinerCmd {
	if x, ok := x.GetValue().(*ParacrossAction_ParaBindMiner); ok {
		return x.ParaBindMiner
	}
	return nil
}

func (x *ParacrossAction) GetSupervisionNodeConfig() *ParaNodeGroupConfig {
	if x, ok := x.GetValue().(*ParacrossAction_SupervisionNodeConfig); ok {
		return x.SupervisionNodeConfig
	}
	return nil
}

func (x *ParacrossAction) GetTy() int32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

type isParacrossAction_Value interface {
	isParacrossAction_Value()
}

type ParacrossAction_Commit struct {
	Commit *ParacrossCommitAction `protobuf:"bytes,1,opt,name=commit,proto3,oneof"`
}

type ParacrossAction_Miner struct {
	Miner *ParacrossMinerAction `protobuf:"bytes,3,opt,name=miner,proto3,oneof"`
}

type ParacrossAction_AssetTransfer struct {
	AssetTransfer *types.AssetsTransfer `protobuf:"bytes,4,opt,name=assetTransfer,proto3,oneof"`
}

type ParacrossAction_AssetWithdraw struct {
	AssetWithdraw *types.AssetsWithdraw `protobuf:"bytes,5,opt,name=assetWithdraw,proto3,oneof"`
}

type ParacrossAction_Transfer struct {
	Transfer *types.AssetsTransfer `protobuf:"bytes,6,opt,name=transfer,proto3,oneof"`
}

type ParacrossAction_Withdraw struct {
	Withdraw *types.AssetsWithdraw `protobuf:"bytes,7,opt,name=withdraw,proto3,oneof"`
}

type ParacrossAction_TransferToExec struct {
	TransferToExec *types.AssetsTransferToExec `protobuf:"bytes,8,opt,name=transferToExec,proto3,oneof"`
}

type ParacrossAction_NodeConfig struct {
	NodeConfig *ParaNodeAddrConfig `protobuf:"bytes,9,opt,name=nodeConfig,proto3,oneof"`
}

type ParacrossAction_NodeGroupConfig struct {
	NodeGroupConfig *ParaNodeGroupConfig `protobuf:"bytes,10,opt,name=nodeGroupConfig,proto3,oneof"`
}

type ParacrossAction_SelfStageConfig struct {
	SelfStageConfig *ParaStageConfig `protobuf:"bytes,11,opt,name=selfStageConfig,proto3,oneof"`
}

type ParacrossAction_CrossAssetTransfer struct {
	CrossAssetTransfer *CrossAssetTransfer `protobuf:"bytes,12,opt,name=crossAssetTransfer,proto3,oneof"`
}

type ParacrossAction_ParaBindMiner struct {
	ParaBindMiner *ParaBindMinerCmd `protobuf:"bytes,13,opt,name=paraBindMiner,proto3,oneof"`
}

type ParacrossAction_SupervisionNodeConfig struct {
	SupervisionNodeConfig *ParaNodeGroupConfig `protobuf:"bytes,14,opt,name=supervisionNodeConfig,proto3,oneof"`
}

func (*ParacrossAction_Commit) isParacrossAction_Value() {}

func (*ParacrossAction_Miner) isParacrossAction_Value() {}

func (*ParacrossAction_AssetTransfer) isParacrossAction_Value() {}

func (*ParacrossAction_AssetWithdraw) isParacrossAction_Value() {}

func (*ParacrossAction_Transfer) isParacrossAction_Value() {}

func (*ParacrossAction_Withdraw) isParacrossAction_Value() {}

func (*ParacrossAction_TransferToExec) isParacrossAction_Value() {}

func (*ParacrossAction_NodeConfig) isParacrossAction_Value() {}

func (*ParacrossAction_NodeGroupConfig) isParacrossAction_Value() {}

func (*ParacrossAction_SelfStageConfig) isParacrossAction_Value() {}

func (*ParacrossAction_CrossAssetTransfer) isParacrossAction_Value() {}

func (*ParacrossAction_ParaBindMiner) isParacrossAction_Value() {}

func (*ParacrossAction_SupervisionNodeConfig) isParacrossAction_Value() {}

// logs
type ReceiptParacrossCommit struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr    string                 `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Status  *ParacrossNodeStatus   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
	Prev    *ParacrossHeightStatus `protobuf:"bytes,3,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *ParacrossHeightStatus `protobuf:"bytes,4,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptParacrossCommit) Reset() {
	*x = ReceiptParacrossCommit{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParacrossCommit) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParacrossCommit) ProtoMessage() {}

func (x *ReceiptParacrossCommit) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[47]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParacrossCommit.ProtoReflect.Descriptor instead.
func (*ReceiptParacrossCommit) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{47}
}

func (x *ReceiptParacrossCommit) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReceiptParacrossCommit) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ReceiptParacrossCommit) GetPrev() *ParacrossHeightStatus {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptParacrossCommit) GetCurrent() *ParacrossHeightStatus {
	if x != nil {
		return x.Current
	}
	return nil
}

type ReceiptParacrossMiner struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status *ParacrossNodeStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
}

func (x *ReceiptParacrossMiner) Reset() {
	*x = ReceiptParacrossMiner{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParacrossMiner) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParacrossMiner) ProtoMessage() {}

func (x *ReceiptParacrossMiner) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[48]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParacrossMiner.ProtoReflect.Descriptor instead.
func (*ReceiptParacrossMiner) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{48}
}

func (x *ReceiptParacrossMiner) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

type ReceiptParacrossDone struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalNodes             int32    `protobuf:"varint,1,opt,name=totalNodes,proto3" json:"totalNodes,omitempty"`
	TotalCommit            int32    `protobuf:"varint,2,opt,name=totalCommit,proto3" json:"totalCommit,omitempty"`
	MostSameCommit         int32    `protobuf:"varint,3,opt,name=mostSameCommit,proto3" json:"mostSameCommit,omitempty"`
	Title                  string   `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	Height                 int64    `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	StateHash              []byte   `protobuf:"bytes,6,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	TxCounts               uint32   `protobuf:"varint,7,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
	TxResult               []byte   `protobuf:"bytes,8,opt,name=txResult,proto3" json:"txResult,omitempty"`
	BlockHash              []byte   `protobuf:"bytes,9,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	TxHashs                [][]byte `protobuf:"bytes,10,rep,name=txHashs,proto3" json:"txHashs,omitempty"`
	CrossTxResult          []byte   `protobuf:"bytes,11,opt,name=crossTxResult,proto3" json:"crossTxResult,omitempty"`
	CrossTxHashs           [][]byte `protobuf:"bytes,12,rep,name=crossTxHashs,proto3" json:"crossTxHashs,omitempty"`
	MainBlockHash          []byte   `protobuf:"bytes,13,opt,name=mainBlockHash,proto3" json:"mainBlockHash,omitempty"`
	MainBlockHeight        int64    `protobuf:"varint,14,opt,name=mainBlockHeight,proto3" json:"mainBlockHeight,omitempty"`
	ChainExecHeight        int64    `protobuf:"varint,15,opt,name=chainExecHeight,proto3" json:"chainExecHeight,omitempty"`
	TotalSupervisionNodes  int32    `protobuf:"varint,16,opt,name=totalSupervisionNodes,proto3" json:"totalSupervisionNodes,omitempty"`
	TotalSupervisionCommit int32    `protobuf:"varint,17,opt,name=totalSupervisionCommit,proto3" json:"totalSupervisionCommit,omitempty"`
	MostSupervisionCommit  int32    `protobuf:"varint,18,opt,name=mostSupervisionCommit,proto3" json:"mostSupervisionCommit,omitempty"`
}

func (x *ReceiptParacrossDone) Reset() {
	*x = ReceiptParacrossDone{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParacrossDone) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParacrossDone) ProtoMessage() {}

func (x *ReceiptParacrossDone) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[49]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParacrossDone.ProtoReflect.Descriptor instead.
func (*ReceiptParacrossDone) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{49}
}

func (x *ReceiptParacrossDone) GetTotalNodes() int32 {
	if x != nil {
		return x.TotalNodes
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTotalCommit() int32 {
	if x != nil {
		return x.TotalCommit
	}
	return 0
}

func (x *ReceiptParacrossDone) GetMostSameCommit() int32 {
	if x != nil {
		return x.MostSameCommit
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ReceiptParacrossDone) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ReceiptParacrossDone) GetStateHash() []byte {
	if x != nil {
		return x.StateHash
	}
	return nil
}

func (x *ReceiptParacrossDone) GetTxCounts() uint32 {
	if x != nil {
		return x.TxCounts
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTxResult() []byte {
	if x != nil {
		return x.TxResult
	}
	return nil
}

func (x *ReceiptParacrossDone) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *ReceiptParacrossDone) GetTxHashs() [][]byte {
	if x != nil {
		return x.TxHashs
	}
	return nil
}

func (x *ReceiptParacrossDone) GetCrossTxResult() []byte {
	if x != nil {
		return x.CrossTxResult
	}
	return nil
}

func (x *ReceiptParacrossDone) GetCrossTxHashs() [][]byte {
	if x != nil {
		return x.CrossTxHashs
	}
	return nil
}

func (x *ReceiptParacrossDone) GetMainBlockHash() []byte {
	if x != nil {
		return x.MainBlockHash
	}
	return nil
}

func (x *ReceiptParacrossDone) GetMainBlockHeight() int64 {
	if x != nil {
		return x.MainBlockHeight
	}
	return 0
}

func (x *ReceiptParacrossDone) GetChainExecHeight() int64 {
	if x != nil {
		return x.ChainExecHeight
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTotalSupervisionNodes() int32 {
	if x != nil {
		return x.TotalSupervisionNodes
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTotalSupervisionCommit() int32 {
	if x != nil {
		return x.TotalSupervisionCommit
	}
	return 0
}

func (x *ReceiptParacrossDone) GetMostSupervisionCommit() int32 {
	if x != nil {
		return x.MostSupervisionCommit
	}
	return 0
}

type ReceiptParacrossRecord struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr   string               `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Status *ParacrossNodeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
}

func (x *ReceiptParacrossRecord) Reset() {
	*x = ReceiptParacrossRecord{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptParacrossRecord) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptParacrossRecord) ProtoMessage() {}

func (x *ReceiptParacrossRecord) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[50]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptParacrossRecord.ProtoReflect.Descriptor instead.
func (*ReceiptParacrossRecord) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{50}
}

func (x *ReceiptParacrossRecord) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReceiptParacrossRecord) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

// LocalDB
// title-height-addr : txHash
type ParacrossTx struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TxHash string `protobuf:"bytes,1,opt,name=txHash,proto3" json:"txHash,omitempty"`
}

func (x *ParacrossTx) Reset() {
	*x = ParacrossTx{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossTx) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossTx) ProtoMessage() {}

func (x *ParacrossTx) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[51]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossTx.ProtoReflect.Descriptor instead.
func (*ParacrossTx) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{51}
}

func (x *ParacrossTx) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

// query
type ReqParacrossTitleHeight struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title  string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Height int64  `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
}

func (x *ReqParacrossTitleHeight) Reset() {
	*x = ReqParacrossTitleHeight{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReqParacrossTitleHeight) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReqParacrossTitleHeight) ProtoMessage() {}

func (x *ReqParacrossTitleHeight) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[52]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReqParacrossTitleHeight.ProtoReflect.Descriptor instead.
func (*ReqParacrossTitleHeight) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{52}
}

func (x *ReqParacrossTitleHeight) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ReqParacrossTitleHeight) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

type RespParacrossDone struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalNodes     int32  `protobuf:"varint,1,opt,name=totalNodes,proto3" json:"totalNodes,omitempty"`
	TotalCommit    int32  `protobuf:"varint,2,opt,name=totalCommit,proto3" json:"totalCommit,omitempty"`
	MostSameCommit int32  `protobuf:"varint,3,opt,name=mostSameCommit,proto3" json:"mostSameCommit,omitempty"`
	Title          string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	Height         int64  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	StateHash      string `protobuf:"bytes,6,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	TxCounts       uint32 `protobuf:"varint,7,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
	TxResult       string `protobuf:"bytes,8,opt,name=txResult,proto3" json:"txResult,omitempty"`
	// commitDone chainHeight
	ChainExecHeight int64 `protobuf:"varint,9,opt,name=chainExecHeight,proto3" json:"chainExecHeight,omitempty"`
}

func (x *RespParacrossDone) Reset() {
	*x = RespParacrossDone{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RespParacrossDone) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RespParacrossDone) ProtoMessage() {}

func (x *RespParacrossDone) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[53]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RespParacrossDone.ProtoReflect.Descriptor instead.
func (*RespParacrossDone) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{53}
}

func (x *RespParacrossDone) GetTotalNodes() int32 {
	if x != nil {
		return x.TotalNodes
	}
	return 0
}

func (x *RespParacrossDone) GetTotalCommit() int32 {
	if x != nil {
		return x.TotalCommit
	}
	return 0
}

func (x *RespParacrossDone) GetMostSameCommit() int32 {
	if x != nil {
		return x.MostSameCommit
	}
	return 0
}

func (x *RespParacrossDone) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *RespParacrossDone) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *RespParacrossDone) GetStateHash() string {
	if x != nil {
		return x.StateHash
	}
	return ""
}

func (x *RespParacrossDone) GetTxCounts() uint32 {
	if x != nil {
		return x.TxCounts
	}
	return 0
}

func (x *RespParacrossDone) GetTxResult() string {
	if x != nil {
		return x.TxResult
	}
	return ""
}

func (x *RespParacrossDone) GetChainExecHeight() int64 {
	if x != nil {
		return x.ChainExecHeight
	}
	return 0
}

type RespParacrossTitles struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Titles []*RespParacrossDone `protobuf:"bytes,1,rep,name=titles,proto3" json:"titles,omitempty"`
}

func (x *RespParacrossTitles) Reset() {
	*x = RespParacrossTitles{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RespParacrossTitles) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RespParacrossTitles) ProtoMessage() {}

func (x *RespParacrossTitles) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[54]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RespParacrossTitles.ProtoReflect.Descriptor instead.
func (*RespParacrossTitles) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{54}
}

func (x *RespParacrossTitles) GetTitles() []*RespParacrossDone {
	if x != nil {
		return x.Titles
	}
	return nil
}

type ReqParacrossTitleHash struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title     string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	BlockHash []byte `protobuf:"bytes,2,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
}

func (x *ReqParacrossTitleHash) Reset() {
	*x = ReqParacrossTitleHash{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[55]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReqParacrossTitleHash) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReqParacrossTitleHash) ProtoMessage() {}

func (x *ReqParacrossTitleHash) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[55]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReqParacrossTitleHash.ProtoReflect.Descriptor instead.
func (*ReqParacrossTitleHash) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{55}
}

func (x *ReqParacrossTitleHash) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ReqParacrossTitleHash) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// 跨链转账相关
type ParacrossAsset struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// input
	From       string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
	To         string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
	IsWithdraw bool   `protobuf:"varint,3,opt,name=isWithdraw,proto3" json:"isWithdraw,omitempty"`
	TxHash     string `protobuf:"bytes,4,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Amount     int64  `protobuf:"varint,5,opt,name=amount,proto3" json:"amount,omitempty"`
	Exec       string `protobuf:"bytes,6,opt,name=exec,proto3" json:"exec,omitempty"`
	Symbol     string `protobuf:"bytes,7,opt,name=symbol,proto3" json:"symbol,omitempty"`
	//跨链类型　0:to para, 1:to main
	CrossType uint32 `protobuf:"varint,8,opt,name=crossType,proto3" json:"crossType,omitempty"`
	// 主链部分
	Height int64 `protobuf:"varint,10,opt,name=height,proto3" json:"height,omitempty"`
	// 平行链部分
	CommitDoneHeight int64 `protobuf:"varint,21,opt,name=commitDoneHeight,proto3" json:"commitDoneHeight,omitempty"`
	ParaHeight       int64 `protobuf:"varint,22,opt,name=paraHeight,proto3" json:"paraHeight,omitempty"`
	Success          bool  `protobuf:"varint,23,opt,name=success,proto3" json:"success,omitempty"`
}

func (x *ParacrossAsset) Reset() {
	*x = ParacrossAsset{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParacrossAsset) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParacrossAsset) ProtoMessage() {}

func (x *ParacrossAsset) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[56]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParacrossAsset.ProtoReflect.Descriptor instead.
func (*ParacrossAsset) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{56}
}

func (x *ParacrossAsset) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *ParacrossAsset) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *ParacrossAsset) GetIsWithdraw() bool {
	if x != nil {
		return x.IsWithdraw
	}
	return false
}

func (x *ParacrossAsset) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

func (x *ParacrossAsset) GetAmount() int64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *ParacrossAsset) GetExec() string {
	if x != nil {
		return x.Exec
	}
	return ""
}

func (x *ParacrossAsset) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *ParacrossAsset) GetCrossType() uint32 {
	if x != nil {
		return x.CrossType
	}
	return 0
}

func (x *ParacrossAsset) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParacrossAsset) GetCommitDoneHeight() int64 {
	if x != nil {
		return x.CommitDoneHeight
	}
	return 0
}

func (x *ParacrossAsset) GetParaHeight() int64 {
	if x != nil {
		return x.ParaHeight
	}
	return 0
}

func (x *ParacrossAsset) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

type ParaLocalDbBlock struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height         int64                `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	MainHash       []byte               `protobuf:"bytes,2,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	MainHeight     int64                `protobuf:"varint,3,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	ParentMainHash []byte               `protobuf:"bytes,4,opt,name=parentMainHash,proto3" json:"parentMainHash,omitempty"`
	BlockTime      int64                `protobuf:"varint,5,opt,name=blockTime,proto3" json:"blockTime,omitempty"`
	Txs            []*types.Transaction `protobuf:"bytes,6,rep,name=txs,proto3" json:"txs,omitempty"`
}

func (x *ParaLocalDbBlock) Reset() {
	*x = ParaLocalDbBlock{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[57]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaLocalDbBlock) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaLocalDbBlock) ProtoMessage() {}

func (x *ParaLocalDbBlock) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[57]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaLocalDbBlock.ProtoReflect.Descriptor instead.
func (*ParaLocalDbBlock) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{57}
}

func (x *ParaLocalDbBlock) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParaLocalDbBlock) GetMainHash() []byte {
	if x != nil {
		return x.MainHash
	}
	return nil
}

func (x *ParaLocalDbBlock) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParaLocalDbBlock) GetParentMainHash() []byte {
	if x != nil {
		return x.ParentMainHash
	}
	return nil
}

func (x *ParaLocalDbBlock) GetBlockTime() int64 {
	if x != nil {
		return x.BlockTime
	}
	return 0
}

func (x *ParaLocalDbBlock) GetTxs() []*types.Transaction {
	if x != nil {
		return x.Txs
	}
	return nil
}

type ParaLocalDbBlockInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height         int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	MainHash       string   `protobuf:"bytes,2,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	MainHeight     int64    `protobuf:"varint,3,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	ParentMainHash string   `protobuf:"bytes,4,opt,name=parentMainHash,proto3" json:"parentMainHash,omitempty"`
	BlockTime      int64    `protobuf:"varint,5,opt,name=blockTime,proto3" json:"blockTime,omitempty"`
	Txs            []string `protobuf:"bytes,6,rep,name=txs,proto3" json:"txs,omitempty"`
}

func (x *ParaLocalDbBlockInfo) Reset() {
	*x = ParaLocalDbBlockInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaLocalDbBlockInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaLocalDbBlockInfo) ProtoMessage() {}

func (x *ParaLocalDbBlockInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[58]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaLocalDbBlockInfo.ProtoReflect.Descriptor instead.
func (*ParaLocalDbBlockInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{58}
}

func (x *ParaLocalDbBlockInfo) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParaLocalDbBlockInfo) GetMainHash() string {
	if x != nil {
		return x.MainHash
	}
	return ""
}

func (x *ParaLocalDbBlockInfo) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParaLocalDbBlockInfo) GetParentMainHash() string {
	if x != nil {
		return x.ParentMainHash
	}
	return ""
}

func (x *ParaLocalDbBlockInfo) GetBlockTime() int64 {
	if x != nil {
		return x.BlockTime
	}
	return 0
}

func (x *ParaLocalDbBlockInfo) GetTxs() []string {
	if x != nil {
		return x.Txs
	}
	return nil
}

type ParaBlsSignSumDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Addrs  []string `protobuf:"bytes,2,rep,name=addrs,proto3" json:"addrs,omitempty"`
	Msgs   [][]byte `protobuf:"bytes,3,rep,name=msgs,proto3" json:"msgs,omitempty"`
	Signs  [][]byte `protobuf:"bytes,4,rep,name=signs,proto3" json:"signs,omitempty"`
}

func (x *ParaBlsSignSumDetails) Reset() {
	*x = ParaBlsSignSumDetails{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[59]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaBlsSignSumDetails) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaBlsSignSumDetails) ProtoMessage() {}

func (x *ParaBlsSignSumDetails) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[59]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaBlsSignSumDetails.ProtoReflect.Descriptor instead.
func (*ParaBlsSignSumDetails) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{59}
}

func (x *ParaBlsSignSumDetails) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParaBlsSignSumDetails) GetAddrs() []string {
	if x != nil {
		return x.Addrs
	}
	return nil
}

func (x *ParaBlsSignSumDetails) GetMsgs() [][]byte {
	if x != nil {
		return x.Msgs
	}
	return nil
}

func (x *ParaBlsSignSumDetails) GetSigns() [][]byte {
	if x != nil {
		return x.Signs
	}
	return nil
}

type ParaBlsSignSumDetailsShow struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height int64    `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Addrs  []string `protobuf:"bytes,2,rep,name=addrs,proto3" json:"addrs,omitempty"`
	Msgs   []string `protobuf:"bytes,3,rep,name=msgs,proto3" json:"msgs,omitempty"`
}

func (x *ParaBlsSignSumDetailsShow) Reset() {
	*x = ParaBlsSignSumDetailsShow{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[60]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaBlsSignSumDetailsShow) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaBlsSignSumDetailsShow) ProtoMessage() {}

func (x *ParaBlsSignSumDetailsShow) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[60]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaBlsSignSumDetailsShow.ProtoReflect.Descriptor instead.
func (*ParaBlsSignSumDetailsShow) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{60}
}

func (x *ParaBlsSignSumDetailsShow) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ParaBlsSignSumDetailsShow) GetAddrs() []string {
	if x != nil {
		return x.Addrs
	}
	return nil
}

func (x *ParaBlsSignSumDetailsShow) GetMsgs() []string {
	if x != nil {
		return x.Msgs
	}
	return nil
}

type ParaBlsSignSumInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Info   []*ParaBlsSignSumDetailsShow `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"`
	Topics []string                     `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"`
}

func (x *ParaBlsSignSumInfo) Reset() {
	*x = ParaBlsSignSumInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[61]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaBlsSignSumInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaBlsSignSumInfo) ProtoMessage() {}

func (x *ParaBlsSignSumInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[61]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaBlsSignSumInfo.ProtoReflect.Descriptor instead.
func (*ParaBlsSignSumInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{61}
}

func (x *ParaBlsSignSumInfo) GetInfo() []*ParaBlsSignSumDetailsShow {
	if x != nil {
		return x.Info
	}
	return nil
}

func (x *ParaBlsSignSumInfo) GetTopics() []string {
	if x != nil {
		return x.Topics
	}
	return nil
}

type LeaderSyncInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ID      string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`            //self id
	BaseIdx int32  `protobuf:"varint,2,opt,name=baseIdx,proto3" json:"baseIdx,omitempty"` //calculated by corrent consensus height and remainder by len(nodes)
	Offset  int32  `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
	Count   uint32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` //发送计数器
}

func (x *LeaderSyncInfo) Reset() {
	*x = LeaderSyncInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[62]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LeaderSyncInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LeaderSyncInfo) ProtoMessage() {}

func (x *LeaderSyncInfo) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[62]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LeaderSyncInfo.ProtoReflect.Descriptor instead.
func (*LeaderSyncInfo) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{62}
}

func (x *LeaderSyncInfo) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *LeaderSyncInfo) GetBaseIdx() int32 {
	if x != nil {
		return x.BaseIdx
	}
	return 0
}

func (x *LeaderSyncInfo) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

func (x *LeaderSyncInfo) GetCount() uint32 {
	if x != nil {
		return x.Count
	}
	return 0
}

type ParaP2PSubMsg struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Ty int32 `protobuf:"varint,1,opt,name=ty,proto3" json:"ty,omitempty"`
	// Types that are assignable to Value:
	//	*ParaP2PSubMsg_CommitTx
	//	*ParaP2PSubMsg_SyncMsg
	Value isParaP2PSubMsg_Value `protobuf_oneof:"value"`
}

func (x *ParaP2PSubMsg) Reset() {
	*x = ParaP2PSubMsg{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[63]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParaP2PSubMsg) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParaP2PSubMsg) ProtoMessage() {}

func (x *ParaP2PSubMsg) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[63]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParaP2PSubMsg.ProtoReflect.Descriptor instead.
func (*ParaP2PSubMsg) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{63}
}

func (x *ParaP2PSubMsg) GetTy() int32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

func (m *ParaP2PSubMsg) GetValue() isParaP2PSubMsg_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *ParaP2PSubMsg) GetCommitTx() *types.Transaction {
	if x, ok := x.GetValue().(*ParaP2PSubMsg_CommitTx); ok {
		return x.CommitTx
	}
	return nil
}

func (x *ParaP2PSubMsg) GetSyncMsg() *LeaderSyncInfo {
	if x, ok := x.GetValue().(*ParaP2PSubMsg_SyncMsg); ok {
		return x.SyncMsg
	}
	return nil
}

type isParaP2PSubMsg_Value interface {
	isParaP2PSubMsg_Value()
}

type ParaP2PSubMsg_CommitTx struct {
	CommitTx *types.Transaction `protobuf:"bytes,10,opt,name=commitTx,proto3,oneof"`
}

type ParaP2PSubMsg_SyncMsg struct {
	SyncMsg *LeaderSyncInfo `protobuf:"bytes,11,opt,name=syncMsg,proto3,oneof"`
}

func (*ParaP2PSubMsg_CommitTx) isParaP2PSubMsg_Value() {}

func (*ParaP2PSubMsg_SyncMsg) isParaP2PSubMsg_Value() {}

//bls sign leader info
type ElectionStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IsLeader bool            `protobuf:"varint,1,opt,name=isLeader,proto3" json:"isLeader,omitempty"`
	Leader   *LeaderSyncInfo `protobuf:"bytes,2,opt,name=leader,proto3" json:"leader,omitempty"`
}

func (x *ElectionStatus) Reset() {
	*x = ElectionStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[64]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ElectionStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ElectionStatus) ProtoMessage() {}

func (x *ElectionStatus) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[64]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ElectionStatus.ProtoReflect.Descriptor instead.
func (*ElectionStatus) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{64}
}

func (x *ElectionStatus) GetIsLeader() bool {
	if x != nil {
		return x.IsLeader
	}
	return false
}

func (x *ElectionStatus) GetLeader() *LeaderSyncInfo {
	if x != nil {
		return x.Leader
	}
	return nil
}

type BlsPubKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
}

func (x *BlsPubKey) Reset() {
	*x = BlsPubKey{}
	if protoimpl.UnsafeEnabled {
		mi := &file_paracross_proto_msgTypes[65]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BlsPubKey) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlsPubKey) ProtoMessage() {}

func (x *BlsPubKey) ProtoReflect() protoreflect.Message {
	mi := &file_paracross_proto_msgTypes[65]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BlsPubKey.ProtoReflect.Descriptor instead.
func (*BlsPubKey) Descriptor() ([]byte, []int) {
	return file_paracross_proto_rawDescGZIP(), []int{65}
}

func (x *BlsPubKey) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

var File_paracross_proto protoreflect.FileDescriptor

var file_paracross_proto_rawDesc = []byte{
	0x0a, 0x0f, 0x70, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x12, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x63, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4c, 0x0a, 0x16, 0x50,
	0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65,
	0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x5b, 0x0a, 0x1b, 0x50, 0x61, 0x72,
	0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x6c, 0x6f, 0x63,
	0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x78, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x78, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xe9, 0x02, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x61, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16,
	0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12,
	0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x0c, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x22, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65,
	0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x74, 0x61,
	0x69, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x12,
	0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x73, 0x22, 0xe0, 0x02, 0x0a, 0x18, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73,
	0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x73, 0x70, 0x12,
	0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73,
	0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73,
	0x68, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x73,
	0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x64,
	0x64, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f,
	0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x36, 0x0a,
	0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x63,
	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53,
	0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
	0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
	0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63,
	0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x99, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12,
	0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73,
	0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73,
	0x68, 0x22, 0xa4, 0x01, 0x0a, 0x18, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x43,
	0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e,
	0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63,
	0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2a, 0x0a, 0x10,
	0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0xb4, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x72,
	0x61, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
	0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x7a, 0x65,
	0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x22,
	0x40, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x44,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x6f, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65,
	0x73, 0x22, 0xae, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x49, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64,
	0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x1e,
	0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x16,
	0x0a, 0x06, 0x71, 0x75, 0x69, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x71, 0x75, 0x69, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65,
	0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b,
	0x65, 0x79, 0x22, 0x95, 0x02, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x49,
	0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41,
	0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65,
	0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x46, 0x72,
	0x6f, 0x7a, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x69, 0x6e,
	0x73, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d,
	0x41, 0x64, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d,
	0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09,
	0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x22, 0xbe, 0x01, 0x0a, 0x15, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2b, 0x0a, 0x04, 0x70,
	0x72, 0x65, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72,
	0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x1d,
	0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x41,
	0x64, 0x64, 0x72, 0x53, 0x74, 0x61, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x72, 0x65,
	0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x49, 0x64, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x35, 0x0a, 0x07, 0x63, 0x75,
	0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72,
	0x49, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
	0x74, 0x22, 0xf3, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72,
	0x61, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a,
	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69,
	0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64,
	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41,
	0x64, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65,
	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f,
	0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x74,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x6f, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x18, 0x0a,
	0x07, 0x76, 0x6f, 0x74, 0x65, 0x52, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x76, 0x6f, 0x74, 0x65, 0x52, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x6e, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x6f, 0x6e,
	0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x61,
	0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63,
	0x6f, 0x69, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x12, 0x1e, 0x0a,
	0x0a, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x0a,
	0x0e, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x6f, 0x6d, 0x79, 0x49,
	0x74, 0x65, 0x6d, 0x49, 0x44, 0x22, 0xeb, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f,
	0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x74,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x20, 0x0a,
	0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x12,
	0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79,
	0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b,
	0x65, 0x79, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50,
	0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x04, 0x70, 0x72,
	0x65, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x75,
	0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
	0x22, 0x86, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
	0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62,
	0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x62, 0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x22, 0x43, 0x0a, 0x16, 0x52, 0x65, 0x73,
	0x70, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64,
	0x65, 0x49, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x47,
	0x0a, 0x17, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4e,
	0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x69, 0x64, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x70, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x61, 0x42,
	0x69, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6d, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62,
	0x69, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x0a, 0x62, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x62,
	0x69, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
	0x62, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x72,
	0x67, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x11, 0x50, 0x61,
	0x72, 0x61, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12,
	0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
	0x64, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e,
	0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x6f, 0x64,
	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x22, 0x90, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72,
	0x61, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
	0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64,
	0x64, 0x72, 0x12, 0x2c, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e,
	0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76,
	0x12, 0x32, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x42, 0x69,
	0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x75, 0x72,
	0x72, 0x65, 0x6e, 0x74, 0x22, 0x45, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65,
	0x42, 0x69, 0x6e, 0x64, 0x4f, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x65, 0x72,
	0x4e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x70, 0x65,
	0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x58, 0x0a, 0x10, 0x50,
	0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61,
	0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x4f, 0x6e, 0x65, 0x52, 0x06, 0x6d,
	0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x7f, 0x0a, 0x1d, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74,
	0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72,
	0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x70,
	0x72, 0x65, 0x76, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72,
	0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x63,
	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x77, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61,
	0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b,
	0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x69, 0x6e,
	0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x64,
	0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x6e,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22,
	0x85, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x32, 0x4d, 0x61,
	0x69, 0x6e, 0x4d, 0x61, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a,
	0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0x44, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x61, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x32, 0x4d, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a,
	0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x32, 0x4d,
	0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xe1, 0x03,
	0x0a, 0x13, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6d, 0x61,
	0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x6d,
	0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
	0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x42, 0x6c,
	0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x65,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61,
	0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x74,
	0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
	0x18, 0x0a, 0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0c,
	0x52, 0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x0d, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
	0x22, 0x0a, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18,
	0x0d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61,
	0x73, 0x68, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6e, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
	0x54, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11,
	0x6e, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x73, 0x22, 0x42, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73,
	0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65,
	0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05,
	0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e,
	0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65,
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x65, 0x6e, 0x61,
	0x62, 0x6c, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66,
	0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74,
	0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x12,
	0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x2f, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x56,
	0x6f, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73,
	0x22, 0x65, 0x0a, 0x16, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e,
	0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74,
	0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61,
	0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a,
	0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x36, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
	0x22, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x69, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x53, 0x74, 0x61, 0x67,
	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x0e, 0x0a,
	0x02, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x74, 0x79, 0x12, 0x2f, 0x0a,
	0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73,
	0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x2b,
	0x0a, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x49,
	0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63,
	0x61, 0x6e, 0x63, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c,
	0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x07,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x63, 0x65,
	0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c,
	0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x35, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67,
	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xd1,
	0x01, 0x0a, 0x1c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f,
	0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x6e, 0x65, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65,
	0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1e,
	0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1c,
	0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08,
	0x6d, 0x6f, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
	0x6d, 0x6f, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x6f, 0x74, 0x65,
	0x52, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x52,
	0x73, 0x74, 0x22, 0x7f, 0x0a, 0x1b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x53, 0x65, 0x6c,
	0x66, 0x43, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x12, 0x2c, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12,
	0x32, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e,
	0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72,
	0x65, 0x6e, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x53, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69,
	0x6e, 0x64, 0x65, 0x78, 0x22, 0x51, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09,
	0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x73, 0x74,
	0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x61, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x73, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x72, 0x73, 0x4d, 0x61,
	0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x64, 0x64, 0x72, 0x73, 0x4d, 0x61,
	0x70, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x22, 0x7c, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x61, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x03, 0x62, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x03, 0x62, 0x6c, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32,
	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73,
	0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x53,
	0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d,
	0x61, 0x64, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x69,
	0x6e, 0x73, 0x22, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x52,
	0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x22, 0x98, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53,
	0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0xf1, 0x06, 0x0a,
	0x0f, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00,
	0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x65,
	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x3d, 0x0a,
	0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73,
	0x65, 0x74, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x61,
	0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0d,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x65,
	0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x33, 0x0a, 0x08, 0x74,
	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x54, 0x72, 0x61, 0x6e,
	0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
	0x12, 0x33, 0x0a, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x48, 0x00, 0x52, 0x08, 0x77, 0x69, 0x74,
	0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x45, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,
	0x72, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x54, 0x72, 0x61, 0x6e,
	0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x72,
	0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x12, 0x3b, 0x0a, 0x0a,
	0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64,
	0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x6e,
	0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0f, 0x6e, 0x6f, 0x64,
	0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e,
	0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00,
	0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x53, 0x74, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x12, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x73,
	0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,
	0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x69,
	0x6e, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x43,
	0x6d, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x69,
	0x6e, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x15, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0e, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e,
	0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00,
	0x52, 0x15, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64,
	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x22, 0xca, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61,
	0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12,
	0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
	0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x36, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x4b, 0x0a,
	0x15, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa4, 0x05, 0x0a, 0x14, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x44,
	0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f,
	0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d,
	0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43,
	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x61, 0x6d,
	0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d,
	0x6f, 0x73, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a,
	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69,
	0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73,
	0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
	0x73, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x78, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12,
	0x18, 0x0a, 0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0c,
	0x52, 0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x0d, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
	0x22, 0x0a, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18,
	0x0c, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61,
	0x73, 0x68, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6d, 0x61, 0x69, 0x6e,
	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x69,
	0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63,
	0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x34, 0x0a,
	0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f,
	0x64, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x65,
	0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x11, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x6d,
	0x6f, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
	0x6d, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x6f, 0x73, 0x74,
	0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
	0x74, 0x22, 0x60, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61,
	0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12,
	0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x22, 0x25, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73,
	0x54, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x47, 0x0a, 0x17, 0x52, 0x65,
	0x71, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x48,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x22, 0xab, 0x02, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61, 0x72, 0x61,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x44, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x6d,
	0x6f, 0x73, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d,
	0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12,
	0x1a, 0x0a, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74,
	0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74,
	0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x22, 0x47, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x69, 0x74, 0x6c,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x44, 0x6f,
	0x6e, 0x65, 0x52, 0x06, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x52, 0x65,
	0x71, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x48,
	0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0xcc, 0x02, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x61,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72,
	0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e,
	0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x1e,
	0x0a, 0x0a, 0x69, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x16,
	0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12,
	0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x78,
	0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x6f, 0x6e, 0x65, 0x48, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d,
	0x69, 0x74, 0x44, 0x6f, 0x6e, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a,
	0x70, 0x61, 0x72, 0x61, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07,
	0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,
	0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xd2, 0x01, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x61, 0x4c,
	0x6f, 0x63, 0x61, 0x6c, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12,
	0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x26, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73,
	0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4d,
	0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x06, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x14,
	0x50, 0x61, 0x72, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08,
	0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e,
	0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61,
	0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65,
	0x6e, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68,
	0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10,
	0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x74, 0x78, 0x73,
	0x22, 0x6f, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c, 0x73, 0x53, 0x69, 0x67, 0x6e, 0x53,
	0x75, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73,
	0x69, 0x67, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x73, 0x69, 0x67, 0x6e,
	0x73, 0x22, 0x5d, 0x0a, 0x19, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c, 0x73, 0x53, 0x69, 0x67, 0x6e,
	0x53, 0x75, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x16,
	0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04,
	0x6d, 0x73, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73,
	0x22, 0x62, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c, 0x73, 0x53, 0x69, 0x67, 0x6e, 0x53,
	0x75, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72,
	0x61, 0x42, 0x6c, 0x73, 0x53, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06,
	0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f,
	0x70, 0x69, 0x63, 0x73, 0x22, 0x68, 0x0a, 0x0e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x79,
	0x6e, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64,
	0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x78,
	0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8d,
	0x01, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x61, 0x50, 0x32, 0x50, 0x53, 0x75, 0x62, 0x4d, 0x73, 0x67,
	0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79,
	0x12, 0x30, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
	0x54, 0x78, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x79, 0x6e, 0x63, 0x4d, 0x73, 0x67, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x65, 0x61, 0x64,
	0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x07, 0x73, 0x79,
	0x6e, 0x63, 0x4d, 0x73, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5b,
	0x0a, 0x0e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x06,
	0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x1d, 0x0a, 0x09, 0x42,
	0x6c, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x32, 0x39, 0x0a, 0x09, 0x70, 0x61,
	0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x79, 0x6e,
	0x63, 0x12, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x4e, 0x69, 0x6c,
	0x1a, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x73, 0x43, 0x61, 0x75, 0x67, 0x68,
	0x74, 0x55, 0x70, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_paracross_proto_rawDescOnce sync.Once
	file_paracross_proto_rawDescData = file_paracross_proto_rawDesc
)

func file_paracross_proto_rawDescGZIP() []byte {
	file_paracross_proto_rawDescOnce.Do(func() {
		file_paracross_proto_rawDescData = protoimpl.X.CompressGZIP(file_paracross_proto_rawDescData)
	})
	return file_paracross_proto_rawDescData
}

var file_paracross_proto_msgTypes = make([]protoimpl.MessageInfo, 66)
var file_paracross_proto_goTypes = []interface{}{
	(*ParacrossStatusDetails)(nil),        // 0: types.ParacrossStatusDetails
	(*ParacrossStatusBlockDetails)(nil),   // 1: types.ParacrossStatusBlockDetails
	(*ParacrossHeightStatus)(nil),         // 2: types.ParacrossHeightStatus
	(*ParacrossHeightStatusRsp)(nil),      // 3: types.ParacrossHeightStatusRsp
	(*ParacrossStatus)(nil),               // 4: types.ParacrossStatus
	(*ParacrossConsensusStatus)(nil),      // 5: types.ParacrossConsensusStatus
	(*ParaNodeAddrConfig)(nil),            // 6: types.ParaNodeAddrConfig
	(*ParaNodeVoteDetail)(nil),            // 7: types.ParaNodeVoteDetail
	(*ParaNodeAddrIdStatus)(nil),          // 8: types.ParaNodeAddrIdStatus
	(*ParaNodeIdStatus)(nil),              // 9: types.ParaNodeIdStatus
	(*ReceiptParaNodeConfig)(nil),         // 10: types.ReceiptParaNodeConfig
	(*ReceiptParaNodeAddrStatUpdate)(nil), // 11: types.ReceiptParaNodeAddrStatUpdate
	(*ReceiptParaNodeVoteDone)(nil),       // 12: types.ReceiptParaNodeVoteDone
	(*ParaNodeGroupConfig)(nil),           // 13: types.ParaNodeGroupConfig
	(*ParaNodeGroupStatus)(nil),           // 14: types.ParaNodeGroupStatus
	(*ReceiptParaNodeGroupConfig)(nil),    // 15: types.ReceiptParaNodeGroupConfig
	(*ReqParacrossNodeInfo)(nil),          // 16: types.ReqParacrossNodeInfo
	(*RespParacrossNodeAddrs)(nil),        // 17: types.RespParacrossNodeAddrs
	(*RespParacrossNodeGroups)(nil),       // 18: types.RespParacrossNodeGroups
	(*ParaBindMinerCmd)(nil),              // 19: types.ParaBindMinerCmd
	(*ParaBindMinerInfo)(nil),             // 20: types.ParaBindMinerInfo
	(*ReceiptParaBindMinerInfo)(nil),      // 21: types.ReceiptParaBindMinerInfo
	(*ParaNodeBindOne)(nil),               // 22: types.ParaNodeBindOne
	(*ParaNodeBindList)(nil),              // 23: types.ParaNodeBindList
	(*ReceiptParaNodeBindListUpdate)(nil), // 24: types.ReceiptParaNodeBindListUpdate
	(*RespParaNodeBindList)(nil),          // 25: types.RespParaNodeBindList
	(*ParaBlock2MainMap)(nil),             // 26: types.ParaBlock2MainMap
	(*ParaBlock2MainInfo)(nil),            // 27: types.ParaBlock2MainInfo
	(*ParacrossNodeStatus)(nil),           // 28: types.ParacrossNodeStatus
	(*SelfConsensStages)(nil),             // 29: types.SelfConsensStages
	(*SelfConsensStage)(nil),              // 30: types.SelfConsensStage
	(*SelfConsensStageInfo)(nil),          // 31: types.SelfConsensStageInfo
	(*LocalSelfConsStageInfo)(nil),        // 32: types.LocalSelfConsStageInfo
	(*ConfigVoteInfo)(nil),                // 33: types.ConfigVoteInfo
	(*ConfigCancelInfo)(nil),              // 34: types.ConfigCancelInfo
	(*ParaStageConfig)(nil),               // 35: types.ParaStageConfig
	(*ReceiptSelfConsStageConfig)(nil),    // 36: types.ReceiptSelfConsStageConfig
	(*ReceiptSelfConsStageVoteDone)(nil),  // 37: types.ReceiptSelfConsStageVoteDone
	(*ReceiptSelfConsStagesUpdate)(nil),   // 38: types.ReceiptSelfConsStagesUpdate
	(*ReqQuerySelfStages)(nil),            // 39: types.ReqQuerySelfStages
	(*ReplyQuerySelfStages)(nil),          // 40: types.ReplyQuerySelfStages
	(*ParacrossCommitBlsInfo)(nil),        // 41: types.ParacrossCommitBlsInfo
	(*ParacrossCommitAction)(nil),         // 42: types.ParacrossCommitAction
	(*ParacrossMinerAction)(nil),          // 43: types.ParacrossMinerAction
	(*ParaMinerReward)(nil),               // 44: types.ParaMinerReward
	(*CrossAssetTransfer)(nil),            // 45: types.CrossAssetTransfer
	(*ParacrossAction)(nil),               // 46: types.ParacrossAction
	(*ReceiptParacrossCommit)(nil),        // 47: types.ReceiptParacrossCommit
	(*ReceiptParacrossMiner)(nil),         // 48: types.ReceiptParacrossMiner
	(*ReceiptParacrossDone)(nil),          // 49: types.ReceiptParacrossDone
	(*ReceiptParacrossRecord)(nil),        // 50: types.ReceiptParacrossRecord
	(*ParacrossTx)(nil),                   // 51: types.ParacrossTx
	(*ReqParacrossTitleHeight)(nil),       // 52: types.ReqParacrossTitleHeight
	(*RespParacrossDone)(nil),             // 53: types.RespParacrossDone
	(*RespParacrossTitles)(nil),           // 54: types.RespParacrossTitles
	(*ReqParacrossTitleHash)(nil),         // 55: types.ReqParacrossTitleHash
	(*ParacrossAsset)(nil),                // 56: types.ParacrossAsset
	(*ParaLocalDbBlock)(nil),              // 57: types.ParaLocalDbBlock
	(*ParaLocalDbBlockInfo)(nil),          // 58: types.ParaLocalDbBlockInfo
	(*ParaBlsSignSumDetails)(nil),         // 59: types.ParaBlsSignSumDetails
	(*ParaBlsSignSumDetailsShow)(nil),     // 60: types.ParaBlsSignSumDetailsShow
	(*ParaBlsSignSumInfo)(nil),            // 61: types.ParaBlsSignSumInfo
	(*LeaderSyncInfo)(nil),                // 62: types.LeaderSyncInfo
	(*ParaP2PSubMsg)(nil),                 // 63: types.ParaP2PSubMsg
	(*ElectionStatus)(nil),                // 64: types.ElectionStatus
	(*BlsPubKey)(nil),                     // 65: types.BlsPubKey
	(*types.AssetsTransfer)(nil),          // 66: types.AssetsTransfer
	(*types.AssetsWithdraw)(nil),          // 67: types.AssetsWithdraw
	(*types.AssetsTransferToExec)(nil),    // 68: types.AssetsTransferToExec
	(*types.Transaction)(nil),             // 69: types.Transaction
	(*types.ReqNil)(nil),                  // 70: types.ReqNil
	(*types.IsCaughtUp)(nil),              // 71: types.IsCaughtUp
}
var file_paracross_proto_depIdxs = []int32{
	0,  // 0: types.ParacrossHeightStatus.details:type_name -> types.ParacrossStatusDetails
	1,  // 1: types.ParacrossHeightStatus.blockDetails:type_name -> types.ParacrossStatusBlockDetails
	0,  // 2: types.ParacrossHeightStatus.supervisionDetails:type_name -> types.ParacrossStatusDetails
	7,  // 3: types.ParaNodeIdStatus.votes:type_name -> types.ParaNodeVoteDetail
	6,  // 4: types.ReceiptParaNodeConfig.config:type_name -> types.ParaNodeAddrConfig
	9,  // 5: types.ReceiptParaNodeConfig.prev:type_name -> types.ParaNodeIdStatus
	9,  // 6: types.ReceiptParaNodeConfig.current:type_name -> types.ParaNodeIdStatus
	8,  // 7: types.ReceiptParaNodeAddrStatUpdate.prev:type_name -> types.ParaNodeAddrIdStatus
	8,  // 8: types.ReceiptParaNodeAddrStatUpdate.current:type_name -> types.ParaNodeAddrIdStatus
	13, // 9: types.ReceiptParaNodeGroupConfig.config:type_name -> types.ParaNodeGroupConfig
	14, // 10: types.ReceiptParaNodeGroupConfig.prev:type_name -> types.ParaNodeGroupStatus
	14, // 11: types.ReceiptParaNodeGroupConfig.current:type_name -> types.ParaNodeGroupStatus
	9,  // 12: types.RespParacrossNodeAddrs.ids:type_name -> types.ParaNodeIdStatus
	14, // 13: types.RespParacrossNodeGroups.ids:type_name -> types.ParaNodeGroupStatus
	20, // 14: types.ReceiptParaBindMinerInfo.prev:type_name -> types.ParaBindMinerInfo
	20, // 15: types.ReceiptParaBindMinerInfo.current:type_name -> types.ParaBindMinerInfo
	22, // 16: types.ParaNodeBindList.miners:type_name -> types.ParaNodeBindOne
	23, // 17: types.ReceiptParaNodeBindListUpdate.prev:type_name -> types.ParaNodeBindList
	23, // 18: types.ReceiptParaNodeBindListUpdate.current:type_name -> types.ParaNodeBindList
	23, // 19: types.RespParaNodeBindList.list:type_name -> types.ParaNodeBindList
	20, // 20: types.RespParaNodeBindList.details:type_name -> types.ParaBindMinerInfo
	26, // 21: types.ParaBlock2MainInfo.items:type_name -> types.ParaBlock2MainMap
	30, // 22: types.SelfConsensStages.items:type_name -> types.SelfConsensStage
	30, // 23: types.SelfConsensStageInfo.stage:type_name -> types.SelfConsensStage
	7,  // 24: types.SelfConsensStageInfo.votes:type_name -> types.ParaNodeVoteDetail
	31, // 25: types.LocalSelfConsStageInfo.stage:type_name -> types.SelfConsensStageInfo
	30, // 26: types.ParaStageConfig.stage:type_name -> types.SelfConsensStage
	33, // 27: types.ParaStageConfig.vote:type_name -> types.ConfigVoteInfo
	34, // 28: types.ParaStageConfig.cancel:type_name -> types.ConfigCancelInfo
	31, // 29: types.ReceiptSelfConsStageConfig.prev:type_name -> types.SelfConsensStageInfo
	31, // 30: types.ReceiptSelfConsStageConfig.current:type_name -> types.SelfConsensStageInfo
	30, // 31: types.ReceiptSelfConsStageVoteDone.stage:type_name -> types.SelfConsensStage
	29, // 32: types.ReceiptSelfConsStagesUpdate.prev:type_name -> types.SelfConsensStages
	29, // 33: types.ReceiptSelfConsStagesUpdate.current:type_name -> types.SelfConsensStages
	31, // 34: types.ReplyQuerySelfStages.stageInfo:type_name -> types.SelfConsensStageInfo
	28, // 35: types.ParacrossCommitAction.status:type_name -> types.ParacrossNodeStatus
	41, // 36: types.ParacrossCommitAction.bls:type_name -> types.ParacrossCommitBlsInfo
	28, // 37: types.ParacrossMinerAction.status:type_name -> types.ParacrossNodeStatus
	42, // 38: types.ParacrossAction.commit:type_name -> types.ParacrossCommitAction
	43, // 39: types.ParacrossAction.miner:type_name -> types.ParacrossMinerAction
	66, // 40: types.ParacrossAction.assetTransfer:type_name -> types.AssetsTransfer
	67, // 41: types.ParacrossAction.assetWithdraw:type_name -> types.AssetsWithdraw
	66, // 42: types.ParacrossAction.transfer:type_name -> types.AssetsTransfer
	67, // 43: types.ParacrossAction.withdraw:type_name -> types.AssetsWithdraw
	68, // 44: types.ParacrossAction.transferToExec:type_name -> types.AssetsTransferToExec
	6,  // 45: types.ParacrossAction.nodeConfig:type_name -> types.ParaNodeAddrConfig
	13, // 46: types.ParacrossAction.nodeGroupConfig:type_name -> types.ParaNodeGroupConfig
	35, // 47: types.ParacrossAction.selfStageConfig:type_name -> types.ParaStageConfig
	45, // 48: types.ParacrossAction.crossAssetTransfer:type_name -> types.CrossAssetTransfer
	19, // 49: types.ParacrossAction.paraBindMiner:type_name -> types.ParaBindMinerCmd
	13, // 50: types.ParacrossAction.supervisionNodeConfig:type_name -> types.ParaNodeGroupConfig
	28, // 51: types.ReceiptParacrossCommit.status:type_name -> types.ParacrossNodeStatus
	2,  // 52: types.ReceiptParacrossCommit.prev:type_name -> types.ParacrossHeightStatus
	2,  // 53: types.ReceiptParacrossCommit.current:type_name -> types.ParacrossHeightStatus
	28, // 54: types.ReceiptParacrossMiner.status:type_name -> types.ParacrossNodeStatus
	28, // 55: types.ReceiptParacrossRecord.status:type_name -> types.ParacrossNodeStatus
	53, // 56: types.RespParacrossTitles.titles:type_name -> types.RespParacrossDone
	69, // 57: types.ParaLocalDbBlock.txs:type_name -> types.Transaction
	60, // 58: types.ParaBlsSignSumInfo.info:type_name -> types.ParaBlsSignSumDetailsShow
	69, // 59: types.ParaP2PSubMsg.commitTx:type_name -> types.Transaction
	62, // 60: types.ParaP2PSubMsg.syncMsg:type_name -> types.LeaderSyncInfo
	62, // 61: types.ElectionStatus.leader:type_name -> types.LeaderSyncInfo
	70, // 62: types.paracross.IsSync:input_type -> types.ReqNil
	71, // 63: types.paracross.IsSync:output_type -> types.IsCaughtUp
	63, // [63:64] is the sub-list for method output_type
	62, // [62:63] is the sub-list for method input_type
	62, // [62:62] is the sub-list for extension type_name
	62, // [62:62] is the sub-list for extension extendee
	0,  // [0:62] is the sub-list for field type_name
}

func init() { file_paracross_proto_init() }
func file_paracross_proto_init() {
	if File_paracross_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_paracross_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossStatusDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossStatusBlockDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossHeightStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossHeightStatusRsp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossConsensusStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeAddrConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeVoteDetail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeAddrIdStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeIdStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParaNodeConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParaNodeAddrStatUpdate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParaNodeVoteDone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeGroupConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeGroupStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParaNodeGroupConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqParacrossNodeInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespParacrossNodeAddrs); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespParacrossNodeGroups); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBindMinerCmd); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBindMinerInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParaBindMinerInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeBindOne); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaNodeBindList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParaNodeBindListUpdate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespParaNodeBindList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBlock2MainMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBlock2MainInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossNodeStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelfConsensStages); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelfConsensStage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelfConsensStageInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LocalSelfConsStageInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ConfigVoteInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ConfigCancelInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaStageConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSelfConsStageConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSelfConsStageVoteDone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSelfConsStagesUpdate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqQuerySelfStages); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyQuerySelfStages); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossCommitBlsInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossCommitAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossMinerAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaMinerReward); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CrossAssetTransfer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossCommit); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossMiner); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossDone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossTx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqParacrossTitleHeight); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespParacrossDone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespParacrossTitles); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqParacrossTitleHash); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossAsset); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaLocalDbBlock); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaLocalDbBlockInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBlsSignSumDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBlsSignSumDetailsShow); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBlsSignSumInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LeaderSyncInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaP2PSubMsg); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ElectionStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BlsPubKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_paracross_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*ParaStageConfig_Stage)(nil),
		(*ParaStageConfig_Vote)(nil),
		(*ParaStageConfig_Cancel)(nil),
	}
	file_paracross_proto_msgTypes[46].OneofWrappers = []interface{}{
		(*ParacrossAction_Commit)(nil),
		(*ParacrossAction_Miner)(nil),
		(*ParacrossAction_AssetTransfer)(nil),
		(*ParacrossAction_AssetWithdraw)(nil),
		(*ParacrossAction_Transfer)(nil),
		(*ParacrossAction_Withdraw)(nil),
		(*ParacrossAction_TransferToExec)(nil),
		(*ParacrossAction_NodeConfig)(nil),
		(*ParacrossAction_NodeGroupConfig)(nil),
		(*ParacrossAction_SelfStageConfig)(nil),
		(*ParacrossAction_CrossAssetTransfer)(nil),
		(*ParacrossAction_ParaBindMiner)(nil),
		(*ParacrossAction_SupervisionNodeConfig)(nil),
	}
	file_paracross_proto_msgTypes[63].OneofWrappers = []interface{}{
		(*ParaP2PSubMsg_CommitTx)(nil),
		(*ParaP2PSubMsg_SyncMsg)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_paracross_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   66,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_paracross_proto_goTypes,
		DependencyIndexes: file_paracross_proto_depIdxs,
		MessageInfos:      file_paracross_proto_msgTypes,
	}.Build()
	File_paracross_proto = out.File
	file_paracross_proto_rawDesc = nil
	file_paracross_proto_goTypes = nil
	file_paracross_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// ParacrossClient is the client API for Paracross service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ParacrossClient interface {
	IsSync(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.IsCaughtUp, error)
}

type paracrossClient struct {
	cc grpc.ClientConnInterface
}

func NewParacrossClient(cc grpc.ClientConnInterface) ParacrossClient {
	return &paracrossClient{cc}
}

func (c *paracrossClient) IsSync(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.IsCaughtUp, error) {
	out := new(types.IsCaughtUp)
	err := c.cc.Invoke(ctx, "/types.paracross/IsSync", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// ParacrossServer is the server API for Paracross service.
type ParacrossServer interface {
	IsSync(context.Context, *types.ReqNil) (*types.IsCaughtUp, error)
}

// UnimplementedParacrossServer can be embedded to have forward compatible implementations.
type UnimplementedParacrossServer struct {
}

func (*UnimplementedParacrossServer) IsSync(context.Context, *types.ReqNil) (*types.IsCaughtUp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method IsSync not implemented")
}

func RegisterParacrossServer(s *grpc.Server, srv ParacrossServer) {
	s.RegisterService(&_Paracross_serviceDesc, srv)
}

func _Paracross_IsSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(types.ReqNil)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ParacrossServer).IsSync(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.paracross/IsSync",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ParacrossServer).IsSync(ctx, req.(*types.ReqNil))
	}
	return interceptor(ctx, in, info, handler)
}

var _Paracross_serviceDesc = grpc.ServiceDesc{
	ServiceName: "types.paracross",
	HandlerType: (*ParacrossServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "IsSync",
			Handler:    _Paracross_IsSync_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "paracross.proto",
}
